diff options
author | Jay Foad <jay.foad@gmail.com> | 2010-12-07 08:25:34 +0000 |
---|---|---|
committer | Jay Foad <jay.foad@gmail.com> | 2010-12-07 08:25:34 +0000 |
commit | 9f71a8f4c7a182a5236da9e747d57cc1d1bd24c2 (patch) | |
tree | de2e74ed442ebccd54b82089e7953960c93a27ec /lib/Sema/SemaChecking.cpp | |
parent | dd182ff10b9145e432dea1fd2fb67100ccca3b10 (diff) |
PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121121 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaChecking.cpp')
-rw-r--r-- | lib/Sema/SemaChecking.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index d6aa4ce885..f53086e33c 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -2243,7 +2243,7 @@ IntRange GetValueRange(ASTContext &C, llvm::APSInt &value, unsigned MaxWidth) { return IntRange(value.getMinSignedBits(), false); if (value.getBitWidth() > MaxWidth) - value.trunc(MaxWidth); + value = value.trunc(MaxWidth); // isNonNegative() just checks the sign bit without considering // signedness. @@ -2656,16 +2656,15 @@ bool AnalyzeBitFieldAssignment(Sema &S, FieldDecl *Bitfield, Expr *Init, if (OriginalWidth <= FieldWidth) return false; - llvm::APSInt TruncatedValue = Value; - TruncatedValue.trunc(FieldWidth); + llvm::APSInt TruncatedValue = Value.trunc(FieldWidth); // It's fairly common to write values into signed bitfields // that, if sign-extended, would end up becoming a different // value. We don't want to warn about that. if (Value.isSigned() && Value.isNegative()) - TruncatedValue.sext(OriginalWidth); + TruncatedValue = TruncatedValue.sext(OriginalWidth); else - TruncatedValue.zext(OriginalWidth); + TruncatedValue = TruncatedValue.zext(OriginalWidth); if (Value == TruncatedValue) return false; @@ -2712,7 +2711,7 @@ std::string PrettyPrintInRange(const llvm::APSInt &Value, IntRange Range) { llvm::APSInt ValueInRange = Value; ValueInRange.setIsSigned(!Range.NonNegative); - ValueInRange.trunc(Range.Width); + ValueInRange = ValueInRange.trunc(Range.Width); return ValueInRange.toString(10); } |