mirror of git://gcc.gnu.org/git/gcc.git
gimple-low.c (lower_gimple_bind): Clear DECL_CHAIN of vars in gimple_bind_vars but not in BLOCK_VARS.
2016-10-07 Richard Biener <rguenther@suse.de> * gimple-low.c (lower_gimple_bind): Clear DECL_CHAIN of vars in gimple_bind_vars but not in BLOCK_VARS. From-SVN: r240855
This commit is contained in:
parent
4023bc5647
commit
014b59e688
|
|
@ -1,3 +1,8 @@
|
|||
2016-10-07 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gimple-low.c (lower_gimple_bind): Clear DECL_CHAIN of
|
||||
vars in gimple_bind_vars but not in BLOCK_VARS.
|
||||
|
||||
2016-10-07 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/77879
|
||||
|
|
|
|||
|
|
@ -416,6 +416,23 @@ lower_gimple_bind (gimple_stmt_iterator *gsi, struct lower_data *data)
|
|||
}
|
||||
|
||||
record_vars (gimple_bind_vars (stmt));
|
||||
|
||||
/* Scrap DECL_CHAIN up to BLOCK_VARS to ease GC after we no longer
|
||||
need gimple_bind_vars. */
|
||||
tree next;
|
||||
tree end = NULL_TREE;
|
||||
if (gimple_bind_block (stmt))
|
||||
end = BLOCK_VARS (gimple_bind_block (stmt));
|
||||
for (tree var = gimple_bind_vars (stmt); var != end; var = next)
|
||||
{
|
||||
/* Ugh, something is violating the constraint that BLOCK_VARS
|
||||
is a sub-chain of gimple_bind_vars. */
|
||||
if (! var)
|
||||
break;
|
||||
next = DECL_CHAIN (var);
|
||||
DECL_CHAIN (var) = NULL_TREE;
|
||||
}
|
||||
|
||||
lower_sequence (gimple_bind_body_ptr (stmt), data);
|
||||
|
||||
if (new_block)
|
||||
|
|
|
|||
Loading…
Reference in New Issue