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;
      |                  ^~~~~~~~~~~~~~~~~~~
```

Reply via email to