diff options
author | Richard Henderson <rth@gcc.gnu.org> | 1999-10-04 16:57:47 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-10-04 16:57:47 -0700 |
commit | 1fef02f64a6dd30c90d829df4de8b8706e4e3c02 (patch) | |
tree | 20e436ee3b77b4492f29da18678815fee347348a /gcc/tree.c | |
parent | 8a693bd0bbd4a31a457cbd1a8692eeed60c1fb32 (diff) | |
download | gcc-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.c | 27 |
1 files changed, 24 insertions, 3 deletions
@@ -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; } |