Skip to content

Commit fe617f4

Browse files
committed
[X86][CodeGen] Fix crash when commute operands of Instruction for code size
Reported in 134fcc6
1 parent 71d64ed commit fe617f4

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

llvm/lib/Target/X86/X86InstrInfo.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2327,29 +2327,30 @@ MachineInstr *X86InstrInfo::commuteInstructionImpl(MachineInstr &MI, bool NewMI,
23272327
// If we're optimizing for size, try to use MOVSD/MOVSS.
23282328
if (MI.getParent()->getParent()->getFunction().hasOptSize()) {
23292329
unsigned Mask;
2330+
unsigned NewOpc;
23302331
switch (Opc) {
23312332
default:
23322333
llvm_unreachable("Unreachable!");
23332334
case X86::BLENDPDrri:
2334-
Opc = X86::MOVSDrr;
2335+
NewOpc = X86::MOVSDrr;
23352336
Mask = 0x03;
23362337
break;
23372338
case X86::BLENDPSrri:
2338-
Opc = X86::MOVSSrr;
2339+
NewOpc = X86::MOVSSrr;
23392340
Mask = 0x0F;
23402341
break;
23412342
case X86::VBLENDPDrri:
2342-
Opc = X86::VMOVSDrr;
2343+
NewOpc = X86::VMOVSDrr;
23432344
Mask = 0x03;
23442345
break;
23452346
case X86::VBLENDPSrri:
2346-
Opc = X86::VMOVSSrr;
2347+
NewOpc = X86::VMOVSSrr;
23472348
Mask = 0x0F;
23482349
break;
23492350
}
23502351
if ((MI.getOperand(3).getImm() ^ Mask) == 1) {
23512352
WorkingMI = CloneIfNew(MI);
2352-
WorkingMI->setDesc(get(Opc));
2353+
WorkingMI->setDesc(get(NewOpc));
23532354
WorkingMI->removeOperand(3);
23542355
break;
23552356
}

0 commit comments

Comments
 (0)