Fix private constructor for ScaledNumber.
authorDiego Novillo <dnovillo@google.com>
Thu, 30 Apr 2015 13:22:48 +0000 (13:22 +0000)
committerDiego Novillo <dnovillo@google.com>
Thu, 30 Apr 2015 13:22:48 +0000 (13:22 +0000)
commit95c93fc6d22043f34846730a8f2bbd77058e0bf5
tree43a8e8e9f6c96e67a327a63d0b3e608e057fe7c2
parentd8c1475f46dcfffde8dfd9c87dddbab176588150
Fix private constructor for ScaledNumber.

Summary:
The private constructor for ScaledNumber was using uint64_t instead of
DigitsT. This was preventing instantiations of ScaledNumber with
anything other than uint64_t types.

In implementing the tests, I ran into another issue. Operators >>= and
<<= did not have variants for accepting other ScaledNumber as the shift
argument. This is expected by the SCALED_NUMBER_BOP.

It makes no sense to allow shifting a ScaledNumber by another
ScaledNumber, so the patch includes two new templates for shifting
ScaledNumbers.

Reviewers: dexonsmith

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9350

llvm-svn: 236232
llvm/include/llvm/Support/ScaledNumber.h
llvm/unittests/Support/ScaledNumberTest.cpp