diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-29 12:37:05 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-29 12:37:05 +0000 |
commit | 12cb78d1cca1387a092ec0bd49c250340bff4afc (patch) | |
tree | 1eab97da96906e0a2786d51d9f25f20de02befcf /gcc/fortran/trans-stmt.c | |
parent | 31879e18aea3222fe3e56f2c0319c9f230645ff3 (diff) | |
download | gcc-12cb78d1cca1387a092ec0bd49c250340bff4afc.tar.gz |
2012-08-29 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 190745 using svnmerge, notably
C++ conversion.
[gcc/]
2012-08-29 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with trunk, converted to C++}}
* melt-runtime.h (MELT_FLEXIBLE_DIM): Set when C++.
* melt-runtime.c (melt_tempdir_path): Don't use choose_tmpdir from
libiberty.
(meltgc_start_module_by_index): Use address-of & on VEC_index.
(melt_really_initialize): When printing builtin settings, handle
GCC 4.8 as with implicit ENABLE_BUILD_WITH_CXX.
(meltgc_out_edge): Provide additional flag TDF_DETAILS for dump_edge_info.
(melt_val2passflag): Handle PROP_referenced_vars only when defined.
* melt-module.mk: Use GCCMELT_COMPILER instead of GCCMELT_CC.
* melt-build-script.tpl: Transmit GCCMELT_COMPILER on every make
using melt-module.mk and improve the error message.
* melt-build-script.sh: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@190778 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans-stmt.c')
-rw-r--r-- | gcc/fortran/trans-stmt.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 323fca382c3..8bc491655be 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -109,7 +109,8 @@ gfc_trans_label_assign (gfc_code * code) label_tree = gfc_get_label_decl (code->label1); - if (code->label1->defined == ST_LABEL_TARGET) + if (code->label1->defined == ST_LABEL_TARGET + || code->label1->defined == ST_LABEL_DO_TARGET) { label_tree = gfc_build_addr_expr (pvoid_type_node, label_tree); len_tree = integer_minus_one_node; @@ -273,7 +274,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, /* Obtain the argument descriptor for unpacking. */ gfc_init_se (&parmse, NULL); parmse.want_pointer = 1; - gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e)); + gfc_conv_expr_descriptor (&parmse, e); gfc_add_block_to_block (&se->pre, &parmse.pre); /* If we've got INTENT(INOUT) or a derived type with INTENT(OUT), @@ -863,9 +864,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type) "implemented for image-set at %L", gfc_c_int_kind, &code->expr1->where); - gfc_conv_array_parameter (&se, code->expr1, - gfc_walk_expr (code->expr1), true, NULL, - NULL, &len); + gfc_conv_array_parameter (&se, code->expr1, true, NULL, NULL, &len); images = se.expr; tmp = gfc_typenode_for_spec (&code->expr1->ts); @@ -1159,7 +1158,6 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) && (sym->as->type == AS_DEFERRED || sym->assoc->variable)) { gfc_se se; - gfc_ss *ss; tree desc; desc = sym->backend_decl; @@ -1167,13 +1165,12 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) /* If association is to an expression, evaluate it and create temporary. Otherwise, get descriptor of target for pointer assignment. */ gfc_init_se (&se, NULL); - ss = gfc_walk_expr (e); if (sym->assoc->variable) { se.direct_byref = 1; se.expr = desc; } - gfc_conv_expr_descriptor (&se, e, ss); + gfc_conv_expr_descriptor (&se, e); /* If we didn't already do the pointer assignment, set associate-name descriptor to the one generated for the temporary. */ @@ -1228,7 +1225,7 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->attr.dimension) { /* For a class array we need a descriptor for the selector. */ - gfc_conv_expr_descriptor (&se, e, gfc_walk_expr (e)); + gfc_conv_expr_descriptor (&se, e); /* Obtain a temporary class container for the result. */ gfc_conv_class_to_class (&se, e, sym->ts, false); @@ -1788,7 +1785,7 @@ gfc_trans_do_while (gfc_code * code) gfc_conv_expr_val (&cond, code->expr1); gfc_add_block_to_block (&block, &cond.pre); cond.expr = fold_build1_loc (code->expr1->where.lb->location, - TRUTH_NOT_EXPR, boolean_type_node, cond.expr); + TRUTH_NOT_EXPR, TREE_TYPE (cond.expr), cond.expr); /* Build "IF (! cond) GOTO exit_label". */ tmp = build1_v (GOTO_EXPR, exit_label); @@ -3501,8 +3498,7 @@ gfc_trans_pointer_assign_need_temp (gfc_expr * expr1, gfc_expr * expr2, gfc_init_se (&lse, NULL); lse.expr = gfc_build_array_ref (tmp1, count, NULL); lse.direct_byref = 1; - rss = gfc_walk_expr (expr2); - gfc_conv_expr_descriptor (&lse, expr2, rss); + gfc_conv_expr_descriptor (&lse, expr2); gfc_add_block_to_block (&body, &lse.pre); gfc_add_block_to_block (&body, &lse.post); @@ -3523,9 +3519,8 @@ gfc_trans_pointer_assign_need_temp (gfc_expr * expr1, gfc_expr * expr2, gfc_add_modify (block, count, gfc_index_zero_node); parm = gfc_build_array_ref (tmp1, count, NULL); - lss = gfc_walk_expr (expr1); gfc_init_se (&lse, NULL); - gfc_conv_expr_descriptor (&lse, expr1, lss); + gfc_conv_expr_descriptor (&lse, expr1); gfc_add_modify (&lse.pre, lse.expr, parm); gfc_start_block (&body); gfc_add_block_to_block (&body, &lse.pre); |