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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
I think variables with 'static' linkage cannot be 'common'?  That is, it works
with

__attribute__((common))
volatile int z;

and it's odd that we emit .comm with -fcommon for your testcase (I'd even call
that wrong and the use should be diagnosed?)

That said, your testcase, with -fcommon (no -fdata-sections) outputs

        .file   "t.c"
        .text
        .local  z
        .comm   z,4,4
        .globl  main
        .type   main, @function
main:
...

for me on x86_64 but the assembler makes this into

  [ 4] .bss              NOBITS           0000000000000000  0000004c
       0000000000000004  0000000000000000  WA       0     0     4
...
Symbol table '.symtab' contains 6 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS t.c
     2: 0000000000000000     0 SECTION LOCAL  DEFAULT    1 .text
     3: 0000000000000000     0 SECTION LOCAL  DEFAULT    4 .bss
     4: 0000000000000000     4 OBJECT  LOCAL  DEFAULT    4 z
     5: 0000000000000000    12 FUNC    GLOBAL DEFAULT    1 main

as opposed to with 'static' dropped

Symbol table '.symtab' contains 5 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS t.c
     2: 0000000000000000     0 SECTION LOCAL  DEFAULT    1 .text
     3: 0000000000000004     4 OBJECT  GLOBAL DEFAULT  COM z
     4: 0000000000000000    12 FUNC    GLOBAL DEFAULT    1 main

Reply via email to