https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78666

--- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> ---
They sure are!  (We should document it.)

But what is specifying multiple declarations of the same function with
different sets of attributes supposed to mean?  Is it supposed to apply the
union of all of them?  How should conflicts be resolved?  Should the rules be
expected to be consistent across attributes with different names?

FWIW, I would be inclined to accept just the set of attributes on the first
declaration and ignore all the others (with a warning), and give an error on
conflicts in the same declaration.

Alternatively, take a union of non-conflicting attributes across all
declarations and warn about conflicts.  This would suffer from the problem that
if the function were called after only a subset of its declarations were seen
only the set of attributes seen so far would likely apply (and it would likely
change with optimization and inlining.)

Reply via email to