Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 //===-- NaCl.h - NaCl Transformations ---------------------------*- C++ -*-===// | 1 //===-- NaCl.h - NaCl Transformations ---------------------------*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 | 9 |
| 10 #ifndef LLVM_TRANSFORMS_NACL_H | 10 #ifndef LLVM_TRANSFORMS_NACL_H |
| 11 #define LLVM_TRANSFORMS_NACL_H | 11 #define LLVM_TRANSFORMS_NACL_H |
| 12 | 12 |
| 13 #include "llvm/CodeGen/Passes.h" | 13 #include "llvm/CodeGen/Passes.h" |
| 14 #include "llvm/IR/Instructions.h" | 14 #include "llvm/IR/Instructions.h" |
| 15 #include "llvm/IR/LLVMContext.h" | 15 #include "llvm/IR/LLVMContext.h" |
| 16 #include "llvm/IR/PassManager.h" | |
| 16 | 17 |
| 17 namespace llvm { | 18 namespace llvm { |
| 18 | 19 |
| 19 class BasicBlockPass; | 20 class BasicBlockPass; |
| 20 class Function; | 21 class Function; |
| 21 class FunctionPass; | 22 class FunctionPass; |
| 22 class FunctionType; | 23 class FunctionType; |
| 23 class Instruction; | 24 class Instruction; |
| 24 class ModulePass; | 25 class ModulePass; |
| 25 class Triple; | 26 class Triple; |
| 26 class Use; | 27 class Use; |
| 27 class Value; | 28 class Value; |
| 28 | 29 |
| 29 BasicBlockPass *createConstantInsertExtractElementIndexPass(); | 30 #define PNACLPASS_LEGACY_ONLY(kind, name) \ |
| 30 BasicBlockPass *createExpandGetElementPtrPass(); | 31 kind ## Pass *create ## name ## Pass() |
| 31 BasicBlockPass *createExpandShuffleVectorPass(); | |
| 32 BasicBlockPass *createFixVectorLoadStoreAlignmentPass(); | |
| 33 BasicBlockPass *createPromoteI1OpsPass(); | |
| 34 BasicBlockPass *createSimplifyAllocasPass(); | |
| 35 FunctionPass *createBackendCanonicalizePass(); | |
| 36 FunctionPass *createExpandConstantExprPass(); | |
| 37 FunctionPass *createExpandLargeIntegersPass(); | |
| 38 FunctionPass *createExpandStructRegsPass(); | |
| 39 FunctionPass *createInsertDivideCheckPass(); | |
| 40 FunctionPass *createNormalizeAlignmentPass(); | |
| 41 FunctionPass *createRemoveAsmMemoryPass(); | |
| 42 FunctionPass *createResolvePNaClIntrinsicsPass(); | |
| 43 ModulePass *createAddPNaClExternalDeclsPass(); | |
| 44 ModulePass *createCanonicalizeMemIntrinsicsPass(); | |
| 45 ModulePass *createCleanupUsedGlobalsMetadataPass(); | |
| 46 ModulePass *createExpandArithWithOverflowPass(); | |
| 47 ModulePass *createExpandByValPass(); | |
| 48 ModulePass *createExpandCtorsPass(); | |
| 49 ModulePass *createExpandIndirectBrPass(); | |
| 50 ModulePass *createExpandSmallArgumentsPass(); | |
| 51 ModulePass *createExpandTlsConstantExprPass(); | |
| 52 ModulePass *createExpandTlsPass(); | |
| 53 ModulePass *createExpandVarArgsPass(); | |
| 54 ModulePass *createFlattenGlobalsPass(); | |
| 55 ModulePass *createGlobalCleanupPass(); | |
| 56 ModulePass *createGlobalizeConstantVectorsPass(); | |
| 57 ModulePass *createInternalizeUsedGlobalsPass(); | |
| 58 ModulePass *createPNaClSjLjEHPass(); | |
| 59 ModulePass *createPromoteIntegersPass(); | |
| 60 ModulePass *createReplacePtrsWithIntsPass(); | |
| 61 ModulePass *createResolveAliasesPass(); | |
| 62 ModulePass *createRewriteAtomicsPass(); | |
| 63 ModulePass *createRewriteLLVMIntrinsicsPass(); | |
| 64 ModulePass *createRewritePNaClLibraryCallsPass(); | |
| 65 ModulePass *createSimplifyStructRegSignaturesPass(); | |
| 66 ModulePass *createStripAttributesPass(); | |
| 67 ModulePass *createStripMetadataPass(); | |
| 68 ModulePass *createStripModuleFlagsPass(); | |
| 69 ModulePass *createStripDanglingDISubprogramsPass(); | |
| 70 | 32 |
| 71 // Emscripten passes: | 33 // name is nested in `pnacl` so uses of `name::something` isn't ambiguous |
| 72 FunctionPass *createExpandInsertExtractElementPass(); | 34 #define PNACLPASS(kind, name) \ |
| 73 ModulePass *createExpandI64Pass(); | 35 namespace pnacl { namespace name { \ |
| 74 ModulePass *createLowerEmAsyncifyPass(); | 36 void addPass(kind ## PassManager &Mgr); \ |
| 75 ModulePass *createLowerEmExceptionsPass(); | 37 } } \ |
| 76 ModulePass *createLowerEmSetjmpPass(); | 38 PNACLPASS_LEGACY_ONLY(kind, name) |
| 77 ModulePass *createNoExitRuntimePass(); | 39 #include "PNaClPasses.def" |
| 78 // Emscripten passes end. | 40 #undef PNACLPASS |
| 41 #undef PNACLPASS_LEGACY_ONLY | |
|
JF
2015/07/23 22:44:38
Could you do this in a separate CL?
Richard Diamond
2015/07/24 19:54:38
Done.
| |
| 79 | 42 |
| 80 void PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM); | 43 void PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM); |
| 81 void PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM); | 44 void PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM); |
| 82 | 45 |
| 83 Instruction *PhiSafeInsertPt(Use *U); | 46 Instruction *PhiSafeInsertPt(Use *U); |
| 84 void PhiSafeReplaceUses(Use *U, Value *NewVal); | 47 void PhiSafeReplaceUses(Use *U, Value *NewVal); |
| 85 | 48 |
| 86 // Copy debug information from Original to New, and return New. | 49 // Copy debug information from Original to New, and return New. |
| 87 template <typename T> T *CopyDebug(T *New, Instruction *Original) { | 50 template <typename T> T *CopyDebug(T *New, Instruction *Original) { |
| 88 New->setDebugLoc(Original->getDebugLoc()); | 51 New->setDebugLoc(Original->getDebugLoc()); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 100 // In order to change a function's type, the function must be | 63 // In order to change a function's type, the function must be |
| 101 // recreated. RecreateFunction() recreates Func with type NewType. | 64 // recreated. RecreateFunction() recreates Func with type NewType. |
| 102 // It copies or moves across everything except the argument values, | 65 // It copies or moves across everything except the argument values, |
| 103 // which the caller must update because the argument types might be | 66 // which the caller must update because the argument types might be |
| 104 // different. | 67 // different. |
| 105 Function *RecreateFunction(Function *Func, FunctionType *NewType); | 68 Function *RecreateFunction(Function *Func, FunctionType *NewType); |
| 106 | 69 |
| 107 } | 70 } |
| 108 | 71 |
| 109 #endif | 72 #endif |
| OLD | NEW |