2.95.4 plans

Bernd Schmidt bernds@redhat.com
Fri Apr 6 04:37:00 GMT 2001


On Tue, 20 Mar 2001, Franz Sirl wrote:
>
> - the rtx_equal_function_matters change fixes
>   gcc.c-torture/execute/complex-5.c on PPC

I've applied this.


Bernd

Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v
retrieving revision 1.3667.4.353
diff -u -p -r1.3667.4.353 ChangeLog
--- ChangeLog	2001/04/04 13:26:08	1.3667.4.353
+++ ChangeLog	2001/04/06 11:33:46
@@ -1,3 +1,10 @@
+2001-04-06  Bernd Schmidt  <bernds@redhat.com>
+
+	Thu Oct 28 10:20:02 1999  Geoffrey Keating  <geoffk@cygnus.com>
+	* config/rs6000/rs6000.md (movsf): Don't convert a SUBREG
+	of the function return register into a plain REG until
+	after function inlining is done.
+
 2001-04-04  Bernd Schmidt  <bernds@redhat.com>

 	Fri Nov  5 10:07:25 1999  Nick Clifton  <nickc@cygnus.com>
Index: cse.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cse.c,v
retrieving revision 1.72.4.6
diff -u -p -r1.72.4.6 cse.c
--- cse.c	2001/01/25 14:03:03	1.72.4.6
+++ cse.c	2001/04/06 11:33:48
@@ -695,8 +695,6 @@ static void check_fold_consts	PROTO((PTR
 static struct cse_reg_info* get_cse_reg_info PROTO((int));
 static void free_cse_reg_info   PROTO((splay_tree_value));
 static void flush_hash_table	PROTO((void));
-
-extern int rtx_equal_function_value_matters;

 /* Dump the expressions in the equivalence class indicated by CLASSP.
    This function is used only for debugging.  */
Index: rtl.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/rtl.h,v
retrieving revision 1.105.4.3
diff -u -p -r1.105.4.3 rtl.h
--- rtl.h	2001/01/25 14:03:22	1.105.4.3
+++ rtl.h	2001/04/06 11:33:49
@@ -888,6 +888,12 @@ extern char *note_insn_name[];
 /* For a NOTE_INSN_LIVE note, the original basic block number.  */
 #define RANGE_LIVE_ORIG_BLOCK(INSN) (XINT (INSN, 1))

+/* Nonzero if we need to distinguish between the return value of this function
+   and the return value of a function called by this function.  This helps
+   integrate.c.
+   This is 1 until after the rtl generation pass.  */
+extern int rtx_equal_function_value_matters;
+
 /* Generally useful functions.  */

 /* The following functions accept a wide integer argument.  Rather than
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/toplev.c,v
retrieving revision 1.185.4.7
diff -u -p -r1.185.4.7 toplev.c
--- toplev.c	2001/01/25 14:03:23	1.185.4.7
+++ toplev.c	2001/04/06 11:33:50
@@ -137,8 +137,6 @@ You Lose!  You must define PREFERRED_DEB
 #define DIR_SEPARATOR '/'
 #endif

-extern int rtx_equal_function_value_matters;
-
 #if ! (defined (VMS) || defined (OS2))
 extern char **environ;
 #endif
Index: config/rs6000/rs6000.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.55.4.17
diff -u -p -r1.55.4.17 rs6000.md
--- rs6000.md	2001/01/25 14:03:35	1.55.4.17
+++ rs6000.md	2001/04/06 11:33:51
@@ -6184,7 +6184,9 @@
      reg.  So expand it.  */
   if (GET_CODE (operands[0]) == SUBREG
       && GET_CODE (SUBREG_REG (operands[0])) == REG
-      && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER)
+      && REGNO (SUBREG_REG (operands[0])) < FIRST_PSEUDO_REGISTER
+      && (! REG_FUNCTION_VALUE_P (SUBREG_REG (operands[0]))
+	  || ! rtx_equal_function_value_matters))
     operands[0] = alter_subreg (operands[0]);
   if (GET_CODE (operands[1]) == SUBREG
       && GET_CODE (SUBREG_REG (operands[1])) == REG



More information about the Gcc-patches mailing list