Hello,

On Wed, Jun 25 2025, Martin Jambor wrote:
> Hi,
>
> When compiling GCC (with JIT enabled) by clang, it produces a series
> of warning s like this for all uses of DEF_GOACC_BUILTIN_COMPILER and
> DEF_GOMP_BUILTIN_COMPILER in omp-builtins.def:
>
> ----------------------------------------------------------------------
>   In file included from 
> /home/worker/buildworker/tiber-gcc-clang/build/gcc/jit/jit-builtins.cc:61:
>   In file included from 
> /home/worker/buildworker/tiber-gcc-clang/build/gcc/builtins.def:1276:
>   /home/worker/buildworker/tiber-gcc-clang/build/gcc/omp-builtins.def:55:1: 
> warning: non-constant-expression cannot be narrowed from type 'int' to 'bool' 
> in initializer list [-Wc++11-narrowing]
>      55 | DEF_GOACC_BUILTIN_COMPILER (BUILT_IN_ACC_ON_DEVICE, "acc_on_device",
>         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>      56 |                             BT_FN_INT_INT, 
> ATTR_CONST_NOTHROW_LEAF_LIST)
>         |                             
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   /home/worker/buildworker/tiber-gcc-clang/build/gcc/builtins.def:225:9: 
> note: expanded from macro 'DEF_GOACC_BUILTIN_COMPILER'
>     225 |                flag_openacc, true, true, ATTRS, false, true)
>         |                ^~~~~~~~~~~~
>   ./options.h:7049:22: note: expanded from macro 'flag_openacc'
>    7049 | #define flag_openacc global_options.x_flag_openacc
>         |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   
> /home/worker/buildworker/tiber-gcc-clang/build/gcc/jit/jit-builtins.cc:58:23: 
> note: expanded from macro 'DEF_BUILTIN'
>      58 |   {NAME, CLASS, TYPE, BOTH_P, FALLBACK_P, ATTRS, IMPLICIT},
>         |                       ^~~~~~
>   /home/worker/buildworker/tiber-gcc-clang/build/gcc/omp-builtins.def:55:1: 
> note: insert an explicit cast to silence this issue
> ----------------------------------------------------------------------
>
> I'm not sure to what extent this is an actual problem or not, but
> flag_openacc is an int and we do store it in a bool, so I this patch
> does add the explicit cast clang asks for.
>
> Bootstrapped and tested on x86_64-linx.  OK for master?
>
> Alternatively, as with all of these clang warning issues, I'm
> perfectly happy to add an entry to contrib/filter-clang-warnings.py to
> ignore the warnings instead.
>
> Thanks,
>
> Martin
>
>
> gcc/jit/ChangeLog:
>
> 2025-06-23  Martin Jambor  <mjam...@suse.cz>
>
>       * jit-builtins.cc (DEF_BUILTIN): Add explicit cast to bool of BOTH_P.

On IRC David pointed out that this hints at a bigger issue in how the
array of builtins is initialized in JIT and so I filed PR 120960 for it
(where "it" means my understanding what is wrong with the code).

As a consequence I'm not going to pursue this patch but rather filter it
out in the filtering script for now.

Thanks,

Martin



> ---
>  gcc/jit/jit-builtins.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/jit/jit-builtins.cc b/gcc/jit/jit-builtins.cc
> index 84e0bd5347f..ddbba55d3f3 100644
> --- a/gcc/jit/jit-builtins.cc
> +++ b/gcc/jit/jit-builtins.cc
> @@ -55,7 +55,7 @@ struct builtin_data
>  
>  #define DEF_BUILTIN(X, NAME, CLASS, TYPE, LT, BOTH_P, FALLBACK_P, \
>                   NONANSI_P, ATTRS, IMPLICIT, COND)             \
> -  {NAME, CLASS, TYPE, BOTH_P, FALLBACK_P, ATTRS, IMPLICIT},
> +  {NAME, CLASS, TYPE, (bool) BOTH_P, FALLBACK_P, ATTRS, IMPLICIT},
>  static const struct builtin_data builtin_data[] =
>  {
>  #include "builtins.def"
> -- 
> 2.49.0

Reply via email to