From 0534fa565255cf56d5771ea92522403947d4bbd4 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 30 Jul 2004 15:55:30 -0700 Subject: gimplify.c (gimplify_expr): Don't replace with DECL_INITIAL if fb_lvalue. * gimplify.c (gimplify_expr) : Don't replace with DECL_INITIAL if fb_lvalue. * tree-gimple.c (is_gimple_id): Add CONST_DECL. * tree-pretty-print.c (dump_decl_name): Dump unnamed CONST_DECL with . * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Fold CONST_DECL. fortran/ * trans-expr.c (gfc_conv_expr_reference): Create a CONST_DECL for TREE_CONSTANTs. testsuite/ * gfortran.fortran-torture/execute/intrinsic_rrspacing.f90: Fix write to constant argument. * gfortran.fortran-torture/execute/intrinsic_scale.f90: Likewise. From-SVN: r85365 --- gcc/fortran/trans-expr.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'gcc/fortran/trans-expr.c') diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 4745f0c..81d879e 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1612,8 +1612,17 @@ gfc_conv_expr_reference (gfc_se * se, gfc_expr * expr) gfc_conv_expr (se, expr); /* Create a temporary var to hold the value. */ - var = gfc_create_var (TREE_TYPE (se->expr), NULL); - gfc_add_modify_expr (&se->pre, var, se->expr); + if (TREE_CONSTANT (se->expr)) + { + var = build_decl (CONST_DECL, NULL, TREE_TYPE (se->expr)); + DECL_INITIAL (var) = se->expr; + pushdecl (var); + } + else + { + var = gfc_create_var (TREE_TYPE (se->expr), NULL); + gfc_add_modify_expr (&se->pre, var, se->expr); + } gfc_add_block_to_block (&se->pre, &se->post); /* Take the address of that value. */ -- cgit v1.1