summaryrefslogtreecommitdiff
path: root/include/llvm/PassManager.h
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2013-09-18 23:31:16 +0000
committerAndrew Trick <atrick@apple.com>2013-09-18 23:31:16 +0000
commit7d4e9934e7ca83094c5cf41346966c8350179ff2 (patch)
tree48b3578a2c33d22d52bbb70883fb693801051f80 /include/llvm/PassManager.h
parent2cccc6220cc351b52d2cd2d0b7139502e854b68d (diff)
downloadllvm-7d4e9934e7ca83094c5cf41346966c8350179ff2.tar.gz
llvm-7d4e9934e7ca83094c5cf41346966c8350179ff2.tar.bz2
llvm-7d4e9934e7ca83094c5cf41346966c8350179ff2.tar.xz
Encapsulate PassManager debug flags to avoid static init and cxa_exit.
This puts all the global PassManager debugging flags, like -print-after-all and -time-passes, behind a managed static. This eliminates their static initializers and, more importantly, exit-time destructors. The only behavioral change I anticipate is that tools need to initialize the PassManager before parsing the command line in order to export these options, which makes sense. Tools that already initialize the standard passes (opt/llc) don't need to do anything new. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190974 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/PassManager.h')
-rw-r--r--include/llvm/PassManager.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/llvm/PassManager.h b/include/llvm/PassManager.h
index b6a8186a4e..044dc3320b 100644
--- a/include/llvm/PassManager.h
+++ b/include/llvm/PassManager.h
@@ -28,6 +28,11 @@ class Module;
class PassManagerImpl;
class FunctionPassManagerImpl;
+/// Called by tools to initialize globals and register options at a particular
+/// point (before command line parsing). If this is not called, then PassManager
+/// globals are lazily initialized at first use.
+void initializePassManager();
+
/// PassManagerBase - An abstract interface to allow code to add passes to
/// a pass manager without having to hard-code what kind of pass manager
/// it is.