This is the mail archive of the gcc-patches@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: A sched.c patch



  In message <m0yvXmm-000266C@ocean.lucon.org>you write:
  > This patch fixes
  > 
  > http://www.cygnus.com/ml/egcs-bugs/1998-Jul/0297.html
  > http://www.cygnus.com/ml/egcs-bugs/1998-Jul/0298.html
  > 
  > BTW, those bugs may be only visible on x86 with -march=i586 -mcpu=i586.
  > 
  > The problem is the interaction between true_dependence and rtx_varies_p
  > called from sched_analyze_2. sched_analyze_2 is called for a block. But
  > rtx_varies_p doesn't realy work very well on a block. true_dependence
  > will miss dependency within a block when rtx_varies_p is used.
  > 
  > This patch intrudoce a new function, sched_rtx_varies_p, which works on
  > block. It uses reg_last_sets to check if a register varies within a
  > block.
I think this is the wrong approach.

Presumably "block" above refers to memory references of BLKmode or
into structures?  If so, then we should first make sure the MEM_IN_STRUCT_P
is set to a reasonable value.

Given a variety of tidbits from this thread and a separate thread with
Kenner, Jim, Mark & myself, I suspect the problem is an incorrect change
to expr.c brought over in the last merge.  It sets MEM_IN_STRUCT_P
incorrectly.

As a quick test, I reverted Kenner's patch and everything works fine
again.

I'm still investigating.

jeff


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