[LLVMdev] not to break 'for' statement into basic blocks

Seung Jae Lee lee225 at uiuc.edu
Sat Jul 14 14:48:02 PDT 2007


Dear LLVM guys,

Hi. I first became to be interested in the compiler work, especially LLVM, since last October, still I'm a novice on here. (My major is not CS, either. :-\)
Please forgive my ignorance.

LLVM optimization and other tools are really fantastic. 
However I don't want LLVM breaks my 'for' statement in C code into basic blocks during compiling. 
I'm sure this sounds really strange but there is a reason for me.

I almost made the backend for a target machine with LLVM.
But a peculiar thing is the assembly uses 'for' statement directly, not branching among basic blocks.
Furthermore, this assembly does not have the notion of 'br'instruction, phi-node and so on. Therefore, I have no choice without making 'for' in the assembly. 
(Of course, equilvant 'br' instruction is used for 'if' statement. But it should be nested in 'demux' and 'mux' so I can't use this to represent 'for')

1) First, I tried to re-unite basic blocks which llvm-gcc spits out to make 'for' again. 
But this is quite tricky. Generalizing it for the optimzed llvm bytecode is not easy.

2) So.. I wonder if it is possible to modify the llvm-gcc not to break 'for' but not sure about this. 
I've heard 'clang' is newly released so I'm also wondering whether this can be modified for my goal.

3) A person recommended me to use GNU lightning, but still not sure about that.

4) A person also recommended me to make this assembly to "purely functional". This assembly, fortunately, supports 'call' instruction. So this can be a good choice for me, but unfortunately I don't have enough time to implementing it on the code after studying.

Could you, any body, tell me any advice, if you have?
My head is steaming.

Thanks,
Seung J. Lee



More information about the llvm-dev mailing list