This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/25295] New: unused register saved in function prolog


The attached code compiled with the command line below results in the following
assembly that saves an unused register (r8) in the function prolog.

gcc -fno-strict-aliasing -fno-common -ffreestanding -Os    
-fomit-frame-pointer -march=nocona -ffixed-r10 -mno-red-zone -mcmodel=kernel
-pipe -fno-reorder-blocks   -fno-asynchronous-unwind-tables -funit-at-a-time
-mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wdeclaration-after-statement
-Wno-pointer-sign -S rw-double-save.c
        .file   "rw-double-save.c"
        .text
.globl sys_read
        .type   sys_read, @function
sys_read:
        pushq   %r13
        pushq   %r12
        pushq   %rbp
        pushq   %rbx
        pushq   %r8
        movq    %rsi, %r13
        movq    %rdx, %r12
        call    fget_light
        movq    %rax, %rbx
        cmpq    $-1000, %rax
        jle     .L2
        movq    %rax, %rdx
        jmp     .L4
.L2:
        movq    16(%rax), %rbp
        movq    %rbp, %rcx
        movq    %r12, %rdx
        movq    %r13, %rsi
        movq    %rax, %rdi
        call    vfs_read
        movq    %rax, %rdx
        testq   %rax, %rax
        jle     .L5
        testb   $16, 8(%rbx)
        jne     .L5
        leaq    (%rbp,%rax), %rax
        movq    %rax, 16(%rbx)
.L5:
        cmpq    $0, 8(%r10)
        je      .L4
        movq    %rdx, %rsi
        movq    %rbx, %rdi
        popq    %rcx
        popq    %rbx
        popq    %rbp
        popq    %r12
        popq    %r13
        jmp     fput_ret
.L4:
        movq    %rdx, %rax
        popq    %rdx
        popq    %rbx
        popq    %rbp
        popq    %r12
        popq    %r13
        ret
        .size   sys_read, .-sys_read
        .ident  "GCC: (GNU) 4.2.0 20051202 (experimental)"
        .section        .note.GNU-stack,"",@progbits


-- 
           Summary: unused register saved in function prolog
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bcrl at kvack dot org
 GCC build triplet: x86_64-unknown-linux
  GCC host triplet: x86_64-unknown-linux
GCC target triplet: x86_64-unknown-linux


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25295


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]