diff options
author | Michael Wong <fraggamuffin@gmail.com> | 2015-02-24 13:34:20 +0000 |
---|---|---|
committer | Michael Wong <fraggamuffin@gmail.com> | 2015-02-24 13:34:20 +0000 |
commit | f89960b9e30096a9250ec2206c181613faf4302b (patch) | |
tree | f3cd1d8f89c9350cc929ce3013cba698aaf742cb /lib/Lex/PPExpressions.cpp | |
parent | 1ce90639161ff65338c13c31ae5459250cf87c61 (diff) |
Commit patch for PR19649. Set the correct sign of wide character for literals based on underlying type of wchar_t.
Reviewed:
http://reviews.llvm.org/D7559
Patch by Rachel Craig; Test cases by Hubert Tong.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230333 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Lex/PPExpressions.cpp')
-rw-r--r-- | lib/Lex/PPExpressions.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Lex/PPExpressions.cpp b/lib/Lex/PPExpressions.cpp index 9cf72cf8f8..a6f16f80b7 100644 --- a/lib/Lex/PPExpressions.cpp +++ b/lib/Lex/PPExpressions.cpp @@ -310,7 +310,9 @@ static bool EvaluateValue(PPValue &Result, Token &PeekTok, DefinedTracker &DT, // Set the value. Val = Literal.getValue(); // Set the signedness. UTF-16 and UTF-32 are always unsigned - if (!Literal.isUTF16() && !Literal.isUTF32()) + if (Literal.isWide()) + Val.setIsUnsigned(!TargetInfo::isTypeSigned(TI.getWCharType())); + else if (!Literal.isUTF16() && !Literal.isUTF32()) Val.setIsUnsigned(!PP.getLangOpts().CharIsSigned); if (Result.Val.getBitWidth() > Val.getBitWidth()) { |