function_optimize_1.f90: Add -Warray-temporaries, check for corresponding warning.
authorThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 29 Mar 2011 07:58:54 +0000 (07:58 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 29 Mar 2011 07:58:54 +0000 (07:58 +0000)
2011-03-29  Thomas Koenig  <tkoenig@gcc.gnu.org>

* gfortran.dg/function_optimize_1.f90:  Add -Warray-temporaries,
check for corresponding warning.

2011-03-29  Thomas Koenig  <tkoenig@gcc.gnu.org>

* frontend-passes.c (create_var):  Warn about creating an
array temporary if requested.

From-SVN: r171653

gcc/fortran/ChangeLog
gcc/fortran/frontend-passes.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/function_optimize_1.f90

index 95d9b78a0bdf290e782e3ab924bbd7ff78a04ede..4bb344d003a1d9ac3fab00fb5f95ed01e1632b76 100644 (file)
@@ -1,7 +1,12 @@
+2011-03-29  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       * frontend-passes.c (create_var):  Warn about creating an
+       array temporary if requested.
+
 2011-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/47065
-       * frontend-passes (optimize_trim): Also follow references, except
+       * frontend-passes.c (optimize_trim): Also follow references, except
        when they are substring references or array references.
 
 2011-03-27  Tobias Burnus  <burnus@net-b.de>
index 2051b0c566d49108f6ee6d327b6ca1066dbd3539..6e59c37cdbcbcd25812d8453e36e677342fb1f73 100644 (file)
@@ -256,6 +256,8 @@ create_var (gfc_expr * e)
       result->ref->u.ar.type = AR_FULL;
       result->ref->u.ar.where = e->where;
       result->ref->u.ar.as = symbol->as;
+      if (gfc_option.warn_array_temp)
+       gfc_warning ("Creating array temporary at %L", &(e->where));
     }
 
   /* Generate the new assignment.  */
index 7b1a72ee8e416c1bb904fedaf036971da6f13fc9..071f9596777fcc8279915978529bd3a088cc4f7f 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-29  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       * gfortran.dg/function_optimize_1.f90:  Add -Warray-temporaries,
+       check for corresponding warning.
+
 2011-03-28  Jason Merrill  <jason@redhat.com>
 
        * g++.dg/cpp0x/rv-deduce2.C: New.
index eaa915fc871b2240a243514a15460d285880c6aa..b023121831bd2e1eb501f63f9fe83680efe94509 100644 (file)
@@ -1,5 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-O -fdump-tree-original" }
+! { dg-options "-O -fdump-tree-original -Warray-temporaries" }
 program main
   implicit none
   real, dimension(2,2) :: a, b, c, d
@@ -24,7 +24,8 @@ program main
 
   data a /2., 3., 5., 7./
   data b /11., 13., 17., 23./
-  write (unit=line, fmt='(4F7.2)') matmul(a,b) + matmul(a,b)
+  write (unit=line, fmt='(4F7.2)') matmul(a,b)  &
+       & + matmul(a,b)    ! { dg-warning "Creating array temporary" }
   z = sin(x) + cos(x) + sin(x) + cos(x)
   print *,z
   x = ext_func(a) + 23 + ext_func(a)