cl: interface support __llgo_va_list

This commit is contained in:
visualfc
2025-09-09 13:20:01 +08:00
parent 89af430329
commit fd17a43ade
6 changed files with 451 additions and 22 deletions

View File

@@ -34,7 +34,7 @@ func VArg() *types.Var {
return types.NewParam(0, nil, NameValist, types.NewSlice(tyAny))
}
func hasNameValist(sig *types.Signature) bool {
func HasNameValist(sig *types.Signature) bool {
if sig.Variadic() {
if params := sig.Params(); params.At(params.Len()-1).Name() == NameValist {
return true
@@ -241,7 +241,7 @@ func newParams(fn Type, prog Program) (params []Type, hasVArg bool) {
sig := fn.raw.Type.(*types.Signature)
in := sig.Params()
if n := in.Len(); n > 0 {
if hasVArg = hasNameValist(sig); hasVArg {
if hasVArg = HasNameValist(sig); hasVArg {
n--
}
params = make([]Type, n)

View File

@@ -458,7 +458,7 @@ func (p Program) toLLVMTypes(t *types.Tuple, n int) (ret []llvm.Type) {
func (p Program) toLLVMFunc(sig *types.Signature) llvm.Type {
tParams := sig.Params()
n := tParams.Len()
hasVArg := hasNameValist(sig)
hasVArg := HasNameValist(sig)
if hasVArg {
n--
}