feat: upgrade to x/tools 0.28
This commit is contained in:
21
ssa/expr.go
21
ssa/expr.go
@@ -1223,11 +1223,20 @@ func (b Builder) BuiltinCall(fn string, args ...Expr) (ret Expr) {
|
||||
return
|
||||
}
|
||||
case "clear":
|
||||
if len(args) == 1 && args[0].kind == vkMap {
|
||||
m := args[0]
|
||||
t := b.abiType(m.raw.Type)
|
||||
b.Call(b.Pkg.rtFunc("MapClear"), t, m)
|
||||
return
|
||||
if len(args) == 1 {
|
||||
arg := args[0]
|
||||
switch arg.kind {
|
||||
case vkMap:
|
||||
m := arg
|
||||
t := b.abiType(m.raw.Type)
|
||||
b.Call(b.Pkg.rtFunc("MapClear"), t, m)
|
||||
return
|
||||
case vkSlice:
|
||||
s := arg
|
||||
t := b.abiType(s.raw.Type)
|
||||
b.Call(b.Pkg.rtFunc("SliceClear"), t, s)
|
||||
return
|
||||
}
|
||||
}
|
||||
case "min":
|
||||
if len(args) > 0 {
|
||||
@@ -1239,6 +1248,8 @@ func (b Builder) BuiltinCall(fn string, args ...Expr) (ret Expr) {
|
||||
}
|
||||
case "Add":
|
||||
return b.Advance(args[0], args[1])
|
||||
case "Sizeof":
|
||||
return b.Prog.Val(int(b.Prog.SizeOf(args[0].Type)))
|
||||
}
|
||||
panic("todo: " + fn)
|
||||
}
|
||||
|
||||
@@ -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.TypeParam:
|
||||
return p.toType(t.Underlying())
|
||||
}
|
||||
panic(fmt.Sprintf("toLLVMType: todo - %T\n", raw))
|
||||
}
|
||||
|
||||
@@ -113,6 +113,8 @@ func (p goTypes) cvtType(typ types.Type) (raw types.Type, cvt bool) {
|
||||
}
|
||||
case *types.Tuple:
|
||||
return p.cvtTuple(t)
|
||||
case *types.TypeParam:
|
||||
return typ.Underlying(), false
|
||||
default:
|
||||
panic(fmt.Sprintf("cvtType: unexpected type - %T", typ))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user