public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: memrefs_conflict_p omission?
@ 1997-10-08  4:25 meissner
  0 siblings, 0 replies; 5+ messages in thread
From: meissner @ 1997-10-08  4:25 UTC (permalink / raw)
  To: law, rth; +Cc: egcs, jfc

| Nope.  It is always either eliminated to FP/SP, or is FP.  With the
| exception of vax and we32k.  And vax doesn't change its AP, and I am
| assuming we32k works the same way.  It doesn't appear to move...

It couldn't very well point to the arguments on the stack if it moved.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: memrefs_conflict_p omission?
  1997-10-07 23:14   ` Jeffrey A Law
@ 1997-10-07 23:14     ` Richard Henderson
  0 siblings, 0 replies; 5+ messages in thread
From: Richard Henderson @ 1997-10-07 23:14 UTC (permalink / raw)
  To: law; +Cc: John Carr, Richard Henderson, egcs

> One thing to check is whether in any of
> the targets the argument pointer can be variable.  If so your change
> might not be safe.  The scheduler would not realize that the two
> memory references in
> 
> 	[arg pointer + 4] = x
> 	arg pointer += 4
> 	[arg pointer] = y

Nope.  It is always either eliminated to FP/SP, or is FP.  With the
exception of vax and we32k.  And vax doesn't change its AP, and I am
assuming we32k works the same way.  It doesn't appear to move...


r~

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: memrefs_conflict_p omission?
  1997-10-06  6:44 ` John Carr
@ 1997-10-07 23:14   ` Jeffrey A Law
  1997-10-07 23:14     ` Richard Henderson
  0 siblings, 1 reply; 5+ messages in thread
From: Jeffrey A Law @ 1997-10-07 23:14 UTC (permalink / raw)
  To: John Carr; +Cc: Richard Henderson, egcs

  In message < 199710061344.JAA24923@no-knife.MIT.EDU >you write:
  > 
  > > Something that came to mind a bit ago while fixing AND nonsense,
  > > was that perhaps this was an omission?
  > 
  > That code came from sched.c and I don't think I changed it (at least
  > not in the final version -- I remember working on that code but I
  > later decided the base-address aliasing was better done elsewhere).
It looks like it was just lifed from sched.c unchanged.

  I
  > suspect that the block controlled by the condition you changed in the
  > second part of your patch is no longer needed with the new base
  > address alias code.
  > 
  > The change is at least half correct: the argument pointer itself can
  > never alias a global symbol.  One thing to check is whether in any of
  > the targets the argument pointer can be variable.  If so your change
  > might not be safe.  The scheduler would not realize that the two
  > memory references in
  > 
  > 	[arg pointer + 4] = x
  > 	arg pointer += 4
  > 	[arg pointer] = y
  > 
  > are to the same address.
Well, where do we want to go?  I'm going to lean on you for most alias
problems :-)

Jeff




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: memrefs_conflict_p omission?
  1997-10-06  0:17 Richard Henderson
@ 1997-10-06  6:44 ` John Carr
  1997-10-07 23:14   ` Jeffrey A Law
  0 siblings, 1 reply; 5+ messages in thread
From: John Carr @ 1997-10-06  6:44 UTC (permalink / raw)
  To: Richard Henderson; +Cc: egcs

> Something that came to mind a bit ago while fixing AND nonsense,
> was that perhaps this was an omission?

That code came from sched.c and I don't think I changed it (at least
not in the final version -- I remember working on that code but I
later decided the base-address aliasing was better done elsewhere).  I
suspect that the block controlled by the condition you changed in the
second part of your patch is no longer needed with the new base
address alias code.

The change is at least half correct: the argument pointer itself can
never alias a global symbol.  One thing to check is whether in any of
the targets the argument pointer can be variable.  If so your change
might not be safe.  The scheduler would not realize that the two
memory references in

	[arg pointer + 4] = x
	arg pointer += 4
	[arg pointer] = y

are to the same address.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* memrefs_conflict_p omission?
@ 1997-10-06  0:17 Richard Henderson
  1997-10-06  6:44 ` John Carr
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Henderson @ 1997-10-06  0:17 UTC (permalink / raw)
  To: jfc; +Cc: egcs

Something that came to mind a bit ago while fixing AND nonsense,
was that perhaps this was an omission?


r~


--- alias.c     1997/09/29 06:21:18     1.8
+++ alias.c     1997/10/06 07:08:16
@@ -594,7 +594,7 @@ memrefs_conflict_p (xsize, x, ysize, y,
     }

   if (y == frame_pointer_rtx || y == hard_frame_pointer_rtx
-      || y == stack_pointer_rtx)
+      || y == stack_pointer_rtx || y == arg_pointer_rtx)
     {
       rtx t = y;
       int tsize = ysize;
@@ -603,7 +603,7 @@ memrefs_conflict_p (xsize, x, ysize, y,
     }

   if (x == frame_pointer_rtx || x == hard_frame_pointer_rtx
-      || x == stack_pointer_rtx)
+      || x == stack_pointer_rtx || x == arg_pointer_rtx)
     {
       rtx y1;



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~1997-10-08  4:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-10-08  4:25 memrefs_conflict_p omission? meissner
  -- strict thread matches above, loose matches on Subject: below --
1997-10-06  0:17 Richard Henderson
1997-10-06  6:44 ` John Carr
1997-10-07 23:14   ` Jeffrey A Law
1997-10-07 23:14     ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).