Commit 9263e6d6 by Mark Mitchell Committed by Mark Mitchell

decl.c (build_target_expr): Set TREE_SIDE_EFFECTS on the TARGET_EXPR.

	* decl.c (build_target_expr): Set TREE_SIDE_EFFECTS on the
	TARGET_EXPR.
	* call.c (build_over_call): Don't set TREE_SIDE_EFFECTS on
	the TARGET_EXPR.
	* cvt.c (build_up_reference): Likewise.
	* tree.c (build_cplus_new): Likewise.
	(get_target_expr): Likewise.

From-SVN: r29426
parent 41babf2e
1999-09-14 Mark Mitchell <mark@codesourcery.com>
* decl.c (build_target_expr): Set TREE_SIDE_EFFECTS on the
TARGET_EXPR.
* call.c (build_over_call): Don't set TREE_SIDE_EFFECTS on
the TARGET_EXPR.
* cvt.c (build_up_reference): Likewise.
* tree.c (build_cplus_new): Likewise.
(get_target_expr): Likewise.
Tue Sep 14 01:45:10 1999 Marc Espie <espie@cvs.openbsd.org> Tue Sep 14 01:45:10 1999 Marc Espie <espie@cvs.openbsd.org>
* Makefile.in: Prepend $(SHELL) to move-if-change calls. * Makefile.in: Prepend $(SHELL) to move-if-change calls.
......
...@@ -4038,7 +4038,6 @@ build_over_call (cand, args, flags) ...@@ -4038,7 +4038,6 @@ build_over_call (cand, args, flags)
{ {
val = build_decl (VAR_DECL, NULL_TREE, DECL_CONTEXT (fn)); val = build_decl (VAR_DECL, NULL_TREE, DECL_CONTEXT (fn));
val = build_target_expr (val, arg); val = build_target_expr (val, arg);
TREE_SIDE_EFFECTS (val) = 1;
return val; return val;
} }
} }
......
...@@ -365,7 +365,6 @@ build_up_reference (type, arg, flags) ...@@ -365,7 +365,6 @@ build_up_reference (type, arg, flags)
tree slot = build_decl (VAR_DECL, NULL_TREE, argtype); tree slot = build_decl (VAR_DECL, NULL_TREE, argtype);
DECL_ARTIFICIAL (slot) = 1; DECL_ARTIFICIAL (slot) = 1;
arg = build_target_expr (slot, arg); arg = build_target_expr (slot, arg);
TREE_SIDE_EFFECTS (arg) = 1;
} }
/* If we had a way to wrap this up, and say, if we ever needed it's /* If we had a way to wrap this up, and say, if we ever needed it's
......
...@@ -14127,8 +14127,17 @@ build_target_expr (decl, value) ...@@ -14127,8 +14127,17 @@ build_target_expr (decl, value)
tree decl; tree decl;
tree value; tree value;
{ {
return build (TARGET_EXPR, TREE_TYPE (decl), decl, value, tree t;
t = build (TARGET_EXPR, TREE_TYPE (decl), decl, value,
maybe_build_cleanup (decl), NULL_TREE); maybe_build_cleanup (decl), NULL_TREE);
/* We always set TREE_SIDE_EFFECTS so that expand_expr does not
ignore the TARGET_EXPR. If there really turn out to be no
side-effects, then the optimizer should be able to get rid of
whatever code is generated anyhow. */
TREE_SIDE_EFFECTS (t) = 1;
return t;
} }
/* If DECL is of a type which needs a cleanup, build that cleanup /* If DECL is of a type which needs a cleanup, build that cleanup
......
...@@ -252,7 +252,6 @@ build_cplus_new (type, init) ...@@ -252,7 +252,6 @@ build_cplus_new (type, init)
&& TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL && TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL
&& DECL_CONSTRUCTOR_P (TREE_OPERAND (fn, 0))); && DECL_CONSTRUCTOR_P (TREE_OPERAND (fn, 0)));
rval = build_target_expr (slot, rval); rval = build_target_expr (slot, rval);
TREE_SIDE_EFFECTS (rval) = 1;
return rval; return rval;
} }
...@@ -270,7 +269,6 @@ get_target_expr (init) ...@@ -270,7 +269,6 @@ get_target_expr (init)
DECL_ARTIFICIAL (slot) = 1; DECL_ARTIFICIAL (slot) = 1;
layout_decl (slot, 0); layout_decl (slot, 0);
rval = build_target_expr (slot, init); rval = build_target_expr (slot, init);
TREE_SIDE_EFFECTS (rval) = 1;
return rval; return rval;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment