| 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 BasicBlockPass *createConstantInsertExtractElementIndexPass(); |
| 30 BasicBlockPass *createExpandGetElementPtrPass(); | 31 BasicBlockPass *createExpandGetElementPtrPass(); |
| 31 BasicBlockPass *createExpandShuffleVectorPass(); | 32 BasicBlockPass *createExpandShuffleVectorPass(); |
| 32 BasicBlockPass *createFixVectorLoadStoreAlignmentPass(); | 33 BasicBlockPass *createFixVectorLoadStoreAlignmentPass(); |
| 33 BasicBlockPass *createPromoteI1OpsPass(); | 34 BasicBlockPass *createPromoteI1OpsPass(); |
| 34 BasicBlockPass *createSimplifyAllocasPass(); | 35 BasicBlockPass *createSimplifyAllocasPass(); |
| 35 FunctionPass *createBackendCanonicalizePass(); | 36 FunctionPass *createBackendCanonicalizePass(); |
| 36 FunctionPass *createExpandConstantExprPass(); | 37 FunctionPass *createExpandConstantExprPass(); |
| 37 FunctionPass *createExpandLargeIntegersPass(); | 38 FunctionPass *createExpandLargeIntegersPass(); |
| 38 FunctionPass *createExpandStructRegsPass(); | 39 FunctionPass *createExpandStructRegsPass(); |
| 39 FunctionPass *createInsertDivideCheckPass(); | 40 FunctionPass *createInsertDivideCheckPass(); |
| 40 FunctionPass *createNormalizeAlignmentPass(); | 41 FunctionPass *createNormalizeAlignmentPass(); |
| 41 FunctionPass *createRemoveAsmMemoryPass(); | 42 FunctionPass *createRemoveAsmMemoryPass(); |
| 42 FunctionPass *createResolvePNaClIntrinsicsPass(); | 43 FunctionPass *createResolvePNaClIntrinsicsPass(); |
| 44 FunctionPass *createRewriteAtomicsPass(); |
| 43 ModulePass *createAddPNaClExternalDeclsPass(); | 45 ModulePass *createAddPNaClExternalDeclsPass(); |
| 44 ModulePass *createCanonicalizeMemIntrinsicsPass(); | 46 ModulePass *createCanonicalizeMemIntrinsicsPass(); |
| 45 ModulePass *createCleanupUsedGlobalsMetadataPass(); | 47 ModulePass *createCleanupUsedGlobalsMetadataPass(); |
| 46 ModulePass *createExpandArithWithOverflowPass(); | 48 ModulePass *createExpandArithWithOverflowPass(); |
| 47 ModulePass *createExpandByValPass(); | 49 ModulePass *createExpandByValPass(); |
| 48 ModulePass *createExpandCtorsPass(); | 50 ModulePass *createExpandCtorsPass(); |
| 49 ModulePass *createExpandIndirectBrPass(); | 51 ModulePass *createExpandIndirectBrPass(); |
| 50 ModulePass *createExpandSmallArgumentsPass(); | 52 ModulePass *createExpandSmallArgumentsPass(); |
| 51 ModulePass *createExpandTlsConstantExprPass(); | 53 ModulePass *createExpandTlsConstantExprPass(); |
| 52 ModulePass *createExpandTlsPass(); | 54 ModulePass *createExpandTlsPass(); |
| 53 ModulePass *createExpandVarArgsPass(); | 55 ModulePass *createExpandVarArgsPass(); |
| 54 ModulePass *createFlattenGlobalsPass(); | 56 ModulePass *createFlattenGlobalsPass(); |
| 55 ModulePass *createGlobalCleanupPass(); | 57 ModulePass *createGlobalCleanupPass(); |
| 56 ModulePass *createGlobalizeConstantVectorsPass(); | 58 ModulePass *createGlobalizeConstantVectorsPass(); |
| 57 ModulePass *createInternalizeUsedGlobalsPass(); | 59 ModulePass *createInternalizeUsedGlobalsPass(); |
| 58 ModulePass *createPNaClSjLjEHPass(); | 60 ModulePass *createPNaClSjLjEHPass(); |
| 59 ModulePass *createPromoteIntegersPass(); | 61 ModulePass *createPromoteIntegersPass(); |
| 60 ModulePass *createReplacePtrsWithIntsPass(); | 62 ModulePass *createReplacePtrsWithIntsPass(); |
| 61 ModulePass *createResolveAliasesPass(); | 63 ModulePass *createResolveAliasesPass(); |
| 62 ModulePass *createRewriteAtomicsPass(); | |
| 63 ModulePass *createRewriteLLVMIntrinsicsPass(); | 64 ModulePass *createRewriteLLVMIntrinsicsPass(); |
| 64 ModulePass *createRewritePNaClLibraryCallsPass(); | 65 ModulePass *createRewritePNaClLibraryCallsPass(); |
| 65 ModulePass *createSimplifyStructRegSignaturesPass(); | 66 ModulePass *createSimplifyStructRegSignaturesPass(); |
| 66 ModulePass *createStripAttributesPass(); | 67 ModulePass *createStripAttributesPass(); |
| 67 ModulePass *createStripMetadataPass(); | 68 ModulePass *createStripMetadataPass(); |
| 68 ModulePass *createStripModuleFlagsPass(); | 69 ModulePass *createStripModuleFlagsPass(); |
| 69 ModulePass *createStripDanglingDISubprogramsPass(); | 70 ModulePass *createStripDanglingDISubprogramsPass(); |
| 70 | 71 |
| 71 // Emscripten passes: | 72 // Emscripten passes: |
| 72 FunctionPass *createExpandInsertExtractElementPass(); | 73 FunctionPass *createExpandInsertExtractElementPass(); |
| 73 ModulePass *createExpandI64Pass(); | 74 ModulePass *createExpandI64Pass(); |
| 74 ModulePass *createLowerEmAsyncifyPass(); | 75 ModulePass *createLowerEmAsyncifyPass(); |
| 75 ModulePass *createLowerEmExceptionsPass(); | 76 ModulePass *createLowerEmExceptionsPass(); |
| 76 ModulePass *createLowerEmSetjmpPass(); | 77 ModulePass *createLowerEmSetjmpPass(); |
| 77 ModulePass *createNoExitRuntimePass(); | 78 ModulePass *createNoExitRuntimePass(); |
| 78 // Emscripten passes end. | 79 // Emscripten passes end. |
| 79 | 80 |
| 81 |
| 80 void PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM); | 82 void PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM); |
| 81 void PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM); | 83 void PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM); |
| 82 | 84 |
| 83 Instruction *PhiSafeInsertPt(Use *U); | 85 Instruction *PhiSafeInsertPt(Use *U); |
| 84 void PhiSafeReplaceUses(Use *U, Value *NewVal); | 86 void PhiSafeReplaceUses(Use *U, Value *NewVal); |
| 85 | 87 |
| 86 // Copy debug information from Original to New, and return New. | 88 // Copy debug information from Original to New, and return New. |
| 87 template <typename T> T *CopyDebug(T *New, Instruction *Original) { | 89 template <typename T> T *CopyDebug(T *New, Instruction *Original) { |
| 88 New->setDebugLoc(Original->getDebugLoc()); | 90 New->setDebugLoc(Original->getDebugLoc()); |
| 89 return New; | 91 return New; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 100 // In order to change a function's type, the function must be | 102 // In order to change a function's type, the function must be |
| 101 // recreated. RecreateFunction() recreates Func with type NewType. | 103 // recreated. RecreateFunction() recreates Func with type NewType. |
| 102 // It copies or moves across everything except the argument values, | 104 // It copies or moves across everything except the argument values, |
| 103 // which the caller must update because the argument types might be | 105 // which the caller must update because the argument types might be |
| 104 // different. | 106 // different. |
| 105 Function *RecreateFunction(Function *Func, FunctionType *NewType); | 107 Function *RecreateFunction(Function *Func, FunctionType *NewType); |
| 106 | 108 |
| 107 } | 109 } |
| 108 | 110 |
| 109 #endif | 111 #endif |
| OLD | NEW |