[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