nikic added a comment. I don't think I fully understand the interaction this has with eager invalidation. I would have expected that if we eagerly invalidate, then this fine-grained invalidation wouldn't make much of a difference, because we invalidate anyway after processing a function.
================ Comment at: llvm/lib/Transforms/IPO/ArgumentPromotion.cpp:1051 + for (auto *U : NewF->users()) { + auto *UserF = cast<CallBase>(U)->getParent()->getParent(); + FAM.invalidate(*UserF, FuncPA); ---------------- ================ Comment at: llvm/lib/Transforms/IPO/FunctionAttrs.cpp:1845 + if (auto *Call = dyn_cast<CallBase>(U)) + FAM.invalidate(*Call->getParent()->getParent(), FuncPA); + } ---------------- Do we need to worry about indirect references here, like a call through a bitcast? For the ArgPromotion case that's not possible, but I'm not so sure here. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113304/new/ https://reviews.llvm.org/D113304 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits