mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 18:24:00 +00:00
Fix APInt::operator*= so that it computes the correct result for large integers where there is unsigned overflow. Fix APFloat::toString so that it doesn't depend on the incorrect behavior in common cases (and computes the correct result in some rare cases). Fixes PR11086.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141441 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -386,6 +386,7 @@ APInt& APInt::operator*=(const APInt& RHS) {
|
||||
clearAllBits();
|
||||
unsigned wordsToCopy = destWords >= getNumWords() ? getNumWords() : destWords;
|
||||
memcpy(pVal, dest, wordsToCopy * APINT_WORD_SIZE);
|
||||
clearUnusedBits();
|
||||
|
||||
// delete dest array and return
|
||||
delete[] dest;
|
||||
@ -471,7 +472,7 @@ APInt APInt::operator*(const APInt& RHS) const {
|
||||
return APInt(BitWidth, VAL * RHS.VAL);
|
||||
APInt Result(*this);
|
||||
Result *= RHS;
|
||||
return Result.clearUnusedBits();
|
||||
return Result;
|
||||
}
|
||||
|
||||
APInt APInt::operator+(const APInt& RHS) const {
|
||||
|
Reference in New Issue
Block a user