transform: fix poison value in heap-to-stack transform

In https://github.com/tinygo-org/tinygo/issues/2777, a poison value
ended up in `runtime.alloc`. This shouldn't happen, especially not for
well written code. So I'm not sure why it happens. But here is a fix
anyway.
Этот коммит содержится в:
Ayke van Laethem 2022-04-14 22:30:41 +02:00 коммит произвёл Ron Evans
родитель 2dc46a851b
коммит ef3b3c0d6a

Просмотреть файл

@ -41,7 +41,7 @@ func OptimizeAllocs(mod llvm.Module, printAllocs *regexp.Regexp, logger func(tok
for _, heapalloc := range getUses(allocator) { for _, heapalloc := range getUses(allocator) {
logAllocs := printAllocs != nil && printAllocs.MatchString(heapalloc.InstructionParent().Parent().Name()) logAllocs := printAllocs != nil && printAllocs.MatchString(heapalloc.InstructionParent().Parent().Name())
if heapalloc.Operand(0).IsAConstant().IsNil() { if heapalloc.Operand(0).IsAConstantInt().IsNil() {
// Do not allocate variable length arrays on the stack. // Do not allocate variable length arrays on the stack.
if logAllocs { if logAllocs {
logAlloc(logger, heapalloc, "size is not constant") logAlloc(logger, heapalloc, "size is not constant")