This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] PR35371 GCSE loses track of REG_POINTER attribute
- From: Jeff Law <law at redhat dot com>
- To: Peter Bergner <bergner at vnet dot ibm dot com>
- Cc: Richard Sandiford <rsandifo at nildram dot co dot uk>, gcc-patches <gcc-patches at gcc dot gnu dot org>, "H.J. Lu" <hjl at lucon dot org>
- Date: Mon, 03 Mar 2008 13:53:36 -0700
- Subject: Re: [PATCH] PR35371 GCSE loses track of REG_POINTER attribute
- References: <20080225222624.GA26857@vervain.rchland.ibm.com> <email@example.com> <1204052325.7014.2.camel@otta> <47C467BA.firstname.lastname@example.org> <1204240130.7376.16.camel@otta> <47CC4E4D.email@example.com> <1204573308.6969.8.camel@otta>
Peter Bergner wrote:
On Mon, 2008-03-03 at 12:15 -0700, Jeff Law wrote:
Ah. A misunderstanding on my part.
Do you mean fix it up and then call it from more than just CSE?
Currently, the only call to reg_scan() isn't in a location that
will help me.
No. I mean make it smarter. If you read the code it's amazingly
simplistic and punts propagation of REG_POINTER for any pseudo
that is set more than once.
It shouldn't be terribly difficult to build a simple propagation
engine that handles multiple sets.
Sorry, making it "smarter" is what I meant by "fix it up".
My problem with it, as I mentioned in my previous note, is that
the only location it is currently called doesn't help me.
I guess what I was asking was there shouldn't be a problem
with me calling it from another location, correct?
I do recall some problems with passes substituting a pseudo
without REG_POINTER set for a register with REG_POINTER set,
so if you run it early, you might lose some REG_POINTER
That's not a fatal problem -- the PA backend already knows
to cope with this issue. And if the pass is safe, you ought
to be able to just run it twice.
Ideally propagation of REG_POINTER would use both the
assignment to the pseudo and the use of the pseudo to
try and determine if it's a pointer.