]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans.h (gfc_inline_intrinsic_function_p): Move prototype...
authorMikael Morin <mikael@gcc.gnu.org>
Thu, 3 Nov 2011 23:58:20 +0000 (23:58 +0000)
committerMikael Morin <mikael@gcc.gnu.org>
Thu, 3 Nov 2011 23:58:20 +0000 (23:58 +0000)
* trans.h (gfc_inline_intrinsic_function_p): Move prototype...
* gfortran.h (gfc_inline_intrinsic_function_p): ... here.
* dependency.c (gfc_check_argument_var_dependency): Check dependencies
of inline intrinsics' arguments.

From-SVN: r180904

gcc/fortran/ChangeLog
gcc/fortran/dependency.c
gcc/fortran/gfortran.h
gcc/fortran/trans.h

index f8a83669c98ee40a3cb7e7d0cb17e5e8885f07f2..a1faa78c0f20dd2dba5bef40d04711408d32ea35 100644 (file)
@@ -1,3 +1,10 @@
+2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * trans.h (gfc_inline_intrinsic_function_p): Move prototype...
+       * gfortran.h (gfc_inline_intrinsic_function_p): ... here.
+       * dependency.c (gfc_check_argument_var_dependency): Check dependencies
+       of inline intrinsics' arguments.
+
 2011-11-03  Mikael Morin  <mikael@gcc.gnu.org>
 
        * trans-array.c (gfc_trans_preloop_setup): New pointers to outer
index c43af00c727ff88e49c8c292fe30d6ac2bd605aa..fd7fa73442678b1e3957ff8e9ad20ec6d6752c59 100644 (file)
@@ -713,6 +713,17 @@ gfc_check_argument_var_dependency (gfc_expr *var, sym_intent intent,
            return gfc_check_fncall_dependency (var, intent, NULL,
                                                expr->value.function.actual,
                                                ELEM_CHECK_VARIABLE);
+
+         if (gfc_inline_intrinsic_function_p (expr))
+           {
+             /* The TRANSPOSE case should have been caught in the
+                noncopying intrinsic case above.  */
+             gcc_assert (expr->value.function.isym->id != GFC_ISYM_TRANSPOSE);
+
+             return gfc_check_fncall_dependency (var, intent, NULL,
+                                                 expr->value.function.actual,
+                                                 ELEM_CHECK_VARIABLE);
+           }
        }
       return 0;
 
index da3477d7a0b0733cff13638a6b3528b29ee0d5b7..b869ca353defcd4588e8c21da0d6b4fdf7898f15 100644 (file)
@@ -2880,6 +2880,9 @@ void gfc_generate_code (gfc_namespace *);
 void gfc_generate_module_code (gfc_namespace *);
 void gfc_init_coarray_decl (bool);
 
+/* trans-intrinsic.c */
+bool gfc_inline_intrinsic_function_p (gfc_expr *);
+
 /* bbt.c */
 typedef int (*compare_fn) (void *, void *);
 void gfc_insert_bbt (void *, void *, compare_fn);
index 4d745f144ceb205db9c6aec76ad08c815a654e23..5757865b3a180a32e5baa320c56d235924df68dc 100644 (file)
@@ -396,9 +396,6 @@ tree gfc_builtin_decl_for_float_kind (enum built_in_function, int);
 tree gfc_conv_intrinsic_subroutine (gfc_code *);
 void gfc_conv_intrinsic_function (gfc_se *, gfc_expr *);
 
-/* Is the intrinsic expanded inline.  */
-bool gfc_inline_intrinsic_function_p (gfc_expr *);
-
 /* Does an intrinsic map directly to an external library call
    This is true for array-returning intrinsics, unless
    gfc_inline_intrinsic_function_p returns true.  */