diff --git a/builtins.cpp b/builtins.cpp index 8248ce53..8048bb5c 100644 --- a/builtins.cpp +++ b/builtins.cpp @@ -758,6 +758,17 @@ AddBitcodeToModule(const unsigned char *bitcode, int length, // architecture and investigate what happened. // Generally we allow library DataLayout to be subset of module // DataLayout or library DataLayout to be empty. +#if defined(LLVM_3_5) + if (!VerifyDataLayoutCompatibility(module->getDataLayoutStr(), + bcModule->getDataLayoutStr())) { + Warning(SourcePos(), "Module DataLayout is incompatible with " + "library DataLayout:\n" + "Module DL: %s\n" + "Library DL: %s\n", + module->getDataLayoutStr().c_str(), + bcModule->getDataLayoutStr().c_str()); + } +#else if (!VerifyDataLayoutCompatibility(module->getDataLayout(), bcModule->getDataLayout())) { Warning(SourcePos(), "Module DataLayout is incompatible with " @@ -767,6 +778,7 @@ AddBitcodeToModule(const unsigned char *bitcode, int length, module->getDataLayout().c_str(), bcModule->getDataLayout().c_str()); } +#endif } bcModule->setTargetTriple(mTriple.str()); diff --git a/module.cpp b/module.cpp index c78a9882..f43096be 100644 --- a/module.cpp +++ b/module.cpp @@ -1098,8 +1098,8 @@ Module::writeObjectFileOrAssembly(llvm::TargetMachine *targetMachine, } llvm::PassManager pm; -#if defined(LLVM_3_1) - pm.add(new llvm::TargetData(*g->target->getDataLayout())); +#if defined(LLVM_3_5) + pm.add(new llvm::DataLayoutPass(*g->target->getDataLayout())); #else pm.add(new llvm::DataLayout(*g->target->getDataLayout())); #endif diff --git a/opt.cpp b/opt.cpp index 0ec7dd67..e7e98ad7 100644 --- a/opt.cpp +++ b/opt.cpp @@ -473,19 +473,19 @@ Optimize(llvm::Module *module, int optLevel) { new llvm::TargetLibraryInfo(llvm::Triple(module->getTargetTriple())); optPM.add(targetLibraryInfo); - -#if defined(LLVM_3_1) - optPM.add(new llvm::TargetData(*g->target->getDataLayout())); +#if defined(LLVM_3_5) + optPM.add(new llvm::DataLayoutPass(*g->target->getDataLayout())); #else optPM.add(new llvm::DataLayout(*g->target->getDataLayout())); +#endif llvm::TargetMachine *targetMachine = g->target->GetTargetMachine(); - #ifdef LLVM_3_2 + +#ifdef LLVM_3_2 optPM.add(new llvm::TargetTransformInfo(targetMachine->getScalarTargetTransformInfo(), targetMachine->getVectorTargetTransformInfo())); - #else // LLVM 3.3+ +#else // LLVM 3.3+ targetMachine->addAnalysisPasses(optPM.getPM()); - #endif #endif optPM.add(llvm::createIndVarSimplifyPass());