Displaying 2 results from an estimated 2 matches for "xfuncx".
2016 Nov 21
2
Conditional jump or move depends on uninitialised value(s)
...lvm-mirror/llvm/blob/master/lib/CodeGen/DeadMachineInstructionElim.cpp#L142
Here I've refactored the code into a minimal (noinline) function that
still triggers the problem. xfunc2() and xfunc3() are also noinline.
The problem goes away if either isReg() or isDef() is marked noinline.
void xfuncx(const MachineOperand &MO,
const TargetRegisterInfo *TRI,
BitVector &LivePhysRegs) {
if (MO.isReg() && // <<<<------ problem reported here
MO.isDef()) {
xfunc2(MO, TRI, LivePhysRegs);
} else {
xfunc3(MO, LivePhysRegs);
}
}
The asm is...
2016 Nov 22
2
Conditional jump or move depends on uninitialised value(s)
...since it looks only at the
> lower bits. isDef() cannot be called safely because it looks at bit 25.
> However it is clear that the C++ code (below) never calls isDef() when
> isReg() returns false, as it does here.
>
> So now back to the asm:
>
> 0000000000000000
> <_Z6xfuncxPKN4llvm14MachineOperandEPKNS_18TargetRegisterInfoEPNS_9BitVectorE>:
>
> 0: b8 ff 00 00 01 mov $0x10000ff,%eax
> 5: 23 07 and (%rdi),%eax
> 7: 3d 00 00 00 01 cmp $0x1000000,%eax
> c: 75 05 jn...