[LLVMdev] Version 1.9 SSA form question
Schimmel, Mark
mark.schimmel at windriver.com
Thu Mar 1 15:36:10 PST 2007
int %nlz10(uint %param.x) {
%.t3 = shr uint %param.x, ubyte 1 ; <uint>
[#uses=1]
%.t4 = or uint %.t3, %param.x ; <uint> [#uses=2]
%.t7 = shr uint %.t4, ubyte 2 ; <uint> [#uses=1]
%.t8 = or uint %.t7, %.t4 ; <uint> [#uses=2]
%.t11 = shr uint %.t8, ubyte 4 ; <uint> [#uses=1]
%.t12 = or uint %.t11, %.t8 ; <uint> [#uses=2]
%.t15 = shr uint %.t12, ubyte 8 ; <uint> [#uses=1]
%.t16 = or uint %.t15, %.t12 ; <uint> [#uses=2]
%.t19 = shr uint %.t16, ubyte 16 ; <uint>
[#uses=1]
%.t20 = or uint %.t19, %.t16 ; <uint> [#uses=1]
%.t22 = mul uint %.t20, 116069625 ; <uint>
[#uses=1]
%.t25 = shr uint %.t22, ubyte 26 ; <uint>
[#uses=1]
%.t28 = getelementptr [64 x ubyte]* %table, int 0, uint %.t25
; <ubyte*> [#uses=1]
%.t28 = load ubyte* %.t28 ; <ubyte> [#uses=1]
%.t31 = cast ubyte %.t28 to int ; <int> [#uses=1]
ret int %.t31
}
This is the disassembled output after running the optimizer. How can
%.t28 be written to twice? That isn't my understanding of SSA.
Here's another similar situation:
%x.2.i73 = cast uint %x.2.i73 to int ; <int>
[#uses=1]
Why are we not assigning to a different ssa var?
More information about the llvm-dev
mailing list