This is the mail archive of the
mailing list for the GCC project.
Re: Iterating over RTL in Graphite
On 02/17/2012 08:34 PM, David Malcolm wrote:
On Thu, 2012-02-16 at 19:17 -0400, Arnaldo wrote:
I'm working on an extension to the Graphite pass of GCC 4.4.0. My
intention is to associate costs to RTL instructions by adding them as
RTX attributes to a machine description file, and to read them back
during the Graphite pass by iterating through each basic block.
Is the RTL available during this optimization pass? I'm not sure this
is the case as I get a segfault when trying to iterate over the RTL
with the code below ("internal compiler error: Segmentation fault"). I
don't need the fully resolved RTL, just to be able to read the
attribute given an RTL instruction.
I've tried debugging the compiler with gdb but it can't find the
debugging symbols even though they're there. I'll keep trying to get
gdb to work but any leads on reading these attributes from within
Graphite is greatly appreciated.
I don't know about GCC 4.4, but a while back I wrote a script using my
GCC Python plugin to draw a "subway map" of GCC 4.6's passes:
which you can see here:
If I reading things correctly, the graphite passes happen whilst the
code is still in gimple form: the blocks are converted to RTL form in
the "expand" pass, which happens about 20 or so passes later.
Caveat: I'm not familiar with the insides of the graphite, and am
relatively new to gcc's insides, so I could be wrong; also the script
relies on the pass flags, and they're not necessarily correct either...
Yes, graphite works on GIMPLE. I believe I have never seen RTL when
working on graphite, so I doubt it is easily available. (Maybe it is,
but it is definitely not used within graphite).