Fabs.clearSign();
if (!Lossy &&
((Fabs.compare(APFloat::getSmallestNormalized(FPSem)) !=
- APFloat::cmpLessThan) || Fabs.isZero()))
- // TODO: Propagate FMF.
- return new FCmpInst(Pred, X, ConstantFP::get(C->getContext(), F));
+ APFloat::cmpLessThan) || Fabs.isZero())) {
+ Instruction *NewFCmp =
+ new FCmpInst(Pred, X, ConstantFP::get(C->getContext(), F));
+ NewFCmp->copyFastMathFlags(&I);
+ return NewFCmp;
+ }
}
}
define i1 @test2(float %a) {
; CHECK-LABEL: @test2(
-; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt float [[A:%.*]], 1.000000e+00
+; CHECK-NEXT: [[CMP:%.*]] = fcmp ninf ogt float [[A:%.*]], 1.000000e+00
; CHECK-NEXT: ret i1 [[CMP]]
;
%ext = fpext float %a to double