llvm/test/Transforms/InstCombine/pr23809.ll
Jingyue Wu 529f49db93 [InstCombine] call SimplifyICmpInst with correct context
Summary:
Fixes PR23809. Without passing the context to SimplifyICmpInst, we would
use the assume to prove that the condition feeding the assume is
trivially true (see isValidAssumeForContext in ValueTracking.cpp),
causing the removal of the assume which may be useful for later
optimizations.

Test Plan: pr23800.ll

Reviewers: hfinkel, majnemer

Reviewed By: hfinkel

Subscribers: henryhu, llvm-commits, wengxt, broune, meheff, eliben

Differential Revision: http://reviews.llvm.org/D10695

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240683 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-25 20:14:47 +00:00

23 lines
531 B
LLVM

; RUN: opt < %s -instcombine -S | FileCheck %s
; InstCombine should preserve the call to @llvm.assume.
define i32 @icmp(i32 %a, i32 %b) {
; CHECK-LABEL: @icmp(
%sum = add i32 %a, %b
%1 = icmp sge i32 %sum, 0
call void @llvm.assume(i1 %1)
; CHECK: call void @llvm.assume
ret i32 %sum
}
define float @fcmp(float %a, float %b) {
; CHECK-LABEL: @fcmp(
%sum = fadd float %a, %b
%1 = fcmp oge float %sum, 0.0
call void @llvm.assume(i1 %1)
; CHECK: call void @llvm.assume
ret float %sum
}
declare void @llvm.assume(i1)