[llvm-dev] replace uses of loadInst with a value
serge guelton via llvm-dev
llvm-dev at lists.llvm.org
Fri Feb 5 02:21:15 PST 2016
On Fri, Feb 05, 2016 at 11:06:50AM +0100, Mohammad Norouzi via llvm-dev wrote:
> Hi,
>
> I need to replace all uses of load instructions with the value of its
> operand. Here is an example:
>
> %16 = load i32, i32* %x
>
> %add = add i32 4, %16
>
> In this case, i would like to have the result as:
>
> %add = add i32 4, %x
>
> and then delete the load instruction. I have tried replaceAllUsesWithValue
> but i get a type problem.
>
> "llvm::Value::replaceAllUsesWith(llvm::Value*): Assertion `New->getType()
> == getType() && "replaceAllUses of value with new value of different
> type!"' failed."
Hi Mohammad,
i32* %x and i32 4 don't have the same type, and that triggers the
assert.
If you want to use x as an integer, you should bitcast it, then trunc
or zext it depending on the pointer bitwidth...
hope it helps
More information about the llvm-dev
mailing list