This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 1/3] improve detection of attribute conflicts (PR 81544)
On Wed, 9 Aug 2017, Martin Sebor wrote:
> The problem isn't that the declarations aren't merged at the call
> site but rather that the middle-end gives const precedence over
> pure so when both attributes are provided the former wins.
But that precedence is correct. Any function with the semantics of const
also has the semantics of pure. The problem is that the function doesn't
have the semantics of the attribute it's declared with. And any
diagnostic based purely on the presence of both attributes would be
essentially a style diagnostic - for the style principle "if you have
multiple declarations of a function, they should have the same
information" - rather than "these attributes are inconsistent".
(An optional warning for different information in different declarations
is reasonable enough. Actually in glibc it would be useful to have a
warning for a different but related case - two functions both declared,
later one defined as an alias of another, but the declarations don't have
the same attributes. I'm pretty sure there are cases where the internal
declaration of __foo is missing attributes present on the public
declaration of foo. But such a warning for aliases is only appropriate
for attributes that are properties of the function, not attributes that
are properties of particular names for it - __foo may well be a hidden
symbol where foo isn't.)
--
Joseph S. Myers
joseph@codesourcery.com