[clang] [llvm] [OptBisect][IR] Adding a new OptPassGate for disabling passes via name (PR #145059)
Danila Malyutin via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 21 10:01:43 PDT 2025
================
@@ -1078,9 +1078,13 @@ void OptPassGateInstrumentation::registerCallbacks(
if (!PassGate.isEnabled())
return;
- PIC.registerShouldRunOptionalPassCallback([this](StringRef PassName, Any IR) {
- return this->shouldRun(PassName, IR);
- });
+ PIC.registerShouldRunOptionalPassCallback(
+ [this, &PIC](StringRef ClassName, Any IR) {
+ StringRef PassName = PIC.getPassNameForClassName(ClassName);
+ if (PassName.empty())
----------------
danilaml wrote:
Our downstream code had hit an issue (sanitizer heap-use-after-free) with this code and I believe @snehasish concern was correct. In out case, we generate pass name dynamically (it's of the form `"PassName Step N" where N differs from run to run), so it's stored as a `std::string` instead of a string literal. So when `getPassNameForClassName` is called with such pass it creates an empty densemap entry with `StringRef` referring to the `std::string` name of our pass which is later destroyed leaving the reference dangling.
https://github.com/llvm/llvm-project/pull/145059
More information about the llvm-commits
mailing list