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

Thomas Schwinge <tschwinge at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-12-01
                 CC|                            |ams at gcc dot gnu.org,
                   |                            |fw at gcc dot gnu.org,
                   |                            |jules at gcc dot gnu.org,
                   |                            |tschwinge at gcc dot gnu.org
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Thomas Schwinge <tschwinge at gcc dot gnu.org> ---
Similarly seen for GCN target, and this is now fatal after Florian's recent
changes (I presume -- and I fully do support those, for avoidance of doubt):

    [...]/source-gcc/libgcc/emutls.c:61:7: warning: conflicting types for
built-in function ‘__emutls_get_address’; expected ‘void *(void *)’
[-Wbuiltin-declaration-mismatch]
       61 | void *__emutls_get_address (struct __emutls_object *);
          |       ^~~~~~~~~~~~~~~~~~~~
    [...]/source-gcc/libgcc/emutls.c:63:6: warning: conflicting types for
built-in function ‘__emutls_register_common’; expected ‘void(void *, unsigned
int,  unsigned int,  void *)’ [-Wbuiltin-declaration-mismatch]
       63 | void __emutls_register_common (struct __emutls_object *, word,
word, void *);
          |      ^~~~~~~~~~~~~~~~~~~~~~~~
    [...]/source-gcc/libgcc/emutls.c:140:1: warning: conflicting types for
built-in function ‘__emutls_get_address’; expected ‘void *(void *)’
[-Wbuiltin-declaration-mismatch]
      140 | __emutls_get_address (struct __emutls_object *obj)
          | ^~~~~~~~~~~~~~~~~~~~
    [...]/source-gcc/libgcc/emutls.c: In function ‘__emutls_get_address’:
    [...]/source-gcc/libgcc/emutls.c:172:13: error: implicit declaration of
function ‘calloc’ [-Wimplicit-function-declaration]
      172 |       arr = calloc (size + 1, sizeof (void *));
          |             ^~~~~~
    [...]/source-gcc/libgcc/emutls.c:32:1: note: include ‘<stdlib.h>’ or
provide a declaration of ‘calloc’
       31 | #include "gthr.h"
      +++ |+#include <stdlib.h>
       32 |
    [...]/source-gcc/libgcc/emutls.c:172:13: warning: incompatible implicit
declaration of built-in function ‘calloc’ [-Wbuiltin-declaration-mismatch]
      172 |       arr = calloc (size + 1, sizeof (void *));
          |             ^~~~~~
    [...]/source-gcc/libgcc/emutls.c:172:13: note: include ‘<stdlib.h>’ or
provide a declaration of ‘calloc’
    [...]/source-gcc/libgcc/emutls.c:184:13: error: implicit declaration of
function ‘realloc’ [-Wimplicit-function-declaration]
      184 |       arr = realloc (arr, (size + 1) * sizeof (void *));
          |             ^~~~~~~
    [...]/source-gcc/libgcc/emutls.c:184:13: note: include ‘<stdlib.h>’ or
provide a declaration of ‘realloc’
    [...]/source-gcc/libgcc/emutls.c:184:13: warning: incompatible implicit
declaration of built-in function ‘realloc’ [-Wbuiltin-declaration-mismatch]
    [...]/source-gcc/libgcc/emutls.c:184:13: note: include ‘<stdlib.h>’ or
provide a declaration of ‘realloc’
    [...]/source-gcc/libgcc/emutls.c: At top level:
    [...]/source-gcc/libgcc/emutls.c:204:1: warning: conflicting types for
built-in function ‘__emutls_register_common’; expected ‘void(void *, unsigned
int,  unsigned int,  void *)’ [-Wbuiltin-declaration-mismatch]
      204 | __emutls_register_common (struct __emutls_object *obj,
          | ^~~~~~~~~~~~~~~~~~~~~~~~
    make[2]: *** [[...]/source-gcc/libgcc/static-object.mk:17: emutls.o] Error
1

GCC's suggestion to "include ‘<stdlib.h>’" needs to be carefully reviewed, in
case this is meant to be buildable in an environment without C library headers?

Reply via email to