On Wed, Jun 15, 2016 at 7:06 AM, Bernd Schmidt <bschm...@redhat.com> wrote: > > > On 06/15/2016 04:03 PM, Alan Modra wrote: >> >> 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. > > > Well yes. The problem isn't that the stack area is overwritten, the problem > is that something expects that it isn't, and it's not clear to me yet where > that problem occurs.
Will this patch https://gcc.gnu.org/bugzilla/attachment.cgi?id=38705 also fix this -- H.J.