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

    <tr>
        <th>Summary</th>
        <td>
            [ARM][clang] Add a warning for calling an __attribute__((interrupt)) function
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    #91870 fixes a warning that's existed for a while for bare-metal Arm targets which encourages calling interrupt handlers from other interrupt handlers. Doing this leads to unpredictable behavior and/or infinite loops due to how Arm exception returns are defined: https://github.com/llvm/llvm-project/pull/91870#issuecomment-2106045679. `clang` should warn when you try to do this.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUks2OpSwQhq8GN5U2iOLPwsXpnJzdt_lu4AShFCYIBor-ufuJdnpmFrOZlSZFVZ636lE5uy0gzky-MnmvVCEb06xtcjnoaonmc2ainZpx4LC6D8yg4F2l4MIGZBUxMWTAD5cJDawxnWXrPF7_i0r4siMpD7e0A6m0IeXzgbaAQceS1IYZtPL-HOgCYUrlILAqGI8pw5riDpEspr9Ua7jHLxCXwaMyGShCCUdC4zSpxSMsaNWbO8GCYeIRzzmrC44QfIxHBlPw7LLx_YLED40HuRggIZUUMqiEYHB1AQ1rb2CJjszaGxMPJh6bI1uWWsediYf3b9-flyPFH6iJicdRvGfice2QidblXFDHfcdAL6LhPe9kP0w1sJ5rr8LGeg7ZxuLNtWl4txjgMxag9HmSmngFriszt2ZqJ1Xh3AzNKOTY8KaysxgnPui-lXxd16Zf5dAtOHbDNLWNQTNUbhZcdLxvWi6l5E3da2N418sW1xUb5KzjuCvn6zNKHdNWXdTzJFs5VV4t6POljBBfyEKc9qT5ir6ULbOOe5cp_55Ajvzl2e3__5i8M_n61SrvcDPmD61Oc76NUAGeT0WU3FIIn08mRibGXyYwMTExwVqCPk9WleTnf77PFS2fF7rSvc3iZwAAAP__OScH6A">