aboutsummaryrefslogtreecommitdiff
path: root/src/rustllvm
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <[email protected]>2011-04-13 13:53:19 -0400
committerRafael Ávila de Espíndola <[email protected]>2011-04-13 13:54:08 -0400
commite7b8db2e633f71da868fac22da5c050dcb922788 (patch)
tree2dec6ad5d4352a8ba4905dc5b66706b7aa7fc544 /src/rustllvm
parentFix busted texi from last night. (diff)
downloadrust-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.cpp14
-rw-r--r--src/rustllvm/RustWrapper.cpp5
-rw-r--r--src/rustllvm/rustllvm.def.in2
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