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

            Bug ID: 82316
           Summary: unexpected warning for using 'register' storage class
                    in extern "C" declarations
           Product: gcc
           Version: 7.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: development at jordi dot vilar.cat
  Target Milestone: ---

C++ 17 removed the 'register' storage class, but it is still valid in C code.

In g++, a new warning has been included to cope with it:
warning: ISO C++1z does not allow 'register' storage class specifier
[-Wregister]
This warning is issued when compiling in C++ but not when compiling in C, as
expected.

But when including header files for C libraries from C++ code, typically C
declarations are introduced as extern "C". In this case, the warning should
also be supressed, as the 'register' storage refers to a valid C declaration,
but not a C++ declaration.

HOW TO REPRODUCE:

simply, compile the following line with -std=c++17:
extern "C" void test(register int);

Reply via email to