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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|-fdata-sections should put  |-fdata-sections should put
                   |each string literal in its  |each constant in its own
                   |own section                 |section

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
Constant has the same issue:

[hjl@gnu-6 string-1]$ cat y.i
void
foo (void)
{
  __builtin_printf ("%f\n", 20000.1);
  __builtin_printf ("%f\n", 20000.2);
}

int
main ()
{
  __builtin_printf ("%f\n", 20000.2);
  __builtin_printf ("%f\n", 20000.3);
  return 0;
}
[hjl@gnu-6 string-1]$ make y.s
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O2 -fdata-sections
-ffunction-sections -S -o y.s y.i
[hjl@gnu-6 string-1]$ cat y.s
        .file   "y.i"
        .section        .rodata.foo.str1.1,"aMS",@progbits,1
.LC1:
        .string "%f\n"
        .section        .text.foo,"ax",@progbits
        .p2align 4,,15
        .globl  foo
        .type   foo, @function
foo:
.LFB0:
        .cfi_startproc
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        movl    $.LC1, %edi
        movl    $1, %eax
        movsd   .LC0(%rip), %xmm0
        call    printf
        movsd   .LC2(%rip), %xmm0
        movl    $.LC1, %edi
        movl    $1, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        jmp     printf
        .cfi_endproc
.LFE0:
        .size   foo, .-foo
        .section        .text.startup.main,"ax",@progbits
        .p2align 4,,15
        .globl  main
        .type   main, @function
main:
.LFB1:
        .cfi_startproc
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        movl    $.LC1, %edi
        movl    $1, %eax
        movsd   .LC2(%rip), %xmm0
        call    printf
        movsd   .LC3(%rip), %xmm0
        movl    $.LC1, %edi
        movl    $1, %eax
        call    printf
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE1:
        .size   main, .-main
        .section        .rodata.cst8,"aM",@progbits,8
        .align 8
.LC0:
        .long   1717986918
        .long   1087604742
        .align 8
.LC2:
        .long   3435973837
        .long   1087604748
        .align 8
.LC3:
        .long   858993459
        .long   1087604755
        .ident  "GCC: (GNU) 7.0.0 20160829 (experimental)"
        .section        .note.GNU-stack,"",@progbits
[hjl@gnu-6 string-1]$

Reply via email to