diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-03-22 09:32:12 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-03-22 09:32:12 +0100 |
commit | f13ed3ed23d38d801223b20b2e01140183394477 (patch) | |
tree | bd89c7cd5a5136205e2b54272f6a4f0ad8e709f0 | |
parent | 08ad2797c60b66f8a6ca54652cdead0aa6ea721f (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/dwarf2asm.c | 3 | ||||
-rw-r--r-- | gcc/varasm.c | 6 |
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) |