Regression
Paul Richard Thomas
paul.richard.thomas@gmail.com
Sat Jul 18 12:53:00 GMT 2015
Dear Alessandro,
I presume that your recent patch (17th July) is the cause of:
FAIL: gfortran.dg/coarray_collectives_16.f90 -O
scan-tree-dump-times original "_gfortran_caf_co_reduce \\(&desc..,
&fr, 4, _gfortran_caf_num_images \\(0, -1\\), &stat1, errmesg1, 0,
6\\);" 1
FAIL: gfortran.dg/coarray_collectives_16.f90 -O
scan-tree-dump-times original "_gfortran_caf_co_reduce \\(&val2, &gz,
0, 4, &stat2, errmesg2, 0, 7\\);" 1
FAIL: gfortran.dg/coarray_collectives_16.f90 -O
scan-tree-dump-times original "_gfortran_caf_co_reduce \\(&desc..,
&hc, 1, res, &stat3, errmesg3, 99, 8\\);" 1
The tree dump shows that the second argument is being passed without
the address operator, which was the purpose of your patch. Patching
thusly:
Index: gcc/testsuite/gfortran.dg/coarray_collectives_16.f90
===================================================================
*** gcc/testsuite/gfortran.dg/coarray_collectives_16.f90 (revision 225943)
--- gcc/testsuite/gfortran.dg/coarray_collectives_16.f90 (working copy)
*************** contains
*** 33,38 ****
end function hc
end program test
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce
\\(&desc.., &fr, 4, _gfortran_caf_num_images \\(0, -1\\), &stat1,
errmesg1, 0, 6\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce
\\(&val2, &gz, 0, 4, &stat2, errmesg2, 0, 7\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce
\\(&desc.., &hc, 1, res, &stat3, errmesg3, 99, 8\\);" 1 "original" } }
--- 33,38 ----
end function hc
end program test
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce
\\(&desc.., fr, 4, _gfortran_caf_num_images \\(0, -1\\), &stat1,
errmesg1, 0, 6\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce
\\(&val2, gz, 0, 4, &stat2, errmesg2, 0, 7\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce
\\(&desc.., hc, 1, res, &stat3, errmesg3, 99, 8\\);" 1 "original" } }
makes the regression go away - are the calls now correct? single.c
shows the second argument to be void * (*opr) (void *, void *), so it
looks OK for a function with two arguments.
Cheers
Paul
More information about the Fortran
mailing list