Changes in directory llvm/lib/Support:
APInt.cpp updated: 1.83 -> 1.84 --- Log message: For lshr by 0 bits, just return *this as a short cut. This also prevents undefined behavior when the width > 64 bits. --- Diffs of the changes: (+6 -0) APInt.cpp | 6 ++++++ 1 files changed, 6 insertions(+) Index: llvm/lib/Support/APInt.cpp diff -u llvm/lib/Support/APInt.cpp:1.83 llvm/lib/Support/APInt.cpp:1.84 --- llvm/lib/Support/APInt.cpp:1.83 Wed May 16 14:18:22 2007 +++ llvm/lib/Support/APInt.cpp Thu May 17 01:26:29 2007 @@ -1149,6 +1149,12 @@ if (shiftAmt == BitWidth) return APInt(BitWidth, 0); + // If none of the bits are shifted out, the result is *this. This avoids + // issues with shifting byt he size of the integer type, which produces + // undefined results in the code below. This is also an optimization. + if (shiftAmt == 0) + return *this; + // Create some space for the result. uint64_t * val = new uint64_t[getNumWords()]; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits