pass_stdarg problem when run after pass_lim

Jakub Jelinek jakub@redhat.com
Tue Feb 3 13:41:00 GMT 2015


On Tue, Feb 03, 2015 at 02:36:53PM +0100, Michael Matz wrote:
> Hi,
> 
> On Tue, 3 Feb 2015, Tom de Vries wrote:
> 
> > Ironically, that fix breaks the va_list_gpr/fpr_size optimization, so 
> > I've disabled that by default for now.
> > 
> > I've done a non-bootstrap and bootstrap build using all languages.
> > 
> > The non-bootstrap test shows (at least) two classes of real failures:
> > - gcc.c-torture/execute/20020412-1.c, gcc.target/i386/memcpy-strategy-4.c and
> >   gcc.dg/lto/20090706-1_0.c.
> >   These are test-cases with vla as va_arg argument. It ICEs in
> >   force_constant_size with call stack
> >   gimplify_va_arg_expr -> create_tmp_var -> gimple_add_tmp_var ->
> >   force_constant_size
> 
> Hah, yeah, that's the issue I remembered with create_tmp_var.  This needs 
> a change in how to represent the va_arg "call", because the LHS can't be a 
> temporary that's copied to the real LHS afterwards.

It can be lowered during gimplification to some internal call.  What
arguments and return values will it have can be decided based on what will
be most suitable for the lowering.

	Jakub



More information about the Gcc mailing list