394 karma · joined February 13, 2010
On the other hand, if we simply contribute optimizations then all LLVM users benefit.
We're also using Souper to reveal imprecisions in LLVM dataflow analyses such as known bits -- this turns out to work really well.
In any case, there's been a lot of progress since I did that UW talk, for example here are some early synthesis results:
Let me try to think of a good way to update the post to capture this better...
DD just removes stuff. C-Reduce does lots more, such as inlining functions, rewriting the class hierarchy, instantiating templates, ...
If you can't find what you're looking for we can help, I'm regehr@cs.utah.edu
http://blog.regehr.org/archives/1252
Here's a talk I gave at the University of Washington last winter (before Souper did synthesis): https://www.youtube.com/watch?v=Ux0YnVEaI6A
Recently we've been teaching Souper to use dataflow facts such as LLVM's known bits and demanded bits. Perhaps interestingly, Souper can also teach LLVM how to compute these facts more precisely: http://lists.llvm.org/pipermail/llvm-dev/2015-September/089904.html
One really common question about Souper is "why operate on LLVM IR instead of instructions?" One of the main answers is "so that we can interact with dataflow analyses." This isn't something that previous superoptimizers have done. It seems to be working out really well.It's not that big of a deal, but active effort is required. The amount of effort depends on how many and which APIs your project uses; for a small/medium project perhaps a couple of hours every couple of weeks.
I found the Beijing subway to be far nicer than the ones found in major American cities. No surprise since it's much newer.