diff --git a/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp b/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp index 44a43596ee3..73e5480d122 100644 --- a/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp +++ b/lib/CodeGen/InstrSelection/InstrSelectionSupport.cpp @@ -167,6 +167,12 @@ FixConstantOperandsForInstr(Instruction* vmInstr, constantThatMustBeLoaded = true; } } else { + // + // If the operand is from the constant pool, don't try to change it. + // + if (mop.getType() == MachineOperand::MO_ConstantPoolIndex) { + continue; + } assert(mop.isImmediate()); bool isSigned = mop.getType() == MachineOperand::MO_SignExtendedImmed; diff --git a/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp b/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp index 44a43596ee3..73e5480d122 100644 --- a/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp +++ b/lib/Target/SparcV9/InstrSelection/InstrSelectionSupport.cpp @@ -167,6 +167,12 @@ FixConstantOperandsForInstr(Instruction* vmInstr, constantThatMustBeLoaded = true; } } else { + // + // If the operand is from the constant pool, don't try to change it. + // + if (mop.getType() == MachineOperand::MO_ConstantPoolIndex) { + continue; + } assert(mop.isImmediate()); bool isSigned = mop.getType() == MachineOperand::MO_SignExtendedImmed;