# DP: varasm.c: Always output flags in merged .section for LLVM assembler compatibility [PR97827]

For compatibility with LLVM 11's 'mc' assembler, the flags have to be
repeated every time. See also LLVM Bug 48201 for this issue and
https://reviews.llvm.org/D73999 for the patch causing the issue.

gcc/
	PR target/97827
	* varasm.c (default_elf_asm_named_section): Always output all
	flags if SECTION_MERGE, even if already declared before.

--- a/src-gcn/gcc/varasm.c
+++ b/src-gcn/gcc/varasm.c
@@ -6792,9 +6792,12 @@
   /* If we have already declared this section, we can use an
      abbreviated form to switch back to it -- unless this section is
      part of a COMDAT groups or with SHF_GNU_RETAIN or with SHF_LINK_ORDER,
-     in which case GAS requires the full declaration every time.  */
+     in which case GAS requires the full declaration every time.
+     LLVM's MC linker requires that the flags are identical,
+     thus avoid the abbreviated form with MERGE.  */
   if (!(HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE))
       && !(flags & (SECTION_RETAIN | SECTION_LINK_ORDER))
+      && !(flags & SECTION_MERGE)
       && (flags & SECTION_DECLARED))
     {
       fprintf (asm_out_file, "\t.section\t%s\n", name);
