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

            Bug ID: 80995
           Summary: Fortran OpenACC kernels "Unhandled stmt in entry/exit:
                    _14 = BUILTIN_EXPECT ([...])" after "Introduce fortran
                    loop preheader"
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Keywords: openacc
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tschwinge at gcc dot gnu.org
                CC: vries at gcc dot gnu.org
  Target Milestone: ---

Merging trunk r237533 "Introduce fortran loop preheader" into gomp-4-branch
r240825, there are two regressions in Fortran OpenACC kernels parallelization:

    PASS: gfortran.dg/goacc/kernels-loop-n.f95   -O   scan-tree-dump-not
parloops1 "FAILED:"
    PASS: gfortran.dg/goacc/kernels-loop-n.f95   -O   scan-tree-dump-times
optimized "(?n);; Function __test_MOD_foo._omp_fn.0 " 1
    [-PASS:-]{+FAIL:+} gfortran.dg/goacc/kernels-loop-n.f95   -O  
scan-tree-dump-times parloops1 "(?n)oacc function \\(0," 1
    PASS: gfortran.dg/goacc/kernels-loop-n.f95   -O   scan-tree-dump-times
parloops1 "SUCCESS: may be parallelized" 1
    PASS: gfortran.dg/goacc/kernels-loop-n.f95   -O  (test for excess errors)

    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -O0  execution test
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -O1  (test for excess errors)
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -O1  execution test
    [-PASS:-]{+FAIL:+} libgomp.oacc-fortran/non-scalar-data.f90
-DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none  -O2  (test
for excess errors)
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -O2  execution test
    [-PASS:-]{+FAIL:+} libgomp.oacc-fortran/non-scalar-data.f90
-DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none  -O3
-fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions 
(test for excess errors)
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  execution test
    [-PASS:-]{+FAIL:+} libgomp.oacc-fortran/non-scalar-data.f90
-DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none  -O3 -g 
(test for excess errors)
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -O3 -g  execution test
    [-PASS:-]{+FAIL:+} libgomp.oacc-fortran/non-scalar-data.f90
-DACC_DEVICE_TYPE_nvidia=1 -DACC_MEM_SHARED=0 -foffload=nvptx-none  -Os  (test
for excess errors)
    PASS: libgomp.oacc-fortran/non-scalar-data.f90 -DACC_DEVICE_TYPE_nvidia=1
-DACC_MEM_SHARED=0 -foffload=nvptx-none  -Os  execution test

   
[...]/source-gcc/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90: In
function 'kernels_._omp_fn.1':
   
[...]/source-gcc/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90:35:0:
warning: OpenACC kernels construct will be executed sequentially; will by
default avoid offloading to prevent data copy penalty

For both these (I looked at "-O2" only), the issue is: "Unhandled stmt in
entry/exit: _14 = BUILTIN_EXPECT (_13, 1, 41);".  I'm not sure whether
"BUILTIN_EXPECT" should simply be added to be handled in
"gcc/tree-parloops.c:oacc_entry_exit_ok_1", or if it should already have been
accepted by one of the existing cases in there, or if it in fact shouldn't
appear there, should have been folded away earlier on.

Reply via email to