aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2019-11-25 19:50:38 +0000
committerHarald Anlauf <anlauf@gmx.de>2019-11-25 19:50:38 +0000
commite4a6b096a0fb4417aa250d862b5f28f9cc16cfbe (patch)
tree1de6d12de7635f0c7afd1e78256de1f9c9f5d7ef
parentc7a9f4cf0234a99ea75c8a9f4155d6a4f4ed53e7 (diff)
2019-11-25 Harald Anlauf <anlauf@gmx.de>
PR fortran/92629 * simplify.c (convert_mpz_to_unsigned): Skip assert for argument range when -fno-range-check is specified. PR fortran/92629 * gfortran.dg/pr92629.f90: New testcase. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@278699 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/simplify.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr92629.f9011
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 95e22137bca..71aacd25caa 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-11-25 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/92629
+ * simplify.c (convert_mpz_to_unsigned): Skip assert for argument
+ range when -fno-range-check is specified.
+
2019-11-25 Mark Eggleston <mark.eggleston@codethink.com>
Jim MacArthur <jim.macarthur@codethink.co.uk>
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index b48bf014121..b02c549ecff 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -169,8 +169,10 @@ convert_mpz_to_unsigned (mpz_t x, int bitsize)
}
else
{
- /* Confirm that no bits above the signed range are set. */
- gcc_assert (mpz_scan1 (x, bitsize-1) == ULONG_MAX);
+ /* Confirm that no bits above the signed range are set if we
+ are doing range checking. */
+ if (flag_range_check != 0)
+ gcc_assert (mpz_scan1 (x, bitsize-1) == ULONG_MAX);
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0eead3eb769..fb8fd9d3a87 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-11-25 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/92629
+ * gfortran.dg/pr92629.f90: New testcase.
+
2019-11-25 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/base-operand-non-pointer-1.C: New.
diff --git a/gcc/testsuite/gfortran.dg/pr92629.f90 b/gcc/testsuite/gfortran.dg/pr92629.f90
new file mode 100644
index 00000000000..5c2267ca6f1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr92629.f90
@@ -0,0 +1,11 @@
+! { dg-do run }
+! { dg-options "-fno-range-check" }
+!
+! Test the fix for PR92629.
+program bge_tests
+ if (bge (huge (1_1), 128_1)) stop 1
+ if (bge ( 128_1 , 255_1)) stop 2
+ if (bge (huge (1_2), 32768_2)) stop 3
+ if (bge (huge (1_4), 2147483648_4)) stop 4
+ if (bge (huge (1_8), 9223372036854775808_8)) stop 5
+end program