1 /*
2  * Copyright 2015 WebAssembly Community Group participants
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef wasm_passes_h
18 #define wasm_passes_h
19 
20 namespace wasm {
21 
22 class Pass;
23 
24 // All passes:
25 Pass* createAlignmentLoweringPass();
26 Pass* createAsyncifyPass();
27 Pass* createAvoidReinterpretsPass();
28 Pass* createCoalesceLocalsPass();
29 Pass* createCoalesceLocalsWithLearningPass();
30 Pass* createCodeFoldingPass();
31 Pass* createCodePushingPass();
32 Pass* createConstHoistingPass();
33 Pass* createDAEPass();
34 Pass* createDAEOptimizingPass();
35 Pass* createDataFlowOptsPass();
36 Pass* createDeadCodeEliminationPass();
37 Pass* createDeNaNPass();
38 Pass* createDeAlignPass();
39 Pass* createDirectizePass();
40 Pass* createDWARFDumpPass();
41 Pass* createDuplicateImportEliminationPass();
42 Pass* createDuplicateFunctionEliminationPass();
43 Pass* createEmitTargetFeaturesPass();
44 Pass* createEmscriptenPICPass();
45 Pass* createEmscriptenPICMainModulePass();
46 Pass* createExtractFunctionPass();
47 Pass* createFlattenPass();
48 Pass* createFuncCastEmulationPass();
49 Pass* createFullPrinterPass();
50 Pass* createFunctionMetricsPass();
51 Pass* createGenerateDynCallsPass();
52 Pass* createGenerateI64DynCallsPass();
53 Pass* createGenerateStackIRPass();
54 Pass* createI64ToI32LoweringPass();
55 Pass* createInlineMainPass();
56 Pass* createInliningPass();
57 Pass* createInliningOptimizingPass();
58 Pass* createLegalizeJSInterfacePass();
59 Pass* createLegalizeJSInterfaceMinimallyPass();
60 Pass* createLimitSegmentsPass();
61 Pass* createLocalCSEPass();
62 Pass* createLogExecutionPass();
63 Pass* createInstrumentLocalsPass();
64 Pass* createInstrumentMemoryPass();
65 Pass* createLoopInvariantCodeMotionPass();
66 Pass* createMemoryPackingPass();
67 Pass* createMergeBlocksPass();
68 Pass* createMergeLocalsPass();
69 Pass* createMinifiedPrinterPass();
70 Pass* createMinifyImportsPass();
71 Pass* createMinifyImportsAndExportsPass();
72 Pass* createMinifyImportsAndExportsAndModulesPass();
73 Pass* createMetricsPass();
74 Pass* createNameListPass();
75 Pass* createNoExitRuntimePass();
76 Pass* createOptimizeAddedConstantsPass();
77 Pass* createOptimizeAddedConstantsPropagatePass();
78 Pass* createOptimizeInstructionsPass();
79 Pass* createOptimizeStackIRPass();
80 Pass* createPickLoadSignsPass();
81 Pass* createModAsyncifyAlwaysOnlyUnwindPass();
82 Pass* createModAsyncifyNeverUnwindPass();
83 Pass* createPostAssemblyScriptPass();
84 Pass* createPostAssemblyScriptFinalizePass();
85 Pass* createPostEmscriptenPass();
86 Pass* createPrecomputePass();
87 Pass* createPrecomputePropagatePass();
88 Pass* createPrinterPass();
89 Pass* createPrintCallGraphPass();
90 Pass* createPrintFeaturesPass();
91 Pass* createPrintFunctionMapPass();
92 Pass* createPrintStackIRPass();
93 Pass* createRemoveNonJSOpsPass();
94 Pass* createRemoveImportsPass();
95 Pass* createRemoveMemoryPass();
96 Pass* createRemoveUnusedBrsPass();
97 Pass* createRemoveUnusedModuleElementsPass();
98 Pass* createRemoveUnusedNonFunctionModuleElementsPass();
99 Pass* createRemoveUnusedNamesPass();
100 Pass* createReorderFunctionsPass();
101 Pass* createReorderLocalsPass();
102 Pass* createReplaceStackPointerPass();
103 Pass* createReReloopPass();
104 Pass* createRedundantSetEliminationPass();
105 Pass* createRoundTripPass();
106 Pass* createSafeHeapPass();
107 Pass* createSimplifyLocalsPass();
108 Pass* createSimplifyGlobalsPass();
109 Pass* createSimplifyGlobalsOptimizingPass();
110 Pass* createSimplifyLocalsNoNestingPass();
111 Pass* createSimplifyLocalsNoTeePass();
112 Pass* createSimplifyLocalsNoStructurePass();
113 Pass* createSimplifyLocalsNoTeeNoStructurePass();
114 Pass* createStackCheckPass();
115 Pass* createStripDebugPass();
116 Pass* createStripDWARFPass();
117 Pass* createStripProducersPass();
118 Pass* createStripTargetFeaturesPass();
119 Pass* createSouperifyPass();
120 Pass* createSouperifySingleUsePass();
121 Pass* createSpillPointersPass();
122 Pass* createStubUnsupportedJSOpsPass();
123 Pass* createSSAifyPass();
124 Pass* createSSAifyNoMergePass();
125 Pass* createTrapModeClamp();
126 Pass* createTrapModeJS();
127 Pass* createUnteePass();
128 Pass* createVacuumPass();
129 
130 } // namespace wasm
131 
132 #endif
133