Commit 692ce0fd by Richard Kenner

(redeclaration_error_message): For TYPE_DECLs, return 0 if

TYPE_MAIN_VARIANT of old type is same as new type.

From-SVN: r10311
parent f7d9d4a8
...@@ -2385,6 +2385,15 @@ redeclaration_error_message (newdecl, olddecl) ...@@ -2385,6 +2385,15 @@ redeclaration_error_message (newdecl, olddecl)
{ {
if (flag_traditional && TREE_TYPE (newdecl) == TREE_TYPE (olddecl)) if (flag_traditional && TREE_TYPE (newdecl) == TREE_TYPE (olddecl))
return 0; return 0;
/* pushdecl creates distinct types for TYPE_DECLs by calling
build_type_copy, so the above comparison generally fails. We do
another test against the TYPE_MAIN_VARIANT of the olddecl, which
is equivalent to what this code used to do before the build_type_copy
call. The variant type distinction should not matter for traditional
code, because it doesn't have type qualifiers. */
if (flag_traditional
&& TYPE_MAIN_VARIANT (TREE_TYPE (olddecl)) == TREE_TYPE (newdecl))
return 0;
if (DECL_IN_SYSTEM_HEADER (olddecl) || DECL_IN_SYSTEM_HEADER (newdecl)) if (DECL_IN_SYSTEM_HEADER (olddecl) || DECL_IN_SYSTEM_HEADER (newdecl))
return 0; return 0;
return "redefinition of `%s'"; return "redefinition of `%s'";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment