diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp index f4c74f8..f1b9961 100644 --- a/backend/src/backend/gen_program.cpp +++ b/backend/src/backend/gen_program.cpp @@ -393,7 +393,11 @@ namespace gbe { llvm::Module* src = (llvm::Module*)((GenProgram*)src_program)->module; llvm::Module* dst = (llvm::Module*)((GenProgram*)dst_program)->module; +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource_Removed, &errMsg)) { +#else if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource, &errMsg)) { +#endif if (err != NULL && errSize != NULL && stringSize > 0u) { strncpy(err, errMsg, stringSize-1); err[stringSize-1] = '\0'; diff --git a/backend/src/libocl/src/ocl_memcpy.ll b/backend/src/libocl/src/ocl_memcpy.ll index b3fadb2..dae3166 100644 --- a/backend/src/libocl/src/ocl_memcpy.ll +++ b/backend/src/libocl/src/ocl_memcpy.ll @@ -22,10 +22,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(1)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(1)* %src, i32 %index.0 %0 = bitcast i8 addrspace(1)* %add.ptr to i32 addrspace(1)* - %1 = load i32 addrspace(1)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(1)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(1)* %add.ptr1 to i32 addrspace(1)* store i32 %1, i32 addrspace(1)* %2, align 4 br label %while.cond @@ -36,9 +36,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(1)* %src, i32 %index.1 - %3 = load i8 addrspace(1)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(1)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(1)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.1 store i8 %3, i8 addrspace(1)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -58,10 +58,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(0)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(0)* %src, i32 %index.0 %0 = bitcast i8 addrspace(0)* %add.ptr to i32 addrspace(0)* - %1 = load i32 addrspace(0)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(0)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(1)* %add.ptr1 to i32 addrspace(1)* store i32 %1, i32 addrspace(1)* %2, align 4 br label %while.cond @@ -72,9 +72,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(0)* %src, i32 %index.1 - %3 = load i8 addrspace(0)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(0)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(0)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.1 store i8 %3, i8 addrspace(1)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -94,10 +94,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(3)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(3)* %src, i32 %index.0 %0 = bitcast i8 addrspace(3)* %add.ptr to i32 addrspace(3)* - %1 = load i32 addrspace(3)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(3)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(1)* %add.ptr1 to i32 addrspace(1)* store i32 %1, i32 addrspace(1)* %2, align 4 br label %while.cond @@ -108,9 +108,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(3)* %src, i32 %index.1 - %3 = load i8 addrspace(3)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(3)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(3)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.1 store i8 %3, i8 addrspace(1)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -130,10 +130,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(1)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(1)* %src, i32 %index.0 %0 = bitcast i8 addrspace(1)* %add.ptr to i32 addrspace(1)* - %1 = load i32 addrspace(1)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(1)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(0)* %add.ptr1 to i32 addrspace(0)* store i32 %1, i32 addrspace(0)* %2, align 4 br label %while.cond @@ -144,9 +144,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(1)* %src, i32 %index.1 - %3 = load i8 addrspace(1)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(1)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(1)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.1 store i8 %3, i8 addrspace(0)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -166,10 +166,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(0)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(0)* %src, i32 %index.0 %0 = bitcast i8 addrspace(0)* %add.ptr to i32 addrspace(0)* - %1 = load i32 addrspace(0)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(0)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(0)* %add.ptr1 to i32 addrspace(0)* store i32 %1, i32 addrspace(0)* %2, align 4 br label %while.cond @@ -180,9 +180,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(0)* %src, i32 %index.1 - %3 = load i8 addrspace(0)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(0)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(0)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.1 store i8 %3, i8 addrspace(0)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -202,10 +202,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(3)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(3)* %src, i32 %index.0 %0 = bitcast i8 addrspace(3)* %add.ptr to i32 addrspace(3)* - %1 = load i32 addrspace(3)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(3)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(0)* %add.ptr1 to i32 addrspace(0)* store i32 %1, i32 addrspace(0)* %2, align 4 br label %while.cond @@ -216,9 +216,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(3)* %src, i32 %index.1 - %3 = load i8 addrspace(3)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(3)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(3)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.1 store i8 %3, i8 addrspace(0)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -238,10 +238,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(1)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(1)* %src, i32 %index.0 %0 = bitcast i8 addrspace(1)* %add.ptr to i32 addrspace(1)* - %1 = load i32 addrspace(1)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(1)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(3)* %add.ptr1 to i32 addrspace(3)* store i32 %1, i32 addrspace(3)* %2, align 4 br label %while.cond @@ -252,9 +252,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(1)* %src, i32 %index.1 - %3 = load i8 addrspace(1)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(1)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(1)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.1 store i8 %3, i8 addrspace(3)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -274,10 +274,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(0)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(0)* %src, i32 %index.0 %0 = bitcast i8 addrspace(0)* %add.ptr to i32 addrspace(0)* - %1 = load i32 addrspace(0)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(0)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(3)* %add.ptr1 to i32 addrspace(3)* store i32 %1, i32 addrspace(3)* %2, align 4 br label %while.cond @@ -288,9 +288,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(0)* %src, i32 %index.1 - %3 = load i8 addrspace(0)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(0)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(0)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.1 store i8 %3, i8 addrspace(3)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -310,10 +310,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(3)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(3)* %src, i32 %index.0 %0 = bitcast i8 addrspace(3)* %add.ptr to i32 addrspace(3)* - %1 = load i32 addrspace(3)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(3)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(3)* %add.ptr1 to i32 addrspace(3)* store i32 %1, i32 addrspace(3)* %2, align 4 br label %while.cond @@ -324,9 +324,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(3)* %src, i32 %index.1 - %3 = load i8 addrspace(3)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(3)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(3)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.1 store i8 %3, i8 addrspace(3)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -354,7 +354,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(1)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(1)* - %3 = load i8 addrspace(1)* %2, align 1 + %3 = load i8, i8 addrspace(1)* %2, align 1 %4 = ptrtoint i8 addrspace(1)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(1)* @@ -377,7 +377,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(0)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(0)* - %3 = load i8 addrspace(0)* %2, align 1 + %3 = load i8, i8 addrspace(0)* %2, align 1 %4 = ptrtoint i8 addrspace(1)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(1)* @@ -400,7 +400,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(3)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(3)* - %3 = load i8 addrspace(3)* %2, align 1 + %3 = load i8, i8 addrspace(3)* %2, align 1 %4 = ptrtoint i8 addrspace(1)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(1)* @@ -423,7 +423,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(1)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(1)* - %3 = load i8 addrspace(1)* %2, align 1 + %3 = load i8, i8 addrspace(1)* %2, align 1 %4 = ptrtoint i8 addrspace(0)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(0)* @@ -446,7 +446,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(0)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(0)* - %3 = load i8 addrspace(0)* %2, align 1 + %3 = load i8, i8 addrspace(0)* %2, align 1 %4 = ptrtoint i8 addrspace(0)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(0)* @@ -469,7 +469,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(3)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(3)* - %3 = load i8 addrspace(3)* %2, align 1 + %3 = load i8, i8 addrspace(3)* %2, align 1 %4 = ptrtoint i8 addrspace(0)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(0)* @@ -492,7 +492,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(1)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(1)* - %3 = load i8 addrspace(1)* %2, align 1 + %3 = load i8, i8 addrspace(1)* %2, align 1 %4 = ptrtoint i8 addrspace(3)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(3)* @@ -515,7 +515,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(0)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(0)* - %3 = load i8 addrspace(0)* %2, align 1 + %3 = load i8, i8 addrspace(0)* %2, align 1 %4 = ptrtoint i8 addrspace(3)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(3)* @@ -538,7 +538,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(3)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(3)* - %3 = load i8 addrspace(3)* %2, align 1 + %3 = load i8, i8 addrspace(3)* %2, align 1 %4 = ptrtoint i8 addrspace(3)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(3)* @@ -562,10 +562,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(2)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(2)* %src, i32 %index.0 %0 = bitcast i8 addrspace(2)* %add.ptr to i32 addrspace(2)* - %1 = load i32 addrspace(2)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(2)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(1)* %add.ptr1 to i32 addrspace(1)* store i32 %1, i32 addrspace(1)* %2, align 4 br label %while.cond @@ -576,9 +576,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(2)* %src, i32 %index.1 - %3 = load i8 addrspace(2)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(2)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(2)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.1 store i8 %3, i8 addrspace(1)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -598,10 +598,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(2)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(2)* %src, i32 %index.0 %0 = bitcast i8 addrspace(2)* %add.ptr to i32 addrspace(2)* - %1 = load i32 addrspace(2)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(2)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(0)* %add.ptr1 to i32 addrspace(0)* store i32 %1, i32 addrspace(0)* %2, align 4 br label %while.cond @@ -612,9 +612,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(2)* %src, i32 %index.1 - %3 = load i8 addrspace(2)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(0)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(2)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(2)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(0)* %dst, i32 %index.1 store i8 %3, i8 addrspace(0)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -634,10 +634,10 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond3, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(2)* %src, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(2)* %src, i32 %index.0 %0 = bitcast i8 addrspace(2)* %add.ptr to i32 addrspace(2)* - %1 = load i32 addrspace(2)* %0, align 4 - %add.ptr1 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.0 + %1 = load i32, i32 addrspace(2)* %0, align 4 + %add.ptr1 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.0 %2 = bitcast i8 addrspace(3)* %add.ptr1 to i32 addrspace(3)* store i32 %1, i32 addrspace(3)* %2, align 4 br label %while.cond @@ -648,9 +648,9 @@ while.cond3: ; preds = %while.cond, %while. br i1 %cmp4, label %while.body5, label %while.end7 while.body5: ; preds = %while.cond3 - %arrayidx = getelementptr inbounds i8 addrspace(2)* %src, i32 %index.1 - %3 = load i8 addrspace(2)* %arrayidx, align 1 - %arrayidx6 = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(2)* %src, i32 %index.1 + %3 = load i8, i8 addrspace(2)* %arrayidx, align 1 + %arrayidx6 = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.1 store i8 %3, i8 addrspace(3)* %arrayidx6, align 1 %inc = add i32 %index.1, 1 br label %while.cond3 @@ -669,7 +669,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(2)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(2)* - %3 = load i8 addrspace(2)* %2, align 1 + %3 = load i8, i8 addrspace(2)* %2, align 1 %4 = ptrtoint i8 addrspace(0)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(0)* @@ -692,7 +692,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(2)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(2)* - %3 = load i8 addrspace(2)* %2, align 1 + %3 = load i8, i8 addrspace(2)* %2, align 1 %4 = ptrtoint i8 addrspace(1)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(1)* @@ -715,7 +715,7 @@ while.body: ; preds = %entry, %while.body %0 = ptrtoint i8 addrspace(2)* %src to i32 %1 = add i32 %0, %index.05 %2 = inttoptr i32 %1 to i8 addrspace(2)* - %3 = load i8 addrspace(2)* %2, align 1 + %3 = load i8, i8 addrspace(2)* %2, align 1 %4 = ptrtoint i8 addrspace(3)* %dst to i32 %5 = add i32 %4, %index.05 %6 = inttoptr i32 %5 to i8 addrspace(3)* diff --git a/backend/src/libocl/src/ocl_memset.ll b/backend/src/libocl/src/ocl_memset.ll index 665eac4..6506a69 100644 --- a/backend/src/libocl/src/ocl_memset.ll +++ b/backend/src/libocl/src/ocl_memset.ll @@ -30,7 +30,7 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond10, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8* %dst, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8* %dst, i32 %index.0 %0 = bitcast i8* %add.ptr to i32* store i32 %or7, i32* %0, align 4 br label %while.cond @@ -41,7 +41,7 @@ while.cond10: ; preds = %while.cond, %while. br i1 %cmp11, label %while.body13, label %while.end14 while.body13: ; preds = %while.cond10 - %arrayidx = getelementptr inbounds i8* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8* %dst, i32 %index.1 store i8 %val, i8* %arrayidx, align 1 %inc = add i32 %index.1, 1 br label %while.cond10 @@ -68,7 +68,7 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond10, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.0 %0 = bitcast i8 addrspace(1)* %add.ptr to i32 addrspace(1)* store i32 %or7, i32 addrspace(1)* %0, align 4 br label %while.cond @@ -79,7 +79,7 @@ while.cond10: ; preds = %while.cond, %while. br i1 %cmp11, label %while.body13, label %while.end14 while.body13: ; preds = %while.cond10 - %arrayidx = getelementptr inbounds i8 addrspace(1)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(1)* %dst, i32 %index.1 store i8 %val, i8 addrspace(1)* %arrayidx, align 1 %inc = add i32 %index.1, 1 br label %while.cond10 @@ -106,7 +106,7 @@ while.cond: ; preds = %while.body, %entry br i1 %cmp, label %while.cond10, label %while.body while.body: ; preds = %while.cond - %add.ptr = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.0 + %add.ptr = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.0 %0 = bitcast i8 addrspace(3)* %add.ptr to i32 addrspace(3)* store i32 %or7, i32 addrspace(3)* %0, align 4 br label %while.cond @@ -117,7 +117,7 @@ while.cond10: ; preds = %while.cond, %while. br i1 %cmp11, label %while.body13, label %while.end14 while.body13: ; preds = %while.cond10 - %arrayidx = getelementptr inbounds i8 addrspace(3)* %dst, i32 %index.1 + %arrayidx = getelementptr inbounds i8, i8 addrspace(3)* %dst, i32 %index.1 store i8 %val, i8 addrspace(3)* %arrayidx, align 1 %inc = add i32 %index.1, 1 br label %while.cond10 diff --git a/backend/src/llvm/llvm_bitcode_link.cpp b/backend/src/llvm/llvm_bitcode_link.cpp index ebf4386..40040f9 100644 --- a/backend/src/llvm/llvm_bitcode_link.cpp +++ b/backend/src/llvm/llvm_bitcode_link.cpp @@ -25,7 +25,11 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" #include "llvm/IRReader/IRReader.h" -#include "llvm/PassManager.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else +#include "llvm/PassManager" +#endif #include "llvm/Pass.h" #include "llvm/IR/IRBuilder.h" #include "llvm/Support/FileSystem.h" @@ -249,7 +253,11 @@ namespace gbe return NULL; } +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + llvm::legacy::PassManager passes; +#else llvm::PassManager passes; +#endif passes.add(createInternalizePass(kernels)); passes.add(createGlobalDCEPass()); diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp index bf03a13..fec8bd4 100644 --- a/backend/src/llvm/llvm_gen_backend.cpp +++ b/backend/src/llvm/llvm_gen_backend.cpp @@ -86,7 +86,12 @@ #include "llvm/IR/Instructions.h" #endif /* LLVM_VERSION_MINOR <= 2 */ #include "llvm/Pass.h" + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else #include "llvm/PassManager.h" +#endif #if LLVM_VERSION_MINOR <= 2 #include "llvm/Intrinsics.h" #include "llvm/IntrinsicInst.h" @@ -99,7 +104,11 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/STLExtras.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/InstIterator.h" +#else #include "llvm/Analysis/ConstantsScanner.h" +#endif #include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/ValueTracking.h" #include "llvm/CodeGen/Passes.h" @@ -501,14 +510,22 @@ namespace gbe TheModule(0), btiBase(BTI_RESERVED_NUM) { - initializeLoopInfoPass(*PassRegistry::getPassRegistry()); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + initializeLoopInfoWrapperPassPass(*PassRegistry::getPassRegistry()); +#else + initializeLoopInfoPass(*PassRegistry::getPassRegistry()); +#endif pass = PASS_EMIT_REGISTERS; } virtual const char *getPassName() const { return "Gen Back-End"; } void getAnalysisUsage(AnalysisUsage &AU) const { +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + AU.addRequired(); +#else AU.addRequired(); +#endif AU.setPreservesAll(); } @@ -535,7 +552,11 @@ namespace gbe if(!bKernel) return false; analyzePointerOrigin(F); - LI = &getAnalysis(); + #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + LI = &getAnalysis().getLoopInfo(); + #else + LI = &getAnalysis(); + #endif emitFunction(F); phiMap.clear(); globalPointer.clear(); diff --git a/backend/src/llvm/llvm_gen_backend.hpp b/backend/src/llvm/llvm_gen_backend.hpp index b21e804..d78fb12 100644 --- a/backend/src/llvm/llvm_gen_backend.hpp +++ b/backend/src/llvm/llvm_gen_backend.hpp @@ -131,7 +131,11 @@ namespace gbe llvm::BasicBlockPass *createRemoveGEPPass(const ir::Unit &unit); /*! Merge load/store if possible */ +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + llvm::BasicBlockPass *createLoadStoreOptimizationPass(const llvm::DataLayout* DL); +#else llvm::BasicBlockPass *createLoadStoreOptimizationPass(); +#endif /*! Scalarize all vector op instructions */ llvm::FunctionPass* createScalarizePass(); diff --git a/backend/src/llvm/llvm_loadstore_optimization.cpp b/backend/src/llvm/llvm_loadstore_optimization.cpp index c6349fa..a258f55 100644 --- a/backend/src/llvm/llvm_loadstore_optimization.cpp +++ b/backend/src/llvm/llvm_loadstore_optimization.cpp @@ -24,7 +24,11 @@ #include "llvm/IR/Instructions.h" #include "llvm/Pass.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else #include "llvm/PassManager.h" +#endif #include "llvm/Config/llvm-config.h" #include "llvm/ADT/DenseMap.h" @@ -62,7 +66,11 @@ namespace gbe { static char ID; ScalarEvolution *SE; const DataLayout *TD; +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + GenLoadStoreOptimization(const DataLayout* DL) : BasicBlockPass(ID), TD(DL) {} +#else GenLoadStoreOptimization() : BasicBlockPass(ID) {} +#endif void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired(); @@ -72,7 +80,8 @@ namespace gbe { virtual bool runOnBasicBlock(BasicBlock &BB) { SE = &getAnalysis(); - #if LLVM_VERSION_MINOR >= 5 + #if LLVM_VERSION_MINOR == 7 + #elif LLVM_VERSION_MINOR >= 5 DataLayoutPass *DLP = getAnalysisIfAvailable(); TD = DLP ? &DLP->getDataLayout() : nullptr; #else @@ -278,8 +287,13 @@ namespace gbe { return changed; } +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + BasicBlockPass *createLoadStoreOptimizationPass(const DataLayout* DL) { + return new GenLoadStoreOptimization(DL); +#else BasicBlockPass *createLoadStoreOptimizationPass() { return new GenLoadStoreOptimization(); +#endif } }; diff --git a/backend/src/llvm/llvm_passes.cpp b/backend/src/llvm/llvm_passes.cpp index 223f61b..5b3d22f 100644 --- a/backend/src/llvm/llvm_passes.cpp +++ b/backend/src/llvm/llvm_passes.cpp @@ -45,7 +45,11 @@ #include "llvm/IR/Instructions.h" #endif /* LLVM_VERSION_MINOR <= 2 */ #include "llvm/Pass.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else #include "llvm/PassManager.h" +#endif #if LLVM_VERSION_MINOR <= 2 #include "llvm/Intrinsics.h" #include "llvm/IntrinsicInst.h" @@ -58,7 +62,11 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/STLExtras.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/InstIterator.h" +#else #include "llvm/Analysis/ConstantsScanner.h" +#endif #include "llvm/Analysis/LoopInfo.h" #include "llvm/Analysis/ValueTracking.h" #include "llvm/CodeGen/Passes.h" diff --git a/backend/src/llvm/llvm_sampler_fix.cpp b/backend/src/llvm/llvm_sampler_fix.cpp index 8c76324..a2a57f4 100644 --- a/backend/src/llvm/llvm_sampler_fix.cpp +++ b/backend/src/llvm/llvm_sampler_fix.cpp @@ -22,7 +22,11 @@ */ #include "llvm/IR/Instructions.h" #include "llvm/Pass.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else #include "llvm/PassManager.h" +#endif #include "llvm/Config/llvm-config.h" #include "llvm/ADT/DenseMap.h" @@ -40,7 +44,11 @@ #include "llvm/Support/CFG.h" #endif +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/InstIterator.h" +#else #include "llvm/Analysis/ConstantsScanner.h" +#endif #include "llvm_gen_backend.hpp" #include "ocl_common_defines.h" diff --git a/backend/src/llvm/llvm_scalarize.cpp b/backend/src/llvm/llvm_scalarize.cpp index 15309de..846282d 100644 --- a/backend/src/llvm/llvm_scalarize.cpp +++ b/backend/src/llvm/llvm_scalarize.cpp @@ -128,7 +128,11 @@ namespace gbe { Scalarize() : FunctionPass(ID) { +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + initializeLoopInfoWrapperPassPass(*PassRegistry::getPassRegistry()); +#else initializeLoopInfoPass(*PassRegistry::getPassRegistry()); +#endif #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 initializeDominatorTreeWrapperPassPass(*PassRegistry::getPassRegistry()); #else diff --git a/backend/src/llvm/llvm_to_gen.cpp b/backend/src/llvm/llvm_to_gen.cpp index b1dc686..74650e9 100644 --- a/backend/src/llvm/llvm_to_gen.cpp +++ b/backend/src/llvm/llvm_to_gen.cpp @@ -32,11 +32,19 @@ #include "llvm/IR/Module.h" #include "llvm/IR/DataLayout.h" #endif /* LLVM_VERSION_MINOR <= 2 */ +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else #include "llvm/PassManager.h" +#endif #include "llvm/Pass.h" #include "llvm/Analysis/Passes.h" #include "llvm/Transforms/IPO.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/Analysis/TargetLibraryInfo.h" +#else #include "llvm/Target/TargetLibraryInfo.h" +#endif #include "llvm/ADT/Triple.h" #if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 2 #include "llvm/Support/IRReader.h" @@ -77,12 +85,21 @@ namespace gbe BVAR(OCL_OUTPUT_CFG_GEN_IR, false); using namespace llvm; - void runFuntionPass(Module &mod, TargetLibraryInfo *libraryInfo, const DataLayout &DL) +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + void runFunctionPass(Module &mod, TargetLibraryInfoImpl *libraryInfo, const DataLayout &DL) +#else + void runFunctionPass(Module &mod, TargetLibraryInfo *libraryInfo, const DataLayout &DL) +#endif { - FunctionPassManager FPM(&mod); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + llvm::legacy::FunctionPassManager FPM(&mod); +#else + FunctionPassManager FPM(&mod); +#endif -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 - FPM.add(new DataLayoutPass()); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 6 + FPM.add(new DataLayout(DL)); #elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 FPM.add(new DataLayoutPass(DL)); #else @@ -94,7 +111,12 @@ namespace gbe #else FPM.add(createVerifierPass()); #endif + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + FPM.add(new TargetLibraryInfoWrapperPass(*libraryInfo)); +#else FPM.add(new TargetLibraryInfo(*libraryInfo)); +#endif FPM.add(createTypeBasedAliasAnalysisPass()); FPM.add(createBasicAliasAnalysisPass()); FPM.add(createCFGSimplificationPass()); @@ -110,18 +132,27 @@ namespace gbe FPM.doFinalization(); } +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + void runModulePass(Module &mod, TargetLibraryInfoImpl *libraryInfo, const DataLayout &DL, int optLevel, bool strictMath) +#else void runModulePass(Module &mod, TargetLibraryInfo *libraryInfo, const DataLayout &DL, int optLevel, bool strictMath) +#endif { - llvm::PassManager MPM; + llvm::legacy::PassManager MPM; -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 6 MPM.add(new DataLayoutPass()); #elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 MPM.add(new DataLayoutPass(DL)); #else MPM.add(new DataLayout(DL)); #endif +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + MPM.add(new TargetLibraryInfoWrapperPass(*libraryInfo)); +#else MPM.add(new TargetLibraryInfo(*libraryInfo)); +#endif MPM.add(createTypeBasedAliasAnalysisPass()); MPM.add(createBasicAliasAnalysisPass()); MPM.add(createIntrinsicLoweringPass()); @@ -198,7 +229,15 @@ namespace gbe } -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#define OUTPUT_BITCODE(STAGE, MOD) do { \ + llvm::legacy::PassManager passes__; \ + if (OCL_OUTPUT_LLVM_##STAGE) { \ + passes__.add(createPrintModulePass(*o)); \ + passes__.run(MOD); \ + } \ + }while(0) +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 #define OUTPUT_BITCODE(STAGE, MOD) do { \ llvm::PassManager passes__; \ if (OCL_OUTPUT_LLVM_##STAGE) { \ @@ -259,15 +298,26 @@ namespace gbe DataLayout DL(&mod); Triple TargetTriple(mod.getTargetTriple()); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + TargetLibraryInfoImpl *libraryInfo = new TargetLibraryInfoImpl(TargetTriple); +#else TargetLibraryInfo *libraryInfo = new TargetLibraryInfo(TargetTriple); +#endif libraryInfo->disableAllFunctions(); OUTPUT_BITCODE(AFTER_LINK, mod); - runFuntionPass(mod, libraryInfo, DL); + runFunctionPass(mod, libraryInfo, DL); runModulePass(mod, libraryInfo, DL, optLevel, strictMath); + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 7 + llvm::legacy::PassManager passes; +#else llvm::PassManager passes; -#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 +#endif + +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 7 +#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 6 passes.add(new DataLayoutPass()); #elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 passes.add(new DataLayoutPass(DL)); @@ -277,8 +327,12 @@ namespace gbe // Print the code before further optimizations passes.add(createIntrinsicLoweringPass()); passes.add(createFunctionInliningPass(200000)); - passes.add(createScalarReplAggregatesPass(64, true, -1, -1, 64)); + passes.add(createScalarReplAggregatesPass(64, true, -1, -1, 64)); +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 7 + passes.add(createLoadStoreOptimizationPass(&DL)); +#else passes.add(createLoadStoreOptimizationPass()); +#endif passes.add(createConstantPropagationPass()); passes.add(createPromoteMemoryToRegisterPass()); if(optLevel > 0) diff --git a/backend/src/llvm/llvm_unroll.cpp b/backend/src/llvm/llvm_unroll.cpp index 5d3fad8..685c297 100644 --- a/backend/src/llvm/llvm_unroll.cpp +++ b/backend/src/llvm/llvm_unroll.cpp @@ -40,7 +40,11 @@ #include "llvm/IR/IRBuilder.h" #endif /* LLVM_VERSION_MINOR <= 1 */ #include "llvm/Support/raw_ostream.h" +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 +#include "llvm/IR/LegacyPassManager.h" +#else #include "llvm/PassManager.h" +#endif #include "llvm/Transforms/Scalar.h" #include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/LoopPass.h" @@ -61,8 +65,13 @@ namespace gbe { LoopPass(ID) {} void getAnalysisUsage(AnalysisUsage &AU) const { +#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 + AU.addRequired(); + AU.addPreserved(); +#else AU.addRequired(); AU.addPreserved(); +#endif AU.addRequiredID(LoopSimplifyID); AU.addPreservedID(LoopSimplifyID); AU.addRequiredID(LCSSAID);