Index: clang/include/clang/Basic/DiagnosticLexKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticLexKinds.td +++ clang/include/clang/Basic/DiagnosticLexKinds.td @@ -104,10 +104,10 @@ "raw string literals are incompatible with C++98">, InGroup, DefaultIgnore; -def ext_multichar_character_literal : ExtWarn< +def warn_multichar_character_literal : Warning< "multi-character character constant">, InGroup; -def ext_four_char_character_literal : Extension< - "multi-character character constant">, InGroup; +def warn_four_char_character_literal : Warning< + "multi-character character constant">, InGroup, DefaultIgnore; // Unicode and UCNs Index: clang/lib/Lex/LiteralSupport.cpp =================================================================== --- clang/lib/Lex/LiteralSupport.cpp +++ clang/lib/Lex/LiteralSupport.cpp @@ -1373,9 +1373,9 @@ if (isWide()) PP.Diag(Loc, diag::warn_extraneous_char_constant); else if (isAscii() && NumCharsSoFar == 4) - PP.Diag(Loc, diag::ext_four_char_character_literal); + PP.Diag(Loc, diag::warn_four_char_character_literal); else if (isAscii()) - PP.Diag(Loc, diag::ext_multichar_character_literal); + PP.Diag(Loc, diag::warn_multichar_character_literal); else PP.Diag(Loc, diag::err_multichar_utf_character_literal); IsMultiChar = true; Index: clang/test/Lexer/constants.c =================================================================== --- clang/test/Lexer/constants.c +++ clang/test/Lexer/constants.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -ftrigraphs %s +// RUN: %clang_cc1 -fsyntax-only -verify -Wfour-char-constants -pedantic -ftrigraphs %s int x = 000000080; // expected-error {{invalid digit}} Index: clang/test/Lexer/multi-char-constants.c =================================================================== --- /dev/null +++ clang/test/Lexer/multi-char-constants.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -Wfour-char-constants -pedantic-errors %s + +int x = 'ab'; // expected-warning {{multi-character character constant}} +int y = 'abcd'; // expected-warning {{multi-character character constant}}