[cfe-commits] r70315 - in /cfe/trunk: include/clang/Basic/DiagnosticGroups.td include/clang/Basic/DiagnosticLexKinds.td lib/Lex/LiteralSupport.cpp test/Lexer/constants.c
Chris Lattner
sabre at nondot.org
Tue Apr 28 11:52:02 PDT 2009
Author: lattner
Date: Tue Apr 28 13:52:02 2009
New Revision: 70315
URL: http://llvm.org/viewvc/llvm-project?rev=70315&view=rev
Log:
implement -Wmultichar
Modified:
cfe/trunk/include/clang/Basic/DiagnosticGroups.td
cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td
cfe/trunk/lib/Lex/LiteralSupport.cpp
cfe/trunk/test/Lexer/constants.c
Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=70315&r1=70314&r2=70315&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Tue Apr 28 13:52:02 2009
@@ -43,6 +43,7 @@
def : DiagGroup<"missing-declarations">;
def : DiagGroup<"missing-format-attribute">;
def : DiagGroup<"missing-noreturn">;
+def MultiChar : DiagGroup<"multichar">;
def : DiagGroup<"nested-externs">;
def : DiagGroup<"newline-eof">;
def : DiagGroup<"format-y2k">;
@@ -94,6 +95,7 @@
def Most : DiagGroup<"most", [
Comment,
Implicit,
+ MultiChar,
Switch,
Trigraphs,
Uninitialized,
Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td?rev=70315&r1=70314&r2=70315&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Tue Apr 28 13:52:02 2009
@@ -51,6 +51,8 @@
def err_unterminated_block_comment : Error<"unterminated /* comment">;
def err_invalid_character_to_charify : Error<
"invalid argument to convert to character">;
+def ext_multichar_character_literal : ExtWarn<
+ "multi-character character constant">, InGroup<MultiChar>;
// Literal
def ext_nonstandard_escape : Extension<
Modified: cfe/trunk/lib/Lex/LiteralSupport.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/LiteralSupport.cpp?rev=70315&r1=70314&r2=70315&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/LiteralSupport.cpp (original)
+++ cfe/trunk/lib/Lex/LiteralSupport.cpp Tue Apr 28 13:52:02 2009
@@ -662,6 +662,8 @@
// constants (L'abcd').
if (IsWide)
PP.Diag(Loc, diag::warn_extraneous_wide_char_constant);
+ else
+ PP.Diag(Loc, diag::ext_multichar_character_literal);
}
if (IsWide) {
@@ -671,7 +673,6 @@
// Narrow character literals act as though their value is concatenated
// in this implementation.
if ((LitVal.shl(8)).lshr(8) != LitVal)
- // if (((LitVal << 8) >> 8) != LitVal)
PP.Diag(Loc, diag::warn_char_constant_too_large);
LitVal <<= 8;
}
Modified: cfe/trunk/test/Lexer/constants.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Lexer/constants.c?rev=70315&r1=70314&r2=70315&view=diff
==============================================================================
--- cfe/trunk/test/Lexer/constants.c (original)
+++ cfe/trunk/test/Lexer/constants.c Tue Apr 28 13:52:02 2009
@@ -1,4 +1,4 @@
-// RUN: clang-cc -fsyntax-only -verify %s
+// RUN: clang-cc -fsyntax-only -verify -pedantic -trigraphs %s
int x = 000000080; // expected-error {{invalid digit}}
@@ -13,3 +13,17 @@
// PR2252
#if -0x8000000000000000 // should not warn.
#endif
+
+
+char c[] = {
+ 'df', // expected-warning {{multi-character character constant}}
+ '\t',
+ '\\
+t',
+ '??!' // expected-warning {{trigraph converted to '|' character}}
+};
+
+
+#pragma GCC diagnostic ignored "-Wmultichar"
+
+char d = 'df'; // no warning.
More information about the cfe-commits
mailing list