Fix minor mistakes
[oota-llvm.git] / include / llvm / Transforms / LinkAllPasses.h
1 //===- llvm/Transforms/LinkAllPasses.h - Reference All Passes ---*- C++ -*-===//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
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.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
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
12 // explicit use.
13 //
14 //===----------------------------------------------------------------------===//
15
16 #ifndef LLVM_TRANSFORMS_LINKALLPASSES_H
17 #define LLVM_TRANSFORMS_LINKALLPASSES_H
18
19 #ifdef LLVM_ON_WIN32
20
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"
25
26 // Trying not to include <windows.h>, though maybe we should...
27 extern "C" __declspec(dllimport) void* __stdcall GetCurrentProcess();
28
29 namespace {
30     struct ForceLinking {
31         ForceLinking() {
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)
38                 return;
39
40             std::vector<llvm::BasicBlock*> bbv;
41
42             // The commented out calls below refer to non-existant creation
43             // functions.  They will be uncommented as the functions are added.
44
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();
106         }
107     } X;
108 };
109
110 #endif // LLVM_ON_WIN32
111
112 #endif