Add targets to skip running the GC passes.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 21 Dec 2012 02:57:04 +0000 (02:57 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 21 Dec 2012 02:57:04 +0000 (02:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170836 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/Passes.h
lib/CodeGen/Passes.cpp

index 282e4edcfb441d5cc58b9a12b4bc51a80ac38ad7..7831d1211e16e42841eb15eb5c525f65fe14b5f9 100644 (file)
@@ -241,6 +241,11 @@ protected:
     return false;
   }
 
+  /// addGCPasses - Add late codegen passes that analyze code for garbage
+  /// collection. This should return true if GC info should be printed after
+  /// these passes.
+  virtual bool addGCPasses();
+
   /// Add standard basic block placement passes.
   virtual void addBlockPlacement();
 
index 96e2cf2d02c975cfb629d1b8506a7382486905cd..02ac836337aa9ebbf07b34ebfd7e134487af49c8 100644 (file)
@@ -513,9 +513,10 @@ void TargetPassConfig::addMachinePasses() {
   }
 
   // GC
-  addPass(&GCMachineCodeAnalysisID);
-  if (PrintGCInfo)
-    addPass(createGCInfoPrinter(dbgs()));
+  if (addGCPasses()) {
+    if (PrintGCInfo)
+      addPass(createGCInfoPrinter(dbgs()));
+  }
 
   // Basic block placement.
   if (getOptLevel() != CodeGenOpt::None)
@@ -732,6 +733,12 @@ void TargetPassConfig::addMachineLateOptimization() {
     printAndVerify("After copy propagation pass");
 }
 
+/// Add standard GC passes.
+bool TargetPassConfig::addGCPasses() {
+  addPass(&GCMachineCodeAnalysisID);
+  return true;
+}
+
 /// Add standard basic block placement passes.
 void TargetPassConfig::addBlockPlacement() {
   AnalysisID PassID = 0;