diff options
author | Richard Biener <rguenther@suse.de> | 2015-01-13 13:57:27 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-01-13 13:57:27 +0000 |
commit | e0ffb247d696aa7a98088e0cd9c647947b1d5d39 (patch) | |
tree | 854c9d0bb800017b021b7eb0db8a466fb5f1ba8d /gcc | |
parent | bf84ac44f9679285d95ac0c96c0e2e83b7ef038f (diff) | |
download | gcc-e0ffb247d696aa7a98088e0cd9c647947b1d5d39.zip gcc-e0ffb247d696aa7a98088e0cd9c647947b1d5d39.tar.gz gcc-e0ffb247d696aa7a98088e0cd9c647947b1d5d39.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lto-streamer-out.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/pr64373_0.c | 10 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b1449b..6bf509eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 21a78bb..3b58191 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8a5a62e..a3fea9b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/gcc.dg/lto/pr64373_0.c b/gcc/testsuite/gcc.dg/lto/pr64373_0.c new file mode 100644 index 0000000..b4f3fdf --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/pr64373_0.c @@ -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)); +} |