From f13ed3ed23d38d801223b20b2e01140183394477 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 22 Mar 2018 09:32:12 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/dwarf2asm.c | 3 +++ gcc/varasm.c | 6 ++++++ 3 files changed, 17 insertions(+) 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 + + 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 * 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) -- 2.7.4