Help with GCC

James E Wilson wilson@specifix.com
Wed Aug 17 19:29:00 GMT 2005


Balaji V. Iyer wrote:
> Pass this "live/not-live" flag to the register allocation process so that
> it can output instruction in such a way (please see example below) (I want
> this information to be passed into .md stage)

You can't get cycle-accurate life time info in the register allocator
unless you have a combined register allocator and instruction scheduler.
 We don't have that.  They are separate passes.  Combining them is
difficult.

We do have life time info at the RTL instruction level, but this info
tends to be either internal to each register allocation pass, or not
specific enough for your needs.  You may or may not be able to do
anything with this info.

The register allocator does not emit instructions (other than reloads
emitted by reload), so you can't do this in the register allocator.  You
probably have to do this in final, when RTL is emitted as assembly language.

You might be able to do something useful with REG_DEAD notes, but they
are probably not guaranteed to be accurate when we get to final.  You
could try scanning following instructions for REG_DEAD notes, to see
where registers die.  Worst case, you might have to create your own life
time info by scanning all of the RTL instructions in a function.  You
could do this in a MACHINE_DEPENDENT_REORG pass.

You will probably need to spend some time studying the gcc sources in
order to do anything useful here.
-- 
Jim Wilson, GNU Tools Support, http://www.specifix.com



More information about the Gcc-help mailing list