<div class="gmail_quote">On Wed, May 27, 2009 at 7:11 PM, Bill Wendling <span dir="ltr"><<a href="mailto:isanbard@gmail.com">isanbard@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wed, May 27, 2009 at 5:26 PM, Mark Lacey <<a href="mailto:superoptimizer@gmail.com">superoptimizer@gmail.com</a>> wrote:<div class="im"><br>
> I noticed in the 2.4 release notes that a sparse propagation framework had<br>
> been added based on the SCCP algorithm. I might have a need for exactly this<br>
> kind of framework in order to prototype an analysis I have in mind.<br>
><br>
> I also noticed, however, that this doesn't appear to be in use at this time.<br>
><br>
</div>It is being used:<br>
<br>
opt.cpp:<br>
<br>
void AddStandardCompilePasses(PassManager &PM) {<br>
...<br>
  addPass(PM, createSCCPPass());                 // Constant prop with<br>
SCCP<br>
<br>
<br>
and in gcc/llvm-backend.cpp:<br>
<br>
static void createPerModuleOptimizationPasses() {<br>
...<br>
      PM->add(createSCCPPass());                  // Constant prop<br>
with SCCP<br>
</blockquote><div><br>I guess I wasn't clear. I was referring to the code in<br>  include/llvm/Analysis/SparsePropagation.h<br>and <br>  lib/Analysis/SparsePropagation.cpp<br>which use the same optimistic worklist based algorithm that SCCP uses, but allow for pluggable lattices/transfer-functions via subclassing the AbstractLatticeFunction class.<br>
<br>It looks like this was written to be a more general framework that worklist based algorithms (esp. ones that have a notion of executable edges) could be built on, but was never used within LLVM.<br><br>Mark<br><br></div>
</div>