summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-12-23 19:15:27 +0000
committerChris Lattner <sabre@nondot.org>2009-12-23 19:15:27 +0000
commit3859c74b328e8c6a677ee4414c3f8bf5d274003d (patch)
tree8324ba13cf4887fc6db9ca1e44692a861b17d3c1 /clang
parenta4375f1ffde7c433aa54a6c3e1df925ad615c280 (diff)
downloadbcm5719-llvm-3859c74b328e8c6a677ee4414c3f8bf5d274003d.tar.gz
bcm5719-llvm-3859c74b328e8c6a677ee4414c3f8bf5d274003d.zip
fix the microsoft "charify" extension to return the charified token
as a character literal, not a string literal. This might fix rdar://7486575 llvm-svn: 92025
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Lex/MacroArgs.cpp2
-rw-r--r--clang/test/Parser/MicrosoftExtensions.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Lex/MacroArgs.cpp b/clang/lib/Lex/MacroArgs.cpp
index 34b1ef8fc0f..c2cf623317e 100644
--- a/clang/lib/Lex/MacroArgs.cpp
+++ b/clang/lib/Lex/MacroArgs.cpp
@@ -178,7 +178,7 @@ Token MacroArgs::StringifyArgument(const Token *ArgToks,
Preprocessor &PP, bool Charify) {
Token Tok;
Tok.startToken();
- Tok.setKind(tok::string_literal);
+ Tok.setKind(Charify ? tok::char_constant : tok::string_literal);
const Token *ArgTokStart = ArgToks;
diff --git a/clang/test/Parser/MicrosoftExtensions.c b/clang/test/Parser/MicrosoftExtensions.c
index 00618864648..082929f6d84 100644
--- a/clang/test/Parser/MicrosoftExtensions.c
+++ b/clang/test/Parser/MicrosoftExtensions.c
@@ -28,3 +28,9 @@ void foo() {
}
typedef bool (__stdcall __stdcall *blarg)(int);
+
+
+// Charify extension.
+#define FOO(x) #@x
+char x = FOO(a);
+
OpenPOWER on IntegriCloud