diff options
Diffstat (limited to 'src/rustllvm')
| -rw-r--r-- | src/rustllvm/Passes.cpp | 14 | ||||
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 5 | ||||
| -rw-r--r-- | src/rustllvm/rustllvm.def.in | 2 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/rustllvm/Passes.cpp b/src/rustllvm/Passes.cpp new file mode 100644 index 00000000..cde4f9d3 --- /dev/null +++ b/src/rustllvm/Passes.cpp @@ -0,0 +1,14 @@ +#include "llvm/Analysis/Passes.h" +#include "llvm/PassManager.h" +#include "llvm-c/Core.h" + +using namespace llvm; +extern "C" { + void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createTypeBasedAliasAnalysisPass()); + } + + void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createBasicAliasAnalysisPass()); + } +} diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 34346914..aa17184c 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -31,3 +31,8 @@ extern "C" const char *LLVMRustGetLastError(void) { LLVMOpaqueObjectFile* (*RustHackToFetchObjectO)(LLVMOpaqueMemoryBuffer*) = LLVMCreateObjectFile; + +extern "C" void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); + +void (*RustHackToFetchPassesO)(LLVMPassManagerRef PM) = + LLVMAddBasicAliasAnalysisPass; diff --git a/src/rustllvm/rustllvm.def.in b/src/rustllvm/rustllvm.def.in index d314c253..6067c383 100644 --- a/src/rustllvm/rustllvm.def.in +++ b/src/rustllvm/rustllvm.def.in @@ -15,6 +15,7 @@ LLVMAddAggressiveDCEPass LLVMAddAlias LLVMAddArgumentPromotionPass LLVMAddAttribute +LLVMaddBasicAliasAnalysisPass LLVMAddCFGSimplificationPass LLVMAddCase LLVMAddConstantMergePass @@ -67,6 +68,7 @@ LLVMAddStripDeadPrototypesPass LLVMAddStripSymbolsPass LLVMAddTailCallEliminationPass LLVMAddTargetData +LLVMAddTypeBasedAliasAnalysisPass LLVMAddTypeName LLVMAddVerifierPass LLVMAlignOf |