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

Reply via email to