]> granicus.if.org Git - clang/commit
Suppress -Wdelete-non-virtual-dtor warnings about classes defined in system headers.
authorNico Weber <nicolasweber@gmx.de>
Thu, 31 Aug 2017 06:17:08 +0000 (06:17 +0000)
committerNico Weber <nicolasweber@gmx.de>
Thu, 31 Aug 2017 06:17:08 +0000 (06:17 +0000)
commit63a8c8247d1d08dc10b7b8dec789e770527f6e01
treee8b878a0373f99fe0f54edae7ed6fb135228c0d8
parentc1f9a996bbccf9a9b635b50afbed6d1262384726
Suppress -Wdelete-non-virtual-dtor warnings about classes defined in system headers.

r312167 made it so that we emit Wdelete-non-virtual-dtor from delete statements
that are in system headers (e.g. std::unique_ptr). That works great on Linux
and macOS, but on Windows there are non-final classes that are defined in
system headers that have virtual methods but non-virtual destructors and yet
get deleted through a base class pointer (e.g. ATL::CAccessToken::CRevert). So
paddle back a bit and don't emit the warning if it's about a class defined in a
system header.

https://reviews.llvm.org/D37324

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312216 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaExprCXX.cpp
test/SemaCXX/destructor.cpp