diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2018-09-22 18:44:01 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2018-09-22 18:44:01 +0000 |
commit | 056e6860b3a3f915b499a9e7be48f49da2c04850 (patch) | |
tree | efba4c14d83c1c69cafcbf03c2c2db4ab500a286 /gcc/fortran/trans.h | |
parent | 73a958c67e3c99e10724dc65c4cb738da6188e34 (diff) | |
download | gcc-056e6860b3a3f915b499a9e7be48f49da2c04850.zip gcc-056e6860b3a3f915b499a9e7be48f49da2c04850.tar.gz gcc-056e6860b3a3f915b499a9e7be48f49da2c04850.tar.bz2 |
re PR middle-end/41453 (use INTENT(out) for optimization)
2018-09-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/41453
* trans.h (gfc_conv_expr_reference): Add optional argument
add_clobber to prototype.
(gfc_conv_procedure_call): Set add_clobber argument to
gfc_conv_procedure_reference to true for scalar, INTENT(OUT),
non-pointer, non-allocatable, non-dummy variables whose type
is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if
the procedure is not elemental.
* trans-expr.c (gfc_conv_procedure_reference): Add clobber
statement before call if add_clobber is set.
2018-09-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/41453
* gfortran.dg/intent_optimize_2.f90: New test.
From-SVN: r264506
Diffstat (limited to 'gcc/fortran/trans.h')
-rw-r--r-- | gcc/fortran/trans.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index 1813882..4f33a89 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -485,7 +485,8 @@ tree gfc_build_compare_string (tree, tree, tree, tree, int, enum tree_code); void gfc_conv_expr (gfc_se * se, gfc_expr * expr); void gfc_conv_expr_val (gfc_se * se, gfc_expr * expr); void gfc_conv_expr_lhs (gfc_se * se, gfc_expr * expr); -void gfc_conv_expr_reference (gfc_se * se, gfc_expr *); +void gfc_conv_expr_reference (gfc_se * se, gfc_expr * expr, + bool add_clobber = false); void gfc_conv_expr_type (gfc_se * se, gfc_expr *, tree); |