mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
35a6e27706
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 llvm-svn: 240683
23 lines
531 B
LLVM
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)
|