[LLVMbugs] [Bug 18590] New: Different code generation at -O2 -g and -O2

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jan 23 01:29:44 PST 2014


            Bug ID: 18590
           Summary: Different code generation at -O2 -g and -O2
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: DebugInfo
          Assignee: unassignedbugs at nondot.org
          Reporter: katya_romanova at playstation.sony.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

r123031 introduced this regression.`

Consider the following testcase:
struct Foo {
  bool bar();
  bool operator==(Foo &baz) { return (this == &baz); }
Foo *wibble;
bool Foo::bar() { return (*this == *wibble); }
int main() {}

clang -O2 -g test.cpp -o test.g.o
clang -O2 test.cpp -o test.o

As you can see below, "-g" inhibits the removal of a mov instruction.

objdump -D -j .text -D test.g.o 
Disassembly of .text shows:

00000000004004d0 <_ZN3Foo3barEv>:
  4004d0:       48 8b 05 51 0b 20 00    mov    0x200b51(%rip),%rax        #
601028 <wibble>
  4004d7:       48 39 f8                cmp    %rdi,%rax
  4004da:       0f 94 c0                sete   %al
  4004dd:       c3                      retq
  4004de:       66 90                   xchg   %ax,%ax

objdump -D -j .text -D test.o 
Disassembly of .text shows:

00000000004004d0 <_ZN3Foo3barEv>:
  4004d0:       48 39 3d 51 0b 20 00    cmp    %rdi,0x200b51(%rip)        #
601028 <wibble>
  4004d7:       0f 94 c0                sete   %al
  4004da:       c3                      retq
  4004db:       0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)

Checking for "isDebugValue()" in r123031 code effects code generation in our
test cases above. Removing the isDebugValue() checks from MachineInstr.cpp and
PeepholeOptimizer.cpp takes care of the code generation differences, but
several DebugInfo tests start to fail.


You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140123/61f33c37/attachment.html>

More information about the llvm-bugs mailing list