[APInt] Fixed bug where APInt(UINT32_MAX, 0) would blow up when being constructed.
authorMichael Gottesman <mgottesman@apple.com>
Sun, 19 Jan 2014 20:33:38 +0000 (20:33 +0000)
committerMichael Gottesman <mgottesman@apple.com>
Sun, 19 Jan 2014 20:33:38 +0000 (20:33 +0000)
commite7413972a42ebb9ff63df448cc1ed40ff7a6d20d
tree2ad31fff2bddb290cf274c7b8acad946129288fe
parentb45edea9b3575ee8738cac38d51f24c66b2c09e0
[APInt] Fixed bug where APInt(UINT32_MAX, 0) would blow up when being constructed.

This was due to arithmetic overflow in the getNumBits() computation. Now we
cast BitWidth to a uint64_t so that does not occur during the computation. After
the computation is complete, the uint64_t is truncated when the function
returns.

I know that this is not something that is likely to happen, but it *IS* a valid
input and we should not blow up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199609 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/APInt.h
unittests/ADT/APIntTest.cpp