[LLVMdev] SSA or not SSA?

Patrick Meredith pmeredit at uiuc.edu
Thu Jul 17 02:48:30 PDT 2008


Memory is what the i32* points too.  The i32* itself is in a  
register.  You can store to it as many times as you want, but you  
can't change the address, because that would violate SSA.

On Jul 17, 2008, at 4:26 AM, Matthieu Moy wrote:

> [ sorry for the late reply ]
>
> Patrick Meredith <pmeredit at uiuc.edu> wrote:
>> All register uses are SSA.  Memory is not in SSA.  The mem2reg pass
>> which promotes stack variables to registers effectively converts non-
>> SSA to SSA.  There was a reg2mem pass, written by Andrew Lenharth,  
>> I'm
>> not sure if it's still being maintained.
>
> What is the difference between register and memory? I don't see such
> distinction in the LRM.
>
> Do you mean for example
>
> register = i32
> memory = i32*
>
> ?
>
> Thanks,
>
>> On Jul 7, 2008, at 8:47 AM, Matthieu Moy wrote:
>>
>>> Hi,
>>>
>>> Silly question from an LLVM newbie: the LLVM LRM say that the  
>>> bytecode
>>> is "is an SSA based representation". Indeed, my experience with
>>> llvm-gcc is that the generated code is not necessarily SSA, while
>>> the one given by "llvm-gcc -O1" is.
>>>
>>> Is this assumption correct?
>>>
>>> Is there a non-SSA to SSA translator available?
>>>
>>> Thanks,
>
> -- 
> Matthieu
> _______________________________________________
> 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