From: Richard Guenther Date: Mon, 16 May 2011 15:10:05 +0000 (+0000) Subject: gimple.c (iterative_hash_gimple_type): Re-instantiate change to always visit pointer... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1e83b5f197565d700a5a49d523e0ab77bdcbd809;p=gcc.git gimple.c (iterative_hash_gimple_type): Re-instantiate change to always visit pointer target and function result and... 2011-05-16 Richard Guenther * gimple.c (iterative_hash_gimple_type): Re-instantiate change to always visit pointer target and function result and argument types. From-SVN: r173794 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a46fe6db2db..4f8429993fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-05-16 Richard Guenther + + * gimple.c (iterative_hash_gimple_type): Re-instantiate + change to always visit pointer target and function result + and argument types. + 2011-05-16 Jason Merrill PR c++/48999 diff --git a/gcc/gimple.c b/gcc/gimple.c index ca3a5cbb71e..ce632e04d94 100644 --- a/gcc/gimple.c +++ b/gcc/gimple.c @@ -4129,20 +4129,10 @@ iterative_hash_gimple_type (tree type, hashval_t val, } /* For pointer and reference types, fold in information about the type - pointed to but do not recurse into possibly incomplete types to - avoid hash differences for complete vs. incomplete types. */ + pointed to. */ if (POINTER_TYPE_P (type)) - { - if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (type))) - { - v = iterative_hash_hashval_t (TREE_CODE (TREE_TYPE (type)), v); - v = iterative_hash_name - (TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (type))), v); - } - else - v = visit (TREE_TYPE (type), state, v, - sccstack, sccstate, sccstate_obstack); - } + v = visit (TREE_TYPE (type), state, v, + sccstack, sccstate, sccstate_obstack); /* For integer types hash the types min/max values and the string flag. */ if (TREE_CODE (type) == INTEGER_TYPE) @@ -4183,29 +4173,13 @@ iterative_hash_gimple_type (tree type, hashval_t val, v = visit (TYPE_METHOD_BASETYPE (type), state, v, sccstack, sccstate, sccstate_obstack); - /* For result types allow mismatch in completeness. */ - if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (type))) - { - v = iterative_hash_hashval_t (TREE_CODE (TREE_TYPE (type)), v); - v = iterative_hash_name - (TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (type))), v); - } - else - v = visit (TREE_TYPE (type), state, v, - sccstack, sccstate, sccstate_obstack); - + /* Check result and argument types. */ + v = visit (TREE_TYPE (type), state, v, + sccstack, sccstate, sccstate_obstack); for (p = TYPE_ARG_TYPES (type), na = 0; p; p = TREE_CHAIN (p)) { - /* For argument types allow mismatch in completeness. */ - if (RECORD_OR_UNION_TYPE_P (TREE_VALUE (p))) - { - v = iterative_hash_hashval_t (TREE_CODE (TREE_VALUE (p)), v); - v = iterative_hash_name - (TYPE_NAME (TYPE_MAIN_VARIANT (TREE_VALUE (p))), v); - } - else - v = visit (TREE_VALUE (p), state, v, - sccstack, sccstate, sccstate_obstack); + v = visit (TREE_VALUE (p), state, v, + sccstack, sccstate, sccstate_obstack); na++; }