From 42e25b387f9bbae463ddd739c16e4fdc81abb371 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 23 Jan 2005 23:13:59 +0000 Subject: [PATCH] Allow the FP stackifier to completely ignore functions that do not use FP at all. This should speed up the X86 backend fairly significantly on integer codes. Now if only we didn't have to compute livevar still... ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19796 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86FloatingPoint.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/Target/X86/X86FloatingPoint.cpp b/lib/Target/X86/X86FloatingPoint.cpp index 30763f0b986..899f7cd6fec 100644 --- a/lib/Target/X86/X86FloatingPoint.cpp +++ b/lib/Target/X86/X86FloatingPoint.cpp @@ -157,6 +157,21 @@ FunctionPass *llvm::createX86FloatingPointStackifierPass() { return new FPS(); } /// register references into FP stack references. /// bool FPS::runOnMachineFunction(MachineFunction &MF) { + // We only need to run this pass if there are any FP registers used in this + // function. If it is all integer, there is nothing for us to do! + const bool *PhysRegsUsed = MF.getUsedPhysregs(); + bool FPIsUsed = false; + + assert(X86::FP6 == X86::FP0+6 && "Register enums aren't sorted right!"); + for (unsigned i = 0; i <= 6; ++i) + if (PhysRegsUsed[X86::FP0+i]) { + FPIsUsed = true; + break; + } + + // Early exit. + if (!FPIsUsed) return false; + LV = &getAnalysis(); StackTop = 0;