forked from OSchip/llvm-project
[InstCombine] fix miscompile of frem with 0.0 operand (PR34870)
We might want to select NAN here or do this transform with fast-math, but this should at least fix the miscompile. llvm-svn: 321461
This commit is contained in:
parent
546c43fd1a
commit
14adbacd8a
|
@ -1631,9 +1631,5 @@ Instruction *InstCombiner::visitFRem(BinaryOperator &I) {
|
|||
SQ.getWithInstruction(&I)))
|
||||
return replaceInstUsesWith(I, V);
|
||||
|
||||
// Handle cases involving: rem X, (select Cond, Y, Z)
|
||||
if (simplifyDivRemOfSelectWithZeroOp(I))
|
||||
return &I;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -594,11 +594,12 @@ define <2 x i32> @test23(<2 x i32> %A) {
|
|||
ret <2 x i32> %mul
|
||||
}
|
||||
|
||||
; FIXME: FP division-by-zero is not UB.
|
||||
; FP division-by-zero is not UB.
|
||||
|
||||
define double @PR34870(i1 %cond, double %x, double %y) {
|
||||
; CHECK-LABEL: @PR34870(
|
||||
; CHECK-NEXT: [[FMOD:%.*]] = frem double %x, %y
|
||||
; CHECK-NEXT: [[SEL:%.*]] = select i1 %cond, double %y, double 0.000000e+00
|
||||
; CHECK-NEXT: [[FMOD:%.*]] = frem double %x, [[SEL]]
|
||||
; CHECK-NEXT: ret double [[FMOD]]
|
||||
;
|
||||
%sel = select i1 %cond, double %y, double 0.0
|
||||
|
|
Loading…
Reference in New Issue