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