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

--- Comment #9 from vries at gcc dot gnu.org ---
I tried the example, and added -fopenmp. In lto1, I observed:
...
(gdb) p flag_openmp
$2 = 0
(gdb) p flag_openacc
$3 = 0
(gdb) p flag_tree_parallelize_loops
$4 = 1
(gdb) p flag_offload_abi 
$5 = OFFLOAD_ABI_UNSET
...

So, the enabler in this code in builtins.def is flag_tree_parallelize_loops,
not flag_openmp:
...
#define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
  DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
               false, true, true, ATTRS, false, \
               (flag_openmp || flag_tree_parallelize_loops \
        || flag_offload_abi != OFFLOAD_ABI_UNSET))
...

I verified this by adding -ftree-parallelize-loops=0, and found that indeed
support for omp builtins was dropped in lto1:
...
(gdb) p builtin_info.decl[BUILT_IN_OMP_GET_THREAD_NUM]
$3 = (tree_node *) 0x0
...

Perhaps for consistency, we should mark both fopenmp and fopenacc as LTO
options?

Reply via email to