aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2002-12-18 01:36:51 -0500
committerJason Merrill <jason@gcc.gnu.org>2002-12-18 01:36:51 -0500
commit9ec227134b783359551d2449e1044bd7eca269e0 (patch)
tree6edec40cfde7985e0af06529474d5616700e21e0 /gcc/tree.c
parentefc7052de7e511d905b02d6a5b3ab0723c8d7184 (diff)
downloadgcc-9ec227134b783359551d2449e1044bd7eca269e0.zip
gcc-9ec227134b783359551d2449e1044bd7eca269e0.tar.gz
gcc-9ec227134b783359551d2449e1044bd7eca269e0.tar.bz2
tree.c (make_node): Don't set TREE_TYPE on 's' class nodes.
* tree.c (make_node): Don't set TREE_TYPE on 's' class nodes. (build1): Always set TREE_SIDE_EFFECTS on 's' class nodes. From-SVN: r60237
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 1bfb66b..736e38d 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -297,7 +297,6 @@ make_node (code)
{
case 's':
TREE_SIDE_EFFECTS (t) = 1;
- TREE_TYPE (t) = void_type_node;
break;
case 'd':
@@ -2269,17 +2268,28 @@ build1 (code, type, node)
tree type;
tree node;
{
- int length;
+ int length = sizeof (struct tree_exp);
#ifdef GATHER_STATISTICS
tree_node_kind kind;
#endif
tree t;
#ifdef GATHER_STATISTICS
- if (TREE_CODE_CLASS (code) == 'r')
- kind = r_kind;
- else
- kind = e_kind;
+ switch (TREE_CODE_CLASS (code))
+ {
+ case 's': /* an expression with side effects */
+ kind = s_kind;
+ break;
+ case 'r': /* a reference */
+ kind = r_kind;
+ break;
+ default:
+ kind = e_kind;
+ break;
+ }
+
+ tree_node_counts[(int) kind]++;
+ tree_node_sizes[(int) kind] += length;
#endif
#ifdef ENABLE_CHECKING
@@ -2289,17 +2299,10 @@ build1 (code, type, node)
abort ();
#endif /* ENABLE_CHECKING */
- length = sizeof (struct tree_exp);
-
t = ggc_alloc_tree (length);
memset ((PTR) t, 0, sizeof (struct tree_common));
-#ifdef GATHER_STATISTICS
- tree_node_counts[(int) kind]++;
- tree_node_sizes[(int) kind] += length;
-#endif
-
TREE_SET_CODE (t, code);
TREE_TYPE (t) = type;
@@ -2311,7 +2314,11 @@ build1 (code, type, node)
TREE_READONLY (t) = TREE_READONLY (node);
}
- switch (code)
+ if (TREE_CODE_CLASS (code) == 's')
+ {
+ TREE_SIDE_EFFECTS (t) = 1;
+ }
+ else switch (code)
{
case INIT_EXPR:
case MODIFY_EXPR: