kmarshall added a comment. That makes sense. In the cases that I'm finding, the original call site is in application source code, but the warning is generated from inside a system header. So, I suppose the suppressions are working as intended, and we just need to add one-off suppressions for the known noisy sources? Where is the suppression database located? FWIW, there aren't many unique error sources - I only counted 9 after running the warnings through "uniq | sort".
Re: specifics, here the most common one that I'm seeing. It seems like a bogus buffer overrun warning? ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1258:9: note: Assigned value is garbage or undefined *__s++ = *__first++; ^ ~~~~~~~~~~ The error is generated from this trivial logging line <https://cs.chromium.org/chromium/src/dbus/message.cc?rcl=255d25e6d389106b75c90110b4e00b022e472cc5&l=233>: LOG(FATAL) << "Unknown type: " << type; // |type| is an enum The offending C++ library code snippet is here (note the line w/comment "GENERATES WARNING") template<typename _CharT> _CharT* __add_grouping(_CharT* __s, _CharT __sep, const char* __gbeg, size_t __gsize, const _CharT* __first, const _CharT* __last) { size_t __idx = 0; size_t __ctr = 0; while (__last - __first > __gbeg[__idx] && static_cast<signed char>(__gbeg[__idx]) > 0 && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max) { __last -= __gbeg[__idx]; __idx < __gsize - 1 ? ++__idx : ++__ctr; } while (__first != __last) *__s++ = *__first++; // <------ GENERATES WARNING while (__ctr--) { *__s++ = __sep; for (char __i = __gbeg[__idx]; __i > 0; --__i) *__s++ = *__first++; } while (__idx--) { *__s++ = __sep; for (char __i = __gbeg[__idx]; __i > 0; --__i) *__s++ = *__first++; } return __s; } Here's a full snippet of the analysis trace: ../../dbus/message.cc:233:9: note: Calling 'basic_ostream::operator<<' LOG(FATAL) << "Unknown type: " << type; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../base/logging.h:414:23: note: expanded from macro 'LOG' #define LOG(severity) LAZY_STREAM(LOG_STREAM(severity), LOG_IS_ON(severity)) ^ ../../base/logging.h:402:62: note: expanded from macro 'LAZY_STREAM' !(condition) ? (void) 0 : ::logging::LogMessageVoidify() & (stream) ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:113:11: note: Assuming '__fmt' is not equal to 'oct' if (__fmt == ios_base::oct || __fmt == ios_base::hex) ^~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:113:11: note: Left side of '||' is false ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:113:37: note: Assuming '__fmt' is not equal to 'hex' if (__fmt == ios_base::oct || __fmt == ios_base::hex) ^~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:113:7: note: Taking false branch if (__fmt == ios_base::oct || __fmt == ios_base::hex) ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:116:9: note: Calling 'basic_ostream::_M_insert' return _M_insert(static_cast<long>(__n)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:69:2: note: Taking true branch if (__cerb) ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/ostream.tcc:75:7: note: Calling 'num_put::put' if (__np.put(*this, *this, this->fill(), __v).failed()) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.h:2336:16: note: Calling 'num_put::do_put' { return this->do_put(__s, __f, __fill, __v); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.h:2475:16: note: Calling 'num_put::_M_insert_int' { return _M_insert_int(__s, __io, __fill, __v); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:868:22: note: Assuming '__basefield' is equal to 'oct' const bool __dec = (__basefield != ios_base::oct ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:869:8: note: Left side of '&&' is false && __basefield != ios_base::hex); ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:870:32: note: Assuming '__v' is <= 0 const __unsigned_type __u = ((__v > 0 || !__dec) ^~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:870:32: note: Left side of '||' is false ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:870:31: note: '?' condition is true const __unsigned_type __u = ((__v > 0 || !__dec) ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:877:6: note: Assuming the condition is true if (__lc->_M_use_grouping) ^~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:877:2: note: Taking true branch if (__lc->_M_use_grouping) ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:884:6: note: Calling 'num_put::_M_group_int' _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:839:21: note: Calling '__add_grouping' _CharT* __p = std::__add_grouping(__new, __sep, __grouping, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1249:14: note: Assuming the condition is true while (__last - __first > __gbeg[__idx] ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1249:14: note: Left side of '&&' is true ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1250:10: note: Assuming the condition is true && static_cast<signed char>(__gbeg[__idx]) > 0 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1249:14: note: Left side of '&&' is true while (__last - __first > __gbeg[__idx] ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1249:7: note: Loop condition is true. Entering loop body while (__last - __first > __gbeg[__idx] ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1254:4: note: Assuming the condition is false __idx < __gsize - 1 ? ++__idx : ++__ctr; ^~~~~~~~~~~~~~~~~~~ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1254:4: note: '?' condition is false ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1250:7: note: Left side of '&&' is false && static_cast<signed char>(__gbeg[__idx]) > 0 ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1257:7: note: Loop condition is true. Entering loop body while (__first != __last) ^ ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1257:7: note: Loop condition is true. Entering loop body ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1257:7: note: Loop condition is true. Entering loop body ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1257:7: note: Loop condition is true. Entering loop body ../../build/linux/debian_wheezy_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/locale_facets.tcc:1258:9: note: Assigned value is garbage or undefined *__s++ = *__first++; ^ ~~~~~~~~~~ Repository: rL LLVM https://reviews.llvm.org/D30593 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits