simplify.c (gfc_simplify_cshift): Work around bootstrap issues due to inappropriate...
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 21 Nov 2015 20:06:17 +0000 (20:06 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 21 Nov 2015 20:06:17 +0000 (20:06 +0000)
2015-11-21  Steven G. Kargl  <kargl@gcc.gnu.org>

* simplify.c (gfc_simplify_cshift): Work around bootstrap issues
due to inappropriate warning options.

From-SVN: r230710

gcc/fortran/ChangeLog
gcc/fortran/simplify.c

index 1d11ae7..1f1d047 100644 (file)
@@ -1,5 +1,10 @@
 2015-11-21  Steven G. Kargl  <kargl@gcc.gnu.org>
 
+       * simplify.c (gfc_simplify_cshift): Work around bootstrap issues
+       due to inappropriate warning options. 
+
+2015-11-21  Steven G. Kargl  <kargl@gcc.gnu.org>
+
        * simplify.c (gfc_simplify_cshift): Implement simplification of
        CSHIFT for rank=1 arrays.
        (gfc_simplify_spread): Remove a FIXME and add error condition.
index 9886d9e..665ea82 100644 (file)
@@ -1869,6 +1869,15 @@ gfc_simplify_cshift (gfc_expr *array, gfc_expr *shift, gfc_expr *dim)
   else
     {
       /* FIXME: Deal with rank > 1 arrays.  For now, don't leak memory.  */
+
+      /* GCC bootstrap is too stupid to realize that the above code for dm
+        is correct.  First, dim can be specified for a rank 1 array.  It is
+        not needed in this nor used here.  Second, the code is simply waiting
+        for someone to implement rank > 1 simplification.   For now, add a
+        pessimization to the code that has a zero valid reason to be here.  */
+      if (dm > array->rank)
+       gcc_unreachable ();
+
       gfc_free_expr (a);
     }