Преглед на файлове

[NFC] Pre-calculate module IR counts in size remarks.

Same as the previous NFC commits in the same vein.

This one introduces a TODO. I'm going to change emitInstrCountChangedRemark
so that it takes in a delta. Since the delta isn't necessary yet, it's not
there. For now, this means that we're calculating the size of the module
twice.

Just done separately to keep the patches small.

4/6

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@341248 91177308-0d34-0410-b5e6-96231b3b80d8
Jessica Paquette преди 7 години
родител
ревизия
ca1a357d64
променени са 1 файла, в които са добавени 18 реда и са изтрити 5 реда
  1. 18 5
      lib/IR/LegacyPassManager.cpp

+ 18 - 5
lib/IR/LegacyPassManager.cpp

@@ -1622,8 +1622,14 @@ MPPassManager::runOnModule(Module &M) {
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index)
     Changed |= getContainedPass(Index)->doInitialization(M);
 
-  unsigned InstrCount = 0;
+  unsigned InstrCount, ModuleCount = 0;
   bool EmitICRemark = M.shouldEmitInstrCountChangedRemark();
+  // Collect the initial size of the module.
+  if (EmitICRemark) {
+    InstrCount = initSizeRemarkInfo(M);
+    ModuleCount = InstrCount;
+  }
+
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
     ModulePass *MP = getContainedPass(Index);
     bool LocalChanged = false;
@@ -1637,11 +1643,18 @@ MPPassManager::runOnModule(Module &M) {
       PassManagerPrettyStackEntry X(MP, M);
       TimeRegion PassTimer(getPassTimer(MP));
 
-      if (EmitICRemark)
-        InstrCount = initSizeRemarkInfo(M);
       LocalChanged |= MP->runOnModule(M);
-      if (EmitICRemark)
-        emitInstrCountChangedRemark(MP, M, InstrCount);
+      if (EmitICRemark) {
+        // Update the size of the module.
+        // TODO: emitInstrCountChangedRemark should take in a delta between
+        // the old count and new count. Right now, we're calculating this
+        // twice.
+        ModuleCount = M.getInstructionCount();
+        if (ModuleCount != InstrCount) {
+          emitInstrCountChangedRemark(MP, M, InstrCount);
+          ModuleCount = InstrCount;
+        }
+      }
     }
 
     Changed |= LocalChanged;