http://llvm.org/bugs/show_bug.cgi?id=8186

           Summary: -O3 does not imply -fomit-frame-pointer
           Product: clang
           Version: 2.7
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: LLVM Codegen
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


I compiled the following source using clang-2.7 -O3 on Debian sid amd64:

=====
struct buffer {
    const char *data;
    unsigned int length;
};

void buffer_inplace_advance(struct buffer *b, unsigned int length) {
        b->data += length;
        b->length -= length;
}
=====

This is a disassembly:
=====
Dump of assembler code for function buffer_inplace_advance:
   0x0000000000400760 <+0>:     push   %rbp
   0x0000000000400761 <+1>:     mov    %rsp,%rbp
   0x0000000000400764 <+4>:     mov    %esi,%eax
   0x0000000000400766 <+6>:     add    %rax,(%rdi)
   0x0000000000400769 <+9>:     sub    %eax,0x8(%rdi)
   0x000000000040076c <+12>:    pop    %rbp
   0x000000000040076d <+13>:    retq
=====

As you can see it contains a frame pointer. Turning on -fomit-frame-pointer in
addition to -O3 makes the code much shorter. For gcc -fomit-frame-pointer is
implied in -O3 on this architecture, so clang should probably do this, too.

According to baldrick (irc). This bug is reproducible on 2.8, too.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to