Avoid de-referencing pass beginning of a basic block. No small test case possible. rdar://9216009
llvm-svn: 128743
This commit is contained in:
parent
3d9df607ba
commit
88530e6568
|
@ -1650,7 +1650,9 @@ bool ARMConstantIslands::OptimizeThumb2Branches(MachineFunction &MF) {
|
||||||
unsigned BrOffset = GetOffsetOf(Br.MI) + 4 - 2;
|
unsigned BrOffset = GetOffsetOf(Br.MI) + 4 - 2;
|
||||||
unsigned DestOffset = BBOffsets[DestBB->getNumber()];
|
unsigned DestOffset = BBOffsets[DestBB->getNumber()];
|
||||||
if (BrOffset < DestOffset && (DestOffset - BrOffset) <= 126) {
|
if (BrOffset < DestOffset && (DestOffset - BrOffset) <= 126) {
|
||||||
MachineBasicBlock::iterator CmpMI = Br.MI; --CmpMI;
|
MachineBasicBlock::iterator CmpMI = Br.MI;
|
||||||
|
if (CmpMI != Br.MI->getParent()->begin()) {
|
||||||
|
--CmpMI;
|
||||||
if (CmpMI->getOpcode() == ARM::tCMPi8) {
|
if (CmpMI->getOpcode() == ARM::tCMPi8) {
|
||||||
unsigned Reg = CmpMI->getOperand(0).getReg();
|
unsigned Reg = CmpMI->getOperand(0).getReg();
|
||||||
Pred = llvm::getInstrPredicate(CmpMI, PredReg);
|
Pred = llvm::getInstrPredicate(CmpMI, PredReg);
|
||||||
|
@ -1672,6 +1674,7 @@ bool ARMConstantIslands::OptimizeThumb2Branches(MachineFunction &MF) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return MadeChange;
|
return MadeChange;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue