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

            Bug ID: 119487
           Summary: Marking inline variable as 'noinit' causes assembly
                    warning
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: palchak at google dot com
  Target Milestone: ---

Marking an inline variable with the 'noinit' attribute causes the assembler to
emit a `Warning: setting incorrect section type` warning.

Reproduction:

Input file:
```
[[gnu::used, gnu::noinit]]
inline int comdat_array[42];

[[gnu::used, gnu::noinit]]
static int internal_array[42];
```

Command line:
`g++ -std=c++17 -c noinit.cc -o noinit.o`

Output:
```
/tmp/cc2oypYv.s: Assembler messages:
/tmp/cc2oypYv.s:4: Warning: setting incorrect section type for
.noinit.comdat_array
```

Full reproduction here:
https://godbolt.org/z/Pv53rE4Y3

The compiler explorer reproduction also shows the assembly listing. From the
listing it can be clearly seen that the `.noinit.comdat_array` section is
emitted with PROGBITS type instead of NOBITS type.

Reply via email to