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.