aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-01-25 09:31:47 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-01-25 09:31:47 +0000
commit02ef53f28854628ee15784bf860e7db24427a18f (patch)
tree7bd5de90b4460bf0891c58937ced29e702c11e94 /gcc
parentfa4511c2f4d3bacf5e9d5cc5907d3812204928bb (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/dwarf2out.c1
-rw-r--r--gcc/tree-streamer-in.c5
-rw-r--r--gcc/tree-streamer-out.c5
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