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... Problem is,
27 // it pollutes the global namespace in some really nasty ways.
28 extern "C" __declspec(dllimport) void* __stdcall GetCurrentProcess();
33 // We must reference the passes in such a way that VC++ will not
34 // delete it all as dead code, even with whole program optimization,
35 // yet is effectively a NO-OP. As the compiler isn't smart enough
36 // to know that GetCurrentProcess() never returns
37 // INVALID_HANDLE_VALUE, this will do the job.
38 if (GetCurrentProcess() != (void *) -1)
41 std::vector<llvm::BasicBlock*> bbv;
43 (void) llvm::createAggressiveDCEPass();
44 (void) llvm::createArgumentPromotionPass();
45 (void) llvm::createBlockProfilerPass();
46 (void) llvm::createBreakCriticalEdgesPass();
47 (void) llvm::createCFGSimplificationPass();
48 (void) llvm::createCombineBranchesPass();
49 (void) llvm::createConstantMergePass();
50 (void) llvm::createConstantPropagationPass();
51 (void) llvm::createCorrelatedExpressionEliminationPass();
52 (void) llvm::createDeadArgEliminationPass();
53 (void) llvm::createDeadCodeEliminationPass();
54 (void) llvm::createDeadInstEliminationPass();
55 (void) llvm::createDeadStoreEliminationPass();
56 (void) llvm::createDeadTypeEliminationPass();
57 (void) llvm::createEdgeProfilerPass();
58 (void) llvm::createEmitFunctionTablePass();
59 (void) llvm::createFunctionInliningPass();
60 (void) llvm::createFunctionProfilerPass();
61 (void) llvm::createFunctionResolvingPass();
62 (void) llvm::createGCSEPass();
63 (void) llvm::createGlobalDCEPass();
64 (void) llvm::createGlobalOptimizerPass();
65 (void) llvm::createIPConstantPropagationPass();
66 (void) llvm::createIPSCCPPass();
67 (void) llvm::createIndVarSimplifyPass();
68 (void) llvm::createInstructionCombiningPass();
69 (void) llvm::createInternalizePass();
70 (void) llvm::createLICMPass();
71 (void) llvm::createLoopInstrumentationPass();
72 (void) llvm::createLoopSimplifyPass();
73 (void) llvm::createLoopStrengthReducePass();
74 (void) llvm::createLoopUnrollPass();
75 (void) llvm::createLoopUnswitchPass();
76 (void) llvm::createLowerAllocationsPass();
77 (void) llvm::createLowerConstantExpressionsPass();
78 (void) llvm::createLowerGCPass();
79 (void) llvm::createLowerInvokePass();
80 (void) llvm::createLowerPackedPass();
81 (void) llvm::createLowerSetJmpPass();
82 (void) llvm::createLowerSwitchPass();
83 (void) llvm::createProfilePathsPass();
84 (void) llvm::createPromoteMemoryToRegister();
85 (void) llvm::createPruneEHPass();
86 (void) llvm::createRaiseAllocationsPass();
87 (void) llvm::createRaisePointerReferencesPass();
88 (void) llvm::createReassociatePass();
89 (void) llvm::createSCCPPass();
90 (void) llvm::createScalarReplAggregatesPass();
91 (void) llvm::createSingleLoopExtractorPass();
92 (void) llvm::createTailCallEliminationPass();
93 (void) llvm::createTailDuplicationPass();
94 (void) llvm::createTraceBasicBlockPass();
95 (void) llvm::createTraceValuesPassForBasicBlocks();
96 (void) llvm::createTraceValuesPassForFunction();