aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-22 09:32:12 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-22 09:32:12 +0100
commitf13ed3ed23d38d801223b20b2e01140183394477 (patch)
treebd89c7cd5a5136205e2b54272f6a4f0ad8e709f0
parent08ad2797c60b66f8a6ca54652cdead0aa6ea721f (diff)
downloadgcc-f13ed3ed23d38d801223b20b2e01140183394477.zip
gcc-f13ed3ed23d38d801223b20b2e01140183394477.tar.gz
gcc-f13ed3ed23d38d801223b20b2e01140183394477.tar.bz2
re PR sanitizer/85018 (Many sanitizer tests ICE since r258681)
PR sanitizer/85018 * dwarf2asm.c (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to decl at the end. * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change, adjust the comment. From-SVN: r258757
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/dwarf2asm.c3
-rw-r--r--gcc/varasm.c6
3 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 90c558c..869caa2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/85018
+ * dwarf2asm.c (dw2_output_indirect_constant_1): Set
+ DECL_INITIAL (decl) to decl at the end.
+ * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
+ adjust the comment.
+
2018-03-21 Joseph Myers <joseph@codesourcery.com>
* doc/extend.texi (__builtin_tgmath): Document when complex
diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c
index 53fc0da..93577d1 100644
--- a/gcc/dwarf2asm.c
+++ b/gcc/dwarf2asm.c
@@ -982,6 +982,9 @@ dw2_output_indirect_constant_1 (const char *sym, tree id)
flag_section_anchors = save_flag_section_anchors;
flag_sanitize = save_flag_sanitize;
assemble_integer (sym_ref, POINTER_SIZE_UNITS, POINTER_SIZE, 1);
+ /* The following is a hack recognized by use_blocks_for_decl_p to disable
+ section anchor handling of the decl. */
+ DECL_INITIAL (decl) = decl;
return 0;
}
diff --git a/gcc/varasm.c b/gcc/varasm.c
index d7290ae..d24bac4 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -1253,6 +1253,12 @@ use_blocks_for_decl_p (tree decl)
if (!VAR_P (decl) && TREE_CODE (decl) != CONST_DECL)
return false;
+ /* DECL_INITIAL (decl) set to decl is a hack used for some decls that
+ are never used from code directly and we never want object block handling
+ for those. */
+ if (DECL_INITIAL (decl) == decl)
+ return false;
+
/* If this decl is an alias, then we don't want to emit a
definition. */
if (VAR_P (decl)