[LLVMdev] Loop unrolling a function

Sebastian Dreßler sebastian.dressler at gmail.com
Mon Feb 3 09:29:30 PST 2014


Hi Skye,

just stumbled over this thread. I started writing a tool for getting loop information, e.g. count variable with initialisation, increment and so on. If you are interested, I could share the code with you.

Cheers,
Sebastian

On 15.01.2014, at 06:32, Skye Wanderman-Milne <skye at cloudera.com> wrote:

> Hi all,
> 
> I'm attempting to perform loop unrolling on a single function using the C++ API. Maybe I missed something in the docs, but I cannot figure out a way to do this. The function I'm working with is very simple, containing a single for loop and not much else. I compiled the function to IR using clang with no optimizations enabled.
> 
> My initial plan was to first run the IndVarSimplify pass (as suggested here) and then the LoopUnroll pass on the function. I tried using a FunctionPassManager to do this, even though the docs state FPMs are used with FunctionPasses and not LoopPasses, which didn't complain but had no effect on the function. Is adding LoopPasses to a FPM supposed to be a no-op? Is this supposed to work and I'm not running the right combination of passes to get loop unrolling?
> 
> I also tried creating a LoopInfo object over my function with a FPM so I could call UnrollLoop() manually, but the LoopInfo didn't return any loops, perhaps because I'm missing some preliminary passes.
> 
> The last option I considered was copying the function into it's own module, using a PassManager, and then copying the function back into the original module. I didn't try this option as creating a valid stand-alone module with the single function will potentially be difficult.
> 
> Does anyone have a suggestion for how to do this?
> 
> Thanks,
> Skye
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev





More information about the llvm-dev mailing list