-
Notifications
You must be signed in to change notification settings - Fork 11.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix assertion failure in PR98681 #98860
Conversation
@llvm/pr-subscribers-llvm-analysis @llvm/pr-subscribers-llvm-transforms Author: Yingwei Zheng (dtcxzyw) ChangesSee https://en.cppreference.com/w/cpp/numeric/math/pow:
Full diff: https://github.com/llvm/llvm-project/pull/98860.diff 2 Files Affected:
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index 6c52091cd5d75..df75745645e04 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -2759,7 +2759,7 @@ static Constant *ConstantFoldIntrinsicCall2(Intrinsic::ID IntrinsicID, Type *Ty,
switch (Ty->getTypeID()) {
case Type::HalfTyID:
case Type::FloatTyID: {
- APFloat Res(std::pow(Op1V.convertToFloat(), Exp));
+ APFloat Res(static_cast<float>(std::pow(Op1V.convertToFloat(), Exp)));
if (Ty->isHalfTy()) {
bool Unused;
Res.convert(APFloat::IEEEhalf(), APFloat::rmNearestTiesToEven,
diff --git a/llvm/test/Transforms/EarlyCSE/math-2.ll b/llvm/test/Transforms/EarlyCSE/math-2.ll
index 60a2f19084c83..7e4522a58beaf 100644
--- a/llvm/test/Transforms/EarlyCSE/math-2.ll
+++ b/llvm/test/Transforms/EarlyCSE/math-2.ll
@@ -4,7 +4,7 @@
declare double @atan2(double, double) #0
define double @f_atan2() {
; CHECK-LABEL: @f_atan2(
-; CHECK-NEXT: ret double 0x3FDDAC6{{.+}}
+; CHECK-NEXT: ret double 0x3FDDAC670561BB4F
;
%res = tail call fast double @atan2(double 1.0, double 2.0)
ret double %res
@@ -108,4 +108,12 @@ define half @pr98665() {
ret half %x
}
+define float @powi_f32() {
+; CHECK-LABEL: @powi_f32(
+; CHECK-NEXT: ret float 0.000000e+00
+;
+ %y = call float @llvm.powi.f32.i32(float 0.0, i32 10)
+ ret float %y
+}
+
attributes #0 = { nofree nounwind willreturn }
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/123/builds/1806 Here is the relevant piece of the build log for the reference:
|
To avoid this problem from happening again, I think we should replace the double and float constructors with class methods at |
See https://en.cppreference.com/w/cpp/numeric/math/pow: