[flang-commits] [PATCH] D137030: [flang] Improve warning message

Peter Klausler via Phabricator via flang-commits flang-commits at lists.llvm.org
Sat Oct 29 17:27:15 PDT 2022


klausler created this revision.
klausler added a reviewer: jeanPerier.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a project: All.
klausler requested review of this revision.

When a floating-point exception occurs while folding an exponentiation
operation with a host library at compilation time, the warning message
should not say that it was an "intrinsic function".


https://reviews.llvm.org/D137030

Files:
  flang/lib/Evaluate/host.cpp
  flang/test/Evaluate/folding04.f90


Index: flang/test/Evaluate/folding04.f90
===================================================================
--- flang/test/Evaluate/folding04.f90
+++ flang/test/Evaluate/folding04.f90
@@ -17,26 +17,45 @@
   !WARN: warning: division by zero
   real(4), parameter :: r4_ninf = -1._4/0._4
 
-  !WARN: warning: invalid argument on intrinsic function
+  !WARN: warning: argument is out of range [-1., 1.]
   real(4), parameter :: nan_r4_acos1 = acos(1.1)
   TEST_ISNAN(nan_r4_acos1)
-  !WARN: warning: invalid argument on intrinsic function
+  !WARN: warning: argument is out of range [-1., 1.]
   real(4), parameter :: nan_r4_acos2 = acos(r4_pmax)
   TEST_ISNAN(nan_r4_acos2)
-  !WARN: warning: invalid argument on intrinsic function
+  !WARN: warning: argument is out of range [-1., 1.]
   real(4), parameter :: nan_r4_acos3 = acos(r4_nmax)
   TEST_ISNAN(nan_r4_acos3)
-  !WARN: warning: invalid argument on intrinsic function
+  !WARN: warning: argument is out of range [-1., 1.]
   real(4), parameter :: nan_r4_acos4 = acos(r4_ninf)
   TEST_ISNAN(nan_r4_acos4)
-  !WARN: warning: invalid argument on intrinsic function
+  !WARN: warning: argument is out of range [-1., 1.]
   real(4), parameter :: nan_r4_acos5 = acos(r4_pinf)
   TEST_ISNAN(nan_r4_acos5)
+  !WARN: warning: argument is out of range [-1., 1.]
+  real(8), parameter :: nan_r8_dasin1 = dasin(-1.1_8)
+  TEST_ISNAN(nan_r8_dasin1)
+  !WARN: warning: argument 'x' must be strictly positive
+  real(8), parameter :: nan_r8_dlog1 = dlog(-0.1_8)
+  TEST_ISNAN(nan_r8_dlog1)
+  !WARN: warning: complex argument must be different from zero
+  complex(4), parameter :: c4_clog1 = clog((0., 0.))
   !WARN: warning: second argument to MOD must not be zero
   real(4), parameter :: nan_r4_mod = mod(3.5, 0.)
   TEST_ISNAN(nan_r4_mod)
-
-  !WARN: warning: overflow on intrinsic function
+  real(4), parameter :: ok_r4_gamma = gamma(-1.1)
+  !WARN: warning: argument must not be a negative integer or zero
+  real(4), parameter :: r4_gamma1 = gamma(0.)
+  !WARN: warning: argument must not be a negative integer or zero
+  real(4), parameter :: r4_gamma2 = gamma(-1.)
+  real(4), parameter :: ok_r4_log_gamma = log_gamma(-2.001)
+  !WARN: warning: argument must not be a negative integer or zero
+  real(4), parameter :: r4_log_gamma1 = log_gamma(0.)
+  !WARN: warning: argument must not be a negative integer or zero
+  real(4), parameter :: r4_log_gamma2 = log_gamma(-100001.)
+  !WARN: warning: 'x' and 'y' arguments must not be both zero
+  real(4), parameter :: r4_atan2 = atan2(0., 0.)
+  !WARN: warning: overflow on evaluation of intrinsic function or operation
   logical, parameter :: test_exp_overflow = exp(256._4).EQ.r4_pinf
 end module
 
Index: flang/lib/Evaluate/host.cpp
===================================================================
--- flang/lib/Evaluate/host.cpp
+++ flang/lib/Evaluate/host.cpp
@@ -141,7 +141,8 @@
   }
 
   if (!flags_.empty()) {
-    RealFlagWarnings(context, flags_, "intrinsic function");
+    RealFlagWarnings(
+        context, flags_, "evaluation of intrinsic function or operation");
   }
   errno = 0;
   if (fesetenv(&originalFenv_) != 0) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D137030.471796.patch
Type: text/x-patch
Size: 3141 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20221030/12a201c6/attachment-0001.bin>


More information about the flang-commits mailing list