diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2019-08-13 15:08:10 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2019-08-13 15:08:10 +0000 |
commit | fb3f5eae9f6c9ab6d9754e8f86da9181cdce47e2 (patch) | |
tree | ff4f7246043db7208ff16c538b53adc1123f3ef2 /gcc/fortran/trans.c | |
parent | cb0a83f3437be73075fba17db68abbf240d17a36 (diff) | |
download | gcc-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.c | 13 |
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: |