How to transform loop to if-else using LLVM?

Hello everyone,

Sorry to bother you. I’m an undergraduate, and I’m trying to finish my graduation project using LLVM. In this project, I hope to transform all loop in program to condition statement. For example,
Before transformation: for (int i = 0; i < 5; i++) a++;
After transformation: int i = 0; if (i < 5) a++; i++;
The idea is very clear, however, I’m a newbie to LLVM. After read code of some LLVM’s transformation, I still have no idea of how to implement this idea.
Hope you can give me some hint. Thank you very much!

Hi, Zhiyuan Yang,

Are you trying to replace the for-loop with equivalent if-goto loop? In this case, do you also need a goto after i++?
LLVM IR in fact already contains exactly the goto-form of any loop, because IR has no high-level constructs like for or while.

  • D.

2013/4/17 zhiyuan yang <sjtu.yzy@gmail.com>