| Issue |
184178
|
| Summary |
`optin.cplusplus.VirtualCall` ignores `-isystem` — warns for code in system headers
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
tarun-t
|
**Description:**
`clang-analyzer-optin.cplusplus.VirtualCall` reports warnings whose diagnostic location is inside a system header (included via `-isystem`).
## Reproducer
[Godbolt (core warning)](https://godbolt.org/z/P38GvWWjf)
**lib.hpp** (included via `-isystem`):
```cpp
#pragma once
struct Base {
virtual void shutdown() = 0;
virtual ~Base() = default;
};
struct Service : Base {
void shutdown() override {}
~Service() override { shutdown(); }
};
example.cpp:
#include <lib.hpp>
#include <memory>
int main() {
auto s = std::make_unique<Service>();
}
$ clang-tidy -checks='-*,clang-analyzer-optin.cplusplus.VirtualCall' \
example.cpp -- -std=c++23 -isystem .
lib.hpp:10:25: warning: Call to virtual method 'Service::shutdown' during
destruction bypasses virtual dispatch [clang-analyzer-optin.cplusplus.VirtualCall]
Version
Reproduces on clang-tidy 22 (trunk).
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs