r209823 - Fix spurious remarks when -Weverything is used.

Diego Novillo dnovillo at google.com
Thu May 29 09:19:27 PDT 2014


Author: dnovillo
Date: Thu May 29 11:19:27 2014
New Revision: 209823

URL: http://llvm.org/viewvc/llvm-project?rev=209823&view=rev
Log:
Fix spurious remarks when -Weverything is used.

With -Weverything, the backend remarks are enabled. This was
causing spurious diagnostics for remarks that we don't yet
handle (cf http://reviews.llvm.org/D3683).

This will stop being a problem once http://reviews.llvm.org/D3683
is committed.

Added:
    cfe/trunk/test/Frontend/Weverything-and-remarks.cpp
Modified:
    cfe/trunk/lib/CodeGen/CodeGenAction.cpp

Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=209823&r1=209822&r2=209823&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Thu May 29 11:19:27 2014
@@ -461,6 +461,12 @@ void BackendConsumer::DiagnosticHandlerI
     // handler. There is no generic way of emitting them.
     OptimizationRemarkHandler(cast<DiagnosticInfoOptimizationRemark>(DI));
     return;
+  case llvm::DK_OptimizationRemarkMissed:
+  case llvm::DK_OptimizationRemarkAnalysis:
+    // TODO: Do nothing for now. The implementation of these
+    // two remarks is still under review (http://reviews.llvm.org/D3683).
+    // Remove this once that patch lands.
+    return;
   default:
     // Plugin IDs are not bound to any value as they are set dynamically.
     ComputeDiagRemarkID(Severity, backend_plugin, DiagID);

Added: cfe/trunk/test/Frontend/Weverything-and-remarks.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/Weverything-and-remarks.cpp?rev=209823&view=auto
==============================================================================
--- cfe/trunk/test/Frontend/Weverything-and-remarks.cpp (added)
+++ cfe/trunk/test/Frontend/Weverything-and-remarks.cpp Thu May 29 11:19:27 2014
@@ -0,0 +1,28 @@
+// Test that -Weverything does not trigger any backend remarks.
+//
+// This was triggering backend remarks for which there were no frontend
+// flags to filter them. The handler in BackendConsumer::DiagnosticHandlerImpl
+// should not emitting diagnostics for unhandled kinds.
+
+// RUN: %clang -c -Weverything -O0 -o /dev/null %s 2> %t.err
+// RUN: FileCheck < %t.err %s
+
+typedef __char32_t char32_t;
+typedef long unsigned int size_t;
+template <class _CharT>
+struct __attribute__((__type_visibility__("default"))) char_traits;
+
+template <>
+struct __attribute__((__type_visibility__("default"))) char_traits<char32_t> {
+  typedef char32_t char_type;
+  static void assign(char_type& __c1, const char_type& __c2) throw() {
+    __c1 = __c2;
+  }
+  static char_type* move(char_type* __s1, const char_type* __s2, size_t __n);
+};
+char32_t* char_traits<char32_t>::move(char_type* __s1, const char_type* __s2,
+                                      size_t __n) {
+  { assign(*--__s1, *--__s2); }
+}
+
+// CHECK-NOT: {{^remark:}}





More information about the cfe-commits mailing list