From 307be8a531af790ccf8fa30704a130c351fa2564 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Oct 15 2016 17:14:40 +0000 Subject: Apply an InstCombine backport via rust-lang/llvm#51 --- diff --git a/0001-Backport-rL281650.patch b/0001-Backport-rL281650.patch new file mode 100644 index 0000000..614f36b --- /dev/null +++ b/0001-Backport-rL281650.patch @@ -0,0 +1,55 @@ +From 7801978ec1f3637fcda1b564048ebc732bf586af Mon Sep 17 00:00:00 2001 +From: Simonas Kazlauskas +Date: Fri, 16 Sep 2016 00:32:20 +0300 +Subject: [PATCH] Backport rL281650 + +--- + lib/Transforms/InstCombine/InstCombineCompares.cpp | 2 +- + test/Transforms/InstCombine/indexed-gep-compares.ll | 20 ++++++++++++++++++++ + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/lib/Transforms/InstCombine/InstCombineCompares.cpp b/lib/Transforms/InstCombine/InstCombineCompares.cpp +index bfd73f4bbac5..961497fe3c2d 100644 +--- a/lib/Transforms/InstCombine/InstCombineCompares.cpp ++++ b/lib/Transforms/InstCombine/InstCombineCompares.cpp +@@ -634,7 +634,7 @@ static bool canRewriteGEPAsOffset(Value *Start, Value *Base, + } + + if (!isa(V) && !isa(V) && +- !isa(V) && !isa(V)) ++ !isa(V) && !isa(V)) + // We've found some value that we can't explore which is different from + // the base. Therefore we can't do this transformation. + return false; +diff --git a/test/Transforms/InstCombine/indexed-gep-compares.ll b/test/Transforms/InstCombine/indexed-gep-compares.ll +index 495881549e25..64dff2712976 100644 +--- a/test/Transforms/InstCombine/indexed-gep-compares.ll ++++ b/test/Transforms/InstCombine/indexed-gep-compares.ll +@@ -167,4 +167,24 @@ lpad: + ; CHECK: ret i32* %[[PTR]] + } + ++ ++@pr30402 = constant i64 3 ++define i1 @test7() { ++entry: ++ br label %bb7 ++ ++bb7: ; preds = %bb10, %entry-block ++ %phi = phi i64* [ @pr30402, %entry ], [ getelementptr inbounds (i64, i64* @pr30402, i32 1), %bb7 ] ++ %cmp = icmp eq i64* %phi, getelementptr inbounds (i64, i64* @pr30402, i32 1) ++ br i1 %cmp, label %bb10, label %bb7 ++ ++bb10: ++ ret i1 %cmp ++} ++; CHECK-LABEL: @test7( ++; CHECK: %[[phi:.*]] = phi i64* [ @pr30402, %entry ], [ getelementptr inbounds (i64, i64* @pr30402, i32 1), %bb7 ] ++; CHECK: %[[cmp:.*]] = icmp eq i64* %[[phi]], getelementptr inbounds (i64, i64* @pr30402, i32 1) ++; CHECK: ret i1 %[[cmp]] ++ ++ + declare i32 @__gxx_personality_v0(...) +-- +2.7.4 + diff --git a/llvm.spec b/llvm.spec index d546a1a..8b97f7f 100644 --- a/llvm.spec +++ b/llvm.spec @@ -7,7 +7,7 @@ Name: llvm Version: 3.9.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: The Low Level Virtual Machine License: NCSA @@ -23,6 +23,7 @@ Patch1: 0001-This-code-block-breaks-the-docs-build-http-lab.llvm..patch Patch2: 0001-fix-docs-2.patch Patch3: 0001-fix-docs-3.patch Patch4: 0001-docs-fix-cmake-code-block-warning.patch +Patch5: 0001-Backport-rL281650.patch BuildRequires: cmake BuildRequires: zlib-devel @@ -79,6 +80,7 @@ Static libraries for the LLVM compiler infrastructure. %patch2 -p1 -b .docs2 %patch3 -p1 -b .docs3 %patch4 -p1 -b .docs4 +%patch5 -p1 -b .rust1 %build mkdir -p _build @@ -194,6 +196,9 @@ make check-all || : %{_libdir}/*.a %changelog +* Sat Oct 15 2016 Josh Stone - 3.9.0-2 +- Apply an InstCombine backport via rust-lang/llvm#51 + * Wed Sep 07 2016 Dave Airlie - 3.9.0-1 - llvm 3.9.0 - upstream moved where cmake files are packaged.