diff options
author | Andrew Trick <atrick@apple.com> | 2013-09-04 21:00:05 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2013-09-04 21:00:05 +0000 |
commit | 00b5fa4c280a5e7b84142d73b0ce86fa13654f2a (patch) | |
tree | c8c80430aea4cdc47c93a831519041ad30941311 /lib/CodeGen/MachineScheduler.cpp | |
parent | 40b52bb8f2b4f63f6d99e347af0c48945f9cb4d2 (diff) | |
download | llvm-00b5fa4c280a5e7b84142d73b0ce86fa13654f2a.tar.gz llvm-00b5fa4c280a5e7b84142d73b0ce86fa13654f2a.tar.bz2 llvm-00b5fa4c280a5e7b84142d73b0ce86fa13654f2a.tar.xz |
mi-sched: Reuse an invalid HazardRecognizer to save compile time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189989 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineScheduler.cpp')
-rw-r--r-- | lib/CodeGen/MachineScheduler.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/CodeGen/MachineScheduler.cpp b/lib/CodeGen/MachineScheduler.cpp index 6b9dd3eb81..0aacc3a59d 100644 --- a/lib/CodeGen/MachineScheduler.cpp +++ b/lib/CodeGen/MachineScheduler.cpp @@ -1469,13 +1469,16 @@ public: void reset() { // A new HazardRec is created for each DAG and owned by SchedBoundary. - delete HazardRec; - + // Detroying and reconstructing it is very expensive though. So keep + // invalid, placeholder HazardRecs. + if (HazardRec && HazardRec->isEnabled()) { + delete HazardRec; + HazardRec = 0; + } Available.clear(); Pending.clear(); CheckPending = false; NextSUs.clear(); - HazardRec = 0; CurrCycle = 0; CurrMOps = 0; MinReadyCycle = UINT_MAX; @@ -1681,9 +1684,14 @@ void ConvergingScheduler::initialize(ScheduleDAGMI *dag) { // are disabled, then these HazardRecs will be disabled. const InstrItineraryData *Itin = SchedModel->getInstrItineraries(); const TargetMachine &TM = DAG->MF.getTarget(); - Top.HazardRec = TM.getInstrInfo()->CreateTargetMIHazardRecognizer(Itin, DAG); - Bot.HazardRec = TM.getInstrInfo()->CreateTargetMIHazardRecognizer(Itin, DAG); - + if (!Top.HazardRec) { + Top.HazardRec = + TM.getInstrInfo()->CreateTargetMIHazardRecognizer(Itin, DAG); + } + if (!Bot.HazardRec) { + Bot.HazardRec = + TM.getInstrInfo()->CreateTargetMIHazardRecognizer(Itin, DAG); + } assert((!ForceTopDown || !ForceBottomUp) && "-misched-topdown incompatible with -misched-bottomup"); } |