re PR middle-end/49945 (gcc.dg/guality/vla-1.c FAILs with -flto)

2011-12-08  Richard Guenther  <rguenther@suse.de>

	PR lto/49945
	* lto-streamer-out.c (tree_is_indexable): Localize variably
	modified types and their FIELD_DECLs.

From-SVN: r182107
This commit is contained in:
Richard Guenther 2011-12-08 11:43:12 +00:00 committed by Richard Biener
parent 3d0c32fe56
commit befa62e74e
2 changed files with 16 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2011-12-08 Richard Guenther <rguenther@suse.de>
PR lto/49945
* lto-streamer-out.c (tree_is_indexable): Localize variably
modified types and their FIELD_DECLs.
2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
PR tree-optimization/51315

View File

@ -139,6 +139,16 @@ tree_is_indexable (tree t)
&& DECL_CONTEXT (t)
&& TREE_CODE (DECL_CONTEXT (t)) == FUNCTION_DECL)
return false;
/* Variably modified types need to be streamed alongside function
bodies because they can refer to local entities. Together with
them we have to localize their members as well.
??? In theory that includes non-FIELD_DECLs as well. */
else if (TYPE_P (t)
&& variably_modified_type_p (t, NULL_TREE))
return false;
else if (TREE_CODE (t) == FIELD_DECL
&& variably_modified_type_p (DECL_CONTEXT (t), NULL_TREE))
return false;
else
return (TYPE_P (t) || DECL_P (t) || TREE_CODE (t) == SSA_NAME);
}