https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106395
Bug ID: 106395 Summary: [10/11 regression] [mingw] "redeclared without dllimport attribute: previous dllimport ignored" on C++ friend Product: gcc Version: 12.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: thiago at kde dot org Target Milestone: --- __attribute__((dllimport)) void f(); class S { private: int i; friend __attribute__((dllimport)) void f(); }; With GCC 10.3.0 (OpenSUSE Tumbleweed): $ x86_64-w64-mingw32-gcc -c -Werror /tmp/test.cpp With GCC 11.2.1 (Fedora 35 & 36): $ x86_64-w64-mingw32-gcc -Wall -Wextra -Werror -c /tmp/test.cpp With GCC 12.1.0 (Arch Linux, self built): $ x86_64-w64-mingw32-g++ -Werror -c /tmp/test.cpp /tmp/test.cpp:6:44: error: ‘void f()’ redeclared without dllimport attribute: previous dllimport ignored [-Werror=attributes] 6 | friend __attribute__((dllimport)) void f(); | ^ cc1plus: all warnings being treated as errors GCC 12 is obviously wrong because it is complaining that the attribute is missing and then shows that the attribute is right there.