diff options
author | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-16 03:38:22 +0000 |
---|---|---|
committer | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-16 03:38:22 +0000 |
commit | 41076ef6f964adde18101acf85c620c4818a83e2 (patch) | |
tree | ab46b6fc569996fc94b0894059374459f6e9ad7f /gcc/builtins.c | |
parent | f74811fea0c596c8ba7dbc74dddffe5c7c6e7b14 (diff) | |
download | gcc-41076ef6f964adde18101acf85c620c4818a83e2.tar.gz |
PR middle-end/30391
* tree.c (expr_align): Handle MODIFY_EXPR. GIMPLE_MODIFY_STMT
should be unreachable.
(build2_stat): Allow construction of MODIFY_EXPR at any time.
For the time being redirect GIMPLE_MODIFY_STMT to the new
(renamed) build_gimple_modify_stmt_stat.
(build2_gimple_stat): Rename to...
(build_gimple_modify_stmt_stat): Now longer take a CODE argument.
Always build a GIMPLE_MODIFY_STMT node.
* tree.h (build2_gimple, build2_gimple_stat): Delete.
(build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
declarations.
* tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
* tree-complex.c (set_component_ssa_name, expand_complex_move,
expand_complex_div_wide): Likewise.
* tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
* tree-ssa-loop-im.c (schedule_sm): Likewise.
* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
* tree-ssa-loop-manip.c (create_iv): Likewise.
* tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
abs_replacement): Likewise.
* tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
realify_fake_stores): Likewise.
* builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
node rather than a GIMPLE_MODIFY_STMT node.
(std_gimpify_va_arg_expr, expand_builtin_va_copy,
fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
Likewise.
(integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
* expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
GIMPLE_MODIFY_STMT.
* gfortran.dg/pr30391-1.f90: New test case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122030 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index ac1e1b4a058..79d62d99f44 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4544,7 +4544,7 @@ std_expand_builtin_va_start (tree valist, rtx nextarg) { tree t; - t = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (valist), valist, + t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist, make_tree (ptr_type_node, nextarg)); TREE_SIDE_EFFECTS (t) = 1; @@ -4613,12 +4613,12 @@ std_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p) && !integer_zerop (TYPE_SIZE (type))) { t = fold_convert (TREE_TYPE (valist), size_int (boundary - 1)); - t = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (valist), valist_tmp, + t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp, build2 (PLUS_EXPR, TREE_TYPE (valist), valist_tmp, t)); gimplify_and_add (t, pre_p); t = fold_convert (TREE_TYPE (valist), size_int (-boundary)); - t = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (valist), valist_tmp, + t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp, build2 (BIT_AND_EXPR, TREE_TYPE (valist), valist_tmp, t)); gimplify_and_add (t, pre_p); } @@ -4657,7 +4657,7 @@ std_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p) /* Compute new value for AP. */ t = fold_convert (TREE_TYPE (valist), rounded_size); t = build2 (PLUS_EXPR, TREE_TYPE (valist), valist_tmp, t); - t = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (valist), valist, t); + t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist, t); gimplify_and_add (t, pre_p); addr = fold_convert (build_pointer_type (type), addr); @@ -4821,7 +4821,7 @@ expand_builtin_va_copy (tree exp) if (TREE_CODE (va_list_type_node) != ARRAY_TYPE) { - t = build2 (GIMPLE_MODIFY_STMT, va_list_type_node, dst, src); + t = build2 (MODIFY_EXPR, va_list_type_node, dst, src); TREE_SIDE_EFFECTS (t) = 1; expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); } @@ -6933,7 +6933,7 @@ integer_valued_real_p (tree t) return integer_valued_real_p (TREE_OPERAND (t, 0)); case COMPOUND_EXPR: - case GIMPLE_MODIFY_STMT: + case MODIFY_EXPR: case BIND_EXPR: return integer_valued_real_p (GENERIC_TREE_OPERAND (t, 1)); @@ -8302,7 +8302,7 @@ fold_builtin_memset (tree dest, tree c, tree len, tree type, bool ignore) } ret = build_int_cst_type (TREE_TYPE (var), cval); - ret = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (var), var, ret); + ret = build2 (MODIFY_EXPR, TREE_TYPE (var), var, ret); if (ignore) return ret; @@ -8449,7 +8449,7 @@ fold_builtin_memory_op (tree dest, tree src, tree len, tree type, bool ignore, i expr = fold_convert (TREE_TYPE (destvar), srcvar); else expr = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (destvar), srcvar); - expr = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (destvar), destvar, expr); + expr = build2 (MODIFY_EXPR, TREE_TYPE (destvar), destvar, expr); } if (ignore) @@ -12097,10 +12097,10 @@ do_mpfr_sincos (tree arg, tree arg_sinp, tree arg_cosp) && TYPE_MAIN_VARIANT (TREE_TYPE (arg_cosp)) == TYPE_MAIN_VARIANT (type)) { /* Set the values. */ - result_s = fold_build2 (GIMPLE_MODIFY_STMT, type, arg_sinp, + result_s = fold_build2 (MODIFY_EXPR, type, arg_sinp, result_s); TREE_SIDE_EFFECTS (result_s) = 1; - result_c = fold_build2 (GIMPLE_MODIFY_STMT, type, arg_cosp, + result_c = fold_build2 (MODIFY_EXPR, type, arg_cosp, result_c); TREE_SIDE_EFFECTS (result_c) = 1; /* Combine the assignments into a compound expr. */ |