<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 - [DebugInfo@O2] Poor coverage for frame index variable locations"
   href="https://bugs.llvm.org/show_bug.cgi?id=50285">50285</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[DebugInfo@O2] Poor coverage for frame index variable locations
          </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>Linux
          </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>orlando.hyams@sony.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>In the reproducer below, the variable 'local' has no location around the call
to 'ext' when built with "-O2 -g -c" (targeting x86_64-unknown-linux-gnu):

clang built at 71597d40e878.

$ cat test.cpp
void ext(int, int, int, int, int, int, int, int, int, int);
void escape(int*);
int example() {
  int local = 0;
  escape(&local);
  ext(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
  local += 2;
  return local;
}

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

$ llvm-objdump -d test.o
test.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <_Z7examplev>:
       0: 50                            pushq   %rax
       1: c7 44 24 04 00 00 00 00       movl    $0, 4(%rsp)
       9: 48 8d 7c 24 04                leaq    4(%rsp), %rdi
       e: e8 00 00 00 00                callq   0x13 <_Z7examplev+0x13>
      13: 31 ff                         xorl    %edi, %edi
      15: be 01 00 00 00                movl    $1, %esi
      1a: ba 02 00 00 00                movl    $2, %edx
      1f: b9 03 00 00 00                movl    $3, %ecx
      24: 41 b8 04 00 00 00             movl    $4, %r8d
      2a: 41 b9 05 00 00 00             movl    $5, %r9d
      30: 6a 09                         pushq   $9
      32: 6a 08                         pushq   $8
      34: 6a 07                         pushq   $7
      36: 6a 06                         pushq   $6
      38: e8 00 00 00 00                callq   0x3d <_Z7examplev+0x3d>
      3d: 48 83 c4 20                   addq    $32, %rsp
      41: 8b 44 24 04                   movl    4(%rsp), %eax
      45: 83 c0 02                      addl    $2, %eax
      48: 59                            popq    %rcx
      49: c3                            retq

$ llvm-dwarfdump test.o --name local
test.o: file format elf64-x86-64
0x00000047: DW_TAG_variable
              DW_AT_location    (0x00000000: 
                 [0x0000000000000001, 0x0000000000000009): DW_OP_consts +0,
DW_OP_stack_value
                 [0x0000000000000009, 0x0000000000000032): DW_OP_breg7 RSP+4
                 [0x0000000000000045, 0x000000000000004a): DW_OP_reg0 RAX)
              DW_AT_name        ("local")
              DW_AT_decl_file   ("test.cpp")
              DW_AT_decl_line   (4)

The variable 'local' is not given a location over the interval [32, 45) even
though its stack home is still valid here (RSP+8, RSP+12, ...).</pre>
        </div>
      </p>


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

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