aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>1999-10-04 16:57:47 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-10-04 16:57:47 -0700
commit1fef02f64a6dd30c90d829df4de8b8706e4e3c02 (patch)
tree20e436ee3b77b4492f29da18678815fee347348a /gcc/tree.c
parent8a693bd0bbd4a31a457cbd1a8692eeed60c1fb32 (diff)
downloadgcc-1fef02f64a6dd30c90d829df4de8b8706e4e3c02.zip
gcc-1fef02f64a6dd30c90d829df4de8b8706e4e3c02.tar.gz
gcc-1fef02f64a6dd30c90d829df4de8b8706e4e3c02.tar.bz2
tree.c (build1): Set TREE_SIDE_EFFECTS for expressions that always have side-effects.
* tree.c (build1): Set TREE_SIDE_EFFECTS for expressions that always have side-effects. Use memset not bzero. (make_node): Likewise. From-SVN: r29817
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 221afba..8f70747 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1028,7 +1028,7 @@ make_node (code)
else
{
t = (tree) obstack_alloc (obstack, length);
- bzero ((PTR) t, length);
+ memset ((PTR) t, 0, length);
}
#ifdef GATHER_STATISTICS
@@ -3115,8 +3115,10 @@ build1 (code, type, node)
if (ggc_p)
t = ggc_alloc_tree (length);
else
- t = (tree) obstack_alloc (obstack, length);
- bzero ((PTR) t, length);
+ {
+ t = (tree) obstack_alloc (obstack, length);
+ memset ((PTR) t, 0, length);
+ }
#ifdef GATHER_STATISTICS
tree_node_counts[(int)kind]++;
@@ -3138,6 +3140,25 @@ build1 (code, type, node)
TREE_RAISES (t) = 1;
}
+ switch (code)
+ {
+ case INIT_EXPR:
+ case MODIFY_EXPR:
+ case VA_ARG_EXPR:
+ case RTL_EXPR:
+ case PREDECREMENT_EXPR:
+ case PREINCREMENT_EXPR:
+ case POSTDECREMENT_EXPR:
+ case POSTINCREMENT_EXPR:
+ /* All of these have side-effects, no matter what their
+ operands are. */
+ TREE_SIDE_EFFECTS (t) = 1;
+ break;
+
+ default:
+ break;
+ }
+
return t;
}