From 1c18ebb2cc7c2fbd0be43d9ceaabe52d7317c19d Mon Sep 17 00:00:00 2001 From: Max Kazantsev Date: Mon, 25 Oct 2021 12:30:46 +0700 Subject: [PATCH] [NFC][SCEV] Do not track users of SCEVConstants Follow-up from D112295, suggested by Nikita: we can avoid tracking users of SCEVConstants because dropping their cached info is unlikely to give any new prospects for fact inference, and it should not introduce any correctness problems. --- llvm/lib/Analysis/ScalarEvolution.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 7898438399c3..bb80729a2909 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -13304,7 +13304,11 @@ PredicatedScalarEvolution::PredicatedScalarEvolution(ScalarEvolution &SE, void ScalarEvolution::registerUser(const SCEV *User, ArrayRef Ops) { for (auto *Op : Ops) - SCEVUsers[Op].insert(User); + // We do not expect that forgetting cached data for SCEVConstants will ever + // open any prospects for sharpening or introduce any correctness issues, + // so we don't bother storing their dependencies. + if (!isa(Op)) + SCEVUsers[Op].insert(User); } const SCEV *PredicatedScalarEvolution::getSCEV(Value *V) {