diff options
author | Richard Biener <rguenther@suse.de> | 2016-01-25 09:31:47 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-01-25 09:31:47 +0000 |
commit | 02ef53f28854628ee15784bf860e7db24427a18f (patch) | |
tree | 7bd5de90b4460bf0891c58937ced29e702c11e94 /gcc | |
parent | fa4511c2f4d3bacf5e9d5cc5907d3812204928bb (diff) | |
download | gcc-02ef53f28854628ee15784bf860e7db24427a18f.zip gcc-02ef53f28854628ee15784bf860e7db24427a18f.tar.gz gcc-02ef53f28854628ee15784bf860e7db24427a18f.tar.bz2 |
re PR lto/69393 (ICE in dwarf2out_finish, at dwarf2out.c:27175 with LTO)
2016-01-25 Richard Biener <rguenther@suse.de>
PR lto/69393
* dwarf2out.c (is_naming_typedef_decl): Not when DECL_NAMELESS.
* tree-streamer-out.c (pack_ts_base_value_fields): Stream
DECL_NAMELESS.
* tree-streamer-in.c (unpack_ts_base_value_fields): Likewise.
* testsuite/libgomp.c++/pr69393.C: New testcase.
From-SVN: r232787
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 1 | ||||
-rw-r--r-- | gcc/tree-streamer-in.c | 5 | ||||
-rw-r--r-- | gcc/tree-streamer-out.c | 5 |
4 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f102049..8a9798d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2016-01-25 Richard Biener <rguenther@suse.de> + PR lto/69393 + * dwarf2out.c (is_naming_typedef_decl): Not when DECL_NAMELESS. + * tree-streamer-out.c (pack_ts_base_value_fields): Stream + DECL_NAMELESS. + * tree-streamer-in.c (unpack_ts_base_value_fields): Likewise. + +2016-01-25 Richard Biener <rguenther@suse.de> + PR tree-optimization/69376 * tree-ssa-sccvn.h (struct vn_ssa_aux): Add range_info_anti_range_p flag. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index c657866..d8ca1b7 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -23094,6 +23094,7 @@ is_naming_typedef_decl (const_tree decl) { if (decl == NULL_TREE || TREE_CODE (decl) != TYPE_DECL + || DECL_NAMELESS (decl) || !is_tagged_type (TREE_TYPE (decl)) || DECL_IS_BUILTIN (decl) || is_redundant_typedef (decl) diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index 1da01e2..3c8558e 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -116,7 +116,10 @@ unpack_ts_base_value_fields (struct bitpack_d *bp, tree expr) TREE_ADDRESSABLE (expr) = (unsigned) bp_unpack_value (bp, 1); TREE_THIS_VOLATILE (expr) = (unsigned) bp_unpack_value (bp, 1); if (DECL_P (expr)) - DECL_UNSIGNED (expr) = (unsigned) bp_unpack_value (bp, 1); + { + DECL_UNSIGNED (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_NAMELESS (expr) = (unsigned) bp_unpack_value (bp, 1); + } else if (TYPE_P (expr)) TYPE_UNSIGNED (expr) = (unsigned) bp_unpack_value (bp, 1); else diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index f9272d6..42281a5 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -87,7 +87,10 @@ pack_ts_base_value_fields (struct bitpack_d *bp, tree expr) bp_pack_value (bp, TREE_ADDRESSABLE (expr), 1); bp_pack_value (bp, TREE_THIS_VOLATILE (expr), 1); if (DECL_P (expr)) - bp_pack_value (bp, DECL_UNSIGNED (expr), 1); + { + bp_pack_value (bp, DECL_UNSIGNED (expr), 1); + bp_pack_value (bp, DECL_NAMELESS (expr), 1); + } else if (TYPE_P (expr)) bp_pack_value (bp, TYPE_UNSIGNED (expr), 1); else |