diff options
| -rw-r--r-- | sparse-llvm.c | 6 | ||||
| -rw-r--r-- | validation/backend/call-variadic.c | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c index 1713367a..08f055a9 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -787,6 +787,7 @@ static void output_op_switch(struct function *fn, struct instruction *insn) static void output_op_call(struct function *fn, struct instruction *insn) { LLVMValueRef target, func; + struct symbol *ctype; int n_arg = 0, i; struct pseudo *arg; LLVMValueRef *args; @@ -795,10 +796,13 @@ static void output_op_call(struct function *fn, struct instruction *insn) n_arg = pseudo_list_size(insn->arguments); args = calloc(n_arg, sizeof(LLVMValueRef)); + PREPARE_PTR_LIST(insn->fntypes, ctype); i = 0; FOR_EACH_PTR(insn->arguments, arg) { - args[i++] = pseudo_to_value(fn, NULL, arg); + NEXT_PTR_LIST(ctype); + args[i++] = pseudo_to_value(fn, ctype, arg); } END_FOR_EACH_PTR(arg); + FINISH_PTR_LIST(ctype); func = pseudo_to_value(fn, NULL, insn->func); pseudo_name(insn->target, name); diff --git a/validation/backend/call-variadic.c b/validation/backend/call-variadic.c index 19afacee..b6e40644 100644 --- a/validation/backend/call-variadic.c +++ b/validation/backend/call-variadic.c @@ -11,7 +11,6 @@ int foo(const char *fmt, int a, long l, int *p) /* * check-name: call-variadic * check-command: sparse-llvm-dis -m64 $file - * check-known-to-fail * * check-output-start ; ModuleID = '<stdin>' |
