c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and DECL_IN_SYSTEM_HEADER in sync.
2007-07-16 Rafael Avila de Espindola <espindola@google.com> * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and DECL_IN_SYSTEM_HEADER in sync. From-SVN: r137873
This commit is contained in:
parent
20d85a9960
commit
238fe3c54b
|
@ -1,3 +1,8 @@
|
||||||
|
2007-07-16 Rafael Avila de Espindola <espindola@google.com>
|
||||||
|
|
||||||
|
* c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
|
||||||
|
DECL_IN_SYSTEM_HEADER in sync.
|
||||||
|
|
||||||
2008-07-15 Daniel Berlin <dberlin@dberlin.org>
|
2008-07-15 Daniel Berlin <dberlin@dberlin.org>
|
||||||
|
|
||||||
* tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
|
* tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
|
||||||
|
|
33
gcc/c-decl.c
33
gcc/c-decl.c
|
@ -1679,12 +1679,27 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype)
|
||||||
if (TREE_DEPRECATED (newdecl))
|
if (TREE_DEPRECATED (newdecl))
|
||||||
TREE_DEPRECATED (olddecl) = 1;
|
TREE_DEPRECATED (olddecl) = 1;
|
||||||
|
|
||||||
/* Keep source location of definition rather than declaration and of
|
/* If a decl is in a system header and the other isn't, keep the one on the
|
||||||
prototype rather than non-prototype unless that prototype is
|
system header. Otherwise, keep source location of definition rather than
|
||||||
built-in. */
|
declaration and of prototype rather than non-prototype unless that
|
||||||
if ((DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0)
|
prototype is built-in. */
|
||||||
|| (old_is_prototype && !new_is_prototype
|
if (CODE_CONTAINS_STRUCT (TREE_CODE (olddecl), TS_DECL_WITH_VIS)
|
||||||
&& !C_DECL_BUILTIN_PROTOTYPE (olddecl)))
|
&& DECL_IN_SYSTEM_HEADER (olddecl)
|
||||||
|
&& !DECL_IN_SYSTEM_HEADER (newdecl) )
|
||||||
|
{
|
||||||
|
DECL_IN_SYSTEM_HEADER (newdecl) = 1;
|
||||||
|
DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
|
||||||
|
}
|
||||||
|
else if (CODE_CONTAINS_STRUCT (TREE_CODE (olddecl), TS_DECL_WITH_VIS)
|
||||||
|
&& DECL_IN_SYSTEM_HEADER (newdecl)
|
||||||
|
&& !DECL_IN_SYSTEM_HEADER (olddecl))
|
||||||
|
{
|
||||||
|
DECL_IN_SYSTEM_HEADER (olddecl) = 1;
|
||||||
|
DECL_SOURCE_LOCATION (olddecl) = DECL_SOURCE_LOCATION (newdecl);
|
||||||
|
}
|
||||||
|
else if ((DECL_INITIAL (newdecl) == 0 && DECL_INITIAL (olddecl) != 0)
|
||||||
|
|| (old_is_prototype && !new_is_prototype
|
||||||
|
&& !C_DECL_BUILTIN_PROTOTYPE (olddecl)))
|
||||||
DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
|
DECL_SOURCE_LOCATION (newdecl) = DECL_SOURCE_LOCATION (olddecl);
|
||||||
|
|
||||||
/* Merge the initialization information. */
|
/* Merge the initialization information. */
|
||||||
|
@ -1700,12 +1715,6 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype)
|
||||||
|
|
||||||
if (CODE_CONTAINS_STRUCT (TREE_CODE (olddecl), TS_DECL_WITH_VIS))
|
if (CODE_CONTAINS_STRUCT (TREE_CODE (olddecl), TS_DECL_WITH_VIS))
|
||||||
{
|
{
|
||||||
/* Merge the unused-warning information. */
|
|
||||||
if (DECL_IN_SYSTEM_HEADER (olddecl))
|
|
||||||
DECL_IN_SYSTEM_HEADER (newdecl) = 1;
|
|
||||||
else if (DECL_IN_SYSTEM_HEADER (newdecl))
|
|
||||||
DECL_IN_SYSTEM_HEADER (olddecl) = 1;
|
|
||||||
|
|
||||||
/* Merge the section attribute.
|
/* Merge the section attribute.
|
||||||
We want to issue an error if the sections conflict but that
|
We want to issue an error if the sections conflict but that
|
||||||
must be done later in decl_attributes since we are called
|
must be done later in decl_attributes since we are called
|
||||||
|
|
Loading…
Reference in New Issue