[LLVMdev] overlay attribute

Chris Lattner sabre at nondot.org
Tue Apr 15 20:29:07 PDT 2008

On Apr 10, 2008, at 10:44 AM, <Alireza.Moshtaghi at microchip.com> <Alireza.Moshtaghi at microchip.com 
 > wrote:

> I would like to make the following target specific modifications to
> clang and would like to get some advice from experts.

Ok.  cfe-dev might be more appropriate for clang questions, but...
> 1) My target supports very poor stack access so we implement "static
> stack". In this model, all local variables will have static storage
> class. I think I can take care of this in the
> clang::CGDecl.cpp::CodeGenFunction::EmitBlockVarDecl()

Is there any reason not to lower these to alloca, and then have the  
code generator turn alloca into references to globals?  That seems a  
more robust way to go.

> 2) To improve memory usage, I also would like to add a new default
> attribute "overlay" to local variables (all will have static storage
> class as mentioned in 1). This attribute will be applied to all local
> variables except if the user has explicitly made the variable static  
> in
> which case the attribute is not added. I think I should be able to  
> take
> care of this also in the same place
> clang::CGDecl.cpp::CodeGenFunction::EmitBlockVarDecl() however I don't
> know how to define and apply the "overlay" attribute.

Ok.  I'm not sure what this does, but adding attributes is pretty  
easy, just look at some other examples.

> 3) I did not find any way to access the attributes from llvm  
> backend. I
> was wondering if I should use something similar to what address  
> space is
> doing or there may be some other way possible.

I'd strongly recommend using address spaces if possible.

> 4) Input arguments and return value of all functions should also have
> the same overlay-static storage class. I can take care of these  
> entirely
> in the backend. However, I would like to know your feedback.

I'm not sure what the question is :)


More information about the llvm-dev mailing list