aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
-rw-r--r--sparse-llvm.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c
index 75e396e5..1713367a 100644
--- a/sparse-llvm.c
+++ b/sparse-llvm.c
@@ -372,7 +372,7 @@ static LLVMValueRef val_to_value(unsigned long long val, struct symbol *ctype)
return constant_value(val, dtype);
}
-static LLVMValueRef pseudo_to_value(struct function *fn, struct instruction *insn, pseudo_t pseudo)
+static LLVMValueRef pseudo_to_value(struct function *fn, struct symbol *ctype, pseudo_t pseudo)
{
LLVMValueRef result = NULL;
@@ -384,7 +384,7 @@ static LLVMValueRef pseudo_to_value(struct function *fn, struct instruction *ins
result = get_sym_value(fn, pseudo->sym);
break;
case PSEUDO_VAL:
- result = val_to_value(pseudo->value, insn->type);
+ result = val_to_value(pseudo->value, ctype);
break;
case PSEUDO_ARG: {
result = LLVMGetParam(fn->fn, pseudo->nr - 1);
@@ -505,10 +505,10 @@ static void output_op_binary(struct function *fn, struct instruction *insn)
LLVMValueRef lhs, rhs, target;
char target_name[64];
- lhs = pseudo_to_value(fn, insn, insn->src1);
+ lhs = pseudo_to_value(fn, insn->type, insn->src1);
lhs = value_to_ivalue(fn, insn->type, lhs);
- rhs = pseudo_to_value(fn, insn, insn->src2);
+ rhs = pseudo_to_value(fn, insn->type, insn->src2);
rhs = value_to_ivalue(fn, insn->type, rhs);
pseudo_name(insn->target, target_name);
@@ -619,11 +619,11 @@ static void output_op_compare(struct function *fn, struct instruction *insn)
LLVMValueRef lhs, rhs, target;
char target_name[64];
- lhs = pseudo_to_value(fn, insn, insn->src1);
+ lhs = pseudo_to_value(fn, NULL, insn->src1);
if (insn->src2->type == PSEUDO_VAL)
rhs = constant_value(insn->src2->value, LLVMTypeOf(lhs));
else
- rhs = pseudo_to_value(fn, insn, insn->src2);
+ rhs = pseudo_to_value(fn, NULL, insn->src2);
pseudo_name(insn->target, target_name);
@@ -662,7 +662,7 @@ static void output_op_ret(struct function *fn, struct instruction *insn)
pseudo_t pseudo = insn->src;
if (pseudo && pseudo != VOID) {
- LLVMValueRef result = pseudo_to_value(fn, insn, pseudo);
+ LLVMValueRef result = pseudo_to_value(fn, insn->type, pseudo);
result = adjust_type(fn, insn->type, result);
LLVMBuildRet(fn->builder, result);
@@ -681,7 +681,7 @@ static LLVMValueRef calc_memop_addr(struct function *fn, struct instruction *ins
off = LLVMConstInt(int_type, insn->offset, 0);
/* convert src to the effective pointer type */
- src = pseudo_to_value(fn, insn, insn->src);
+ src = pseudo_to_value(fn, insn->type, insn->src);
as = LLVMGetPointerAddressSpace(LLVMTypeOf(src));
addr_type = LLVMPointerType(insn_symbol_type(insn), as);
src = LLVMBuildPointerCast(fn->builder, src, addr_type, LLVMGetValueName(src));
@@ -712,7 +712,7 @@ static void output_op_store(struct function *fn, struct instruction *insn)
addr = calc_memop_addr(fn, insn);
- target_in = pseudo_to_value(fn, insn, insn->target);
+ target_in = pseudo_to_value(fn, insn->type, insn->target);
/* perform store */
LLVMBuildStore(fn->builder, target_in, addr);
@@ -729,7 +729,7 @@ static LLVMValueRef bool_value(struct function *fn, LLVMValueRef value)
static void output_op_cbr(struct function *fn, struct instruction *br)
{
LLVMValueRef cond = bool_value(fn,
- pseudo_to_value(fn, br, br->cond));
+ pseudo_to_value(fn, NULL, br->cond));
LLVMBuildCondBr(fn->builder, cond,
br->bb_true->priv,
@@ -746,9 +746,9 @@ static void output_op_sel(struct function *fn, struct instruction *insn)
LLVMValueRef target, src1, src2, src3;
char name[MAX_PSEUDO_NAME];
- src1 = bool_value(fn, pseudo_to_value(fn, insn, insn->src1));
- src2 = pseudo_to_value(fn, insn, insn->src2);
- src3 = pseudo_to_value(fn, insn, insn->src3);
+ src1 = bool_value(fn, pseudo_to_value(fn, NULL, insn->src1));
+ src2 = pseudo_to_value(fn, insn->type, insn->src2);
+ src3 = pseudo_to_value(fn, insn->type, insn->src3);
pseudo_name(insn->target, name);
target = LLVMBuildSelect(fn->builder, src1, src2, src3, name);
@@ -770,7 +770,7 @@ static void output_op_switch(struct function *fn, struct instruction *insn)
def = jmp->target;
} END_FOR_EACH_PTR(jmp);
- sw_val = pseudo_to_value(fn, insn, insn->target);
+ sw_val = pseudo_to_value(fn, insn->type, insn->target);
target = LLVMBuildSwitch(fn->builder, sw_val,
def ? def->priv : NULL, n_jmp);
@@ -797,10 +797,10 @@ static void output_op_call(struct function *fn, struct instruction *insn)
i = 0;
FOR_EACH_PTR(insn->arguments, arg) {
- args[i++] = pseudo_to_value(fn, insn, arg);
+ args[i++] = pseudo_to_value(fn, NULL, arg);
} END_FOR_EACH_PTR(arg);
- func = pseudo_to_value(fn, insn, insn->func);
+ func = pseudo_to_value(fn, NULL, insn->func);
pseudo_name(insn->target, name);
target = LLVMBuildCall(fn->builder, func, args, n_arg, name);
@@ -815,7 +815,7 @@ static void output_op_phisrc(struct function *fn, struct instruction *insn)
assert(insn->target->priv == NULL);
/* target = src */
- v = pseudo_to_value(fn, insn, insn->phi_src);
+ v = pseudo_to_value(fn, insn->type, insn->phi_src);
FOR_EACH_PTR(insn->phi_users, phi) {
LLVMValueRef load, ptr;
@@ -851,7 +851,7 @@ static void output_op_ptrcast(struct function *fn, struct instruction *insn)
src = insn->src->priv;
if (!src)
- src = pseudo_to_value(fn, insn, insn->src);
+ src = pseudo_to_value(fn, insn->type, insn->src);
pseudo_name(insn->target, target_name);
@@ -885,7 +885,7 @@ static void output_op_cast(struct function *fn, struct instruction *insn, LLVMOp
src = insn->src->priv;
if (!src)
- src = pseudo_to_value(fn, insn, insn->src);
+ src = pseudo_to_value(fn, insn->type, insn->src);
pseudo_name(insn->target, target_name);
@@ -1006,7 +1006,7 @@ static void output_insn(struct function *fn, struct instruction *insn)
LLVMValueRef src, target;
char target_name[64];
- src = pseudo_to_value(fn, insn, insn->src);
+ src = pseudo_to_value(fn, insn->type, insn->src);
pseudo_name(insn->target, target_name);
@@ -1019,7 +1019,7 @@ static void output_insn(struct function *fn, struct instruction *insn)
LLVMValueRef src, target;
char target_name[64];
- src = pseudo_to_value(fn, insn, insn->src);
+ src = pseudo_to_value(fn, insn->type, insn->src);
pseudo_name(insn->target, target_name);