diff options
| author | Diego Novillo <dnovillo@google.com> | 2014-05-29 16:19:27 +0000 |
|---|---|---|
| committer | Diego Novillo <dnovillo@google.com> | 2014-05-29 16:19:27 +0000 |
| commit | 9c89ff1945784b9dd121c155a4510d9e9e63577a (patch) | |
| tree | ff8f9b735bb3328a18035eb8416a0e06317da499 /clang | |
| parent | 4d16e1192254da457d419b948a3444c56b52b7ed (diff) | |
| download | bcm5719-llvm-9c89ff1945784b9dd121c155a4510d9e9e63577a.tar.gz bcm5719-llvm-9c89ff1945784b9dd121c155a4510d9e9e63577a.zip | |
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.
llvm-svn: 209823
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 6 | ||||
| -rw-r--r-- | clang/test/Frontend/Weverything-and-remarks.cpp | 28 |
2 files changed, 34 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 3db1660b805..4bb3895108d 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -461,6 +461,12 @@ void BackendConsumer::DiagnosticHandlerImpl(const DiagnosticInfo &DI) { // 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); diff --git a/clang/test/Frontend/Weverything-and-remarks.cpp b/clang/test/Frontend/Weverything-and-remarks.cpp new file mode 100644 index 00000000000..ce7e8f3f122 --- /dev/null +++ b/clang/test/Frontend/Weverything-and-remarks.cpp @@ -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:}} |

