1 //===- llvm/Transforms/LinkAllPasses.h - Reference All Passes ---*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by Jeff Cohen and is distributed under the
6 // University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This header file is required for building with Microsoft's VC++, as it has
11 // no way of linking all registered passes into executables other than by
14 //===----------------------------------------------------------------------===//
16 #ifndef LLVM_TRANSFORMS_LINKALLPASSES_H
17 #define LLVM_TRANSFORMS_LINKALLPASSES_H
21 #include "llvm/Transforms/Instrumentation.h"
22 #include "llvm/Transforms/IPO.h"
23 #include "llvm/Transforms/Scalar.h"
24 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
26 // Trying not to include <windows.h>, though maybe we should...
27 extern "C" __declspec(dllimport) void* __stdcall GetCurrentProcess();
32 // We must reference the passes in such a way that VC++ will not
33 // delete it all as dead code, even with whole program optimization,
34 // yet is effectively a NO-OP. As the compiler isn't smart enough
35 // to know that GetCurrentProcess() never returns
36 // INVALID_HANDLE_VALUE, this will do the job.
37 if (GetCurrentProcess() != (void *) -1)
40 std::vector<llvm::BasicBlock*> bbv;
42 // The commented out calls below refer to non-existant creation
43 // functions. They will be uncommented as the functions are added.
45 // (void) llvm::createADCEPass();
46 // (void) llvm::createArgPromotionPass();
47 // (void) llvm::createBasicBlockTracerPass();
48 (void) llvm::createBlockExtractorPass(bbv);
49 // (void) llvm::createBlockPlacementPass();
50 // (void) llvm::createBlockProfilerPass();
51 (void) llvm::createBreakCriticalEdgesPass();
52 // (void) llvm::createCEEPass();
53 // (void) llvm::createCFGSimplifyPass();
54 (void) llvm::createCombineBranchesPass();
55 // (void) llvm::createConstantExpressionsLowerPass();
56 (void) llvm::createConstantMergePass();
57 (void) llvm::createConstantPropagationPass();
58 // (void) llvm::createDAEPass();
59 // (void) llvm::createDCEPass();
60 // (void) llvm::createDSEPass();
61 // (void) llvm::createDTEPass();
62 (void) llvm::createDeadInstEliminationPass();
63 // (void) llvm::createEdgeProfilerPass();
64 (void) llvm::createEmitFunctionTablePass();
65 // (void) llvm::createFunctionProfilerPass();
66 (void) llvm::createFunctionResolvingPass();
67 // (void) llvm::createFunctionTracerPass();
68 (void) llvm::createGCSEPass();
69 (void) llvm::createGlobalDCEPass();
70 (void) llvm::createGlobalOptimizerPass();
71 // (void) llvm::createIPCPPass();
72 (void) llvm::createIPSCCPPass();
73 (void) llvm::createIndVarSimplifyPass();
74 // (void) llvm::createInstCombinerPass();
75 // (void) llvm::createInstLoopsPass();
76 (void) llvm::createInternalizePass();
77 (void) llvm::createLICMPass();
78 // (void) llvm::createLoopExtractorPass();
79 (void) llvm::createLoopSimplifyPass();
80 (void) llvm::createLoopStrengthReducePass();
81 (void) llvm::createLoopUnrollPass();
82 (void) llvm::createLoopUnswitchPass();
83 (void) llvm::createLowerAllocationsPass();
84 (void) llvm::createLowerGCPass();
85 (void) llvm::createLowerInvokePass();
86 (void) llvm::createLowerPackedPass();
87 (void) llvm::createLowerSelectPass();
88 (void) llvm::createLowerSetJmpPass();
89 (void) llvm::createLowerSwitchPass();
90 // (void) llvm::createPREPass();
91 // (void) llvm::createProfilePathsPass();
92 // (void) llvm::createPromotePass();
93 (void) llvm::createPruneEHPass();
94 // (void) llvm::createRPRPass();
95 (void) llvm::createRaiseAllocationsPass();
96 (void) llvm::createReassociatePass();
97 (void) llvm::createSCCPPass();
98 // (void) llvm::createSROAPass();
99 // (void) llvm::createSimpleInlinerPass();
100 (void) llvm::createSingleLoopExtractorPass();
101 (void) llvm::createStripSymbolsPass();
102 (void) llvm::createTailCallEliminationPass();
103 (void) llvm::createTailDuplicationPass();
104 // (void) llvm::createTraceBasicBlocksPass();
105 (void) llvm::createUnifyFunctionExitNodesPass();
110 #endif // LLVM_ON_WIN32