[PATCH] [FastIsel][X86] Fix invalid register replacement for bool args

Juergen Ributzka juergen at apple.com
Thu Nov 13 09:27:02 PST 2014


Hi Keno,

thanks for catching this. I am a little surprised this hasn't shown up earlier. I only have two minor tweaks inline.

The test case looks too verbose for what it is testing. Could you please trim it down to the bare essentials?

Thanks

Cheers,
Juergen

================
Comment at: lib/Target/X86/X86FastISel.cpp:2698
@@ -2697,3 +2697,3 @@
           TI->hasOneUse()) {
-        Val = cast<TruncInst>(Val)->getOperand(0);
-        unsigned ResultReg = getRegForValue(Val);
+        Value *PrevVal = cast<TruncInst>(Val)->getOperand(0);
+        unsigned ResultReg = getRegForValue(PrevVal);
----------------
const Value *PrevVal = TI->getOperand(0);

================
Comment at: lib/Target/X86/X86FastISel.cpp:2709
@@ -2708,3 +2708,3 @@
         ResultReg =
-          fastEmit_ri(ArgVT, ArgVT, ISD::AND, ResultReg, Val->hasOneUse(), 1);
+          fastEmit_ri(ArgVT, ArgVT, ISD::AND, ResultReg, PrevVal->hasOneUse(), 1);
 
----------------
fastEmit_ri(ArgVT, ArgVT, ISD::AND, ResultReg, hasTrivialKill(PrevVal), 1);

http://reviews.llvm.org/D6245






More information about the llvm-commits mailing list