From: Nikita Popov Date: Mon, 17 Apr 2023 10:52:58 +0000 (+0200) Subject: Revert "ValueTracking: Handle freeze in computeKnownFPClass" X-Git-Tag: upstream/17.0.6~11394 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fd63a7d5c8a6b6b86546ef5427f3c0485fdf9bd3;p=platform%2Fupstream%2Fllvm.git Revert "ValueTracking: Handle freeze in computeKnownFPClass" This reverts commit 2c8d0048f03d054f13909a26f959ef95b2a0a4de. This is incorrect: computeKnownFPClass() is only known up to poison, and freeze poison may have any FP class. --- diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index eae6261..2578957 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -4635,8 +4635,7 @@ void computeKnownFPClass(const Value *V, const APInt &DemandedElts, break; } - case Instruction::ExtractValue: - case Instruction::Freeze: { + case Instruction::ExtractValue: { computeKnownFPClass(Op->getOperand(0), DemandedElts, InterestedClasses, Known, Depth + 1, Q, TLI); break; diff --git a/llvm/test/Transforms/Attributor/nofpclass.ll b/llvm/test/Transforms/Attributor/nofpclass.ll index 6ac9baf..52c9c2e 100644 --- a/llvm/test/Transforms/Attributor/nofpclass.ll +++ b/llvm/test/Transforms/Attributor/nofpclass.ll @@ -884,27 +884,3 @@ define float @returned_extractvalue([4 x float] nofpclass(nan) %array) { %extract = extractvalue [4 x float] %array, 0 ret float %extract } - -define float @return_nofpclass_freeze_nan_arg(float nofpclass(nan) %arg) { -; CHECK: Function Attrs: nofree norecurse nosync nounwind willreturn memory(none) -; CHECK-LABEL: define noundef nofpclass(nan) float @return_nofpclass_freeze_nan_arg -; CHECK-SAME: (float nofpclass(nan) [[ARG:%.*]]) #[[ATTR2]] { -; CHECK-NEXT: [[FREEZE:%.*]] = freeze float [[ARG]] -; CHECK-NEXT: ret float [[FREEZE]] -; - %freeze = freeze float %arg - ret float %freeze -} - -define float @return_nofpclass_extractelement_freeze_pinf_arg(<2 x float> nofpclass(pinf) %arg) { -; CHECK: Function Attrs: nofree norecurse nosync nounwind willreturn memory(none) -; CHECK-LABEL: define noundef nofpclass(pinf) float @return_nofpclass_extractelement_freeze_pinf_arg -; CHECK-SAME: (<2 x float> nofpclass(pinf) [[ARG:%.*]]) #[[ATTR2]] { -; CHECK-NEXT: [[FREEZE:%.*]] = freeze <2 x float> [[ARG]] -; CHECK-NEXT: [[ELT:%.*]] = extractelement <2 x float> [[FREEZE]], i32 0 -; CHECK-NEXT: ret float [[ELT]] -; - %freeze = freeze <2 x float> %arg - %elt = extractelement <2 x float> %freeze, i32 0 - ret float %elt -}