[PATCH] Fix PR78027

Jeff Law law@redhat.com
Fri Dec 9 00:37:00 GMT 2016


On 12/08/2016 04:05 PM, Cesar Philippidis wrote:
> PR78027 was classified as a fortran bug, but the underlying problem
> turned out to be more generic. Basically, the IPA-ICF pass usually
> ignores functions with omp decl attributes as candidates for aliasing.
> Usually that works for OpenACC, because offloaded functions generated by
> OpenACC PARALLEL or KERNELS regions usually have an 'omp target
> entrypoint' attribute. However that is not the case in two situations:
>
> 1. ACC ROUTINES do not have an 'omp target entrypoint' attribute.
>
> 2. Nested offloaded regions inside 'omp declare target' functions do not
> have 'omp target entrypoint' attributes either.
>
> The solution I chose for this problem is to teach the IPA-ICF pass to
> ignore function with 'oacc *' decl attributes. Arguably 2) should be a
> parser error when an OpenACC offloaded region is embedded within an
> OpenMP offloaded function. The LTO linker does report an error for nvptx
> targets, but not the host. With that in mind, this patch is still
> necessary for case 1.
>
> Is this OK for trunk?
>
> Cesar
>
>
> trunk-pr78027.diff
>
>
> 2016-12-08  Cesar Philippidis  <cesar@codesourcery.com>
>
> 	PR fortran/78027
>
> 	gcc/
> 	* ipa-icf.c (sem_function::parse): Don't process functions with
> 	oacc decl attributes, as they may be OpenACC routines.
>
> 	gcc/testsuite/
> 	* c-c++-common/goacc/acc-icf.c: New test.
> 	* gfortran.dg/goacc/pr78027.f90: New test.
This follows the same approach as we do for openmp.  This is fine for 
the trunk.

Jeff



More information about the Fortran mailing list