aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2004-12-23 16:21:31 +0000
committerDale Johannesen <dalej@gcc.gnu.org>2004-12-23 16:21:31 +0000
commitd070d4fd52107c3d7814edc28bea7bdf4ea08eba (patch)
tree450452ff042e27165daa4c91e8633587b75a073f
parent08167d1cdbfaf763a8bede8fd46c870356a921f5 (diff)
downloadgcc-d070d4fd52107c3d7814edc28bea7bdf4ea08eba.zip
gcc-d070d4fd52107c3d7814edc28bea7bdf4ea08eba.tar.gz
gcc-d070d4fd52107c3d7814edc28bea7bdf4ea08eba.tar.bz2
tree.c (iterative_hash_expr): Canonicalize builtins.
2004-12-23 Dale Johannesen <dalej@apple.com> * tree.c (iterative_hash_expr): Canonicalize builtins. From-SVN: r92553
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree.c14
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 10de8a5..a5f9c5d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-12-23 Dale Johannesen <dalej@apple.com>
+
+ * tree.c (iterative_hash_expr): Canonicalize builtins.
+
2004-12-23 Alexandre Oliva <aoliva@redhat.com>
PR target/16819
diff --git a/gcc/tree.c b/gcc/tree.c
index 572b880..d81abb2 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4130,12 +4130,24 @@ iterative_hash_expr (tree t, hashval_t val)
for (; t; t = TREE_CHAIN (t))
val = iterative_hash_expr (TREE_VALUE (t), val);
return val;
+ case FUNCTION_DECL:
+ /* When referring to a built-in FUNCTION_DECL, use the
+ __builtin__ form. Otherwise nodes that compare equal
+ according to operand_equal_p might get different
+ hash codes. */
+ if (DECL_BUILT_IN (t))
+ {
+ val = iterative_hash_pointer (built_in_decls[DECL_FUNCTION_CODE (t)],
+ val);
+ return val;
+ }
+ /* else FALL THROUGH */
default:
class = TREE_CODE_CLASS (code);
if (class == tcc_declaration)
{
- /* Decls we can just compare by pointer. */
+ /* Otherwise, we can just compare decls by pointer. */
val = iterative_hash_pointer (t, val);
}
else