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 ext_multichar_character_literal : Warning< "multi-character character constant">, InGroup; -def ext_four_char_character_literal : Extension< - "multi-character character constant">, InGroup; +def ext_four_char_character_literal : Warning< + "multi-character character constant">, InGroup, DefaultIgnore; // Unicode and UCNs 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,9 @@ +// 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}} + +int main() { + return 0; +} +