llgo/ssa: Advance fix

This commit is contained in:
xushiwei
2024-05-07 16:12:27 +08:00
parent 5a5d86ccc3
commit ff36c3dfae

View File

@@ -503,11 +503,11 @@ func (b Builder) Advance(ptr Expr, offset Expr) Expr {
}
var elem llvm.Type
var prog = b.Prog
var telem = ptr.raw.Type.(*types.Pointer).Elem()
if telem == types.Typ[types.Invalid] { // void
switch t := ptr.raw.Type.(type) {
case *types.Basic: // void
elem = prog.tyInt8()
} else {
elem = prog.rawType(telem).ll
default:
elem = prog.rawType(t.(*types.Pointer).Elem()).ll
}
ret := llvm.CreateGEP(b.impl, elem, ptr.impl, []llvm.Value{offset.impl})
return Expr{ret, ptr.Type}