<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Emitted binary code changes when -g is enabled at -O1 -m64"
   href="https://bugs.llvm.org/show_bug.cgi?id=52538">52538</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Emitted binary code changes when -g is enabled at -O1 -m64
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Common Code Generator Code
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>tlwang@uwaterloo.ca
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>cnsun@uwaterloo.ca, llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Blocks</th>
          <td>37728
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The .text section for the following program
(transformed_program0_preprocessed.c 
) changes after toggling the -g flag. I think the extra add instruction is the
reason why there's a difference.

$ clang-trunk -v
clang version 14.0.0 (<a href="https://github.com/llvm/llvm-project.git">https://github.com/llvm/llvm-project.git</a>
82fc4cc60bec6d0eacad7e8575f404dcdf5144c5)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/cnsun/usr/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
$ cat transformed_program0_preprocessed.c
long d, e, h;
int a, g;
int *b;
char c;
long f[];
long(i)(j) { return d && j ? d : d + j; }
short l() {
  char *k = &c;
  a = 1;
  for (;; a++) {
    int m = -9L;
    e = 1;
    for (; e <= 7; e++)
      for (; g <= 7; g++) {
        h = f[g + a];
        if (h)
          return 3;
      }
    *k = i(m) < *b;
  }
}
//void main() {}
$ clang-trunk -w -c -m64 -O1 transformed_program0_preprocessed.c -o a.out
$ objdump --disassemble --section=.text a.out > no_g.txt
$ clang-trunk -w -c -m64 -O1 -g3 transformed_program0_preprocessed.c -o a.out
$ objdump --disassemble --section=.text a.out > g.txt
$ diff no_g.txt g.txt
28,90c28,87
<   37: 4c 8d 04 08             lea    (%rax,%rcx,1),%r8
<   3b: 49 83 c0 f7             add    $0xfffffffffffffff7,%r8
<   3f: 41 ba 01 00 00 00       mov    $0x1,%r10d
<   45: 41 bb 00 00 00 00       mov    $0x0,%r11d
<   4b: 4c 8b 0d 00 00 00 00    mov    0x0(%rip),%r9        # 52 <l+0x32>
<   52: 66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
<   59: 00 00 00
<   5c: 0f 1f 40 00             nopl   0x0(%rax)
<   60: 44 89 15 00 00 00 00    mov    %r10d,0x0(%rip)        # 67 <l+0x47>
<   67: 41 b6 01                mov    $0x1,%r14b
<   6a: bf 01 00 00 00          mov    $0x1,%edi
<   6f: eb 24                   jmp    95 <l+0x75>
<   71: 66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
<   78: 00 00 00
<   7b: 0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
<   80: 48 83 ff 07             cmp    $0x7,%rdi
<   84: 48 8d 47 01             lea    0x1(%rdi),%rax
<   88: 41 0f 92 c6             setb   %r14b
<   8c: 48 89 c7                mov    %rax,%rdi
<   8f: 48 83 f8 08             cmp    $0x8,%rax
<   93: 74 7d                   je     112 <l+0xf2>
<   95: 48 63 05 00 00 00 00    movslq 0x0(%rip),%rax        # 9c <l+0x7c>
<   9c: 48 83 f8 07             cmp    $0x7,%rax
<   a0: 7f de                   jg     80 <l+0x60>
<   a2: 49 8d 34 c3             lea    (%r11,%rax,8),%rsi
<   a6: b9 08 00 00 00          mov    $0x8,%ecx
<   ab: 48 29 c1                sub    %rax,%rcx
<   ae: 8d 50 01                lea    0x1(%rax),%edx
<   b1: 31 c0                   xor    %eax,%eax
<   b3: 66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
<   ba: 00 00 00
<   bd: 0f 1f 00                nopl   (%rax)
<   c0: 48 8b 1c c6             mov    (%rsi,%rax,8),%rbx
<   c4: 48 85 db                test   %rbx,%rbx
<   c7: 75 27                   jne    f0 <l+0xd0>
<   c9: 8d 2c 02                lea    (%rdx,%rax,1),%ebp
<   cc: 89 2d 00 00 00 00       mov    %ebp,0x0(%rip)        # d2 <l+0xb2>
<   d2: 48 83 c0 01             add    $0x1,%rax
<   d6: 48 39 c1                cmp    %rax,%rcx
<   d9: 75 e5                   jne    c0 <l+0xa0>
<   db: 48 89 1d 00 00 00 00    mov    %rbx,0x0(%rip)        # e2 <l+0xc2>
<   e2: eb 9c                   jmp    80 <l+0x60>
<   e4: 66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
<   eb: 00 00 00
<   ee: 66 90                   xchg   %ax,%ax
<   f0: 48 89 3d 00 00 00 00    mov    %rdi,0x0(%rip)        # f7 <l+0xd7>
<   f7: 48 89 1d 00 00 00 00    mov    %rbx,0x0(%rip)        # fe <l+0xde>
<   fe: 49 83 c2 01             add    $0x1,%r10
<  102: 49 83 c3 08             add    $0x8,%r11
<  106: 41 f6 c6 01             test   $0x1,%r14b
<  10a: 0f 84 50 ff ff ff       je     60 <l+0x40>
<  110: eb 1a                   jmp    12c <l+0x10c>
<  112: 48 c7 05 00 00 00 00    movq   $0x8,0x0(%rip)        # 11d <l+0xfd>
<  119: 08 00 00 00
<  11d: 49 63 01                movslq (%r9),%rax
<  120: 49 39 c0                cmp    %rax,%r8
<  123: 0f 9c 05 00 00 00 00    setl   0x0(%rip)        # 12a <l+0x10a>
<  12a: eb d2                   jmp    fe <l+0xde>
<  12c: 66 b8 03 00             mov    $0x3,%ax
<  130: 5b                      pop    %rbx
<  131: 41 5e                   pop    %r14
<  133: 5d                      pop    %rbp
<  134: c3                      retq
---
<span class="quote">>   37:  4c 8d 44 08 f7          lea    -0x9(%rax,%rcx,1),%r8
>   3c:      41 ba 01 00 00 00       mov    $0x1,%r10d
>   42:      41 bb 00 00 00 00       mov    $0x0,%r11d
>   48:      4c 8b 0d 00 00 00 00    mov    0x0(%rip),%r9        # 4f <l+0x2f>
>   4f:      90                      nop
>   50:      44 89 15 00 00 00 00    mov    %r10d,0x0(%rip)        # 57 <l+0x37>
>   57:      41 b6 01                mov    $0x1,%r14b
>   5a:      bf 01 00 00 00          mov    $0x1,%edi
>   5f:      eb 24                   jmp    85 <l+0x65>
>   61:      66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
>   68:      00 00 00
>   6b:      0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
>   70:      48 83 ff 07             cmp    $0x7,%rdi
>   74:      48 8d 47 01             lea    0x1(%rdi),%rax
>   78:      41 0f 92 c6             setb   %r14b
>   7c:      48 89 c7                mov    %rax,%rdi
>   7f:      48 83 f8 08             cmp    $0x8,%rax
>   83:      74 7d                   je     102 <l+0xe2>
>   85:      48 63 05 00 00 00 00    movslq 0x0(%rip),%rax        # 8c <l+0x6c>
>   8c:      48 83 f8 07             cmp    $0x7,%rax
>   90:      7f de                   jg     70 <l+0x50>
>   92:      49 8d 34 c3             lea    (%r11,%rax,8),%rsi
>   96:      b9 08 00 00 00          mov    $0x8,%ecx
>   9b:      48 29 c1                sub    %rax,%rcx
>   9e:      8d 50 01                lea    0x1(%rax),%edx
>   a1:      31 c0                   xor    %eax,%eax
>   a3:      66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
>   aa:      00 00 00
>   ad:      0f 1f 00                nopl   (%rax)
>   b0:      48 8b 1c c6             mov    (%rsi,%rax,8),%rbx
>   b4:      48 85 db                test   %rbx,%rbx
>   b7:      75 27                   jne    e0 <l+0xc0>
>   b9:      8d 2c 02                lea    (%rdx,%rax,1),%ebp
>   bc:      89 2d 00 00 00 00       mov    %ebp,0x0(%rip)        # c2 <l+0xa2>
>   c2:      48 83 c0 01             add    $0x1,%rax
>   c6:      48 39 c1                cmp    %rax,%rcx
>   c9:      75 e5                   jne    b0 <l+0x90>
>   cb:      48 89 1d 00 00 00 00    mov    %rbx,0x0(%rip)        # d2 <l+0xb2>
>   d2:      eb 9c                   jmp    70 <l+0x50>
>   d4:      66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
>   db:      00 00 00
>   de:      66 90                   xchg   %ax,%ax
>   e0:      48 89 3d 00 00 00 00    mov    %rdi,0x0(%rip)        # e7 <l+0xc7>
>   e7:      48 89 1d 00 00 00 00    mov    %rbx,0x0(%rip)        # ee <l+0xce>
>   ee:      49 83 c2 01             add    $0x1,%r10
>   f2:      49 83 c3 08             add    $0x8,%r11
>   f6:      41 f6 c6 01             test   $0x1,%r14b
>   fa:      0f 84 50 ff ff ff       je     50 <l+0x30>
>  100:      eb 1a                   jmp    11c <l+0xfc>
>  102:      48 c7 05 00 00 00 00    movq   $0x8,0x0(%rip)        # 10d <l+0xed>
>  109:      08 00 00 00
>  10d:      49 63 01                movslq (%r9),%rax
>  110:      49 39 c0                cmp    %rax,%r8
>  113:      0f 9c 05 00 00 00 00    setl   0x0(%rip)        # 11a <l+0xfa>
>  11a:      eb d2                   jmp    ee <l+0xce>
>  11c:      66 b8 03 00             mov    $0x3,%ax
>  120:      5b                      pop    %rbx
>  121:      41 5e                   pop    %r14
>  123:      5d                      pop    %rbp
>  124:      c3                      retq</span >
$</pre>
        </div>
      </p>

        <div id="referenced">
          <hr style="border: 1px dashed #969696">
          <b>Referenced Bugs:</b>
          <ul>
              <li>
                [<a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [meta] Make llvm passes debug info invariant"
   href="https://bugs.llvm.org/show_bug.cgi?id=37728">Bug 37728</a>] [meta] Make llvm passes debug info invariant
              </li>
          </ul>
        </div>
        <br>

      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>