On Sun, Jul 08, 2018 at 11:22:41AM +0200, Tom de Vries wrote: > --- a/gcc/cfgexpand.c > +++ b/gcc/cfgexpand.c > @@ -5141,6 +5141,10 @@ expand_debug_source_expr (tree exp) > > switch (TREE_CODE (exp)) > { > + case VAR_DECL: > + if (DECL_ABSTRACT_ORIGIN (exp)) > + return expand_debug_source_expr (DECL_ABSTRACT_ORIGIN (exp)); > + break; > case PARM_DECL: > { > mode = DECL_MODE (exp);
This is ok. > diff --git a/gcc/testsuite/gcc.dg/vla-1.c b/gcc/testsuite/gcc.dg/vla-1.c > new file mode 100644 > index 00000000000..0c19feffd2b > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/vla-1.c > @@ -0,0 +1,25 @@ > +/* { dg-do compile } */ > +/* { dg-options "-g -O3 -fdump-tree-optimized" } */ > + > + > +/* One debug source bind is generated for the parameter, and two to describe > the > + sizes of a and b. */ > +/* { dg-final { scan-tree-dump-times " s=> i" 3 "optimized" } } */ I think you at least need explicit -fvar-tracking-assignments -fno-selective-scheduling -fno-selective-scheduling2 and perhaps some guard to ignore the test on nvptx which disables -fvar-tracking unconditionally? > diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c > index 427ef959740..6fbd8c3ca61 100644 > --- a/gcc/tree-inline.c > +++ b/gcc/tree-inline.c > @@ -208,7 +208,9 @@ remap_ssa_name (tree name, copy_body_data *id) > n = id->decl_map->get (val); > if (n != NULL) > val = *n; > - if (TREE_CODE (val) != PARM_DECL) > + if (TREE_CODE (val) != PARM_DECL > + && !(TREE_CODE (val) == VAR_DECL > + && DECL_ABSTRACT_ORIGIN (val))) > { > processing_debug_stmt = -1; > return name; Please use VAR_P macro. Jakub