Implement -Wmissing-prototypes. Fixes PR3911.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68110 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/clang-cc/Warnings.cpp b/tools/clang-cc/Warnings.cpp
index 698e44f..be93c67 100644
--- a/tools/clang-cc/Warnings.cpp
+++ b/tools/clang-cc/Warnings.cpp
@@ -140,6 +140,9 @@
   diag::ext_typecheck_convert_incompatible_pointer_sign
 };
 static const diag::kind DeprecatedDeclarations[] = { diag::warn_deprecated };
+static const diag::kind MissingPrototypesDiags[] = { 
+  diag::warn_missing_prototype 
+};
 
 // Hmm ... this option is currently actually completely ignored.
 //static const diag::kind StrictSelectorMatchDiags[] = {  };
@@ -149,6 +152,7 @@
   { "float-equal",           DIAGS(FloatEqualDiags) },
   { "format-nonliteral",     DIAGS(FormatNonLiteralDiags) },
   { "implicit-function-declaration", DIAGS(ImplicitFunctionDeclarationDiags) },
+  { "missing-prototypes", DIAGS(MissingPrototypesDiags) },
   { "pointer-sign",          DIAGS(PointerSignDiags) },
   { "readonly-setter-attrs", DIAGS(ReadOnlySetterAttrsDiags) },
   { "undef",                 DIAGS(UndefDiags) },
@@ -179,6 +183,7 @@
   Diags.setDiagnosticMapping(diag::err_pp_file_not_found, diag::MAP_FATAL);
   Diags.setDiagnosticMapping(diag::err_template_recursion_depth_exceeded, 
                              diag::MAP_FATAL);
+  Diags.setDiagnosticMapping(diag::warn_missing_prototype, diag::MAP_IGNORE);
   Diags.setSuppressSystemWarnings(!OptWarnInSystemHeaders);
 
   for (OptionsList::iterator it = Options.begin(), e = Options.end();