[cfe-commits] r157847 - in /cfe/trunk: test/Misc/warning-flags-enabled.c tools/diagtool/CMakeLists.txt tools/diagtool/DiagnosticNames.cpp tools/diagtool/DiagnosticNames.h tools/diagtool/ListWarnings.cpp tools/diagtool/Makefile tools/diagtool/ShowEnabledWarnings.cpp

Jordan Rose jordan_rose at apple.com
Fri Jun 1 15:23:02 PDT 2012


Author: jrose
Date: Fri Jun  1 17:23:02 2012
New Revision: 157847

URL: http://llvm.org/viewvc/llvm-project?rev=157847&view=rev
Log:
[diagtool] Pull show-enabled back out for now.

Need to figure out how to get Frontend's warning parsing without bringing
in all of Frontend.

Removed:
    cfe/trunk/test/Misc/warning-flags-enabled.c
    cfe/trunk/tools/diagtool/DiagnosticNames.cpp
    cfe/trunk/tools/diagtool/DiagnosticNames.h
    cfe/trunk/tools/diagtool/ShowEnabledWarnings.cpp
Modified:
    cfe/trunk/tools/diagtool/CMakeLists.txt
    cfe/trunk/tools/diagtool/ListWarnings.cpp
    cfe/trunk/tools/diagtool/Makefile

Removed: cfe/trunk/test/Misc/warning-flags-enabled.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/warning-flags-enabled.c?rev=157846&view=auto
==============================================================================
--- cfe/trunk/test/Misc/warning-flags-enabled.c (original)
+++ cfe/trunk/test/Misc/warning-flags-enabled.c (removed)
@@ -1,27 +0,0 @@
-// RUN: diagtool show-enabled 2>&1 | FileCheck %s
-//
-// This shows warnings which are on by default.
-// We just check a few to make sure it's doing something sensible.
-//
-// CHECK: warn_condition_is_assignment
-// CHECK: warn_null_arg
-// CHECK: warn_unterminated_string
-
-
-// RUN: diagtool show-enabled -Wno-everything 2>&1 | count 0
-
-
-// RUN: diagtool show-enabled -Wno-everything -Wobjc-root-class 2>&1 | FileCheck -check-prefix CHECK-WARN %s
-// RUN: diagtool show-enabled -Wno-everything -Werror=objc-root-class 2>&1 | FileCheck -check-prefix CHECK-ERROR %s
-// RUN: diagtool show-enabled -Wno-everything -Wfatal-errors=objc-root-class 2>&1 | FileCheck -check-prefix CHECK-FATAL %s
-//
-// CHECK-WARN:  W  warn_objc_root_class_missing [-Wobjc-root-class]
-// CHECK-ERROR: E  warn_objc_root_class_missing [-Wobjc-root-class]
-// CHECK-FATAL: F  warn_objc_root_class_missing [-Wobjc-root-class]
-
-// RUN: diagtool show-enabled --no-flags -Wno-everything -Wobjc-root-class 2>&1 | FileCheck -check-prefix CHECK-NO-FLAGS %s
-//
-// CHECK-NO-FLAGS-NOT: W
-// CHECK-NO-FLAGS-NOT: E
-// CHECK-NO-FLAGS-NOT: F
-// CHECK-NO-FLAGS: warn_objc_root_class_missing [-Wobjc-root-class]

Modified: cfe/trunk/tools/diagtool/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/CMakeLists.txt?rev=157847&r1=157846&r2=157847&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/CMakeLists.txt (original)
+++ cfe/trunk/tools/diagtool/CMakeLists.txt Fri Jun  1 17:23:02 2012
@@ -1,21 +1,17 @@
 set( LLVM_LINK_COMPONENTS
   support
-  ${LLVM_TARGETS_TO_BUILD}
   )
 
 set( LLVM_USED_LIBS
   clangBasic
   clangLex
   clangSema
-  clangFrontend
   )
 
 add_clang_executable(diagtool
   diagtool_main.cpp
   DiagTool.cpp
-  DiagnosticNames.cpp
   ListWarnings.cpp
-  ShowEnabledWarnings.cpp
 )
 
 if(UNIX)

Removed: cfe/trunk/tools/diagtool/DiagnosticNames.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/DiagnosticNames.cpp?rev=157846&view=auto
==============================================================================
--- cfe/trunk/tools/diagtool/DiagnosticNames.cpp (original)
+++ cfe/trunk/tools/diagtool/DiagnosticNames.cpp (removed)
@@ -1,25 +0,0 @@
-//===- DiagnosticNames.cpp - Defines a table of all builtin diagnostics ----==//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagnosticNames.h"
-#include "clang/Basic/AllDiagnostics.h"
-
-using namespace clang;
-
-const diagtool::DiagnosticRecord diagtool::BuiltinDiagnostics[] = {
-#define DIAG_NAME_INDEX(ENUM) { #ENUM, diag::ENUM, STR_SIZE(#ENUM, uint8_t) },
-#include "clang/Basic/DiagnosticIndexName.inc"
-#undef DIAG_NAME_INDEX
-  { 0, 0, 0 }
-};
-
-const size_t diagtool::BuiltinDiagnosticsCount =
-  sizeof(diagtool::BuiltinDiagnostics) /
-  sizeof(diagtool::BuiltinDiagnostics[0]) - 1;
-

Removed: cfe/trunk/tools/diagtool/DiagnosticNames.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/DiagnosticNames.h?rev=157846&view=auto
==============================================================================
--- cfe/trunk/tools/diagtool/DiagnosticNames.h (original)
+++ cfe/trunk/tools/diagtool/DiagnosticNames.h (removed)
@@ -1,28 +0,0 @@
-//===- DiagnosticNames.h - Defines a table of all builtin diagnostics ------==//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/DataTypes.h"
-
-namespace diagtool {
-  struct DiagnosticRecord {
-    const char *NameStr;
-    unsigned short DiagID;
-    uint8_t NameLen;
-    
-    llvm::StringRef getName() const {
-      return llvm::StringRef(NameStr, NameLen);
-    }
-  };
-
-  extern const DiagnosticRecord BuiltinDiagnostics[];
-  extern const size_t BuiltinDiagnosticsCount;
-
-} // end namespace diagtool
-

Modified: cfe/trunk/tools/diagtool/ListWarnings.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/ListWarnings.cpp?rev=157847&r1=157846&r2=157847&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/ListWarnings.cpp (original)
+++ cfe/trunk/tools/diagtool/ListWarnings.cpp Fri Jun  1 17:23:02 2012
@@ -13,7 +13,6 @@
 //===----------------------------------------------------------------------===//
 
 #include "DiagTool.h"
-#include "DiagnosticNames.h"
 #include "clang/Basic/Diagnostic.h"
 #include "llvm/Support/Format.h"
 #include "llvm/ADT/StringMap.h"
@@ -27,6 +26,28 @@
 using namespace clang;
 
 namespace {
+struct StaticDiagNameIndexRec {
+  const char *NameStr;
+  unsigned short DiagID;
+  uint8_t NameLen;
+
+  StringRef getName() const {
+    return StringRef(NameStr, NameLen);
+  }
+};
+}
+
+static const StaticDiagNameIndexRec StaticDiagNameIndex[] = {
+#define DIAG_NAME_INDEX(ENUM) { #ENUM, diag::ENUM, STR_SIZE(#ENUM, uint8_t) },
+#include "clang/Basic/DiagnosticIndexName.inc"
+#undef DIAG_NAME_INDEX
+  { 0, 0, 0 }
+};
+
+static const unsigned StaticDiagNameIndexSize =
+  sizeof(StaticDiagNameIndex)/sizeof(StaticDiagNameIndex[0])-1;
+
+namespace {
 struct Entry {
   llvm::StringRef DiagName;
   llvm::StringRef Flag;
@@ -52,8 +73,8 @@
   std::vector<Entry> Flagged, Unflagged;
   llvm::StringMap<std::vector<unsigned> > flagHistogram;
   
-  for (const diagtool::DiagnosticRecord *di = diagtool::BuiltinDiagnostics,
-       *de = di + diagtool::BuiltinDiagnosticsCount; di != de; ++di) {
+  for (const StaticDiagNameIndexRec *di = StaticDiagNameIndex, *de = StaticDiagNameIndex + StaticDiagNameIndexSize;
+       di != de; ++di) {
     
     unsigned diagID = di->DiagID;
     

Modified: cfe/trunk/tools/diagtool/Makefile
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/Makefile?rev=157847&r1=157846&r2=157847&view=diff
==============================================================================
--- cfe/trunk/tools/diagtool/Makefile (original)
+++ cfe/trunk/tools/diagtool/Makefile Fri Jun  1 17:23:02 2012
@@ -1,4 +1,4 @@
-##===- tools/diagtool/Makefile -----------------------------*- Makefile -*-===##
+##===- tools/driver/Makefile -------------------------------*- Makefile -*-===##
 #
 #                     The LLVM Compiler Infrastructure
 #
@@ -16,16 +16,9 @@
 # Don't install this.
 NO_INSTALL = 1
 
-# Include this here so we can get the configuration of the targets that have
-# been configured for construction. We have to do this early so we can set up
-# LINK_COMPONENTS before including Makefile.rules
-include $(CLANG_LEVEL)/../../Makefile.config
-
-LINK_COMPONENTS := support $(TARGETS_TO_BUILD)
-
-# FIXME: diagtool should be much lighter than this.
-USEDLIBS = clangAST.a clangBasic.a clangDriver.a clangEdit.a clangFrontend.a \
-           clangLex.a clangParse.a clangSema.a clangSerialization.a
+LINK_COMPONENTS := support
+
+USEDLIBS = clangBasic.a
 
 include $(CLANG_LEVEL)/Makefile
 

Removed: cfe/trunk/tools/diagtool/ShowEnabledWarnings.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/diagtool/ShowEnabledWarnings.cpp?rev=157846&view=auto
==============================================================================
--- cfe/trunk/tools/diagtool/ShowEnabledWarnings.cpp (original)
+++ cfe/trunk/tools/diagtool/ShowEnabledWarnings.cpp (removed)
@@ -1,148 +0,0 @@
-//===- ShowEnabledWarnings - diagtool tool for printing enabled flags -----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "DiagTool.h"
-#include "DiagnosticNames.h"
-#include "clang/Basic/LLVM.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/TextDiagnosticBuffer.h"
-#include "llvm/Support/TargetSelect.h"
-
-DEF_DIAGTOOL("show-enabled",
-             "Show which warnings are enabled for a given command line",
-             ShowEnabledWarnings)
-
-using namespace clang;
-
-namespace {
-  struct PrettyDiag {
-    StringRef Name;
-    StringRef Flag;
-    DiagnosticsEngine::Level Level;
-
-    PrettyDiag(StringRef name, StringRef flag, DiagnosticsEngine::Level level)
-    : Name(name), Flag(flag), Level(level) {}
-
-    bool operator<(const PrettyDiag &x) const { return Name < x.Name; }
-  };
-}
-
-static char getFlagForLevel(DiagnosticsEngine::Level Level) {
-  switch (Level) {
-  case DiagnosticsEngine::Ignored: return ' ';
-  case DiagnosticsEngine::Note:    return '-';
-  case DiagnosticsEngine::Warning: return 'W';
-  case DiagnosticsEngine::Error:   return 'E';
-  case DiagnosticsEngine::Fatal:   return 'F';
-  }
-
-  llvm_unreachable("Unknown diagnostic level");
-}
-
-static CompilerInstance *createCompiler(unsigned int argc, char **argv) {
-  // First, build a compiler instance!
-  OwningPtr<CompilerInstance> Clang(new CompilerInstance());
-  IntrusiveRefCntPtr<DiagnosticIDs> DiagIDs(new DiagnosticIDs());
-  
-  // Initialize targets first. This may be necessary if any warnings are
-  // selectively enabled.
-  llvm::InitializeAllTargets();
-  llvm::InitializeAllTargetMCs();
-  llvm::InitializeAllAsmPrinters();
-  llvm::InitializeAllAsmParsers();
-  
-  // Buffer diagnostics from argument parsing so that we can output them using a
-  // well formed diagnostic object.
-  TextDiagnosticBuffer *DiagsBuffer = new TextDiagnosticBuffer;
-  DiagnosticsEngine Diags(DiagIDs, DiagsBuffer);
-  
-  bool Success;
-  Success = CompilerInvocation::CreateFromArgs(Clang->getInvocation(),
-                                               argv, argv+argc, Diags);
-  
-  // We are skipping cc1's usual search for a resource directory.
-  // This is not likely to affect warning output.
-  
-  // Create the actual diagnostics engine.
-  Clang->createDiagnostics(argc, argv);
-  if (!Clang->hasDiagnostics())
-    return NULL;
-  
-  // Flush any errors created when initializing everything. This could happen
-  // for invalid command lines, which will probably give non-sensical results.
-  DiagsBuffer->FlushDiagnostics(Clang->getDiagnostics());
-  if (!Success)
-    return NULL;
-
-  return Clang.take();
-}
-
-int ShowEnabledWarnings::run(unsigned int argc, char **argv, raw_ostream &Out) {
-  // First check our one flag (--flags).
-  bool ShouldShowFlags = true;
-  if (argc > 0) {
-    StringRef FirstArg(*argv);
-    if (FirstArg.equals("--no-flags")) {
-      ShouldShowFlags = false;
-      --argc;
-      ++argv;
-    } else if (FirstArg.equals("--flags")) {
-      ShouldShowFlags = true;
-      --argc;
-      ++argv;
-    }
-  }
-
-  // Create the compiler instance.
-  OwningPtr<CompilerInstance> Clang(createCompiler(argc, argv));
-  if (!Clang)
-    return EXIT_FAILURE;
-
-  DiagnosticsEngine &Diags = Clang->getDiagnostics();
-  
-  // Now we have our diagnostics. Iterate through EVERY diagnostic and see
-  // which ones are turned on.
-  // FIXME: It would be very nice to print which flags are turning on which
-  // diagnostics, but this can be done with a diff.
-  std::vector<PrettyDiag> Active;
-
-  for (const diagtool::DiagnosticRecord *I = diagtool::BuiltinDiagnostics,
-       *E = I + diagtool::BuiltinDiagnosticsCount; I != E; ++I) {
-    unsigned DiagID = I->DiagID;
-    
-    if (DiagnosticIDs::isBuiltinNote(DiagID))
-      continue;
-    
-    if (!DiagnosticIDs::isBuiltinWarningOrExtension(DiagID))
-      continue;
-
-    DiagnosticsEngine::Level DiagLevel =
-      Diags.getDiagnosticLevel(DiagID, SourceLocation());
-    if (DiagLevel == DiagnosticsEngine::Ignored)
-      continue;
-
-    StringRef WarningOpt = DiagnosticIDs::getWarningOptionForDiag(DiagID);
-    Active.push_back(PrettyDiag(I->getName(), WarningOpt, DiagLevel));
-  }
-
-  std::sort(Active.begin(), Active.end());
-
-  // Print them all out.
-  for (std::vector<PrettyDiag>::const_iterator I = Active.begin(),
-       E = Active.end(); I != E; ++I) {
-    if (ShouldShowFlags)
-      Out << getFlagForLevel(I->Level) << "  ";
-    Out << I->Name;
-    if (!I->Flag.empty())
-      Out << " [-W" << I->Flag << "]";
-    Out << '\n';
-  }
-
-  return EXIT_SUCCESS;
-}





More information about the cfe-commits mailing list