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.

Reply via email to