[committed] pa_commutative_p refinement

John David Anglin dave@hiauly1.hia.nrc.ca
Sun Jul 10 17:18:00 GMT 2005


PLUS is commutative when TARGET_NO_SPACE_REGS is true.  In this case,
the space registers sr4 through sr7 all refer to the same space.  Thus,
it doesn't matter whether the base or index register is used for space
register selection.  Of course, PLUS is not commutative in patterns that
use pre or post increment.

Tested on hppa-unknown-linux-gnu with no regressions.  The default
for TARGET_NO_SPACE_REGS is true on this target.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

2005-07-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_commutative_p): Make PLUS commutative when
	TARGET_NO_SPACE_REGS is true.

Index: config/pa/pa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/pa/pa.c,v
retrieving revision 1.301
diff -u -3 -p -r1.301 pa.c
--- config/pa/pa.c	7 Jul 2005 11:47:46 -0000	1.301
+++ config/pa/pa.c	10 Jul 2005 16:26:10 -0000
@@ -7831,7 +7831,8 @@ static bool
 pa_commutative_p (rtx x, int outer_code)
 {
   return (COMMUTATIVE_P (x)
-	  && ((outer_code != UNKNOWN && outer_code != MEM)
+	  && (TARGET_NO_SPACE_REGS
+	      || (outer_code != UNKNOWN && outer_code != MEM)
 	      || GET_CODE (x) != PLUS));
 }
 



More information about the Gcc-patches mailing list