summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/Parser.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-12-02 00:35:46 +0000
committerTed Kremenek <kremenek@apple.com>2011-12-02 00:35:46 +0000
commit65cdbf58a7dc562b184fd70b3126717662bab607 (patch)
tree05532a6ace619c7f9e02f11285715317e8b2f625 /clang/lib/Parse/Parser.cpp
parent04945c42c6407802ff446310342d6add749658c3 (diff)
downloadbcm5719-llvm-65cdbf58a7dc562b184fd70b3126717662bab607.tar.gz
bcm5719-llvm-65cdbf58a7dc562b184fd70b3126717662bab607.zip
Diagnose use of wide string literal in 'asm' instead of crashing. Fixes <rdar://problem/10465079>.
llvm-svn: 145656
Diffstat (limited to 'clang/lib/Parse/Parser.cpp')
-rw-r--r--clang/lib/Parse/Parser.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp
index eb6dc443c9d..e74c46e2fda 100644
--- a/clang/lib/Parse/Parser.cpp
+++ b/clang/lib/Parse/Parser.cpp
@@ -1104,16 +1104,23 @@ void Parser::ParseKNRParamDeclarations(Declarator &D) {
/// string-literal
///
Parser::ExprResult Parser::ParseAsmStringLiteral() {
- if (!isTokenStringLiteral()) {
- Diag(Tok, diag::err_expected_string_literal);
- return ExprError();
+ switch (Tok.getKind()) {
+ case tok::string_literal:
+ break;
+ case tok::wide_string_literal: {
+ SourceLocation L = Tok.getLocation();
+ Diag(Tok, diag::err_asm_operand_wide_string_literal)
+ << SourceRange(L, L);
+ return ExprError();
+ }
+ default:
+ Diag(Tok, diag::err_expected_string_literal);
+ return ExprError();
}
ExprResult Res(ParseStringLiteralExpression());
if (Res.isInvalid()) return move(Res);
- // TODO: Diagnose: wide string literal in 'asm'
-
return move(Res);
}
OpenPOWER on IntegriCloud