<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 - variable information lost from debug info after combine redundant instructions"
   href="https://bugs.llvm.org/show_bug.cgi?id=37741">37741</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>variable information lost from debug info after combine redundant instructions
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

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

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

        <tr>
          <th>OS</th>
          <td>Windows NT
          </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>new bugs
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>greg.bedwell@sony.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>anastasis.gramm2@gmail.com, ftee@flametop.co.uk, llvm-bugs@lists.llvm.org, paul_robinson@playstation.sony.com, vsk@apple.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=20402" name="attach_20402" title="output from clang">attachment 20402</a> <a href="attachment.cgi?id=20402&action=edit" title="output from clang">[details]</a></span>
output from clang

I didn't spot this already reported, but as there's been a bit of churn in this
area recently, it's possible I missed it.

Versions:

~~~~~~~~~~~~~
$ clang -v
clang version 7.0.0 (trunk 334224) (llvm/trunk 334232)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: e:\build-yy\Release\bin

$ lldb -v
lldb version 7.0.0 (<a href="https://git.llvm.org/git/lldb.git/">https://git.llvm.org/git/lldb.git/</a> revision
e719823776f7d6c645598845be4ea28c5ddfdd70)
  clang revision 334224
  llvm revision 334232
~~~~~~~~~~~~~

source level reproducible
~~~~~~~~~~~~~
$ cat tests\simple_loop_iterator\test.cpp
  struct iterator {

    int index_;
    iterator(int index) : index_(index) {}

    bool operator!=(iterator const &rhs) const { return index_ != rhs.index_; }

    int operator*() { return index_; }

    int operator++() {
      int ret = index_;
      ++index_;
      return ret;
    }
  };

struct item {
  iterator begin() { return iterator(0); }
  iterator end() { return iterator(5); }
};

int main(int argc, char**) {
  item list;
  int total = 0;
  for (volatile auto elem : list)
    total += elem * argc;  // DexWatch('total', 'elem', 'argc')
  return total;
}

// DexExpectWatchValue('elem', '0', '1', '2', '3', '4', on_line=26)
// DexExpectWatchValue('total', '0', '1', '3', '6', on_line=26)
// DexExpectWatchValue('argc', '1', on_line=26)

// DexExpectStepKind('FUNC_EXTERNAL', 0)
// DexExpectStepKind('FUNC_UNKNOWN', 0)
// DexExpectStepKind('UNKNOWN', 0)

~~~~~~~~~~~~~

DExTer observes that pass 237 affects the debugability:

~~~~~~~~~~~~~
pass 236/316 = 0/52 (0.0000, 0.0000) [Bit-Tracking Dead Code Elimination on
function (main)]
pass 237/316 = 18/52 (0.3462, 0.3462) [Combine redundant instructions on
function (main)]
pass 238/316 = 18/52 (0.3462, 0.0000) [Jump Threading on function (main)]​
~~~~~~~~~~~~~

which comes from the result of evaluating the expression 'total' in the
debugger on line 26 always showing a value of 0.

~~~~~~~~~~~~~
  test.cpp:26 [total] [18/21]
    expected encountered values:
      0

    missing values:
      1 [+6]
      3 [+6]
      6 [+6]
~~~~~~~~~~~~~

We can observe that debugify-each also sees errors from combine redundant
instructions in this case:

~~~~~~~~~~~~~
$ clang -O2 -mllvm -opt-bisect-limit=236 -emit-llvm
tests\simple_loop_iterator\test.cpp -S -o - 2>nul | opt -debugify-each
-disable-output -instcombine
WARNING: Missing line 6
WARNING: Missing line 11
WARNING: Missing line 17
WARNING: Missing line 23
WARNING: Missing line 29
ERROR: Missing variable 4
ERROR: Missing variable 6
ERROR: Missing variable 7
ERROR: Missing variable 9
ERROR: Missing variable 10
ERROR: Missing variable 12
ERROR: Missing variable 13
ERROR: Missing variable 15
CheckFunctionDebugify [Combine redundant instructions]: FAIL
CheckFunctionDebugify [Module Verifier]: PASS
~~~~~~~~~~~~~

I've attached the output from clang in the above command line.  My hope is that
by fixing the errors reported from debugify we'll be able to verify that the
DExTer score improves at the same time.</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>