Disable Mips' delay slot filler when optimization level is O0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162589 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Akira Hatanaka 2012-08-24 20:40:15 +00:00
parent 45d8dbc92d
commit 16865d0612
2 changed files with 15 additions and 7 deletions

View File

@ -115,7 +115,9 @@ runOnMachineBasicBlock(MachineBasicBlock &MBB) {
InstrIter D;
if (!DisableDelaySlotFiller && findDelayInstr(MBB, I, D)) {
// Delay slot filling is disabled at -O0.
if (!DisableDelaySlotFiller && (TM.getOptLevel() != CodeGenOpt::None) &&
findDelayInstr(MBB, I, D)) {
MBB.splice(llvm::next(I), &MBB, D);
++UsefulSlots;
} else

View File

@ -1,12 +1,18 @@
; RUN: llc -march=mipsel < %s | FileCheck %s
; RUN: llc -march=mipsel -O0 < %s | FileCheck %s -check-prefix=None
; RUN: llc -march=mipsel < %s | FileCheck %s -check-prefix=Default
define void @foo1() nounwind {
entry:
; CHECK: jalr
; CHECK-NOT: nop
; CHECK: jr
; CHECK-NOT: nop
; CHECK: .end
; Default: jalr
; Default-NOT: nop
; Default: jr
; Default-NOT: nop
; Default: .end
; None: jalr
; None: nop
; None: jr
; None: nop
; None: .end
tail call void @foo2(i32 3) nounwind
ret void