ssa: make alias working in go 1.22

This commit is contained in:
Li Jie
2025-01-08 11:41:32 +08:00
parent 6170973b48
commit 64b54d4380
4 changed files with 6 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
module github.com/goplus/llgo/compiler
go 1.23
go 1.22.0
require (
github.com/goplus/gogen v1.16.4

View File

@@ -283,7 +283,7 @@ func (p Program) rtNamed(name string) *types.Named {
t := p.runtime().Scope().Lookup(name).Type()
for {
if alias, ok := t.(*types.Alias); ok {
t = alias.Rhs()
t = types.Unalias(alias)
} else {
break
}

View File

@@ -388,6 +388,8 @@ func (p Program) toType(raw types.Type) Type {
return &aType{llvm.ArrayType(elem.ll, int(t.Len())), typ, vkArray}
case *types.Chan:
return &aType{llvm.PointerType(p.rtChan(), 0), typ, vkChan}
case *types.Alias:
return p.toType(types.Unalias(t))
}
panic(fmt.Sprintf("toLLVMType: todo - %T\n", raw))
}

View File

@@ -115,6 +115,8 @@ func (p goTypes) cvtType(typ types.Type) (raw types.Type, cvt bool) {
return p.cvtTuple(t)
case *types.TypeParam:
return typ.Underlying(), false
case *types.Alias:
return types.Unalias(t), true
default:
panic(fmt.Sprintf("cvtType: unexpected type - %T", typ))
}