<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVMtu2zAQ_BrpsrAgUQ_bBx3spAGCBmjQph9AkSuJDU0qJGXH-fouZaMJ2kuLApRELcnZ2Z0BOyvPbcJ2NITmZlhxw_X5Dd3KTkGZbELXW3fgRmD2yKVUZrjsBuWBw-CQBwjWanqBQzkLBD5NWgkelDXQWxsmp0wAbiQEx8UzqAAnaxK2DmBsIAx7ypL8Nsl33w0lC7PhAfU5YTd0CNRhohgnBME9gu3BBzeLMDv0cFJhhC7Gib33FCFaEdTPUzyGMil3MIYweZok7I7GYGVndciso1Lu3ugpPj2-VK8vr8cLi8t75-EeNHJnCISohBHPcEKHFOwD2DksXISdEOSMsf7d_h74oVPDrML5z8QOjwpPPtP6eLhmvy2q9Xp7SfgbS6ps7jJhD_QTT1w_q8nZHygC_XbadvTZVjxvmlwUleRd36-LWuR93tUFbrZ901eyq_KmriraukgcgVQ8-C2QRmJ3FZwCNyOKZ3Sepletr5FMTFPCyoeiLlYPRVN87NOX2cGVE1AvHGl31aXHE2juBoSEbTweaU3D5z3Bbz9omMFT7CynxnJNdpJnENFVKEEZstgUzRXNM0WBJRwVB3_gLtAK-YroZrC3lI5IUPqgKP0CJkZFOeWFy83Xp8eoorcXIeOOhDFljsqrTiPNo4K0trg5-1hhKttSbsstT_kcRuvaiR9RP7vz_GyP6ex0-8_SKe9njH2uy5JV6dhiXlXdRtTrrsy57FhZ9KwUdd2vRdNUzTbVvEPt26TeE1VDnV0gaJ7Ut-n_M1AtyxnLCxpb1rAy21RcYJHXm41ga0buqXI8cKV_uTd17QLZzYOnRa18eLd2SlqpwSAuhIlhUEFj-7dXDPjRzlqCiPajO8SRFUZ0Kpri3TnpUkO7FPATLm6YkA>53324</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang-analyzer-optin.performance.Padding should check for inherited structures
        </td>
    </tr>

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

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

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

<pre>
    **clang-analyzer-optin.performance.Padding** is a great tool to reduce application footprint and track it won't not grow.
Unfortunately, an important case of structures with base classes is not supported: https://godbolt.org/z/1EPq4xqxv

As I learned, they were left out of scope due to ABI ambiguity: https://reviews.llvm.org/D14779
https://github.com/llvm/llvm-project/blob/94a0660c14dabff715c0f0b51e89f6f4db406544/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp#L151-L161

Our project operates with few large (several KBs) structures. They are already created in a pool and passed via smart pointers. Both properties are achieved with CRTP, so they are "invisible" to the tool.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVU9uOmzAQ_Rp4GQWBIQk88JDsdqVVV-qqlw8w9gBuHJu1TbLZr--YRN1V-9JKBszYnnNmznFn5aVN2I6G0NwMK264vryhW9kpKJNN6HrrjtwIzJ65lMoM192gPHAYHPIAwVpNL3AoZ4HAp0krwYOyBnprw-SUCcCNhOC4OIAKcLYmYdsAxgbKYc9Zkt8n-e6HIbAwGx5QXxJ2R4dAHSeKccoguEewPfjgZhFmhx7OKozQxTix954iRCsm9fMUj6FMyh2MIUyeJgl7oDFY2VkdMuuolIc3eopPzy_V68vr6cri-t55eASN3BlKQlTCiBc4o0MK9gHsHBYuwk4IcsZY_27_CPzYqWFW4fI3sMOTwrPPtD4db-j3RbXdNlfAP1hSZXOXCXukn3ji9llNzv5EEei307ajT1PxfLPJRVFJ3vX9tliLvM-7dYF102_6SnZVvllXFW1dJI6JVDz4LZBGYncTnAJ3I4oDOk_Tm9a3SCamKWHlU7EuVk_FpvjYpy-zgxsnoF440u6mS49n0NwNCAmrPZ5oTcPnPaVvPmiYwffYWU6N5ZrsJC8goqtQgjJksSmaK5pnigJLOCkO_shdoBXyFdHNYG8JjkgQfFAEvyQToyJMeeVy9_X7c1TR26uQcUfCmDIn5VWnkeZRQVpb3Jx9rDCVbSmbsuFpUEFj-68XBfxoZy1BxCbSTXBU0IhOxdLe609np9v_1l55P2MUal2WrErHtqw3Td83JZM11jnLt13V83orN_0WGZYi1bxD7dtkvadaDUmzpKB5sr5PVctyxvKCRsM2rMzqigss8nVdC7ZlZJ4qxyNX-rd5U9culLp58LSolQ_vzk5JKjUYxAWO8vM5jNa1Ez-hPrjLfLCndMFvF_6_AKxKg2w">