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

    <tr>
        <th>Summary</th>
        <td>
            Removing `while` to get nearest larger multiple
        </td>
    </tr>

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

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

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

<pre>
    gcc.godbolt.org/z/ooWz1zh79
```
unsigned e(unsigned x) {
    while (x%4) ++x;
    return x;
}
get:
 mov     eax, edi
        neg     eax
        and     eax, 3
 add     eax, edi
        ret
expected:
        add eax, 3
 and eax, -4
        ret
```
The %5 case even keeps the `while` there.

Since I write this to round up, maybe it's common enough to consider
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8ks9unDAQxp9muIyygjF_DxyyjZB6bSv1bPAE3Bp7ZZvNJk9fmWyzSasWEDDzffNjNIwMQc-WuYfqCNVDJre4ON-3oumqos4pG5167udpOsxOjc7Eg_Mz0PACNDj3_aV4WZoO8gfI76HOr9cebnYnK2Sg9i24AHUIzfHVg4j4tGjDCNRegKpyl-kIdLyAeOfyHDdv8ZaE5uH1ZeYI4v7qXN05uZHlBegTstI3RDosz2_6B0Fa9b5QXFWp1H95nuNrgi8nniKrWyu_wUr9BbVvqbvyH7w_hvltSSOqKpxkYOQzW_zJfAoYk1Dn-xChzlPs-XBl7Pev2k6Mn_HJ68gYFx0wOvRuswq3U2pilc8jo45ATcDJrauzyNZt85Kck7NBK_aZ6oXqRCcz7ou6adq8EXmdLX1VP1Zl2VI7VVSMJEQjFTdqFFK24yibTPeUk8jTWYgqrw-PZSsqoVRXjGoauwrKnFepzcGY85oWLNMhbNzXRSG6zMiRTdgXlMjyE-4iEKV99X2quRu3OUCZGx1iuFGijob7L7y6s7bzxzk5nDmiZek5RDTSz-xx3UzUJ8PZ5k2_xHgK6X_SADTMOi7beJjcCjSkL1wfdyfvfvAUgYa9rwA07H3_CgAA__8EYPgd">