aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-03-15 00:11:28 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-03-15 00:11:28 +0000
commit85c491064b33e8d407166256a9e639bc1fcad4ef (patch)
tree996c07600a30a4f9fcf76776850097df97119bef
parente89b6b272f9f3b15afa56a701a4d7a6b1001ed34 (diff)
Don't accept '$' in identifiers in assembler-with-cpp mode.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67013 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Driver/clang.cpp4
-rw-r--r--test/Lexer/dollar-idents.c7
2 files changed, 10 insertions, 1 deletions
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index a58e877f98..e94f0ed07c 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -644,7 +644,9 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
if (!Options.ObjC1 && LangStd < lang_gnu_START)
Options.Blocks = 0;
- Options.DollarIdents = 1; // FIXME: Really a target property.
+ // Never accept '$' in identifiers when preprocessing assembler.
+ if (LK != langkind_asm_cpp)
+ Options.DollarIdents = 1; // FIXME: Really a target property.
if (PascalStrings.getPosition())
Options.PascalStrings = PascalStrings;
Options.Microsoft = MSExtensions;
diff --git a/test/Lexer/dollar-idents.c b/test/Lexer/dollar-idents.c
new file mode 100644
index 0000000000..068ba68614
--- /dev/null
+++ b/test/Lexer/dollar-idents.c
@@ -0,0 +1,7 @@
+// RUN: clang -dump-tokens %s &> %t &&
+// RUN: grep "identifier '\$A'" %t
+// RUN: clang -dump-tokens -x assembler-with-cpp %s &> %t &&
+// RUN: grep "identifier 'A'" %t
+// PR3808
+
+$A