From e7b8db2e633f71da868fac22da5c050dcb922788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20=C3=81vila=20de=20Esp=C3=ADndola?= Date: Wed, 13 Apr 2011 13:53:19 -0400 Subject: 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. --- src/rustllvm/Passes.cpp | 14 ++++++++++++++ src/rustllvm/RustWrapper.cpp | 5 +++++ src/rustllvm/rustllvm.def.in | 2 ++ 3 files changed, 21 insertions(+) create mode 100644 src/rustllvm/Passes.cpp (limited to 'src/rustllvm') 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 -- cgit v1.2.3