aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-08-12 20:46:49 +0000
committerTed Kremenek <kremenek@apple.com>2011-08-12 20:46:49 +0000
commit9d9eef9c56aa14117a7f2c83beb2d674eef3d1fa (patch)
treea2d35c6543ce09b9117292e0dde8bee83b7b76be
parent8ed72530ce7c3bd6bb1dceaf8108fbeddde80e4e (diff)
Place warnings related to incorrect "main()" declaration under "-Wmain".
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137506 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Basic/DiagnosticGroups.td2
-rw-r--r--include/clang/Basic/DiagnosticSemaKinds.td21
-rw-r--r--test/Misc/warning-flags.c4
3 files changed, 16 insertions, 11 deletions
diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td
index 86b5da7884..cb94c33e58 100644
--- a/include/clang/Basic/DiagnosticGroups.td
+++ b/include/clang/Basic/DiagnosticGroups.td
@@ -73,7 +73,7 @@ def : DiagGroup<"int-to-pointer-cast">;
def : DiagGroup<"invalid-pch">;
def LiteralRange : DiagGroup<"literal-range">;
def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args">;
-def : DiagGroup<"main">;
+def Main : DiagGroup<"main">;
def MissingBraces : DiagGroup<"missing-braces">;
def MissingDeclarations: DiagGroup<"missing-declarations">;
def : DiagGroup<"missing-format-attribute">;
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td
index e7b20144b4..eed21b1194 100644
--- a/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/include/clang/Basic/DiagnosticSemaKinds.td
@@ -282,17 +282,24 @@ def warn_sizeof_pointer_type_memaccess : Warning<
/// main()
// static/inline main() are not errors in C, just in C++.
def warn_unusual_main_decl : Warning<"'main' should not be declared "
- "%select{static|inline|static or inline}0">;
+ "%select{static|inline|static or inline}0">,
+ InGroup<Main>;
def err_unusual_main_decl : Error<"'main' is not allowed to be declared "
- "%select{static|inline|static or inline}0">;
-def err_main_template_decl : Error<"'main' cannot be a template">;
-def err_main_returns_nonint : Error<"'main' must return 'int'">;
+ "%select{static|inline|static or inline}0">,
+ InGroup<Main>;
+def err_main_template_decl : Error<"'main' cannot be a template">,
+ InGroup<Main>;
+def err_main_returns_nonint : Error<"'main' must return 'int'">,
+ InGroup<Main>;
def err_main_surplus_args : Error<"too many parameters (%0) for 'main': "
- "must be 0, 2, or 3">;
-def warn_main_one_arg : Warning<"only one parameter on 'main' declaration">;
+ "must be 0, 2, or 3">,
+ InGroup<Main>;
+def warn_main_one_arg : Warning<"only one parameter on 'main' declaration">,
+ InGroup<Main>;
def err_main_arg_wrong : Error<"%select{first|second|third|fourth}0 "
"parameter of 'main' (%select{argument count|argument array|environment|"
- "platform-specific data}0) must be of type %1">;
+ "platform-specific data}0) must be of type %1">,
+ InGroup<Main>;
/// parser diagnostics
def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">,
diff --git a/test/Misc/warning-flags.c b/test/Misc/warning-flags.c
index 4a34792300..5191892c00 100644
--- a/test/Misc/warning-flags.c
+++ b/test/Misc/warning-flags.c
@@ -17,7 +17,7 @@ This test serves two purposes:
The list of warnings below should NEVER grow. It should gradually shrink to 0.
-CHECK: Warnings without flags (316):
+CHECK: Warnings without flags (314):
CHECK-NEXT: auto_storage_class
CHECK-NEXT: backslash_newline_space
CHECK-NEXT: charize_microsoft_ext
@@ -222,7 +222,6 @@ CHECK-NEXT: warn_integer_too_large_for_signed
CHECK-NEXT: warn_invalid_asm_cast_lvalue
CHECK-NEXT: warn_ivar_use_hidden
CHECK-NEXT: warn_label_attribute_not_unused
-CHECK-NEXT: warn_main_one_arg
CHECK-NEXT: warn_many_braces_around_scalar_init
CHECK-NEXT: warn_maynot_respond
CHECK-NEXT: warn_member_extra_qualification
@@ -330,7 +329,6 @@ CHECK-NEXT: warn_unknown_method_family
CHECK-NEXT: warn_unkwown_analyzer_checker
CHECK-NEXT: warn_unterminated_char
CHECK-NEXT: warn_unterminated_string
-CHECK-NEXT: warn_unusual_main_decl
CHECK-NEXT: warn_use_out_of_scope_declaration
CHECK-NEXT: warn_weak_identifier_undeclared
CHECK-NEXT: warn_weak_import