TestPrintf

This commit is contained in:
xushiwei
2024-04-20 13:50:48 +08:00
parent 6a359a4d4d
commit 1ec438a361
3 changed files with 66 additions and 17 deletions

View File

@@ -105,19 +105,24 @@ type aFunction struct {
Expr
prog Program
params []Type
params []Type
hasVArg bool
}
type Function = *aFunction
func newFunction(fn llvm.Value, t Type, prog Program) Function {
return &aFunction{Expr{fn, t}, prog, newParams(t, prog)}
params, hasVArg := newParams(t, prog)
return &aFunction{Expr{fn, t}, prog, params, hasVArg}
}
func newParams(fn Type, prog Program) (params []Type) {
func newParams(fn Type, prog Program) (params []Type, hasVArg bool) {
sig := fn.t.(*types.Signature)
in := sig.Params()
if n := in.Len(); n > 0 {
if hasVArg = HasVArg(in, n); hasVArg {
n--
}
params = make([]Type, n)
for i := 0; i < n; i++ {
params[i] = prog.llvmType(in.At(i).Type())