https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114968
--- Comment #12 from LIU Hao <lh_mouse at 126 dot com> --- testcase: ``` namespace __cxxabiv1 { extern "C" int __cxa_thread_atexit(void (__thiscall* dtor)(void*), void* obj, void* dso) noexcept; } struct nontrivial { nontrivial(); ~nontrivial(); }; void* get_data() { thread_local nontrivial nt; return &nt; } ``` ``` E:\lh_mouse\Desktop>g++ test.cc <built-in>: error: conflicting declaration of C function 'int __cxxabiv1::__cxa_thread_atexit(void (*)(), void*, void*)' test.cc:3:18: note: previous declaration 'int __cxxabiv1::__cxa_thread_atexit(void (__attribute__((thiscall)) *)(void*), void*, void*)' 3 | extern "C" int __cxa_thread_atexit(void (__thiscall* dtor)(void*), void* obj, void* dso) noexcept; | ^~~~~~~~~~~~~~~~~~~ ```