aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-06-28 15:26:24 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-06-28 15:26:24 -0700
commit497be9785fcb4acf36758fd264571611a8d266a6 (patch)
treea549f060a09c40d71ee82fdca3589a607929d2e1
parent4aaf65cb638562d2151c57eab1a0cc112880e665 (diff)
downloadgcc-497be9785fcb4acf36758fd264571611a8d266a6.zip
gcc-497be9785fcb4acf36758fd264571611a8d266a6.tar.gz
gcc-497be9785fcb4acf36758fd264571611a8d266a6.tar.bz2
tree.def (REALPART_EXPR, [...]): Change class to 'r'.
* tree.def (REALPART_EXPR, IMAGPART_EXPR): Change class to 'r'. * fold-const.c (operand_equal_p <case 'r'>): Add REALPART_EXPR, IMAGPART_EXPR. * tree-dump.c (dequeue_and_dump): Handle REALPART_EXPR and IMAGPART_EXPR explicitly. * tree-inline.c (estimate_num_insns_1): Don't handle REALPART_EXPR and IMAGPART_EXPR specially. * tree.c (build1_stat): Copy TREE_THIS_VOLATILE into class 'r'. From-SVN: r83825
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/fold-const.c2
-rw-r--r--gcc/tree-dump.c2
-rw-r--r--gcc/tree-inline.c2
-rw-r--r--gcc/tree.c2
-rw-r--r--gcc/tree.def4
6 files changed, 19 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e10b2ef..5bdb1de 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2004-06-28 Richard Henderson <rth@redhat.com>
+
+ * tree.def (REALPART_EXPR, IMAGPART_EXPR): Change class to 'r'.
+ * fold-const.c (operand_equal_p <case 'r'>): Add REALPART_EXPR,
+ IMAGPART_EXPR.
+ * tree-dump.c (dequeue_and_dump): Handle REALPART_EXPR and
+ IMAGPART_EXPR explicitly.
+ * tree-inline.c (estimate_num_insns_1): Don't handle REALPART_EXPR
+ and IMAGPART_EXPR specially.
+ * tree.c (build1_stat): Copy TREE_THIS_VOLATILE into class 'r'.
+
2004-06-28 J"orn Rennecke <joern.rennecke@superh.com>
* config.gcc (sh*-*elf*): Remove dead assignment of sh_multilibs.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 4bb42a4..66769af 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2479,6 +2479,8 @@ operand_equal_p (tree arg0, tree arg1, unsigned int flags)
switch (TREE_CODE (arg0))
{
case INDIRECT_REF:
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
return operand_equal_p (TREE_OPERAND (arg0, 0),
TREE_OPERAND (arg1, 0), flags);
diff --git a/gcc/tree-dump.c b/gcc/tree-dump.c
index 39aeead..314c29f 100644
--- a/gcc/tree-dump.c
+++ b/gcc/tree-dump.c
@@ -528,6 +528,8 @@ dequeue_and_dump (dump_info_p di)
case INDIRECT_REF:
case CLEANUP_POINT_EXPR:
case SAVE_EXPR:
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
/* These nodes are unary, but do not have code class `1'. */
dump_child ("op 0", TREE_OPERAND (t, 0));
break;
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index ac52562..ed2afee 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1220,8 +1220,6 @@ estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
case ADDR_EXPR:
case REFERENCE_EXPR:
case COMPLEX_EXPR:
- case REALPART_EXPR:
- case IMAGPART_EXPR:
case EXIT_BLOCK_EXPR:
case CASE_LABEL_EXPR:
case SSA_NAME:
diff --git a/gcc/tree.c b/gcc/tree.c
index ba95e15..23577a1 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -2483,6 +2483,8 @@ build1_stat (enum tree_code code, tree type, tree node MEM_STAT_DECL)
TREE_CONSTANT (t) = 1;
if (TREE_CODE_CLASS (code) == '1' && node && TREE_INVARIANT (node))
TREE_INVARIANT (t) = 1;
+ if (TREE_CODE_CLASS (code) == 'r' && node && TREE_THIS_VOLATILE (node))
+ TREE_THIS_VOLATILE (t) = 1;
break;
}
diff --git a/gcc/tree.def b/gcc/tree.def
index 422817d..d126895 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -776,8 +776,8 @@ DEFTREECODE (CONJ_EXPR, "conj_expr", '1', 1)
/* Used only on an operand of complex type, these return
a value of the corresponding component type. */
-DEFTREECODE (REALPART_EXPR, "realpart_expr", '1', 1)
-DEFTREECODE (IMAGPART_EXPR, "imagpart_expr", '1', 1)
+DEFTREECODE (REALPART_EXPR, "realpart_expr", 'r', 1)
+DEFTREECODE (IMAGPART_EXPR, "imagpart_expr", 'r', 1)
/* Nodes for ++ and -- in C.
The second arg is how much to increment or decrement by.