Hi Jakub,

thanks a lot for fixing this. Since it's a regression and the fix is
so trivial, I hope you're willing to backport it to the 6 and 7
branches as well? (If not, I can also take care of that.)

Cheers,
Janus



2017-11-24 22:42 GMT+01:00 Jakub Jelinek <ja...@redhat.com>:
> Hi!
>
> gfc_trans_omp_array_reduction_or_udr creates artificial intrinsics symbol
> just for the purpose of expansion of array min/max reductions.
> That is something we certainly don't want a -Wsurprising warning on.
>
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux,
> committed to trunk.
>
> 2017-11-24  Jakub Jelinek  <ja...@redhat.com>
>
>         PR fortran/81304
>         * trans-openmp.c (gfc_trans_omp_array_reduction_or_udr): Set
>         attr.implicit_type in intrinsic_sym to avoid undesirable warning.
>
>         * testsuite/libgomp.fortran/pr81304.f90: New test.
>
> --- gcc/fortran/trans-openmp.c.jj       2017-11-08 16:19:36.000000000 +0100
> +++ gcc/fortran/trans-openmp.c  2017-11-24 13:41:41.995610897 +0100
> @@ -1623,6 +1623,7 @@ gfc_trans_omp_array_reduction_or_udr (tr
>        intrinsic_sym.attr.referenced = 1;
>        intrinsic_sym.attr.intrinsic = 1;
>        intrinsic_sym.attr.function = 1;
> +      intrinsic_sym.attr.implicit_type = 1;
>        intrinsic_sym.result = &intrinsic_sym;
>        intrinsic_sym.declared_at = where;
>
> --- libgomp/testsuite/libgomp.fortran/pr81304.f90.jj    2017-11-24 
> 13:50:39.668043753 +0100
> +++ libgomp/testsuite/libgomp.fortran/pr81304.f90       2017-11-24 
> 13:50:11.000000000 +0100
> @@ -0,0 +1,17 @@
> +! PR fortran/81304
> +! { dg-do run }
> +! { dg-options "-Wsurprising" }
> +
> +program pr81304
> +   integer :: i
> +   real, dimension(1:3) :: a, b, c
> +   a = 128
> +   b = 0
> +!$omp parallel do reduction(min: a) reduction(max: b) private (c)      ! { 
> dg-bogus "Type specified for intrinsic function" }
> +   do i = 1, 16
> +     c = (/ i, i - 5, i + 5 /)
> +     a = min (a, c)
> +     b = max (b, c)
> +   end do
> +   if (any (a /= (/ 1, -4, 6 /)) .or. any (b /= (/ 16, 11, 21 /))) call abort
> +end
>
>         Jakub

Reply via email to