[LLVMdev] Loop rotation and loop inversion in LLVM?
pmiscml at gmail.com
Thu May 16 17:07:34 PDT 2013
I'd be interested in knowing which pass performs loop inversion, i.e.
transforms while loop into do/while wrapped with if. So, it's pretty
easy to understand concept, http://en.wikipedia.org/wiki/Loop_inversion
provides description of how its done and motivation, googling gives
several relevant references, i.e. it's pretty settled term.
I also see this transform to be actually performed on trivial strlen
function by clang -O2. However opt --help or grepping LLVM doesn't give
However, -loop-rotate calls attention, described as "A simple loop
rotation transformation." However, Wikipedia doesn't gives hits for
that related to compilation/optimization theory, nor google hits are
relevant either - mostly LLVM-related hits just mentioning the term.
Trying -loop-rotate, I see loop being converted to post-condition, but
don't see if wrapper around it.
So, can anyone suggest if LLVM loop rotation is related to loop
inversion in Wikipedia terms, and if not, what it is.
And I hope that this feedback will allow maintainers to make
documentation clearer and more user-friendly.
Paul mailto:pmiscml at gmail.com
More information about the llvm-dev