[LLVMdev] SimplifyCFG vs loops

Krzysztof Parzyszek kparzysz at codeaurora.org
Wed Oct 17 08:41:05 PDT 2012


Hello All,

The current implementation of the CFG simplification is loop-agnostic. 
In the past I have observed that it can perform transformations that can 
be detrimental to the loop structure.  One example that I recall, is 
converting a loop like this:
    while (...) {
       ...
       if (cond) continue;
       ...
    }
into two nested loops.  Specifically, the "continue" branch would go 
back to the loop header making it appear as if there were two back edges.

What are your thoughts about either making the CFG simplification aware 
of loops in its entirety, or separating the "safe" transformations in a 
quick pass, and having a more aggressive pass that does preserve loop 
structure?

-Krzysztof

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation



More information about the llvm-dev mailing list