------- Comment #8 from amylaar at gcc dot gnu dot org  2006-02-15 21:41 -------
Created an attachment (id=10857)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10857&action=view)
infrastructure patch - defective

(In reply to comment #7)
> This should be a relatively straightforward fix.

I had a go at this, but ran into a problem.  When an optimizer requests
a variable to be made addressable, I think we need to keep track of this, so
that we don't complain henceforth when the address is taken again, where
addressing the variable once causes further instances of addressing it.

I thought I could reset DECL_REGISTER for this purpose, and accept addressing
if DECL_REGISTER is cleared on entry in c_mark_addressable.

(The C front end uses C_DECL_REGISTER to keep track of a variable being
declared
 register, and DECL_REGISTER more or less means that we intent do use this as a
 register.)

However, this causes a regression on gcc.dg/reg-vol-struct-1.c line 16 - the
DECL_REGISTER flag has already been reset for 'a' on account of it being
volatile.

So it appears that we need another flag to keep track of when a register has
been made addressable on behalf of the optimizers.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26004

Reply via email to