On 02/09/2015 12:29 PM, Jakub Jelinek wrote: > On Mon, Feb 09, 2015 at 10:50:34AM +0100, Andreas Krebbel wrote: >> Hi, >> >> the attached patch fixes a critical problem in the va_start expansion >> code in the S/390 backend. The problem exists since GCC 4.0. >> >> Ok to commit to 4.9 branch and mainline? > > No. This isn't a backend problem, but a bug in the tree-stdarg.c pass, > so should be fixed there, for all targets, rather than just worked around by > pessimizing unnecessarily one target.
I think for the overflow area pointer we would need a different flag indicating whether a pointer to the va_list structure escapes or not. To my understanding it is not correct to only use the va_list_gpr_size/va_list_fpr_size fields for that purpose. These only refer to the va_arg expansions in the current function. Other backends rs6000/i386 unconditionally set up the overflow area pointer. -Andreas-