diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-01-15 22:21:03 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-01-15 22:21:03 +0000 |
commit | d1a8a7819ccb37af8d097895e083b258840dcf1b (patch) | |
tree | b5c369259567b7c4b8b15a91a4c5a17cce224a70 /llvm/lib/Target/ARM/Thumb1InstrInfo.cpp | |
parent | d2968c4c12125286d33f6eb1ab4fb24257ddad6f (diff) | |
download | bcm5719-llvm-d1a8a7819ccb37af8d097895e083b258840dcf1b.tar.gz bcm5719-llvm-d1a8a7819ccb37af8d097895e083b258840dcf1b.zip |
Update Thumb1 storeRegToStackSlot() and loadRegFromStackSlot() to properly
handle physical registers R0-R7 when described as having a non-tGPR register
class.
llvm-svn: 93564
Diffstat (limited to 'llvm/lib/Target/ARM/Thumb1InstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/Thumb1InstrInfo.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp b/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp index e8753948fdc..7f42c82abe9 100644 --- a/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp +++ b/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp @@ -105,7 +105,9 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, (TargetRegisterInfo::isPhysicalRegister(SrcReg) && isARMLowRegister(SrcReg))) && "Unknown regclass!"); - if (RC == ARM::tGPRRegisterClass) { + if (RC == ARM::tGPRRegisterClass || + (TargetRegisterInfo::isPhysicalRegister(SrcReg) && + isARMLowRegister(SrcReg))) { MachineFunction &MF = *MBB.getParent(); MachineFrameInfo &MFI = *MF.getFrameInfo(); MachineMemOperand *MMO = @@ -130,7 +132,9 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, (TargetRegisterInfo::isPhysicalRegister(DestReg) && isARMLowRegister(DestReg))) && "Unknown regclass!"); - if (RC == ARM::tGPRRegisterClass) { + if (RC == ARM::tGPRRegisterClass || + (TargetRegisterInfo::isPhysicalRegister(DestReg) && + isARMLowRegister(DestReg))) { MachineFunction &MF = *MBB.getParent(); MachineFrameInfo &MFI = *MF.getFrameInfo(); MachineMemOperand *MMO = |