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

    <tr>
        <th>Summary</th>
        <td>
            Cleanup GCCAsmStmt children iterations
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            code-cleanup
      </td>
    </tr>

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

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

<pre>
    `GCCAsmStmt` stores its arguments in separately allocated array

https://github.com/llvm/llvm-project/blob/b936ef18559aac8d982229040158c65843d43eb2/clang/include/clang/AST/Stmt.h#L3305-L3311

And is not considered to have any children.

Instead, we should store all these statements (contiguously) within the `Exprs` of `ASmStmt` and make sure that's returned from `children()`

https://github.com/llvm/llvm-project/blob/b936ef18559aac8d982229040158c65843d43eb2/clang/include/clang/AST/Stmt.h#L3160


However, we should also make sure that the order of the children - and therefore the order of elements
in Expr makes sense, 

ie `Template, OutputConstraint0, OutputExpr0, ... OutputConstraintN, OutputExprN, InputConstraint0, InputExpr0, ...  InputConstraintN,  InputExprN, Label0, ...`


Constructors, Getter, Setters, etc of GCCAsmStmt needs to be adapted to understand this order




</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMlM2SozYQx59GXFRDCQkwHDgQb7zZqqnkMPsCArWNElmi1K2Z-O1TgnjGs3vKLSe5W__--rmFRrQXDzCw5hfWfCl0oiXEYQ5RebK-mIK5DawVX4_HEa8vdCXWCo4UIiC3hFzHS7qCJ-TWc4RVR03gblw7F2ZNYLiOUd-YGJkYF6IVmRqZPDF5ulha0lTO4crkybnX-_G0xvAnzMTkaXJhykevWjhXXdP0Ws-d6TspZS9qUTXd3DZdrUytYJJMnman_YXJk_WzSwYePOPLdyZPeYRyYVI9KyWap2elqmpvbvSGW-Q-EJ-DR2sgguEU-KJfgWt_4_NinYngyz3gm0cCbZg88jfguITkzI4mT89pAQSOpAl2QEx2c_BkLykkdDcme_5mabE-Szlrxa9_rxEz33DO5vjyDlx7w6_6L-CYInBaNDF5QB6BUvRg-DmGaw65d8hkx2TPWvF_5F7d22Ji_C28wSvEzwy1w_DDuBuiEA3EDCcb91H500aHFohwDpv8QQluh8_EaD3PgLfEyBE8Qi6792G3P-A7XFenafP_kWhNdAweKWrrSXw4c5rNLMvyJ93vn3Wb-c3_nGrzfcr0o2wL_dBt5rOewN0j2APIPSzNFCLm669AtHN92X5tTqA5Q_l4zNwDGMxLPgHXRq-0r3zyBiLSDtbizvO9FhNjYQZletXrAobqUFf9QXSHuliGqj6DlPO5mw6NrmUtunNVtdPUVn1T15Mp7CCFbISq6qqtD01d9h3UyoBuOqXkPElWC7hq68q8k2WIl8IiJhgqVammK1wmgNv3Ssp9x9R4jsETeMOkZPKYL4KBp9mB9mnNzuZLEYdtyad0QVYLZ5HwowRZcjAc94BHQO9rZgmiJhs8Fim64T8_qW0IZPL07xyvg_wnAAD__5n-xSA">