summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/ARM/Thumb2InstrInfo.cpp')
-rw-r--r--llvm/lib/Target/ARM/Thumb2InstrInfo.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp b/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp
index 286eaa0946d..7c51c70f679 100644
--- a/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp
+++ b/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp
@@ -152,7 +152,13 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
// gsub_0, but needs an extra constraint for gsub_1 (which could be sp
// otherwise).
MachineRegisterInfo *MRI = &MF.getRegInfo();
- MRI->constrainRegClass(SrcReg, &ARM::GPRPair_with_gsub_1_in_rGPRRegClass);
+ const TargetRegisterClass* TargetClass = TRI->getMatchingSuperRegClass(RC,
+ &ARM::rGPRRegClass,
+ ARM::gsub_1);
+ assert(TargetClass && "No Matching GPRPair with gsub_1 in rGPRRegClass");
+ const TargetRegisterClass* ConstrainedClass =
+ MRI->constrainRegClass(SrcReg, TargetClass);
+ assert(ConstrainedClass && "Couldn't constrain the register class");
MachineInstrBuilder MIB = BuildMI(MBB, I, DL, get(ARM::t2STRDi8));
AddDReg(MIB, SrcReg, ARM::gsub_0, getKillRegState(isKill), TRI);
@@ -193,7 +199,13 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
// gsub_0, but needs an extra constraint for gsub_1 (which could be sp
// otherwise).
MachineRegisterInfo *MRI = &MF.getRegInfo();
- MRI->constrainRegClass(DestReg, &ARM::GPRPair_with_gsub_1_in_rGPRRegClass);
+ const TargetRegisterClass* TargetClass = TRI->getMatchingSuperRegClass(RC,
+ &ARM::rGPRRegClass,
+ ARM::gsub_1);
+ assert(TargetClass && "No Matching GPRPair with gsub_1 in rGPRRegClass");
+ const TargetRegisterClass* ConstrainedClass =
+ MRI->constrainRegClass(DestReg, TargetClass);
+ assert(ConstrainedClass && "Couldn't constrain the register class");
MachineInstrBuilder MIB = BuildMI(MBB, I, DL, get(ARM::t2LDRDi8));
AddDReg(MIB, DestReg, ARM::gsub_0, RegState::DefineNoRead, TRI);
OpenPOWER on IntegriCloud