From edcdc5cb6a920a330a7fbdc3729bb13f2a509416 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Fri, 22 May 2015 03:07:28 +0000 Subject: [PATCH] [Unroll] Replace a hand-wavy FIXME with a FIXME that explains the actual problem instead of suggesting doing something that is trivial to do but incorrect given the current design of the libraries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237994 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/LoopUnrollPass.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Transforms/Scalar/LoopUnrollPass.cpp b/lib/Transforms/Scalar/LoopUnrollPass.cpp index a5e5ffec695..7bd1fcffbd5 100644 --- a/lib/Transforms/Scalar/LoopUnrollPass.cpp +++ b/lib/Transforms/Scalar/LoopUnrollPass.cpp @@ -349,9 +349,14 @@ buildSCEVGEPCache(const Loop &L, ScalarEvolution &SE) { if (!SE.isSCEVable(V->getType())) continue; const SCEV *S = SE.getSCEV(V); - // FIXME: Hoist the initialization out of the loop. + + // FIXME: It'd be nice if the worklist and set used by the + // SCEVTraversal could be re-used between loop iterations, but the + // interface doesn't support that. There is no way to clear the visited + // sets between uses. FindConstantPointers Visitor(&L, SE); SCEVTraversal T(Visitor); + // Try to find (BaseAddress+Step+Offset) tuple. // If succeeded, save it to the cache - it might help in folding // loads. -- 2.34.1