ziqingluo-90 added inline comments.
================ Comment at: clang/lib/Analysis/UnsafeBufferUsage.cpp:1095-1102 // Gadgets "claim" variables they're responsible for. Once this loop finishes, // the tracker will only track DREs that weren't claimed by any gadgets, // i.e. not understood by the analysis. for (const auto &G : CB.FixableGadgets) { for (const auto *DRE : G->getClaimedVarUseSites()) { CB.Tracker.claimUse(DRE); } ---------------- NoQ wrote: > Let's also skip this part when there are no warning gadgets? Your initial > patch was clearing the `FixableGadgets` list so it was naturally skipped, but > now it's active again. Oh, I intentionally chose not to skip it: - 1. To keep the `Tracker` consistent with `CB.FixableGadgets` in case in the future we want to use these two objects even if there is no `WarningGadget`; - 2. The `findGadgets` function can stay as straightforward as its name suggests. It doesn't have to know the specific optimization for empty `WarningGadget`s. But the two thoughts above probably aren't important enough. I will change it back to skipping the loop when there is no warnings. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D155524/new/ https://reviews.llvm.org/D155524 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits