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

    <tr>
        <th>Summary</th>
        <td>
            LLVM fails to remove `i<=s.size()` in pointer loop.
        </td>
    </tr>

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

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

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

<pre>
    Clang fails to DCE using `idx <= len` in following code.
```cpp
void do_checks(const int* begin, const size_t len){
    size_t idx = 0;
    const auto end = begin + len;
    for (const int* it = begin; it!=end; ++it, ++idx){
        if (idx <= len){
            // Do something useful
        }
        else
        {
            throw 5;
        }
    }
}
```

[godbolt](https://godbolt.org/#z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyahUAUgBMAIUtXyKxqiIEh1ZpgDC6egFc2TEAtydwAZAiZsADk/ACNsUikAVnIAB3QlYhcmL19/AzSM5yEwiOi2OISee2xHIqYRIhZSIhy/AKCHbCcshqaiEqjY%2BKT7RubWvKqlMf7wwfLhngBKe3QfUlROLksAZnDUXxwAajMdj1RpzBwaU9wzLQBBe4eAN3QCTCPMdAB9VCQugBrJQQDBMaZHcJEABURziwHC5COYIhGQAXtgfkQjowmEszAB2GyPI6ko7ozHYj7qE47AAiRy0p2JDzJyKEEJYPhIR3ctIZ8PCJ2sOOYzOebMEpCOoI5VOEsOI/Lh2ARTGZkKIYDApzp7g1tlsxCRhus1PxRIlbLJBBoMuptI8utFeMJLOtHqOAHovUc6ehyegOEQkOFgEcfCoaD56FaPYS6XHrTUVEm2W6056Q6R0AB3I6JcUkz0JpOlx4JrgrejcRL8AJcHTkdDcJ3WWyB9abYU7PjkIjaKsrQEgHYWAB0WmkAE4LAA2OcWaQEnYE6fSOeyGtcaT8NijnbjnbHk%2Bn09z8gNpstrj8JQgLT9wcrOCwFAYHD4YhkSjUOi49gtj7QRhDECROBkORhGUNRNEbPRAkMYxTFNOxOm6VwIHcCYAh4R9QjmMoKikHZUnSTIhBwqRHwKCimAGIjFlI9C6l6cZvDaajqlqHoZgYoZKmYmYqLw0Y%2Bn4hZBJWJQ1g2LZdn2Q5sEdC4iCubAbh2O4K0eN4Pi%2BX5/iBEEUXlGEVTVJFTPJAgMSxF0LXdMkKXsh1nSZHYnNJayuR5PlnUFJhhSsF0i1ZMkpRlayoUVbEAtVcINWIbVdX1TzgqNIgTXbM1MHURzM1JW17Tyx0HIzYtPTJH0/QDGTg1DEwIyjGNCpOAlE0q5N6FTLr00tPqsyQHN80LTy2vLcLSUmytq1retB2bVtUM7OSewsfgB3gpYVgBFgcASCA5p3PcDyPM8LuPC8r34G87wfJ9tvIV9kDQIMUgYeJf1lNgPsYBIDmQmQtEff8iHie8IBiRaYnCJoAE9uD7DA2A4YQAHkmHoRH4PIHA2GQyRccIUgumcF5sHvXHsHULpuSA/goRqRb6AIGJSARrwcEWohSAIfdeCrAQjGAJQADUCGwXN0ZSZgkf4EDRHESRIMVmCNEW/QqiMEw0FQww2fvSAVnQFI6ipgBadGdjvGoyayNwmE8DjJmCJ2JOIqpaLqESyMKLIPcWbj7aENiWhd3Dg4w%2Bo%2BMIgSDGmPpfcT5pA8qaTZM2RDeewBnjrrS9FpvdQAA45wtzdkR18MZEnScZTbGxrCRL8SGlXYgiOLxfs%2B9uLF7JZNufY7d3Ifdj3Oy6z0L3G7vsB6tp0HbyBHMdJxnedF2XVd103QxuBtmfr24IenpeiB33e3vvpRv7hkBkxgdBhhwdISHodx2HWFIHHkaDNGiCY2xotfGhMthNhJvbCmVMmw0zpuDeWlBhDM1xqzdmnMsAM37HzAWfAVg0BFuLSW0tZYNmAvIMCKtZBqxUBrXG%2BggjVz1jlOwaCjZHWbGbLIltra2x4phbCEcDAEVKPHL25EfZCPEf7YocdJIJzttHMOydFGsVjqI%2BRUxhJSLEqnORnsM5dggtg3O8t84LVntwUu5dK4PxrtIOuWgG76yOK3MgPYqhdyvv9dag9HpL2HKOBxc4eAEmkCDaQPBZwlwJBYRh3BR77jwo%2BG6S1bzz0fIvIW58UAEAoFQH6d9SCREAlYsuFdpBV2QkcWuWhJz8GwIQNuHwDCK0oRBah8h1ZwSbAwqOdRHbO1yJHER8xPZ%2Bzor7b2Ad9FBxYrxJOOj5mh3UWMuZ2jhkJ1WYxdOJjsAtMFuYo%2Bt1uAhBCGLAAskcAAkgAJSOBLKW8QjjWIqVUpqtT64QDcX3XsSJu5FN8afAJK8zpTwuvvE6xy0n3UycPSFG1oVzyycvCmb8HbSCAA%3D%3D%3D)

Also related: https://github.com/llvm/llvm-project/issues/52851
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVsmyo7gS_RrfjePdYDCDF3chZjAYA8Y2bDoYxTxjhq9v7Fv1qrpe755CIUuZyVGmUkofvw6XL7bwKriPvbTo90O951h-P_bpJtqRSBrO-x3O7nBuX0TVJtin1T6ui6KeXhZBHUafO4TbIWDTffegab4lzzoN92H9V5BEQd7vMDqoq37YAIYdBvZ-BNNqh7H7b2mfrtFfw3sT7LijmG-I_dZ-aL494fbIDv9N-f2xN25-R1X4NngD73cY8wb73Tiuu_2fbqTDr4824229w9BNsqG9lhvM1l9C9uc8nP_08NXS-AX9x3H9i92r7TBh63uu3vd1GQ3J6yTHPorH4p-2O4r7pyAq-uhPk3_BH5KunvbEP2L_H7z_Ln5Nfmbwx_J7JBhYh35dDDuC2yJMhqHpdzj4juGH6rPu4FuAr5tKd1SYAIFpQ-J6AirPZOAI-enkCILG3oE6Qv4AEEbmgQsNzncYDCRQ9R3I5SDbQAiMuT5MLQXuzRhEWYKMwxg1FGywDhCcAIcdgBhDtm-IKF28xAY2ZDQg28NjOc1tKvMJ6jaQY8kICgF25cGwhBNwQer2gMs3RwF77u00B7dKBgxuFE4SlCp6fGlWSyMWfkr1FNNlK4qwWZJbx5QT15KT5WVxYiWfDfqk9VK-zZy3v6crZY7-_XlqCy2mpilWkwoypwg3YrswdTXvgVtx9mOegJdpYYaazcpMnn2cVtVgmOgQgTNusFf2ooWAOd5YY4RMpxgGx2ieKwUKDxjbXNNJYglWd-RENMBjgHFuZPVU8v0KGExcLjKZ11S9Sk5GtfyBAiA1F6TBFG5VlhPPK84lkU08GGSXvrAK1uu6s-qRr_ENq9cycdP5Xpe3GNUEA-ZVdPOT7HCgWRsKokPRz6yZjD16mU258FWFYWptbAaZHgch0hRVH6RWB1L9tAMySpYI6ryR6wLkg5itPY4gBe_iWORD6q72jS-xO4kQpEGayJYDmVQCO18RpdGL-aB0sIuywFRpoATSNQ-5QMHv94U5er5jU5cslzPv1HcGDyXnDhjkXuaAP6gAYHpw9wy-cngytvRoEYfAu9LnNKv8rUv5O1sVclxpeG76octoxYDq9TgFnc5OAnAk7uAkuZXZeno4wiGjDDPheNbUmVw3E9E-m2fev5gg15z5Kpz1WS_J2yRLAeuA5GAejazU6lOaS65dWVc5YabWlKYTm5ZAlDOhkI8sWZCB--Q8L2uLVqpd6NTuqXRKp1Un5Ps-VYfEZZS7YqAQU92wwgyi50P2kLKjD_wE0w8nJDofLunb-kFsOUsZnrcfhcjfrjdFuF4UADVrFhD1EWr56dEnaGW5klOdFW8ZTeJSVLagJInVC0iKulremIW31PbN357LLZDPd9m_hQ_0usL2LMPrw9dQTdruoIYqd5S6LjMiyaszXK6KhGzbG5x4hSjHT_KSiWe20UHBIy1xJoWr2iHIcGn7xZDONKJeF-ypBqpll8vQol00MJh_G2yN0q1o6mPI4LBxbpARYAAsFhANfgm45aLR6nhh6Q4_iDQ1xcpxeMq3Y84ZsmZDJ1JitDjDS-8wMlcapTHwcUynUhrRMpOanlOxSg3448hRHMDAwTGAlJdSbUqHiywBTDQWMwhkG45lIBC99HxIvWSrzWiBd5kzW9MngSwqFjC7KeDvdWIBOQ4jtgNGJgLFAJzNitPjjLiWC_P4wHOmxFumrN1K9szfX0fUpho_IYIxTVj8tLbqYwgymTaQ8UIxzJ5ivXjLeXvONJcp5fY-FV1uG09teWvRTqp8Ce5-Rnn8Ob0nIc7Bw_TOfv0eNRlanFhemji4Eg2gW-_qapjJRdHEVFnXWUeheYYGAAdiGtYwN1Fac_nKCtyrL84du701SyweDkx1dY77N-ZxVAVKcc9j7FAhvkWb4fpCroiKi9SzZ8ihQSR_YSQtVOYqCgXscQtRBDfmkRnKuMMOclQ1UcrgeIQ_n435pJKcyWcYMkkyhbIl1eGMSXdBlqTc485iyjrYXA-xmGhDck6Up8-WN62ckLUZueheMAmnoXO7hmWl9UDDKWkF9xjcIMIIo2rdkcF1ziV4yhp7GlymnW2me4jvUCDMbiuaFfrksZkr3X3RV-Vi6DxsPjSJz_IBB_jb6SKpGMHHLnvhY8qpg1CRlXUYJE1fQkHsb1krv-FMe04US-XbSjerXiNCCAeI6_RAH9RbNUz2SISnw2XuBlkf71CkyEU_4Rq8OG0SLs_nMfTgUWpUTDrpzBxs5Z8vc5bzjAvjTsWkMI6Z4IxJUdn0nV6RtFB_XZFYfsp3grYBD2rBkMjwaLEmDwqnH4WwYW6YkQf38Z4oKy1OsnEepYljT0htMl5Cb3-Lk-WDqdVDU_J1dFEk3qTni_veYq07ysdAeBSY2elmRdczokxw-66NLpYluYLenTnUlawHgyaMzrdjAzqChGHFrfb2eQBADoFi6Yx6utNGlt3l9mY37XAlDwYXPPBHbykjIZxpLwbKiV6b6zQ-nzw5L0iF20twsQQRrW_rsgRPtvRpyd8qwPYCCZz7fTj-zlBA0df7Liq8IdooG9j_wVDSIRn9z6Aut0VRPH_-_Kfp6iwKhlfl7Psx2m68QGA0gX6EX3h4xI_ex5AORfSlqjftFznuorJ-Rm9m_M3z-s8XP92I0curb3rc1Bu3jLp9UdfN58fYFV__h0skiWIfydd2RbxjSIZBFEV-jJORH3oxHoQE7R9pDCM-Cs_f2OHXRtd2GFZF0_4Nsc032vaRfmEIhiEUekQJfGufYURHMUVTAe4dEBpHdgckKrcYP19-vNjcR_f1dskfYb8pi7Qf-l9Kr-9TWEXRe7sNf-PfSd19gQpGRRrU_SWp-2aT1P3H242vdxh_A-s-7Jo">