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

            Bug ID: 116535
           Summary: LTO partitioning vs. offloading compilation
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Keywords: openacc, openmp, wrong-code
          Severity: normal
          Priority: P3
         Component: lto
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tschwinge at gcc dot gnu.org
                CC: burnus at gcc dot gnu.org, hubicka at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, rguenth at gcc dot gnu.org
  Target Milestone: ---

I ran into a curious issue re LTO partitioning vs. offloading compilation.  I
guess what happened was that, given sufficiently high 'make -j', and only
'check-target-libgomp' running (which limits itself to 19 parallel slots), for
the '-flto -flto-partition=max' test cases
'libgomp.oacc-c-c++-common/data-clauses-{kernels,parallel}-ipa-pta.c', there
was actual parallel LTO compilation/partitioning, and these test cases then
FAIL, for example:

    libgomp: Cannot map target functions or variables (expected 180 + 0 + 1,
have 11)

Running the compilation outside of 'make -j check', we see:

    lto-wrapper: warning: using serial compilation of 36 LTRANS jobs
    lto-wrapper: note: see the ‘-flto’ option documentation for more
information

..., and they execute successfully.  However, for example, with '-flto=3
-flto-partition=max':

    libgomp: Cannot map target functions or variables (expected 30 + 0 + 1,
have 11)

... where here '30' is 'N * 10' for '-flto=N'.  So the "expected" number is
wrong.

This reproduces down to GCC 10:

    libgomp: Cannot map target functions or variables (expected 30, have 10)

(..., so isn't related to the PR116361 LTO plugin changes.)

Reply via email to