public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/100130] New: R section flag handling doesn't cope with intervening decls
@ 2021-04-17 11:17 rsandifo at gcc dot gnu.org
  2021-04-17 11:27 ` [Bug middle-end/100130] " rsandifo at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2021-04-17 11:17 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100130

            Bug ID: 100130
           Summary: R section flag handling doesn't cope with intervening
                    decls
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rsandifo at gcc dot gnu.org
  Target Milestone: ---

c-c++-common/attr-retain-7.c checks that we warn for:

int __attribute__((used,retain,section(".data.foo"))) foo2 = 2;
int __attribute__((section(".data.foo"))) foo1 = 1;

It also makes sure that we output two .section directives, one with
the R flag for foo2 and once without for foo1.

But this is all keyed on whether we try to “switch” to the same section.
It therefore doesn't work if there's an intervening decl, such as:

int __attribute__((used,retain,section(".data.foo"))) foo2 = 2;
int between = 1;
int __attribute__((section(".data.foo"))) foo1 = 1;

(-fno-toplevel-reorder should ensure this fails, but it fails for
me without as well.)

This also doesn't work for -fsection-anchors, which is what made
me look at it originally.  I guess that's a separate bug, but I think
it affects how this PR should be fixed.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/100130] R section flag handling doesn't cope with intervening decls
  2021-04-17 11:17 [Bug middle-end/100130] New: R section flag handling doesn't cope with intervening decls rsandifo at gcc dot gnu.org
@ 2021-04-17 11:27 ` rsandifo at gcc dot gnu.org
  2021-04-21  8:08 ` cvs-commit at gcc dot gnu.org
  2021-04-21  8:10 ` rsandifo at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2021-04-17 11:27 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100130

rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-04-17
     Ever confirmed|0                           |1
           Assignee|unassigned at gcc dot gnu.org      |rsandifo at gcc dot gnu.org
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #1 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
Testing a patch.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/100130] R section flag handling doesn't cope with intervening decls
  2021-04-17 11:17 [Bug middle-end/100130] New: R section flag handling doesn't cope with intervening decls rsandifo at gcc dot gnu.org
  2021-04-17 11:27 ` [Bug middle-end/100130] " rsandifo at gcc dot gnu.org
@ 2021-04-21  8:08 ` cvs-commit at gcc dot gnu.org
  2021-04-21  8:10 ` rsandifo at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-04-21  8:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100130

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Sandiford <rsandifo@gcc.gnu.org>:

https://gcc.gnu.org/g:b67778b59932fdc64dc89a97550349e973ca0352

commit r12-17-gb67778b59932fdc64dc89a97550349e973ca0352
Author: Richard Sandiford <richard.sandiford@arm.com>
Date:   Wed Apr 21 09:08:44 2021 +0100

    varasm: Two SECTION_RETAIN fixes [PR100130]

    switch_to_section warns if we try to output a retain decl in a
    section without a retain flag, or if we try to output a non-retain
    decl in a section with a retain flag.  However, the warning only
    applied if we were trying to âswitchâ to the current section.
    This works if all decls that use a section are generated consecutively,
    but not if there is an unrelated decl in between.

    This patch makes the check unconditional, but suppresses the warning
    if we're writing the section's named.decl (i.e. the decl from which
    the section name and original flags were derived).

    Also, the warning didn't fire for -fsection-anchors, for two reasons:
    we allowed retain and non-retain decls to be put into the same block,
    and we didn't pass a decl to switch_to_section.

    Although these are arguably separate bugs, it isn't easy to fix them
    independently without temporarily regressing -fsection-anchor targets.

    gcc/
            PR middle-end/100130
            * varasm.c (get_block_for_decl): Make sure that any use of the
            retain attribute matches the section's retain flag.
            (switch_to_section): Check for retain mismatches even when
            changing sections, but do not warn if the given decl is the
            section's named.decl.
            (output_object_block): Pass the first decl in the block (if any)
            to switch_to_section.

    gcc/testsuite/
            PR middle-end/100130
            * c-c++-common/attr-retain-10.c: New test.
            * c-c++-common/attr-retain-11.c: Likewise.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/100130] R section flag handling doesn't cope with intervening decls
  2021-04-17 11:17 [Bug middle-end/100130] New: R section flag handling doesn't cope with intervening decls rsandifo at gcc dot gnu.org
  2021-04-17 11:27 ` [Bug middle-end/100130] " rsandifo at gcc dot gnu.org
  2021-04-21  8:08 ` cvs-commit at gcc dot gnu.org
@ 2021-04-21  8:10 ` rsandifo at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2021-04-21  8:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100130

rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
            Version|11.0                        |12.0
             Status|ASSIGNED                    |RESOLVED

--- Comment #3 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
Fixed for GCC 12.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-04-21  8:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-17 11:17 [Bug middle-end/100130] New: R section flag handling doesn't cope with intervening decls rsandifo at gcc dot gnu.org
2021-04-17 11:27 ` [Bug middle-end/100130] " rsandifo at gcc dot gnu.org
2021-04-21  8:08 ` cvs-commit at gcc dot gnu.org
2021-04-21  8:10 ` rsandifo at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).