Fwd: Fixed function compilation order

2007-08-09 Thread Cupertino Miranda

Here is the answer.

Begin forwarded message:


From: "Daniel Berlin" <[EMAIL PROTECTED]>
Date: August 9, 2007 2:31:08 AM CEDT
To: "Cupertino Miranda" <[EMAIL PROTECTED]>
Subject: Re: Fixed function compilation order

On 8/8/07, Cupertino Miranda <[EMAIL PROTECTED]> wrote:


On Aug 9, 2007, at 2:03 AM, Daniel Berlin wrote:


On 8/8/07, Cupertino Miranda <[EMAIL PROTECTED]> wrote:

Hello everyone,

I am currently trying to enable GCC to perform compilation without
having to respect any compilation order, i.e. execute some pass to
any function at any time (it is not only pass reordering).




As what I have seen from (trunk version of) GCC, it doesn't seem an
easy task to be achieved and it might traduce in many complications
later in development.
In that sense I would like to have some opinions and suggestions  
from

you all:



For tree level optimization, this is really not difficult.
For RTL, this is probably going to be really hard.


  - Imagining I am able to change the function context by updating
cfun, etc. Will passes (all_passes) execute without
missing/wrong data, i.e. is all shared data between passes  
accessed/

updated thought pointers such as cfun, etc. ?


What do you mean "missing/wrong" data.


Just as an example, imagine you just executed the pass for the
creation of the CFG and after that, you decided to change context to
another function to perform the same pass.


Let me be clear.  We create CFG/SSA for *all* functions at once right
now, run a bunch of SSA passes, and then run a bunch of passes
per-function.  If you try to do something before this happens, yes,
you will have issues.  The simple answer is "don't do that".
:)

So basically, you can throw your pass in the list of passes and expect
changing functions to work like it does in an IPA pass.

The one datastructure you cannot have stored on multiple functions at
once right now are those related to tree level aliasing.
We are fixing this, but it is not done yet.




Fwd: Fixed function compilation order

2007-08-09 Thread Cupertino Miranda

Yesterday by mistake I started some private discussion with Daniel.
I will forward his answer too.

Begin forwarded message:


From: Cupertino Miranda <[EMAIL PROTECTED]>
Date: August 9, 2007 2:24:04 AM CEDT
To: Daniel Berlin <[EMAIL PROTECTED]>
Subject: Re: Fixed function compilation order


On Aug 9, 2007, at 2:03 AM, Daniel Berlin wrote:


On 8/8/07, Cupertino Miranda <[EMAIL PROTECTED]> wrote:

Hello everyone,

I am currently trying to enable GCC to perform compilation without
having to respect any compilation order, i.e. execute some pass to
any function at any time (it is not only pass reordering).




As what I have seen from (trunk version of) GCC, it doesn't seem an
easy task to be achieved and it might traduce in many complications
later in development.
In that sense I would like to have some opinions and suggestions  
from

you all:



For tree level optimization, this is really not difficult.
For RTL, this is probably going to be really hard.


  - Imagining I am able to change the function context by updating
cfun, etc. Will passes (all_passes) execute without
missing/wrong data, i.e. is all shared data between passes accessed/
updated thought pointers such as cfun, etc. ?


What do you mean "missing/wrong" data.


Just as an example, imagine you just executed the pass for the  
creation of the CFG and after that, you decided to change context  
to another function to perform the same pass. Will I have to keep  
track of this CFG or it is also available and used (by other  
passes) through the "high level" structures pointed by cfun, etc. ?
The CFG is just an example to possible very small "detail" data- 
structures that might exist in GCC and not such an obvious thing as  
a CFG. ;-)

  - What should I initialise/finalise to be able to perform the
function context change ?


See any IPA pass


I would like to have your opinion and tips on how to approach it and
which problems I might expect to have later.

Thanks in advance,
Cupertino Miranda