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 elem llvm.Type
var prog = b.Prog var prog = b.Prog
var telem = ptr.raw.Type.(*types.Pointer).Elem() switch t := ptr.raw.Type.(type) {
if telem == types.Typ[types.Invalid] { // void case *types.Basic: // void
elem = prog.tyInt8() elem = prog.tyInt8()
} else { default:
elem = prog.rawType(telem).ll elem = prog.rawType(t.(*types.Pointer).Elem()).ll
} }
ret := llvm.CreateGEP(b.impl, elem, ptr.impl, []llvm.Value{offset.impl}) ret := llvm.CreateGEP(b.impl, elem, ptr.impl, []llvm.Value{offset.impl})
return Expr{ret, ptr.Type} return Expr{ret, ptr.Type}