OSDN Git Service

[LCSSA] Cache LoopExits to avoid wasted work
authorPhilip Reames <listmail@philipreames.com>
Mon, 19 Sep 2016 23:30:23 +0000 (23:30 +0000)
committerPhilip Reames <listmail@philipreames.com>
Mon, 19 Sep 2016 23:30:23 +0000 (23:30 +0000)
commit67197eeb7d7fdebf4dc8f7e476ccb4d6942c9778
treea0f3e67311ce9d6ae421b149b3b18be2732979a7
parent3d21d847dba6b5bb65080c33ffc8112b48b9dc9d
[LCSSA] Cache LoopExits to avoid wasted work

When looking at the scribus_1.3 example from https://llvm.org/bugs/show_bug.cgi?id=10584, I noticed that we were spending a large amount of time computing loop exits in LCSSA. This code appears to be written with the assumption that LoopExits are stored in the Loop and thus cheap to query. This is not true, so we should cache the result across the potentially long running loop which tends to visit a small handful of Loops.

On the particular example from 10584, this change drops the time spent in LCSSA computation by about 80%.

Differential Revision: https://reviews.llvm.org/D24509

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281949 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/LCSSA.cpp