From 46216f7f993c9cd71b71d46e37054b4c27cbaf40 Mon Sep 17 00:00:00 2001 From: Sanjoy Das Date: Fri, 5 Jun 2015 18:04:42 +0000 Subject: [PATCH] [InstCombine] Fix PR23751. PR23751 was caused by a missing ``break;`` in r234388. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239171 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/InstCombine/InstCombineCompares.cpp | 1 + test/Transforms/InstCombine/pr23751.ll | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 test/Transforms/InstCombine/pr23751.ll diff --git a/lib/Transforms/InstCombine/InstCombineCompares.cpp b/lib/Transforms/InstCombine/InstCombineCompares.cpp index 2dafa58d305..ab0d1b10c24 100644 --- a/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -2149,6 +2149,7 @@ bool InstCombiner::OptimizeOverflowCheck(OverflowCheckFlavor OCF, Value *LHS, if (WillNotOverflowSignedAdd(LHS, RHS, OrigI)) return SetResult(Builder->CreateNSWAdd(LHS, RHS), Builder->getFalse(), true); + break; } case OCF_UNSIGNED_SUB: diff --git a/test/Transforms/InstCombine/pr23751.ll b/test/Transforms/InstCombine/pr23751.ll new file mode 100644 index 00000000000..d7840be2f83 --- /dev/null +++ b/test/Transforms/InstCombine/pr23751.ll @@ -0,0 +1,13 @@ +; RUN: opt -instcombine -S < %s | FileCheck %s + +@d = common global i32 0, align 4 + +define i1 @f(i8 zeroext %p) #1 { +; CHECK-NOT: ret i1 false + %1 = zext i8 %p to i32 + %2 = load i32, i32* @d, align 4 + %3 = or i32 %2, -2 + %4 = add nsw i32 %3, %1 + %5 = icmp ugt i32 %1, %4 + ret i1 %5 +} -- 2.34.1