Skip to content

Commit ad9e2f8

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

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
@@ -2355,29 +2355,30 @@ MachineInstr *X86InstrInfo::commuteInstructionImpl(MachineInstr &MI, bool NewMI,
23552355
// If we're optimizing for size, try to use MOVSD/MOVSS.
23562356
if (MI.getParent()->getParent()->getFunction().hasOptSize()) {
23572357
unsigned Mask;
2358+
unsigned NewOpc;
23582359
switch (Opc) {
23592360
default:
23602361
llvm_unreachable("Unreachable!");
23612362
case X86::BLENDPDrri:
2362-
Opc = X86::MOVSDrr;
2363+
NewOpc = X86::MOVSDrr;
23632364
Mask = 0x03;
23642365
break;
23652366
case X86::BLENDPSrri:
2366-
Opc = X86::MOVSSrr;
2367+
NewOpc = X86::MOVSSrr;
23672368
Mask = 0x0F;
23682369
break;
23692370
case X86::VBLENDPDrri:
2370-
Opc = X86::VMOVSDrr;
2371+
NewOpc = X86::VMOVSDrr;
23712372
Mask = 0x03;
23722373
break;
23732374
case X86::VBLENDPSrri:
2374-
Opc = X86::VMOVSSrr;
2375+
NewOpc = X86::VMOVSSrr;
23752376
Mask = 0x0F;
23762377
break;
23772378
}
23782379
if ((MI.getOperand(3).getImm() ^ Mask) == 1) {
23792380
WorkingMI = CloneIfNew(MI);
2380-
WorkingMI->setDesc(get(Opc));
2381+
WorkingMI->setDesc(get(NewOpc));
23812382
WorkingMI->removeOperand(3);
23822383
break;
23832384
}

0 commit comments

Comments
 (0)