[LLVMdev] overlay attribute
Alireza.Moshtaghi at microchip.com
Alireza.Moshtaghi at microchip.com
Wed Apr 16 11:30:40 PDT 2008
Chris,
The reasons for not wanting the code generator to modify alloca to
global references are:
(1) Variable name is not as easily available in the code generator.
(2) I did not want to go behind the back of compiler and change the
storage class of a variable in the middle of the way. I felt more
comfortable to have the frontend generate the correct information to
begin with.
But it concerns me when you say modifying alloca to global references
seems a more robust way of doing it. Could you elaborate on this?
Thanks
A.
-----Original Message-----
From: Chris Lattner [mailto:sabre at nondot.org]
Sent: Tuesday, April 15, 2008 8:29 PM
To: LLVM Developers Mailing List
Cc: Alireza Moshtaghi - C13012
Subject: Re: [LLVMdev] overlay attribute
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 :)
-Chris
More information about the llvm-dev
mailing list