[Bug fortran/93835] [9/10 Regression] ICE in simplify_findloc_nodim, at fortran/simplify.c:5513
kargl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 19 21:28:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93835
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P4
Status|UNCONFIRMED |NEW
Last reconfirmed| |2020-02-19
CC| |kargl at gcc dot gnu.org
Target Milestone|--- |10.0
Ever confirmed|0 |1
--- Comment #2 from kargl at gcc dot gnu.org ---
Patch is against svn r280157. Someone needs to convert the example code into a
testcase. Some whitespace clean is mixed in as a bonus.
Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c (revision 280157)
+++ gcc/fortran/simplify.c (working copy)
@@ -5497,7 +5497,7 @@ simplify_findloc_nodim (gfc_expr *result, gfc_expr *va
bool continue_loop;
bool ma;
- for (i = 0; i<array->rank; i++)
+ for (i = 0; i < array->rank; i++)
res[i] = -1;
/* Shortcut for constant .FALSE. MASK. */
@@ -5506,14 +5506,19 @@ simplify_findloc_nodim (gfc_expr *result, gfc_expr *va
&& !mask->value.logical)
goto finish;
- for (i = 0; i < array->rank; i++)
+ if (array->shape)
{
- count[i] = 0;
- sstride[i] = (i == 0) ? 1 : sstride[i-1] * mpz_get_si
(array->shape[i-1]);
- extent[i] = mpz_get_si (array->shape[i]);
- if (extent[i] <= 0)
- goto finish;
+ for (i = 0; i < array->rank; i++)
+ {
+ count[i] = 0;
+ sstride[i] = (i == 0) ? 1 : sstride[i-1] * mpz_get_si
(array->shape[i-1]);
+ extent[i] = mpz_get_si (array->shape[i]);
+ if (extent[i] <= 0)
+ goto finish;
+ }
}
+ else
+ goto finish;
continue_loop = true;
array_ctor = gfc_constructor_first (array->value.constructor);
@@ -5540,7 +5545,7 @@ simplify_findloc_nodim (gfc_expr *result, gfc_expr *va
if (ma && gfc_compare_expr (a, value, INTRINSIC_EQ) == 0)
{
- for (i = 0; i<array->rank; i++)
+ for (i = 0; i < array->rank; i++)
res[i] = count[i];
if (!back_val)
goto finish;
@@ -5565,9 +5570,9 @@ simplify_findloc_nodim (gfc_expr *result, gfc_expr *va
} while (count[n] == extent[n]);
}
- finish:
+finish:
result_ctor = gfc_constructor_first (result->value.constructor);
- for (i = 0; i<array->rank; i++)
+ for (i = 0; i < array->rank; i++)
{
gfc_expr *r_expr;
r_expr = result_ctor->expr;
More information about the Gcc-bugs
mailing list