Hello world,

I have just committed the attached patch as obvious, after regtesting.

Regards

        Thomas

2018-01-30  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/84133
        * frontend-passes (matmul_to_var_expr): Return early if
        in association list.
        (inline_matmul_assign): Likewise.

2018-01-30  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/84133
        * gfortran.dg/inline_matmul_21.f90: New test case.

Index: frontend-passes.c
===================================================================
--- frontend-passes.c	(Revision 257131)
+++ frontend-passes.c	(Arbeitskopie)
@@ -2763,7 +2763,7 @@ matmul_to_var_expr (gfc_expr **ep, int *walk_subtr
     return 0;
 
   if (forall_level > 0 || iterator_level > 0 || in_omp_workshare
-      || in_where)
+      || in_where || in_assoc_list)
     return 0;
 
   /* Check if this is already in the form c = matmul(a,b).  */
@@ -3728,7 +3728,7 @@ inline_matmul_assign (gfc_code **c, int *walk_subt
   if (co->op != EXEC_ASSIGN)
     return 0;
 
-  if (in_where)
+  if (in_where || in_assoc_list)
     return 0;
 
   /* The BLOCKS generated for the temporary variables and FORALL don't
! { dg-do compile }
! { dg-additional-options "-ffrontend-optimize" }
! PR 84133 - this used to ICE. Original test case by
! Gerhard Steinmetz.

program p
   real :: x(2,2) = 1.0
   real :: z(2,2)
   associate (y => matmul(x,x))
      z = y
   end associate
   print *, z
end

  

Reply via email to