aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans.c
diff options
context:
space:
mode:
authorThomas Koenig <tkoenig@gcc.gnu.org>2019-08-13 15:08:10 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2019-08-13 15:08:10 +0000
commitfb3f5eae9f6c9ab6d9754e8f86da9181cdce47e2 (patch)
treeff4f7246043db7208ff16c538b53adc1123f3ef2 /gcc/fortran/trans.c
parentcb0a83f3437be73075fba17db68abbf240d17a36 (diff)
downloadgcc-fb3f5eae9f6c9ab6d9754e8f86da9181cdce47e2.zip
gcc-fb3f5eae9f6c9ab6d9754e8f86da9181cdce47e2.tar.gz
gcc-fb3f5eae9f6c9ab6d9754e8f86da9181cdce47e2.tar.bz2
re PR fortran/90561 (ICE in gimplify_var_or_parm_decl, at gimplify.c:2747)
2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/90561 * trans.h (gfc_evaluate_now_function_scope): New function. * trans.c (gfc_evaluate_now_function_scope): New function. * trans-expr.c (gfc_trans_assignment): Use it. 2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/90561 * gfortran.dg/deferred_character_34.f90: New test. From-SVN: r274383
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r--gcc/fortran/trans.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 303abd9..8451147 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -118,6 +118,19 @@ gfc_evaluate_now (tree expr, stmtblock_t * pblock)
return gfc_evaluate_now_loc (input_location, expr, pblock);
}
+/* Like gfc_evaluate_now, but add the created variable to the
+ function scope. */
+
+tree
+gfc_evaluate_now_function_scope (tree expr, stmtblock_t * pblock)
+{
+ tree var;
+ var = gfc_create_var_np (TREE_TYPE (expr), NULL);
+ gfc_add_decl_to_function (var);
+ gfc_add_modify (pblock, var, expr);
+
+ return var;
+}
/* Build a MODIFY_EXPR node and add it to a given statement block PBLOCK.
A MODIFY_EXPR is an assignment: