From d070d4fd52107c3d7814edc28bea7bdf4ea08eba Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Thu, 23 Dec 2004 16:21:31 +0000 Subject: [PATCH] tree.c (iterative_hash_expr): Canonicalize builtins. 2004-12-23 Dale Johannesen * tree.c (iterative_hash_expr): Canonicalize builtins. From-SVN: r92553 --- gcc/ChangeLog | 4 ++++ gcc/tree.c | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 10de8a5f31e..a5f9c5d49d7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-12-23 Dale Johannesen + + * tree.c (iterative_hash_expr): Canonicalize builtins. + 2004-12-23 Alexandre Oliva PR target/16819 diff --git a/gcc/tree.c b/gcc/tree.c index 572b8804d56..d81abb2df9d 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