https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109819
Bug ID: 109819 Summary: [OpenMP][OpenACC] -fno-lto effectively disables offloading Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: openacc, openmp Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- In terms of LTO, the idea is for the link time: If there is -flto → we know that we should do LTO and, hence, need to check whether there is some. Without -flto, it might be that there is LTO and with slim LTO, we may have to handle it. For that reason, we have the following code in collect2.cc: #ifdef ENABLE_LTO static enum lto_mode_d lto_mode = LTO_MODE_WHOPR; #else static enum lto_mode_d lto_mode = LTO_MODE_NONE; #endif ... else if (startswith (argv[i], "-fno-lto")) lto_mode = LTO_MODE_NONE; ... if (use_plugin) lto_mode = LTO_MODE_NONE; if (no_partition && lto_mode == LTO_MODE_WHOPR) lto_mode = LTO_MODE_LTO; However, this has the unintended side effect that "-fno-lto" also disables handling the device side of offloading. * * * The question is how to handle this. Maybe something along the lines of the following: if (ENABLE_OFFLOADING && lto_mode == LTO_MODE_NONE && (-fopenmp || -fopenacc) && !-foffload=disable) lto_mode = LTO_MODE_WHOPR;