mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-06 12:16:59 +00:00
This is the real fix for Codegen/X86/2004-04-13-FPCMOV-Crash.llx which works
even when the "optimization" I added before is turned off. It generates this extremely pointless code: test: fld QWORD PTR [%ESP + 4] mov %AL, 0 test %AL, %AL fcmove %ST(0), %ST(0) ret Good thing the optimizer will have removed this before code generation anyway. :) llvm-svn: 12939
This commit is contained in:
parent
ffd151e5a9
commit
64431dbce7
@ -682,13 +682,14 @@ void FPS::handleCondMovFP(MachineBasicBlock::iterator &I) {
|
||||
MI->getOperand(0).setReg(getSTReg(Op1));
|
||||
|
||||
// If we kill the second operand, make sure to pop it from the stack.
|
||||
for (LiveVariables::killed_iterator KI = LV->killed_begin(MI),
|
||||
E = LV->killed_end(MI); KI != E; ++KI)
|
||||
if (KI->second == X86::FP0+Op1) {
|
||||
// Get this value off of the register stack.
|
||||
freeStackSlotAfter(I, Op1);
|
||||
break;
|
||||
}
|
||||
if (Op0 != Op1)
|
||||
for (LiveVariables::killed_iterator KI = LV->killed_begin(MI),
|
||||
E = LV->killed_end(MI); KI != E; ++KI)
|
||||
if (KI->second == X86::FP0+Op1) {
|
||||
// Get this value off of the register stack.
|
||||
freeStackSlotAfter(I, Op1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user