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

            Bug ID: 120416
           Summary: unreachable() missing on win32, but not win64
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ossman at cendio dot se
  Target Milestone: ---

This test program:

> #include <stddef.h>
> 
> int main(int argc, char** argv)
> {
>     unreachable();
>     return 0;
> }

Compiles for 32-bit MinGW:

> $ i686-pc-mingw32-gcc -o unreach unreach.c 
>

But not for 64-bit MinGW:

> $ x86_64-w64-mingw32-gcc -o unreach unreach.c 
> unreach.c: In function 'main':
> unreach.c:5:5: error: implicit declaration of function 'unreachable' 
> [-Wimplicit-function-declaration]
>     5 |     unreachable();
>       |     ^~~~~~~~~~~

Tested with gcc 15.1.

The technical reason is that for 64-bit, gcc's <stddef.h> has this at the
start:

> #include_next <stddef.h>

This was added in r162479/9b91e4361 for bug 41943. I don't understand why,
though. That bug talks about bogus include paths, not chaining/overriding
headers.

I don't dare revert that commit, though, as MinGW has a very non-trivial
<stddef.h>. So they likely rely on that.

On the other hand, they can't rely too much on it, since the 32-bit version has
worked fine without it.


I think bug 119658 takes a more general approach to this issue, as this
difference between 32-bit and 64-bit is not just for <stddef.h>.

Reply via email to