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

    <tr>
        <th>Summary</th>
        <td>
            [riscv] Miscompile related to frame alignment w/o frame pointer + exception
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:RISC-V,
            miscompilation
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
            kito-cheng
      </td>
    </tr>

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

<pre>
    Filing this on Keto's behalf.  This got mentioned in private email, and I wanted a tracking issue.  

MultiSource/C++/frame_layout from llvm-testsuite, failed when
-march=rv64gcv -fno-omit-frame-pointer (and yes, that will broken even
no VLS vectorizer enabled!)

This is believed to be related to both exception handling, and frame alignment with RVV objects, but that has not yet been conclusively confirmed.  No reduced test case available at this time.

Here's Kito's brief writeup on his current thinking on the bug.  

I didn't have a small enough reduced case yet, but that's the
situation for this testcase:

---
try {
  sp adjust for outgoing args. # 1. Sp changed.
  func_call  # 2. Exception raised
  sp restore # Oh, not restored
} catch {
  # 3. And now we are here.
}

# 4. Prepare to return!, restore return address from stack, but...sp is wrong.
# 5. Screw up!
---

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxlVE1v2zgQ_TXyZSBBpqzYPviQxGts0O1u0RS5FhQ1kthQpMAPeb2_vkPajt0uINgiNXzz3psZNqY97Q5SSd2DH6QDo-ETepOxtYMGB666AuBb_NIbDyNqL43GFqSGycqZewQcuVQZewauW3iBI9eeAjh4y8V7BJbOBSSYrNxn5eP593NQXr6aYAVm7PCcsaf0HDrLR_yu-MkED501Iyg1j7lH512QHmOejvJRhuOA-gyWj9yKIav2dn5Y9WKGvNMmN6P0ecLLJyOJlIWMbSLJE7qI4wfu4SiVgsaad9SA8xVRG3j76xVmFN5Y-R8dRc0bypqxZca290qSOTK6pSQBtOANvYNFxf1lZfwA-K_AKZoHA1GIhl8tSxSBK9nr6C8xovCvb29gmh-UP1FtyI1Ed-AONFXihJ6yEGdhtFDByRnVKS46aUdsye2_DXFog4gcyD0Q3FGWmbyLQoD7c8G9HLG41_MnWkzl_ySvfWAldnC0ZH-YYofEcyJYG9kSiE5Vpn0_IDHtfyv1C7Sy1YQU2c-UGdzIyXTUJvTDB8nEj2Tdy03pCfUM5KQPPFnYGXthT8riwax6vE-Z5_n5xdsTZOun8wLATcDbH4HciAjUYr2J1LntXUHNUcGygNcJBJWoJxOvx7qgxXcROacgVsAfH9W0XDpqi1sCS5SMxRT5zxDVxHpddi-B2XpPer0Y7snFA1UBj9QS2hzhSE4RzEDlKD5O3YuM8asCvlicYqCP9fbB6tSizx88zpuku6Udd54p52k0L0YXRUGsycujNbovbtg1eSEsHiFMEfJXYxftrmq31ZYvvPQKd1n9ZKUTc1bv4TO9mHGiIb2fgv-1OU37dfc2n0-3QVkEq3aD95OL1WUHenoajdAUhE6LeDFc_vLJmjgrtEyXDc3Moa5XK7YYdk0p1hXHlpXlcslavqka3j0sW15tq7peVwuaB1QuKsgYa8gY1C1l_Pry-py_0Vb0if7Gq6rUgnG_3i_kjpWMlfWyWm7KstwUWG8bXj1sBNs022bdZqsy3Y9FpFkY2y_sLjGmOXH0UUm62G4fuXPkD-KFzTuNYC7onusv-Xjwg7G7ySLZ5hZJ7C4p_QlcF97G">