[Bug c++/55768] New: Use of unknown __attribute__ in function definition is flagged with an error

dnovillo at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Dec 20 20:00:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55768

             Bug #: 55768
           Summary: Use of unknown __attribute__ in function definition is
                    flagged with an error
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: dnovillo@gcc.gnu.org
                CC: jason@gcc.gnu.org


I am not sure whether this is a bug, but it is a behaviour change since 4.7.

The compiler usually rejects attributes applied to function definitions:

int foo(int x, int y) __attribute__((const))
{
  return x * y;
}
$ gcc47 -c a.cc
a.cc:1:23: error: attributes are not allowed on a function-definition
$

But if the compiler does not recognize the attribute, then it says nothing:

int foo(int x, int y) __attribute__((no_thread_safety_analysis))
{
  return x * y;
}
$ gcc47 -c a.cc
$

This has changed in 4.8.  We now emit an error even if we do not understand the
attribute:

a.cc:1:23: error: attributes are not allowed on a function-definition
 int foo(int x, int y) __attribute__((no_thread_safety_analysis))
                       ^

Is this a case where the user code should be changed to accomodate the rule of
not allowing attributes on function definitions?

In fact, shouldn't the compiler just allow attributes on function definitions?



More information about the Gcc-bugs mailing list