Adapt to latest LLVM 8 changes

This commit is contained in:
Martin Kinkelin 2019-02-23 16:14:49 +01:00
parent 704f774a8b
commit 306bda36fd
8 changed files with 21 additions and 19 deletions

View file

@ -315,7 +315,7 @@ void outputIR2ObjRelevantCmdlineArgs(llvm::raw_ostream &hash_os) {
#else
hash_os << opts::getCodeModel();
#endif
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
const auto framePointerUsage = opts::framePointerUsage();
if (framePointerUsage.hasValue())
hash_os << framePointerUsage.getValue();

View file

@ -37,7 +37,7 @@ Optional<CodeModel::Model> getCodeModel() { return ::getCodeModel(); }
CodeModel::Model getCodeModel() { return ::CMModel; }
#endif
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
llvm::Optional<llvm::FramePointer::FP> framePointerUsage() {
if (::FramePointerUsage.getNumOccurrences() == 0)
return llvm::None;
@ -89,5 +89,9 @@ CodeModel::Model GetCodeModelFromCMModel() { return ::CMModel; }
#if LDC_LLVM_VER >= 700
std::string GetCPUStr() { return ::getCPUStr(); }
#endif
#if LDC_LLVM_VER >= 800
std::vector<std::string> GetMAttrs() { return ::MAttrs; }
#endif
}
#endif // LDC_WITH_LLD && LDC_LLVM_VER >= 500

View file

@ -23,7 +23,7 @@ llvm::Optional<llvm::CodeModel::Model> getCodeModel();
#else
llvm::CodeModel::Model getCodeModel();
#endif
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
llvm::Optional<llvm::FramePointer::FP> framePointerUsage();
#else
llvm::cl::boolOrDefault disableFPElim();

View file

@ -20,7 +20,6 @@
#include "gen/llvm.h"
#include "ir/irfunction.h"
#include "llvm/Bitcode/BitcodeWriter.h"
#include "llvm/IR/TypeBuilder.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
@ -374,15 +373,14 @@ getArrayAndSize(llvm::Module &module, llvm::Type *elemType,
llvm::ConstantInt::get(module.getContext(), APInt(32, elements.size())));
}
template <typename T>
void createStaticArray(llvm::Module &mod, llvm::GlobalVariable *var,
void createStaticI8Array(llvm::Module &mod, llvm::GlobalVariable *var,
llvm::GlobalVariable *varLen, // can be null
llvm::ArrayRef<T> arr) {
llvm::ArrayRef<uint8_t> arr) {
assert(nullptr != var);
const auto dataLen = arr.size();
auto gvar = new llvm::GlobalVariable(
mod,
llvm::ArrayType::get(llvm::TypeBuilder<T, false>::get(mod.getContext()),
llvm::ArrayType::get(llvm::IntegerType::get(mod.getContext(), 8),
dataLen),
true, llvm::GlobalValue::InternalLinkage,
llvm::ConstantDataArray::get(mod.getContext(), arr), ".str");
@ -724,7 +722,7 @@ void setupModuleBitcodeData(const llvm::Module &srcModule, IRState *irs,
irs->module, llvm::IntegerType::get(irs->context(), 32), true,
llvm::GlobalValue::PrivateLinkage, nullptr, ".rtcompile_irsize");
createStaticArray(irs->module, runtimeCompiledIr, runtimeCompiledIrSize,
createStaticI8Array(irs->module, runtimeCompiledIr, runtimeCompiledIrSize,
llvm::ArrayRef<uint8_t>(
reinterpret_cast<uint8_t *>(str.data()), str.size()));

View file

@ -469,7 +469,7 @@ void applyTargetMachineAttributes(llvm::Function &func,
func.addFnAttr("no-infs-fp-math", TO.NoInfsFPMath ? "true" : "false");
func.addFnAttr("no-nans-fp-math", TO.NoNaNsFPMath ? "true" : "false");
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
switch (whichFramePointersToEmit()) {
case llvm::FramePointer::None:
func.addFnAttr("no-frame-pointer-elim", "false");

View file

@ -29,7 +29,7 @@
#include "llvm/Support/CommandLine.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/Instrumentation.h"
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
#include "llvm/Transforms/Instrumentation/MemorySanitizer.h"
#include "llvm/Transforms/Instrumentation/ThreadSanitizer.h"
#endif
@ -126,7 +126,7 @@ bool willCrossModuleInline() {
return enableCrossModuleInlining == llvm::cl::BOU_TRUE;
}
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
llvm::FramePointer::FP whichFramePointersToEmit() {
auto option = opts::framePointerUsage();
if (option)
@ -193,7 +193,7 @@ static void addAddressSanitizerPasses(const PassManagerBuilder &Builder,
static void addMemorySanitizerPass(const PassManagerBuilder &Builder,
PassManagerBase &PM) {
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
PM.add(createMemorySanitizerLegacyPassPass());
#else
PM.add(createMemorySanitizerPass());
@ -214,7 +214,7 @@ static void addMemorySanitizerPass(const PassManagerBuilder &Builder,
static void addThreadSanitizerPass(const PassManagerBuilder &Builder,
PassManagerBase &PM) {
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
PM.add(createThreadSanitizerLegacyPassPass());
#else
PM.add(createThreadSanitizerPass());

View file

@ -34,7 +34,7 @@ bool willInline();
bool willCrossModuleInline();
#if LDC_LLVM_VER >= 900
#if LDC_LLVM_VER >= 800
llvm::FramePointer::FP whichFramePointersToEmit();
#else
bool willEliminateFramePointer();

View file

@ -211,7 +211,7 @@ if (platform.system() != 'Windows') and lit.util.which('gdb', config.environment
config.substitutions.append( ('%_gdb_dflags', gdb_dflags) )
# Add substitutions for functionality across different LLVM versions
if config.llvm_version >= 900:
if config.llvm_version >= 800:
config.substitutions.append( ('%disable_fp_elim', '-frame-pointer=all') )
config.substitutions.append( ('%enable_fp_elim', '-frame-pointer=none') )
else: