aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--sparse-llvm.c6
-rw-r--r--validation/backend/call-variadic.c1
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>'