<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/82053>82053</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LlVm 17.0.6 compile error in MathExtras.h from VS 17.8.6 x64
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Bob64375
</td>
</tr>
</table>
<pre>
In MathExtras.h
`inline uint64_t alignToPowerOf2(uint64_t Value, uint64_t Align) {
assert(Align != 0 && (Align & (Align - 1)) == 0 &&
"Align must be a power of 2");
return (Value + Align - 1) & -Align;`
Visual Studio x64 gives the error:
llvm-project-17.0.6.src\llvm\include\llvm\Support\MathExtras.h(385,32): error C4146: unary minus operator applied to unsigned type, result still unsigned.
Is the intent here `~` instead of `-`? What is expected here when unary minus is applied to unsigned 64 bits?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsU02PrDYQ_DXNpTXItMHDHDjszGSkJyVKpI0mx8hA7-DIYOSPt7uX_PYI2LdLonAAmSqXq7vLOgTzmJgbqM5QXTOd4uB8c3atKuWxylrXvzffJvxFx-Gnt-h1yAcEcQXx9PFWwkzWTIzJTFGVf0bU1jym391v7pX9ry8EVH9Cd20TA12-yE8LGeiEcDxviog6BPYRqF5BBCpAXlEgkAJSuAN2iwMWQKdVSV73_B-qHw8QbRvGFCK2jBrnxSm6FyQgWkTkpxXPMfnlpHq1jkBn3J-3ejhsRcgzKLHvzd2EpC0-x9Qbh2-qxIf5zgHjwMjeOw_yac-39vt4mL37i7t4KI65yFUefAfVZUGgupips6nnrx_PaZ6dj1Bd9gMCqmVdAV3kVs3TdhpeyqJUyzJN2r_jaKYU0M3sdXQe9Txbwz1Gh2laU9FjfJ_XcXkOyUYM0Vj7ieZ779-2sswUeYo4sGcEJf4GJdBMIbLulwaDEoelSfKGfww6ognIbzN3kfttz-vA07_smfC_xlSJrYkB5C3rG9mf5Eln3BRHURdUHKXMhkYoXamj6EQnai3a-kTVSZWyoK5ifWSdmYYElYIKRVRUUuZSyqooO30i2XXcSygFj9rYfOl27vwjMyEkbmoSlcysbtmG9eIQTfyKK7gkqLpmvlmH2aZHgFJYE2L4UokmWm5-tvcRtylj58bZ2I9UoPnPfXvxbsT780Kuc7UEKUveNkOMc1giRDeg28PEIbV550ag2xqP7fMjUEC31WAAuq0F_BMAAP__NhE1xQ">