lto/94822 - fix ICE in component_ref_size
authorRichard Biener <rguenther@suse.de>
Wed, 29 Apr 2020 10:21:23 +0000 (12:21 +0200)
committerRichard Biener <rguenther@suse.de>
Wed, 29 Apr 2020 10:25:16 +0000 (12:25 +0200)
commite6e616074f02b81c397a2848ab242b54ef21efbc
treeb8ad7a4f51ce18f0ca707802a74a6575c404dd56
parent56fe3ca30e1343e4f232ca539726506440e23dd3
lto/94822 - fix ICE in component_ref_size

This ICE appears because gcc will stream it to the function_body section
when processing the variable with the initial value of the constructor
type, and the error_mark_node to the decls section.
When recompiling, the value obtained with DECL_INITIAL will be error_mark.

2020-04-29  Richard Biener  <rguenther@suse.de>
    Li Zekun  <lizekun1@huawei.com>

PR lto/94822
* tree.c (component_ref_size): Guard against error_mark_node
DECL_INITIAL as it happens with LTO.

* gcc.dg/lto/pr94822_0.c: New testcase.
* gcc.dg/lto/pr94822_1.c: Alternate file.
* gcc.dg/lto/pr94822.h: Likewise.
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/lto/pr94822.h [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/pr94822_0.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/pr94822_1.c [new file with mode: 0644]
gcc/tree.c