| Index: include/llvm/Transforms/NaCl.h
|
| diff --git a/include/llvm/Transforms/NaCl.h b/include/llvm/Transforms/NaCl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9de6c23fccc464b4e7e44e4f838875a1ec1bc38d
|
| --- /dev/null
|
| +++ b/include/llvm/Transforms/NaCl.h
|
| @@ -0,0 +1,94 @@
|
| +//===-- NaCl.h - NaCl Transformations ---------------------------*- C++ -*-===//
|
| +//
|
| +// The LLVM Compiler Infrastructure
|
| +//
|
| +// This file is distributed under the University of Illinois Open Source
|
| +// License. See LICENSE.TXT for details.
|
| +//
|
| +//===----------------------------------------------------------------------===//
|
| +
|
| +#ifndef LLVM_TRANSFORMS_NACL_H
|
| +#define LLVM_TRANSFORMS_NACL_H
|
| +
|
| +#include "llvm/CodeGen/Passes.h"
|
| +#include "llvm/IR/Instructions.h"
|
| +#include "llvm/IR/LLVMContext.h"
|
| +
|
| +namespace llvm {
|
| +
|
| +class BasicBlockPass;
|
| +class Function;
|
| +class FunctionPass;
|
| +class FunctionType;
|
| +class Instruction;
|
| +class ModulePass;
|
| +class Use;
|
| +class Value;
|
| +
|
| +BasicBlockPass *createConstantInsertExtractElementIndexPass();
|
| +BasicBlockPass *createExpandGetElementPtrPass();
|
| +BasicBlockPass *createExpandShuffleVectorPass();
|
| +BasicBlockPass *createFixVectorLoadStoreAlignmentPass();
|
| +BasicBlockPass *createPromoteI1OpsPass();
|
| +BasicBlockPass *createSimplifyAllocasPass();
|
| +FunctionPass *createBackendCanonicalizePass();
|
| +FunctionPass *createExpandConstantExprPass();
|
| +FunctionPass *createExpandLargeIntegersPass();
|
| +FunctionPass *createExpandStructRegsPass();
|
| +FunctionPass *createInsertDivideCheckPass();
|
| +FunctionPass *createPromoteIntegersPass();
|
| +FunctionPass *createRemoveAsmMemoryPass();
|
| +FunctionPass *createResolvePNaClIntrinsicsPass();
|
| +ModulePass *createAddPNaClExternalDeclsPass();
|
| +ModulePass *createCanonicalizeMemIntrinsicsPass();
|
| +ModulePass *createExpandArithWithOverflowPass();
|
| +ModulePass *createExpandByValPass();
|
| +ModulePass *createExpandCtorsPass();
|
| +ModulePass *createExpandIndirectBrPass();
|
| +ModulePass *createExpandSmallArgumentsPass();
|
| +ModulePass *createExpandTlsConstantExprPass();
|
| +ModulePass *createExpandTlsPass();
|
| +ModulePass *createExpandVarArgsPass();
|
| +ModulePass *createFlattenGlobalsPass();
|
| +ModulePass *createGlobalCleanupPass();
|
| +ModulePass *createGlobalizeConstantVectorsPass();
|
| +ModulePass *createPNaClSjLjEHPass();
|
| +ModulePass *createReplacePtrsWithIntsPass();
|
| +ModulePass *createResolveAliasesPass();
|
| +ModulePass *createRewriteAtomicsPass();
|
| +ModulePass *createRewriteLLVMIntrinsicsPass();
|
| +ModulePass *createRewritePNaClLibraryCallsPass();
|
| +ModulePass *createStripAttributesPass();
|
| +ModulePass *createStripMetadataPass();
|
| +ModulePass *createStripModuleFlagsPass();
|
| +
|
| +void PNaClABISimplifyAddPreOptPasses(PassManagerBase &PM);
|
| +void PNaClABISimplifyAddPostOptPasses(PassManagerBase &PM);
|
| +
|
| +Instruction *PhiSafeInsertPt(Use *U);
|
| +void PhiSafeReplaceUses(Use *U, Value *NewVal);
|
| +
|
| +// Copy debug information from Original to New, and return New.
|
| +template <typename T> T *CopyDebug(T *New, Instruction *Original) {
|
| + New->setDebugLoc(Original->getDebugLoc());
|
| + return New;
|
| +}
|
| +
|
| +template <class InstType>
|
| +static void CopyLoadOrStoreAttrs(InstType *Dest, InstType *Src) {
|
| + Dest->setVolatile(Src->isVolatile());
|
| + Dest->setAlignment(Src->getAlignment());
|
| + Dest->setOrdering(Src->getOrdering());
|
| + Dest->setSynchScope(Src->getSynchScope());
|
| +}
|
| +
|
| +// In order to change a function's type, the function must be
|
| +// recreated. RecreateFunction() recreates Func with type NewType.
|
| +// It copies or moves across everything except the argument values,
|
| +// which the caller must update because the argument types might be
|
| +// different.
|
| +Function *RecreateFunction(Function *Func, FunctionType *NewType);
|
| +
|
| +}
|
| +
|
| +#endif
|
|
|