about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2011-04-13 13:53:19 -0400
committerRafael Ávila de Espíndola <respindola@mozilla.com>2011-04-13 13:54:08 -0400
commite7b8db2e633f71da868fac22da5c050dcb922788 (patch)
tree2dec6ad5d4352a8ba4905dc5b66706b7aa7fc544 /src/comp
parent6909e7ca7872ef8672e3f044b6648f5b78af64d8 (diff)
downloadrust-e7b8db2e633f71da868fac22da5c050dcb922788.tar.gz
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/comp')
-rw-r--r--src/comp/lib/llvm.rs2
-rw-r--r--src/comp/middle/trans.rs9
2 files changed, 7 insertions, 4 deletions
diff --git a/src/comp/lib/llvm.rs b/src/comp/lib/llvm.rs
index 430e8cdb3b8..6770320598a 100644
--- a/src/comp/lib/llvm.rs
+++ b/src/comp/lib/llvm.rs
@@ -775,6 +775,8 @@ native mod llvm = llvm_lib {
     fn LLVMAddSimplifyLibCallsPass(PassManagerRef PM);
     fn LLVMAddLoopIdiomPass(PassManagerRef PM);
     fn LLVMAddEarlyCSEPass(PassManagerRef PM);
+    fn LLVMAddTypeBasedAliasAnalysisPass(PassManagerRef PM);
+    fn LLVMAddBasicAliasAnalysisPass(PassManagerRef PM);
 
     /** Destroys a memory buffer. */
     fn LLVMDisposeMemoryBuffer(MemoryBufferRef MemBuf);
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 6c4620d2476..99ac225f8ee 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -6647,6 +6647,8 @@ fn run_passes(ModuleRef llmod, bool opt) {
         auto fpm = mk_pass_manager();
 
         // createStandardFunctionPasses
+        llvm.LLVMAddTypeBasedAliasAnalysisPass(fpm.llpm);
+        llvm.LLVMAddBasicAliasAnalysisPass(fpm.llpm);
         llvm.LLVMAddCFGSimplificationPass(fpm.llpm);
         llvm.LLVMAddScalarReplAggregatesPass(fpm.llpm);
         llvm.LLVMAddEarlyCSEPass(fpm.llpm);
@@ -6654,6 +6656,8 @@ fn run_passes(ModuleRef llmod, bool opt) {
         llvm.LLVMRunPassManager(fpm.llpm, llmod);
 
         // createStandardModulePasses
+        llvm.LLVMAddTypeBasedAliasAnalysisPass(pm.llpm);
+        llvm.LLVMAddBasicAliasAnalysisPass(pm.llpm);
         llvm.LLVMAddGlobalOptimizerPass(pm.llpm);
         llvm.LLVMAddIPSCCPPass(pm.llpm);
         llvm.LLVMAddDeadArgEliminationPass(pm.llpm);
@@ -6661,10 +6665,7 @@ fn run_passes(ModuleRef llmod, bool opt) {
         llvm.LLVMAddCFGSimplificationPass(pm.llpm);
         llvm.LLVMAddPruneEHPass(pm.llpm);
         llvm.LLVMAddFunctionInliningPass(pm.llpm);
-
-        // FIXME: crashes!
-        // llvm.LLVMAddFunctionAttrsPass(pm.llpm);
-
+        llvm.LLVMAddFunctionAttrsPass(pm.llpm);
         llvm.LLVMAddScalarReplAggregatesPassSSA(pm.llpm);
         llvm.LLVMAddEarlyCSEPass(pm.llpm);
         llvm.LLVMAddSimplifyLibCallsPass(pm.llpm);