re PR lto/64373 (ICE with lto related to variably modified type)

2015-01-13  Richard Biener  <rguenther@suse.de>

	PR lto/64373
	* lto-streamer-out.c (tree_is_indexable): Guard for NULL
	DECL_CONTEXT.

	* gcc.dg/lto/pr64373_0.c: New testcase.

From-SVN: r219531
This commit is contained in:
Richard Biener 2015-01-13 13:57:27 +00:00 committed by Richard Biener
parent bf84ac44f9
commit e0ffb247d6
4 changed files with 23 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-01-13 Richard Biener <rguenther@suse.de>
PR lto/64373
* lto-streamer-out.c (tree_is_indexable): Guard for NULL
DECL_CONTEXT.
2015-01-13 Andrew Pinski <apinski@cavium.com>
* config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp): Reject

View File

@ -154,7 +154,8 @@ tree_is_indexable (tree t)
/* Parameters and return values of functions of variably modified types
must go to global stream, because they may be used in the type
definition. */
if (TREE_CODE (t) == PARM_DECL || TREE_CODE (t) == RESULT_DECL)
if ((TREE_CODE (t) == PARM_DECL || TREE_CODE (t) == RESULT_DECL)
&& DECL_CONTEXT (t))
return variably_modified_type_p (TREE_TYPE (DECL_CONTEXT (t)), NULL_TREE);
/* IMPORTED_DECL is put into BLOCK and thus it never can be shared. */
else if (TREE_CODE (t) == IMPORTED_DECL)

View File

@ -1,3 +1,8 @@
2015-01-13 Richard Biener <rguenther@suse.de>
PR lto/64373
* gcc.dg/lto/pr64373_0.c: New testcase.
2015-01-13 Andrew Pinski <apinski@cavium.com>
* gcc.target/aarch64/volatileloadpair-1.c: New testcase.

View File

@ -0,0 +1,10 @@
/* { dg-lto-do assemble } */
extern void b(int L, float (*data)[L]);
void a(void)
{
float* p = 0;
int i = 0;
b(10, (float (*)[10])(p + i));
}