Browse Source

compiler: only produce one bitcast from an alloca

This makes passes simpler, by being able to look at the (only) bitcast
from an alloca to know the expected type.
pull/62/head
Ayke van Laethem 6 years ago
parent
commit
8a211d36aa
No known key found for this signature in database GPG Key ID: E97FF5335DFDFDED
  1. 5
      compiler/compiler.go

5
compiler/compiler.go

@ -3460,9 +3460,10 @@ func (c *Compiler) parseMakeInterface(val llvm.Value, typ types.Type, global str
// Allocate on the heap and put a pointer in the interface.
// TODO: escape analysis.
sizeValue := llvm.ConstInt(c.uintptrType, size, false)
itfValue = c.createRuntimeCall("alloc", []llvm.Value{sizeValue}, "")
itfValueCast := c.builder.CreateBitCast(itfValue, llvm.PointerType(val.Type(), 0), "")
alloc := c.createRuntimeCall("alloc", []llvm.Value{sizeValue}, "")
itfValueCast := c.builder.CreateBitCast(alloc, llvm.PointerType(val.Type(), 0), "")
c.builder.CreateStore(val, itfValueCast)
itfValue = c.builder.CreateBitCast(itfValueCast, c.i8ptrType, "")
}
} else {
// Directly place the value in the interface.

Loading…
Cancel
Save