aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2023-01-30 22:46:43 +0100
committerHarald Anlauf <anlauf@gmx.de>2023-02-05 22:52:54 +0100
commitd042f118798ae0648b45f97e63b0e5ab7c82c8ef (patch)
tree2b3c320b6e6ffcc85254c02a372ca50c3aa73071 /gcc
parentf1a4c63c2f741617ae364e39db5bfaaae0fbaa65 (diff)
downloadgcc-d042f118798ae0648b45f97e63b0e5ab7c82c8ef.zip
gcc-d042f118798ae0648b45f97e63b0e5ab7c82c8ef.tar.gz
gcc-d042f118798ae0648b45f97e63b0e5ab7c82c8ef.tar.bz2
Fortran: prevent redundant integer division truncation warnings [PR108592]
gcc/fortran/ChangeLog: PR fortran/108592 * arith.cc (gfc_arith_divide): Emit integer division truncation warnings using gfc_warning instead of gfc_warning_now to prevent redundant messages. gcc/testsuite/ChangeLog: PR fortran/108592 * gfortran.dg/pr108592.f90: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/arith.cc2
-rw-r--r--gcc/testsuite/gfortran.dg/pr108592.f908
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/fortran/arith.cc b/gcc/fortran/arith.cc
index 6de6d21..d0d1c0b 100644
--- a/gcc/fortran/arith.cc
+++ b/gcc/fortran/arith.cc
@@ -778,7 +778,7 @@ gfc_arith_divide (gfc_expr *op1, gfc_expr *op2, gfc_expr **resultp)
{
char *p;
p = mpz_get_str (NULL, 10, result->value.integer);
- gfc_warning_now (OPT_Winteger_division, "Integer division "
+ gfc_warning (OPT_Winteger_division, "Integer division "
"truncated to constant %qs at %L", p,
&op1->where);
free (p);
diff --git a/gcc/testsuite/gfortran.dg/pr108592.f90 b/gcc/testsuite/gfortran.dg/pr108592.f90
new file mode 100644
index 0000000..224b1d8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr108592.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! { dg-options "-Winteger-division" }
+! PR fortran/108592 - warn only once for truncation of integer division
+
+program foo
+ if (8 < (20/9)) stop 1 ! { dg-bogus "Integer division.*Integer division" }
+! { dg-message "Integer division truncated" "" { target *-*-* } .-1 }
+end program