diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-03-20 23:25:19 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-11-17 10:04:37 +0100 |
| commit | d7b0e39b2cfd90247c9b928afe95988c6ecd96ef (patch) | |
| tree | 7fe19799d967737e00dd242a2feb5fb476a9ee8d | |
| parent | 40bfd90b89f50da47b52c2ec4800ee611a02788c (diff) | |
| download | sparse-dev-d7b0e39b2cfd90247c9b928afe95988c6ecd96ef.tar.gz | |
llvm: fix mutated OP_[PTR]CAST
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
| -rw-r--r-- | sparse-llvm.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/sparse-llvm.c b/sparse-llvm.c index 58230880..e6115d2e 100644 --- a/sparse-llvm.c +++ b/sparse-llvm.c @@ -879,13 +879,12 @@ static void output_op_ptrcast(struct function *fn, struct instruction *insn) { LLVMValueRef src, target; LLVMTypeRef dtype; + struct symbol *otype = insn->orig_type; LLVMOpcode op; char target_name[64]; - src = insn->src->priv; - if (!src) - src = pseudo_to_value(fn, insn->type, insn->src); + src = get_operand(fn, otype, insn->src); pseudo_name(insn->target, target_name); assert(!is_float_type(insn->type)); @@ -910,16 +909,15 @@ static void output_op_cast(struct function *fn, struct instruction *insn, LLVMOp { LLVMValueRef src, target; LLVMTypeRef dtype; + struct symbol *otype = insn->orig_type; char target_name[64]; unsigned int width; if (is_ptr_type(insn->type)) // cast to void* is OP_CAST ... return output_op_ptrcast(fn, insn); - src = insn->src->priv; - if (!src) - src = pseudo_to_value(fn, insn->type, insn->src); + src = get_operand(fn, otype, insn->src); pseudo_name(insn->target, target_name); assert(!is_float_type(insn->type)); |
