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/comp | |
| 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/comp')
| -rw-r--r-- | src/comp/lib/llvm.rs | 2 | ||||
| -rw-r--r-- | src/comp/middle/trans.rs | 9 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/comp/lib/llvm.rs b/src/comp/lib/llvm.rs index 430e8cdb..67703205 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 6c4620d2..99ac225f 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); |