re PR fortran/92629 (internal compiler error: in convert_mpz_to_unsigned, at fortran...
authorHarald Anlauf <anlauf@gmx.de>
Mon, 25 Nov 2019 19:50:38 +0000 (19:50 +0000)
committerHarald Anlauf <anlauf@gcc.gnu.org>
Mon, 25 Nov 2019 19:50:38 +0000 (19:50 +0000)
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.

From-SVN: r278699

gcc/fortran/ChangeLog
gcc/fortran/simplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr92629.f90 [new file with mode: 0644]

index 95e22137bcaaa20a30e2817656a83d5f1dd69c58..71aacd25caa97f72b47600b542926f3110173d5f 100644 (file)
@@ -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>
 
index b48bf014121833e45eb6562ace2a4de55e1dedd6..b02c549ecff8b1a90e5fc8f072696e8f73a5fbc2 100644 (file)
@@ -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);
     }
 }
 
index 0eead3eb76920b98ce8d082e003b3ffe00b8969a..fb8fd9d3a870e09bd260edf9aa6a90b8f5738402 100644 (file)
@@ -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 (file)
index 0000000..5c2267c
--- /dev/null
@@ -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