<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62484>62484</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Potential optimization victim in expression
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          rogerl33
      </td>
    </tr>
</table>

<pre>
    In lldb/source/symbol/armunwindinfo.cpp, at line 60/61 is:

    lldb::addr_t addr = exidx_base_addr + (addr_t)offset +
 Prel31ToAddr(m_arm_exidx_data.GetU32(&offset));

When compiled, the optimizer can cause offset to be incremented (via GetU32) prior to the use as an addend, resulting in a bad stack trace.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxMks9u2zAMxp9GvhANZCp27YMP6QoPu_WwYceAtpiEmywZktw_e_pBSYoNMEyBIn_8KHyUkpw986CaJ9U8V7TlS4hDDGeOzphqCvZj-ObBOTspHFPY4szl8LFMwSkcKS6bfxNvxZ_Cbl5XhV-AMjjxDK1WOLY1SFLmoPSz0vc_ANyQ5qDMgayNxwwlgDLPwO9i348TJT7ecvgECrtbmcI-nE6Jc0nfaS-Rnam_h4O1UWG3HCkuxxvFUqbdV84_DCrsFLa3ZoV9-czT_6p-XtjDHJZVHNuyR74whDXLIn84wkweZtoSw11ADjAxiJ8jL-wz26LyVQg-5_WwRgmxFBZUaaUE5Muq7K8jIqfNZfFnEA8EE1lImebfkCPNvKvsYGxveqp4qNsO-7Z9NLq6DDjVzWNnW2vRkCXbPiJh3dd1N7UN9U0lA2o0utF13e0bo3dorNYnbU-97W3T7tVe80Lids69LrsQz5WktPHQ4r7bV44mdulqC0TPb3C9VIjFJXEoPQ_Tdk5qr52knP5RsmTHw0vI7LOQ-3xAyhI8vMqcZSm78vsaOSUJvtqiGy45r1eX4KhwPEu-bNNuDovCsZDv4WGN4RfPWeF41ZOKv4revwEAAP__3krkUQ">