aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-20 14:00:48 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-20 14:00:48 +0100
commitd64257a4ed4f91c1dd76bda5a975c8bfa070bc38 (patch)
tree70eb1d2a137dab20569fdce0565b0be498f79ea7
parentd9bf40a181b32e4d5e581ec10d48803ea4a43f9d (diff)
downloadgcc-d64257a4ed4f91c1dd76bda5a975c8bfa070bc38.zip
gcc-d64257a4ed4f91c1dd76bda5a975c8bfa070bc38.tar.gz
gcc-d64257a4ed4f91c1dd76bda5a975c8bfa070bc38.tar.bz2
re PR target/84990 (Boostrap broken with --enable-checking=release and Ada)
PR target/84990 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off flag_section_anchors. * varasm.c (use_blocks_for_decl_p): Remove hack for dw2_force_const_mem. From-SVN: r258681
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarf2asm.c6
-rw-r--r--gcc/varasm.c7
3 files changed, 12 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b908716..3a7ebc9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2018-03-20 Jakub Jelinek <jakub@redhat.com>
+ PR target/84990
+ * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
+ flag_section_anchors.
+ * varasm.c (use_blocks_for_decl_p): Remove hack for
+ dw2_force_const_mem.
+
PR target/84845
* config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
to ...
diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c
index cdb629f..53fc0da 100644
--- a/gcc/dwarf2asm.c
+++ b/gcc/dwarf2asm.c
@@ -973,7 +973,13 @@ dw2_output_indirect_constant_1 (const char *sym, tree id)
unsigned int save_flag_sanitize = flag_sanitize;
flag_sanitize &= ~(SANITIZE_ADDRESS | SANITIZE_USER_ADDRESS
| SANITIZE_KERNEL_ADDRESS);
+ /* And also temporarily disable -fsection-anchors. These indirect constants
+ are never referenced from code, so it doesn't make any sense to aggregate
+ them in blocks. */
+ int save_flag_section_anchors = flag_section_anchors;
+ flag_section_anchors = 0;
assemble_variable (decl, 1, 1, 1);
+ flag_section_anchors = save_flag_section_anchors;
flag_sanitize = save_flag_sanitize;
assemble_integer (sym_ref, POINTER_SIZE_UNITS, POINTER_SIZE, 1);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 2b5c70c..d7290ae 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -1253,13 +1253,6 @@ use_blocks_for_decl_p (tree decl)
if (!VAR_P (decl) && TREE_CODE (decl) != CONST_DECL)
return false;
- /* Detect decls created by dw2_force_const_mem. Such decls are
- special because DECL_INITIAL doesn't specify the decl's true value.
- dw2_output_indirect_constants will instead call assemble_variable
- with dont_output_data set to 1 and then print the contents itself. */
- 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)