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
This commit is contained in:
parent
41babf2e0d
commit
9263e6d6cd
|
@ -1,3 +1,13 @@
|
|||
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>
|
||||
|
||||
* Makefile.in: Prepend $(SHELL) to move-if-change calls.
|
||||
|
|
|
@ -4038,7 +4038,6 @@ build_over_call (cand, args, flags)
|
|||
{
|
||||
val = build_decl (VAR_DECL, NULL_TREE, DECL_CONTEXT (fn));
|
||||
val = build_target_expr (val, arg);
|
||||
TREE_SIDE_EFFECTS (val) = 1;
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -365,7 +365,6 @@ build_up_reference (type, arg, flags)
|
|||
tree slot = build_decl (VAR_DECL, NULL_TREE, argtype);
|
||||
DECL_ARTIFICIAL (slot) = 1;
|
||||
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
|
||||
|
|
|
@ -14127,8 +14127,17 @@ build_target_expr (decl, value)
|
|||
tree decl;
|
||||
tree value;
|
||||
{
|
||||
return build (TARGET_EXPR, TREE_TYPE (decl), decl, value,
|
||||
maybe_build_cleanup (decl), NULL_TREE);
|
||||
tree t;
|
||||
|
||||
t = build (TARGET_EXPR, TREE_TYPE (decl), decl, value,
|
||||
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
|
||||
|
|
|
@ -252,7 +252,6 @@ build_cplus_new (type, init)
|
|||
&& TREE_CODE (TREE_OPERAND (fn, 0)) == FUNCTION_DECL
|
||||
&& DECL_CONSTRUCTOR_P (TREE_OPERAND (fn, 0)));
|
||||
rval = build_target_expr (slot, rval);
|
||||
TREE_SIDE_EFFECTS (rval) = 1;
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
@ -270,7 +269,6 @@ get_target_expr (init)
|
|||
DECL_ARTIFICIAL (slot) = 1;
|
||||
layout_decl (slot, 0);
|
||||
rval = build_target_expr (slot, init);
|
||||
TREE_SIDE_EFFECTS (rval) = 1;
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue