diff options
| author | Rafael Ávila de Espíndola <[email protected]> | 2011-04-13 13:53:19 -0400 |
|---|---|---|
| committer | Rafael Ávila de Espíndola <[email protected]> | 2011-04-13 13:54:08 -0400 |
| commit | e7b8db2e633f71da868fac22da5c050dcb922788 (patch) | |
| tree | 2dec6ad5d4352a8ba4905dc5b66706b7aa7fc544 /src/rustllvm | |
| parent | Fix busted texi from last night. (diff) | |
| download | rust-e7b8db2e633f71da868fac22da5c050dcb922788.tar.xz rust-e7b8db2e633f71da868fac22da5c050dcb922788.zip | |
Enable alias analysis and the function attributes pass.
The C API extension is already upstream, we can drop the local copy once
the bots are updated.
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 |