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 ...
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);
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)