[Bug fortran/85544] [7/8/9 Regression] ICE in gfc_conv_scalarized_array_ref, at fortran/trans-array.c:3385
tkoenig at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 13 20:44:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85544
Thomas Koenig <tkoenig at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |tkoenig at gcc dot gnu.org
--- Comment #6 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
Index: frontend-passes.c
===================================================================
--- frontend-passes.c (Revision 266251)
+++ frontend-passes.c (Arbeitskopie)
@@ -1880,15 +1880,14 @@ optimize_power (gfc_expr *e)
if (op1 == NULL || op1->expr_type != EXPR_CONSTANT)
return false;
+ op2 = e->value.op.op2;
+ if (op2 == NULL || op2->rank > 0)
+ return false;
+
if (mpz_cmp_si (op1->value.integer, -1L) == 0)
{
gfc_free_expr (op1);
- op2 = e->value.op.op2;
-
- if (op2 == NULL)
- return false;
-
iand = gfc_build_intrinsic_call (current_ns, GFC_ISYM_IAND,
"_internal_iand", e->where, 2, op2,
gfc_get_int_expr (e->ts.kind,
@@ -1908,10 +1907,6 @@ optimize_power (gfc_expr *e)
{
gfc_free_expr (op1);
- op2 = e->value.op.op2;
- if (op2 == NULL)
- return false;
-
ishft = gfc_build_intrinsic_call (current_ns, GFC_ISYM_ISHFT,
"_internal_ishft", e->where, 2,
gfc_get_int_expr (e->ts.kind,
@@ -1923,10 +1918,6 @@ optimize_power (gfc_expr *e)
else if (mpz_cmp_si (op1->value.integer, 1L) == 0)
{
- op2 = e->value.op.op2;
- if (op2 == NULL)
- return false;
-
gfc_free_expr (op1);
gfc_free_expr (op2);
More information about the Gcc-bugs
mailing list