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.