<div><br></div><div>As part of PhD research I integrated support for code generation of idempotent (re-executable) code regions into LLVM, along with a supporting IR-level analysis to identify and demarcate large "semantically" idempotent regions [1].  Some have expressed interest the code, so here is a link that contains some documentation and pointers to the source hosted on GitHub:</div>

<div><br></div><div><a href="http://research.cs.wisc.edu/vertical/iCompiler">http://research.cs.wisc.edu/vertical/iCompiler</a></div><div><br></div><div>I hope the code may be useful to others.  I apologize for not releasing this code sooner -- it has been ready for some time -- but I am only just now finding the right moment to do this.</div>

<div><div><br></div></div><div>There are no bugs that I'm aware of, though there are unaddressed optimization opportunities with respect to, among other things, (a) better register-pressure awareness, (b) employing transformations (particularly loop transformations) to increase the "degree" of idempotence and/or improve code generator performance, and (c) better alias analysis... if anyone is interested; I personally am moving on to other things for now...</div>

<div><br></div><div>Lastly, thank you to all of the LLVM community for effectively enabling this research.</div><div><br></div><div>Marc</div><div><br></div>[1] M. de Kruijf, K. Sankaralingam, and S. Jha. <i>Static Analysis and Compiler Design for Idempotent Processing.  </i>PLDI '12: Programming Language Design and Implementation, 2012.