gcc12/gcc10-amdgcn-llvm-as.patch
OBS User rguenther dd407fb4b5 - Bump to 0bd247bbbe4cf396173f09eeec37e116e98f8471.
- Fix filename in gcc10-amdgcn-llvm-as.patch.

Fixes:
error: use of deleted function 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::nullptr_t)
[with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::nullptr_t = std::nullptr_t]'

that's going to happen only with -std=c++23.

Rev devel:gcc/10 Md5 49cbdfd71a04e2562d4584c7149efa54 2022-01-19 13:41:41 rguenther 947428
2022-01-19 13:41:41 +00:00

32 lines
1.4 KiB
Diff

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.
diff --git a/gcc/varasm.cc b/gcc/varasm.cc
index 21be03aeba2..9cb46885aa5 100644
--- a/gcc/varasm.cc
+++ b/gcc/varasm.cc
@@ -6792,10 +6792,13 @@ default_elf_asm_named_section (const char *name, unsigned int flags,
/* 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_DECLARED))
+ && (flags & SECTION_DECLARED)
+ && !(flags & SECTION_MERGE))
{
fprintf (asm_out_file, "\t.section\t%s\n", name);
return;