This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [PATCH] Re: REG_DEAD/REG_EQUIV problem.



  In message <Pine.LNX.4.21.0102012037050.19209-100000@front.linuxcare.com.au>y
ou write:
  > On Thu, 1 Feb 2001, Alan Modra wrote:
  > 
  > > (insn 17 15 21 (set (reg/v:DI 69)
  > >         (mem/u:DI (lo_sum:DI (reg:DI 70)
  > >                 (unspec:DI[ 
  > >                         (symbol_ref/v/f:DI ("*L$C0001"))
  > >                     ]  0)) 0)) 83 {*pa.md:2368} (insn_list 15 (nil))
  > >     (expr_list:REG_EQUIV (mem/u:DI (lo_sum:DI (reg:DI 70)
  > >                 (unspec:DI[ 
  > >                         (symbol_ref/v/f:DI ("*L$C0001"))
  > >                     ]  0)) 0)
  > >         (expr_list:REG_DEAD (reg:DI 70)
  > >             (nil))))
  > 
  > Whee, maybe I'll be a gcc hacker one day.
  > 
  > This fixes the problem for me.  I've no idea whether it's the ideal
  > solution - it may well be possible and desirable to prevent these
  > conflicting notes being issued.
  > 
  > gcc/ChangeLog
  > 	* rtlanal.c (reg_death_note_p): New function.
  > 	(reg_mentioned_dies): New function.
  > 	* rtl.h (reg_mentioned_dies): Declare.
  > 	* reload1.c (reload): Don't set reg_equiv_memory_loc for an insn
  > 	that references memory via a reg that dies.
This is fundamentally going down the wrong path.

The REG_EQUIV is valid and it's valid for it to be used to create an
equivalence in reg_equiv_memory_loc.

The problem is elsewhere.  This just fixes the symptom.

jeff



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]