LinkAllPasses.h revision 7ba98a90008727e2fa0dfc1787cad71e1b6021eb
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===//
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//                      The LLVM Compiler Infrastructure
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// This file was developed by Jeff Cohen and is distributed under the
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// University of Illinois Open Source License. See LICENSE.TXT for details.
7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease//
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//===----------------------------------------------------------------------===//
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// This header file pulls in all transformation and analysis passes for tools
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// like opt and bugpoint that need this functionality.
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//===----------------------------------------------------------------------===//
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef LLVM_LINKALLPASSES_H
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define LLVM_LINKALLPASSES_H
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/AliasSetTracker.h"
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/FindUsedTypes.h"
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/IntervalPartition.h"
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/LoadValueNumbering.h"
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/Passes.h"
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/PostDominators.h"
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/ScalarEvolution.h"
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/CodeGen/Passes.h"
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Function.h"
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/Instrumentation.h"
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/IPO.h"
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/Scalar.h"
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <cstdlib>
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectnamespace {
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  struct ForcePassLinking {
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    ForcePassLinking() {
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      // We must reference the passes in such a way that compilers will not
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      // delete it all as dead code, even with whole program optimization,
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      // yet is effectively a NO-OP. As the compiler isn't smart enough
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      // to know that getenv() never returns -1, this will do the job.
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      if (std::getenv("bar") != (char*) -1)
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        return;
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createAAEvalPass();
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createAggressiveDCEPass();
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createAliasAnalysisCounterPass();
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createAliasDebugger();
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createAndersensPass();
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createArgumentPromotionPass();
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createBasicAliasAnalysisPass();
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createBasicVNPass();
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createBlockPlacementPass();
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createBlockProfilerPass();
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createBreakCriticalEdgesPass();
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createCFGSimplificationPass();
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createConstantMergePass();
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createConstantPropagationPass();
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createCorrelatedExpressionEliminationPass();
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createDeadArgEliminationPass();
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createDeadCodeEliminationPass();
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createDeadInstEliminationPass();
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createDeadStoreEliminationPass();
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createDeadTypeEliminationPass();
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createEdgeProfilerPass();
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createEmitFunctionTablePass();
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createFunctionInliningPass();
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createFunctionProfilerPass();
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createFunctionResolvingPass();
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createGCSEPass();
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createGlobalDCEPass();
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createGlobalOptimizerPass();
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createGlobalsModRefPass();
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createIPConstantPropagationPass();
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createIPSCCPPass();
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createIndVarSimplifyPass();
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createInstructionCombiningPass();
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createInternalizePass(false);
770a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project      (void) llvm::createLCSSAPass();
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLICMPass();
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLoadValueNumberingPass();
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLoopExtractorPass();
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLoopSimplifyPass();
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLoopStrengthReducePass();
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLoopUnrollPass();
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLoopUnswitchPass();
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLowerAllocationsPass();
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLowerGCPass();
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLowerInvokePass();
880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project      (void) llvm::createLowerPackedPass();
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLowerSelectPass();
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLowerSetJmpPass();
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createLowerSwitchPass();
920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project      (void) llvm::createNoAAPass();
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createNoProfileInfoPass();
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createProfileLoaderPass();
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createPromoteMemoryToRegisterPass();
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createDemoteRegisterToMemoryPass();
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createPruneEHPass();
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createRaiseAllocationsPass();
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createReassociatePass();
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createSCCPPass();
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createScalarReplAggregatesPass();
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createSimplifyLibCallsPass();
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createSingleLoopExtractorPass();
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createStripSymbolsPass();
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createTailCallEliminationPass();
1060a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project      (void) llvm::createTailDuplicationPass();
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createTraceBasicBlockPass();
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createUnifyFunctionExitNodesPass();
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createCondPropagationPass();
110ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease      (void) llvm::createNullProfilerRSPass();
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createRSProfilingPass();
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createIndMemRemPass();
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createInstCountPass();
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void) llvm::createPredicateSimplifierPass();
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void)new llvm::IntervalPartition();
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void)new llvm::ImmediateDominators();
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void)new llvm::PostDominatorSet();
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void)new llvm::FindUsedTypes();
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      (void)new llvm::ScalarEvolution();
1210a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project      ((llvm::Function*)0)->viewCFGOnly();
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)0);
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project      X.add((llvm::Value*)0, 0);  // for -print-alias-sets
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    }
125ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  } ForcePassLinking; // Force link by creating a global definition.
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project}
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project