On Wed, Jun 15, 2016 at 11:49:50AM +0200, Bernd Schmidt wrote:
> On 06/15/2016 03:30 AM, Alan Modra wrote:
> >Between these two calls to _gfortran_string_verify,
> >  if (verify(c4, "A", back = .true.) .ne. 3) call abort
> >  if (verify(c4, "AB") .ne. 0) call abort
> >it seems that gfortran is assuming that parameters passed on the stack
> >are unchanged.
> 
> How? Is this something in the Fortran frontend, or is there CSE going on for
> stores to the argument area?

It's not a fortran problem, and I answered my own question about the
ABI by the testcase in
https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01098.html.  If tail
calls are allowed, then the stack parameter area must be overwritten.
Thus an ABI can't allow tail calls if it specifies the stack parameter
area is preserved.  x86 allows tail calls.  I didn't look further into
where the problem in arg setup occurs, sorry, except to note that
gcc-5 does not have the problem.

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to