mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 16:36:40 +00:00
Temporarily disable on-demand fast-isel.
llvm-svn: 107393
This commit is contained in:
parent
cf64605ccb
commit
31850f2d8b
@ -329,15 +329,19 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM,
|
|||||||
if (OptLevel != CodeGenOpt::None)
|
if (OptLevel != CodeGenOpt::None)
|
||||||
PM.add(createOptimizePHIsPass());
|
PM.add(createOptimizePHIsPass());
|
||||||
|
|
||||||
if (OptLevel != CodeGenOpt::None) {
|
// Delete dead machine instructions regardless of optimization level.
|
||||||
// With optimization, dead code should already be eliminated. However
|
//
|
||||||
// there is one known exception: lowered code for arguments that are only
|
// At -O0, fast-isel frequently creates dead instructions.
|
||||||
// used by tail calls, where the tail calls reuse the incoming stack
|
//
|
||||||
// arguments directly (see t11 in test/CodeGen/X86/sibcall.ll).
|
// With optimization, dead code should already be eliminated. However
|
||||||
PM.add(createDeadMachineInstructionElimPass());
|
// there is one known exception: lowered code for arguments that are only
|
||||||
printAndVerify(PM, "After codegen DCE pass",
|
// used by tail calls, where the tail calls reuse the incoming stack
|
||||||
/* allowDoubleDefs= */ true);
|
// arguments directly (see t11 in test/CodeGen/X86/sibcall.ll).
|
||||||
|
PM.add(createDeadMachineInstructionElimPass());
|
||||||
|
printAndVerify(PM, "After codegen DCE pass",
|
||||||
|
/* allowDoubleDefs= */ true);
|
||||||
|
|
||||||
|
if (OptLevel != CodeGenOpt::None) {
|
||||||
PM.add(createOptimizeExtsPass());
|
PM.add(createOptimizeExtsPass());
|
||||||
if (!DisableMachineLICM)
|
if (!DisableMachineLICM)
|
||||||
PM.add(createMachineLICMPass());
|
PM.add(createMachineLICMPass());
|
||||||
|
@ -709,11 +709,13 @@ void SelectionDAGISel::SelectAllBasicBlocks(const Function &Fn) {
|
|||||||
FastIS->startNewBlock(BB);
|
FastIS->startNewBlock(BB);
|
||||||
// Do FastISel on as many instructions as possible.
|
// Do FastISel on as many instructions as possible.
|
||||||
for (; BI != End; ++BI) {
|
for (; BI != End; ++BI) {
|
||||||
|
#if 0
|
||||||
// Defer instructions with no side effects; they'll be emitted
|
// Defer instructions with no side effects; they'll be emitted
|
||||||
// on-demand later.
|
// on-demand later.
|
||||||
if (BI->isSafeToSpeculativelyExecute() &&
|
if (BI->isSafeToSpeculativelyExecute() &&
|
||||||
!FuncInfo->isExportedInst(BI))
|
!FuncInfo->isExportedInst(BI))
|
||||||
continue;
|
continue;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Try to select the instruction with FastISel.
|
// Try to select the instruction with FastISel.
|
||||||
if (FastIS->SelectInstruction(BI))
|
if (FastIS->SelectInstruction(BI))
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
; CHECK: foo:
|
; CHECK: foo:
|
||||||
; CHECK-NEXT: movq %rdi, -8(%rsp)
|
; CHECK-NEXT: movq %rdi, -8(%rsp)
|
||||||
; CHECK-NEXT: movq %rsi, -16(%rsp)
|
; CHECK-NEXT: movq %rsi, -16(%rsp)
|
||||||
; CHECK-NEXT: movsd 128(%rsi,%rdi,8), %xmm0
|
; CHECK: movsd 128(%rsi,%rdi,8), %xmm0
|
||||||
; CHECK-NEXT: ret
|
; CHECK-NEXT: ret
|
||||||
|
|
||||||
define double @foo(i64 %x, double* %p) nounwind {
|
define double @foo(i64 %x, double* %p) nounwind {
|
||||||
|
Loading…
Reference in New Issue
Block a user