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: unassig...@gcc.gnu.org

        ReportedBy: dnovi...@gcc.gnu.org

                CC: ja...@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?

Reply via email to