diff --git a/driver/main.cpp b/driver/main.cpp index 3bb3ddcd73..30bea3ef80 100644 --- a/driver/main.cpp +++ b/driver/main.cpp @@ -48,6 +48,9 @@ #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/TargetSelect.h" #include "llvm/Target/TargetMachine.h" +#if LDC_LLVM_VER >= 306 +#include "llvm/Target/TargetSubtargetInfo.h" +#endif #if LDC_LLVM_VER >= 303 #include "llvm/LinkAllIR.h" #include "llvm/IR/LLVMContext.h" @@ -971,7 +974,9 @@ int main(int argc, char **argv) global.params.is64bit = triple.isArch64Bit(); } -#if LDC_LLVM_VER >= 302 +#if LDC_LLVM_VER >= 306 + gDataLayout = gTargetMachine->getSubtargetImpl()->getDataLayout(); +#elif LDC_LLVM_VER >= 302 gDataLayout = gTargetMachine->getDataLayout(); #else gDataLayout = gTargetMachine->getTargetData(); diff --git a/driver/toobj.cpp b/driver/toobj.cpp index 94a1b37130..69ff47b598 100644 --- a/driver/toobj.cpp +++ b/driver/toobj.cpp @@ -28,6 +28,9 @@ #include "llvm/Support/PathV1.h" #endif #include "llvm/Target/TargetMachine.h" +#if LDC_LLVM_VER >= 306 +#include "llvm/Target/TargetSubtargetInfo.h" +#endif #if LDC_LLVM_VER >= 303 #include "llvm/IR/Module.h" #else @@ -61,7 +64,12 @@ static void codegenModule(llvm::TargetMachine &Target, llvm::Module& m, // about to build. PassManager Passes; -#if LDC_LLVM_VER >= 305 +#if LDC_LLVM_VER >= 306 + if (const DataLayout *DL = Target.getSubtargetImpl()->getDataLayout()) + Passes.add(new DataLayoutPass(*DL)); + else + Passes.add(new DataLayoutPass(&m)); +#elif LDC_LLVM_VER == 305 if (const DataLayout *DL = Target.getDataLayout()) Passes.add(new DataLayoutPass(*DL)); else