aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Lex/PPExpressions.cpp
diff options
context:
space:
mode:
authorMichael Wong <fraggamuffin@gmail.com>2015-02-24 13:34:20 +0000
committerMichael Wong <fraggamuffin@gmail.com>2015-02-24 13:34:20 +0000
commit867eeb5861b44b105f17c1d9add88979a2ef2055 (patch)
tree123d2d35b9df60b7415140621667564092ccaab3 /clang/lib/Lex/PPExpressions.cpp
parentcec70130ac2916ed1050576a45d4485cf1dbe96a (diff)
downloadllvm-867eeb5861b44b105f17c1d9add88979a2ef2055.zip
llvm-867eeb5861b44b105f17c1d9add88979a2ef2055.tar.gz
llvm-867eeb5861b44b105f17c1d9add88979a2ef2055.tar.bz2
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. llvm-svn: 230333
Diffstat (limited to 'clang/lib/Lex/PPExpressions.cpp')
-rw-r--r--clang/lib/Lex/PPExpressions.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Lex/PPExpressions.cpp b/clang/lib/Lex/PPExpressions.cpp
index 9cf72cf..a6f16f8 100644
--- a/clang/lib/Lex/PPExpressions.cpp
+++ b/clang/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()) {