From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1733) id 67DE43858D1E; Fri, 17 Nov 2023 12:46:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 67DE43858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1700225210; bh=EkXxxzDd2k82Ng3MQtWt6rILciadHHPvkDui44+gX5w=; h=From:To:Subject:Date:From; b=D1sp4w9jrhWTU+jKI90T550ohAfET4hmk+00Hgj2tiGQjbHWWGQ+uY9RW4Jh4NNcy NnD6NdRZFcQyzYpc57Mjba4ivokI2CcUA32JfhWTbMuVsejQ+NNDVNV9HTOFbCbdvl ZiVwB+OCIJmr5gWMfNK4DlcN+XXTOjvypbh9zMpI= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Georg-Johann Lay To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-8080] PR target/53372: Don't ignore section attribute with address-space. X-Act-Checkin: gcc X-Git-Author: Georg-Johann Lay X-Git-Refname: refs/heads/releases/gcc-13 X-Git-Oldrev: d237e7b291ff52095d600e6489a54b4ba8aaf608 X-Git-Newrev: adb1f8b0eda99e8a1d21bda5955cbe1df5517e63 Message-Id: <20231117124650.67DE43858D1E@sourceware.org> Date: Fri, 17 Nov 2023 12:46:50 +0000 (GMT) List-Id: https://gcc.gnu.org/g:adb1f8b0eda99e8a1d21bda5955cbe1df5517e63 commit r13-8080-gadb1f8b0eda99e8a1d21bda5955cbe1df5517e63 Author: Georg-Johann Lay Date: Fri Nov 17 12:51:16 2023 +0100 PR target/53372: Don't ignore section attribute with address-space. gcc/ PR target/53372 * config/avr/avr.cc (avr_asm_named_section) [AVR_SECTION_PROGMEM]: Only return some .progmem*.data section if the user did not specify a section attribute. (avr_section_type_flags) [avr_progmem_p]: Unset SECTION_NOTYPE in returned section flags. gcc/testsuite/ PR target/53372 * gcc.target/avr/pr53372-1.c: New test. * gcc.target/avr/pr53372-2.c: New test. (cherry picked from commit 68221c54a9752dbf131c231413edfd21046f8dad) Diff: --- gcc/config/avr/avr.cc | 8 +++++++- gcc/testsuite/gcc.target/avr/pr53372-1.c | 10 ++++++++++ gcc/testsuite/gcc.target/avr/pr53372-2.c | 10 ++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc index 22ae328bd20..e10acbc7d51 100644 --- a/gcc/config/avr/avr.cc +++ b/gcc/config/avr/avr.cc @@ -10736,7 +10736,12 @@ avr_asm_init_sections (void) static void avr_asm_named_section (const char *name, unsigned int flags, tree decl) { - if (flags & AVR_SECTION_PROGMEM) + if (flags & AVR_SECTION_PROGMEM + // Only use section .progmem*.data if there is no attribute section. + && ! (decl + && DECL_SECTION_NAME (decl) + && symtab_node::get (decl) + && ! symtab_node::get (decl)->implicit_section)) { addr_space_t as = (flags & AVR_SECTION_PROGMEM) / SECTION_MACH_DEP; const char *old_prefix = ".rodata"; @@ -10805,6 +10810,7 @@ avr_section_type_flags (tree decl, const char *name, int reloc) flags |= as * SECTION_MACH_DEP; flags &= ~SECTION_WRITE; flags &= ~SECTION_BSS; + flags &= ~SECTION_NOTYPE; } return flags; diff --git a/gcc/testsuite/gcc.target/avr/pr53372-1.c b/gcc/testsuite/gcc.target/avr/pr53372-1.c new file mode 100644 index 00000000000..7d3f193e79a --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/pr53372-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target { ! avr_tiny } } } */ +/* { dg-options "-std=gnu99" } */ + +__attribute__((__section__("fffsection"))) +const __flash char fff = 123; + +const __flash char ppp = 124; + +/* { dg-final { scan-assembler ".section fffsection,\"a\",@progbits" } } */ +/* { dg-final { scan-assembler ".section .progmem.data,\"a\",@progbits" } } */ diff --git a/gcc/testsuite/gcc.target/avr/pr53372-2.c b/gcc/testsuite/gcc.target/avr/pr53372-2.c new file mode 100644 index 00000000000..79ef2b7bbdb --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/pr53372-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target { ! avr_tiny } } } */ +/* { dg-options "-std=gnu99 -fdata-sections" } */ + +__attribute__((__section__("fffsection"))) +const __flash char fff = 123; + +const __flash char ppp = 124; + +/* { dg-final { scan-assembler ".section fffsection,\"a\",@progbits" } } */ +/* { dg-final { scan-assembler ".section .progmem.data.ppp,\"a\",@progbits" } } */