GVN is much faster on functions with deep dominator trees / lots of BBs.
DomTree and DominatorFrontier are much faster to compute, and preserved by
more passes (so they are computed less often)
+ SRoA is also much faster and doesn't use DominanceFrontier.
new 'hotpatch' attribute: LangRef.html#fnattrs
Removed the PartialSpecialization pass, it was unmaintained and buggy.
+SPARC: Many improvements, including using the Y registers for multiplications
+ and addition of a simple delay slot filler.
+
</pre></li>
</ul>
<div class="doc_text">
-<div class="doc_code"><pre>
- <i>// This is an example implementation from an analysis, which does not modify
- // the program at all, yet has a prerequisite.</i>
- <b>void</b> <a href="http://llvm.org/doxygen/classllvm_1_1PostDominanceFrontier.html">PostDominanceFrontier</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
- AU.setPreservesAll();
- AU.addRequired<<a href="http://llvm.org/doxygen/classllvm_1_1PostDominatorTree.html">PostDominatorTree</a>>();
- }
-</pre></div>
-
-<p>and:</p>
-
<div class="doc_code"><pre>
<i>// This example modifies the program, but does not modify the CFG</i>
<b>void</b> <a href="http://llvm.org/doxygen/structLICM.html">LICM</a>::getAnalysisUsage(AnalysisUsage &AU) <b>const</b> {
#include "llvm/Pass.h"
#include "llvm/Value.h"
#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Analysis/DominanceFrontier.h"
+#include "llvm/Analysis/Dominators.h"
#include "llvm/Support/ToolOutputFile.h"
using namespace llvm;
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesAll();
AU.addRequired<DominatorTree>();
- AU.addRequired<DominanceFrontier>();
}
virtual bool runOnFunction(Function &F) {
getAnalysis<DominatorTree>().dump();
- getAnalysis<DominanceFrontier>().dump();
return false;
}
};