From ba276adab596bafe48a27dc02dcc5867446a52b5 Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Mon, 20 Apr 2015 10:19:02 -0700 Subject: [PATCH] LLVM < 3.5 is unsupported since bb18a3c --- src/etc/mklldeps.py | 12 +----------- src/librustc_llvm/lib.rs | 2 -- src/librustc_trans/trans/context.rs | 11 +---------- src/librustc_trans/trans/debuginfo.rs | 22 ++-------------------- src/librustc_trans/trans/intrinsic.rs | 6 +----- src/rustllvm/ExecutionEngineWrapper.cpp | 8 ++++---- src/rustllvm/PassWrapper.cpp | 19 +++---------------- src/rustllvm/RustWrapper.cpp | 22 ++++++---------------- src/rustllvm/rustllvm.h | 7 ------- 9 files changed, 18 insertions(+), 91 deletions(-) diff --git a/src/etc/mklldeps.py b/src/etc/mklldeps.py index e5e8c9f11bd..fe9feb3538d 100644 --- a/src/etc/mklldeps.py +++ b/src/etc/mklldeps.py @@ -46,13 +46,8 @@ def run(args): f.write("\n") -version = run([llconfig, '--version']).strip() - # LLVM libs -if version < '3.5': - args = [llconfig, '--libs'] -else: - args = [llconfig, '--libs', '--system-libs'] +args = [llconfig, '--libs', '--system-libs'] args.extend(components) out = run(args) @@ -73,11 +68,6 @@ for lib in out.strip().replace("\n", ' ').split(' '): f.write(", kind = \"static\"") f.write(")]\n") -# llvm-config before 3.5 didn't have a system-libs flag -if version < '3.5': - if os == 'win32': - f.write("#[link(name = \"imagehlp\")]") - # LLVM ldflags out = run([llconfig, '--ldflags']) for lib in out.strip().split(' '): diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs index 7030ee56979..0bf7fecb858 100644 --- a/src/librustc_llvm/lib.rs +++ b/src/librustc_llvm/lib.rs @@ -2056,8 +2056,6 @@ extern { pub fn LLVMRustDestroyArchive(AR: ArchiveRef); pub fn LLVMRustSetDLLExportStorageClass(V: ValueRef); - pub fn LLVMVersionMajor() -> c_int; - pub fn LLVMVersionMinor() -> c_int; pub fn LLVMRustGetSectionName(SI: SectionIteratorRef, data: *mut *const c_char) -> c_int; diff --git a/src/librustc_trans/trans/context.rs b/src/librustc_trans/trans/context.rs index e54962dc085..b8c45d4751e 100644 --- a/src/librustc_trans/trans/context.rs +++ b/src/librustc_trans/trans/context.rs @@ -878,16 +878,7 @@ fn declare_intrinsic(ccx: &CrateContext, key: & &'static str) -> Option $ret:expr) => ( - if unsafe { llvm::LLVMVersionMinor() >= 4 } { - // The `if key == $name` is already in ifn! - ifn!($name, fn($($arg),*) -> $ret); - } else if *key == $name { - let f = declare::declare_cfn(ccx, stringify!($cname), - Type::func(&[$($arg),*], &$ret), - ty::mk_nil(ccx.tcx())); - ccx.intrinsics().borrow_mut().insert($name, f.clone()); - return Some(f); - } + ifn!($name, fn($($arg),*) -> $ret); ) } diff --git a/src/librustc_trans/trans/debuginfo.rs b/src/librustc_trans/trans/debuginfo.rs index 159b101e85e..7c769eca74a 100644 --- a/src/librustc_trans/trans/debuginfo.rs +++ b/src/librustc_trans/trans/debuginfo.rs @@ -2653,26 +2653,8 @@ fn set_members_of_composite_type(cx: &CrateContext, let mut composite_types_completed = debug_context(cx).composite_types_completed.borrow_mut(); if composite_types_completed.contains(&composite_type_metadata) { - let (llvm_version_major, llvm_version_minor) = unsafe { - (llvm::LLVMVersionMajor(), llvm::LLVMVersionMinor()) - }; - - let actual_llvm_version = llvm_version_major * 1000000 + llvm_version_minor * 1000; - let min_supported_llvm_version = 3 * 1000000 + 4 * 1000; - - if actual_llvm_version < min_supported_llvm_version { - cx.sess().warn(&format!("This version of rustc was built with LLVM \ - {}.{}. Rustc just ran into a known \ - debuginfo corruption problem thatoften \ - occurs with LLVM versions below 3.4. \ - Please use a rustc built with anewer \ - version of LLVM.", - llvm_version_major, - llvm_version_minor)); - } else { - cx.sess().bug("debuginfo::set_members_of_composite_type() - \ - Already completed forward declaration re-encountered."); - } + cx.sess().bug("debuginfo::set_members_of_composite_type() - \ + Already completed forward declaration re-encountered."); } else { composite_types_completed.insert(composite_type_metadata); } diff --git a/src/librustc_trans/trans/intrinsic.rs b/src/librustc_trans/trans/intrinsic.rs index 1e67212871a..6bfa80f9c40 100644 --- a/src/librustc_trans/trans/intrinsic.rs +++ b/src/librustc_trans/trans/intrinsic.rs @@ -746,11 +746,7 @@ pub fn trans_intrinsic_call<'a, 'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>, let src = to_arg_ty(bcx, llargs[2], tp_ty); let res = AtomicCmpXchg(bcx, ptr, cmp, src, order, strongest_failure_ordering); - if unsafe { llvm::LLVMVersionMinor() >= 5 } { - ExtractValue(bcx, res, 0) - } else { - res - } + ExtractValue(bcx, res, 0) } "load" => { diff --git a/src/rustllvm/ExecutionEngineWrapper.cpp b/src/rustllvm/ExecutionEngineWrapper.cpp index 8ca81ab3d68..7e0630fd242 100644 --- a/src/rustllvm/ExecutionEngineWrapper.cpp +++ b/src/rustllvm/ExecutionEngineWrapper.cpp @@ -89,12 +89,12 @@ extern "C" LLVMExecutionEngineRef LLVMBuildExecutionEngine( options.NoFramePointerElim = true; ExecutionEngine *ee = - #if LLVM_VERSION_MINOR <= 5 - EngineBuilder(unwrap(mod)) - .setMCJITMemoryManager(unwrap(mref)) - #else + #if LLVM_VERSION_MINOR >= 6 EngineBuilder(std::unique_ptr(unwrap(mod))) .setMCJITMemoryManager(std::unique_ptr(unwrap(mref))) + #else + EngineBuilder(unwrap(mod)) + .setMCJITMemoryManager(unwrap(mref)) #endif .setEngineKind(EngineKind::JIT) .setErrorStr(&error_str) diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index b205d87598c..a2ab8040198 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -92,9 +92,6 @@ LLVMRustCreateTargetMachine(const char *triple, TargetOptions Options; Options.PositionIndependentExecutable = PositionIndependentExecutable; Options.NoFramePointerElim = NoFramePointerElim; -#if LLVM_VERSION_MINOR < 5 - Options.EnableSegmentedStacks = EnableSegmentedStacks; -#endif Options.FloatABIType = FloatABI::Default; Options.UseSoftFloat = UseSoftFloat; if (UseSoftFloat) { @@ -128,10 +125,8 @@ LLVMRustAddAnalysisPasses(LLVMTargetMachineRef TM, PassManagerBase *PM = unwrap(PMR); #if LLVM_VERSION_MINOR >= 6 PM->add(new DataLayoutPass()); -#elif LLVM_VERSION_MINOR == 5 - PM->add(new DataLayoutPass(unwrap(M))); #else - PM->add(new DataLayout(unwrap(M))); + PM->add(new DataLayoutPass(unwrap(M))); #endif unwrap(TM)->addAnalysisPasses(*PM); } @@ -202,10 +197,8 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target, raw_fd_ostream OS(path, EC, sys::fs::F_None); if (EC) ErrorInfo = EC.message(); -#elif LLVM_VERSION_MINOR >= 4 - raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None); #else - raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary); + raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None); #endif if (ErrorInfo != "") { LLVMRustSetLastError(ErrorInfo.c_str()); @@ -230,19 +223,13 @@ LLVMRustPrintModule(LLVMPassManagerRef PMR, raw_fd_ostream OS(path, EC, sys::fs::F_None); if (EC) ErrorInfo = EC.message(); -#elif LLVM_VERSION_MINOR >= 4 - raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None); #else - raw_fd_ostream OS(path, ErrorInfo, raw_fd_ostream::F_Binary); + raw_fd_ostream OS(path, ErrorInfo, sys::fs::F_None); #endif formatted_raw_ostream FOS(OS); -#if LLVM_VERSION_MINOR >= 5 PM->add(createPrintModulePass(FOS)); -#else - PM->add(createPrintModulePass(&FOS)); -#endif PM->run(*unwrap(M)); } diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 31f75ae03b0..b9d62673a43 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -412,7 +412,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateStaticVariable( bool isLocalToUnit, LLVMValueRef Val, LLVMMetadataRef Decl = NULL) { -#if LLVM_VERSION_MINOR == 6 +#if LLVM_VERSION_MINOR >= 6 return wrap(Builder->createGlobalVariable(unwrapDI(Context), #else return wrap(Builder->createStaticVariable(unwrapDI(Context), @@ -440,7 +440,7 @@ extern "C" LLVMMetadataRef LLVMDIBuilderCreateVariable( int64_t* AddrOps, unsigned AddrOpsCount, unsigned ArgNo) { -#if LLVM_VERSION_MINOR < 6 +#if LLVM_VERSION_MINOR == 5 if (AddrOpsCount > 0) { SmallVector addr_ops; llvm::Type *Int64Ty = Type::getInt64Ty(unwrap(Scope)->getContext()); @@ -707,12 +707,12 @@ extern "C" void LLVMWriteValueToString(LLVMValueRef Value, RustStringRef str) { extern "C" bool LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) { Module *Dst = unwrap(dst); -#if LLVM_VERSION_MINOR == 5 - MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len)); - ErrorOr Src = llvm::getLazyBitcodeModule(buf, Dst->getContext()); -#else +#if LLVM_VERSION_MINOR >= 6 std::unique_ptr buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len)); ErrorOr Src = llvm::getLazyBitcodeModule(std::move(buf), Dst->getContext()); +#else + MemoryBuffer* buf = MemoryBuffer::getMemBufferCopy(StringRef(bc, len)); + ErrorOr Src = llvm::getLazyBitcodeModule(buf, Dst->getContext()); #endif if (!Src) { LLVMRustSetLastError(Src.getError().message().c_str()); @@ -809,16 +809,6 @@ LLVMRustSetDLLExportStorageClass(LLVMValueRef Value) { V->setDLLStorageClass(GlobalValue::DLLExportStorageClass); } -extern "C" int -LLVMVersionMinor() { - return LLVM_VERSION_MINOR; -} - -extern "C" int -LLVMVersionMajor() { - return LLVM_VERSION_MAJOR; -} - // Note that the two following functions look quite similar to the // LLVMGetSectionName function. Sadly, it appears that this function only // returns a char* pointer, which isn't guaranteed to be null-terminated. The diff --git a/src/rustllvm/rustllvm.h b/src/rustllvm/rustllvm.h index 33dec63a728..8a4330acf43 100644 --- a/src/rustllvm/rustllvm.h +++ b/src/rustllvm/rustllvm.h @@ -46,17 +46,10 @@ #include "llvm-c/ExecutionEngine.h" #include "llvm-c/Object.h" -#if LLVM_VERSION_MINOR >= 5 #include "llvm/IR/IRPrintingPasses.h" #include "llvm/IR/DebugInfo.h" #include "llvm/IR/DIBuilder.h" #include "llvm/Linker/Linker.h" -#else -#include "llvm/Assembly/PrintModulePass.h" -#include "llvm/DebugInfo.h" -#include "llvm/DIBuilder.h" -#include "llvm/Linker.h" -#endif // Used by RustMCJITMemoryManager::getPointerToNamedFunction() // to get around glibc issues. See the function for more information.