[LLVMdev] SSA in the Front End

Ricardo rmivs-jygf at yahoo.com
Fri May 27 17:33:57 PDT 2005


Thanks for the explanation. It's more clear now

The only thing that seems strange is that in the function llvm_expand_shortcircuit_truth_expr in
the front end, there is the creation of a PHI instruction. If there is no SSA yet, why do you do
that?

Thanks in advance




--- John Criswell <criswell at cs.uiuc.edu> wrote:

> Ricardo wrote:
> > Hi,
> > 
> > I have been looking into the code that generates the LLVM assembly in the LLVM front end, but
> I am
> > not very sure if at the time that the llvm_c_expand_body_1 function is called, the SSA form
> was
> > already constructed (each definition dominates all the uses). Can somebody please tell me?
> 
> The LLVM GCC frontend does not translate variables directly into LLVM 
> virtual regsiters (which must be in SSA form).
> 
> Instead, the LLVM GCC frontend simply uses a memory location for each 
> variable (e.g. a local variable is allocated via the LLVM alloca 
> instruction).  If you use llvm-gcc -S -o file.ll file.c, you can see the 
> code that llvm-gcc generates.
> 
> Next, gccas (after assembling the LLVM assembly file) runs a pass called 
> mem2reg.  This pass finds memory locations that can be promoted to LLVM 
> virtual registers and promotes them into registers.  The following 
> commands will allow you to see the change:
> 
> llvm-as -o file.bc file.ll
> opt -mem2reg -o newfile.bc file.bc
> llvm-dis -o newfile.ll newfile.bc
> 
> If you compare newfile.ll to file.ll, you'll see what the mem2reg 
> transformation does.
> 
> Using this technique, language frontends don't need to worry about 
> maintaining SSA for variables that it generates.  It simply generates 
> them as memory locations and the LLVM optimizer fixes it up into more 
> efficient code.
> 
> -- John T.
> 
> > 
> > Thanks
> > 
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
> 
> 
> -- 
> John T. Criswell
> Research Programmer
> University of Illinois at Urbana-Champaign
> "It's today!" said Piglet. "My favorite day," said Pooh.
> 
> 




More information about the llvm-dev mailing list