forked from OSchip/llvm-project
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
This commit is contained in:
parent
4d16e11922
commit
9c89ff1945
|
@ -461,6 +461,12 @@ void BackendConsumer::DiagnosticHandlerImpl(const DiagnosticInfo &DI) {
|
||||||
// handler. There is no generic way of emitting them.
|
// handler. There is no generic way of emitting them.
|
||||||
OptimizationRemarkHandler(cast<DiagnosticInfoOptimizationRemark>(DI));
|
OptimizationRemarkHandler(cast<DiagnosticInfoOptimizationRemark>(DI));
|
||||||
return;
|
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:
|
default:
|
||||||
// Plugin IDs are not bound to any value as they are set dynamically.
|
// Plugin IDs are not bound to any value as they are set dynamically.
|
||||||
ComputeDiagRemarkID(Severity, backend_plugin, DiagID);
|
ComputeDiagRemarkID(Severity, backend_plugin, DiagID);
|
||||||
|
|
|
@ -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:}}
|
Loading…
Reference in New Issue