From d2c92f5a43a4541115e0b8eadf024ed7004e1386 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Wed, 28 Jan 1998 19:09:41 +0000 Subject: [PATCH] reload.c (push_reload): If WORD_REGISTER_OPERATIONS... * reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the SUBREG_REG if the word count is unchanged, also in the input reload case. Disable non-applicable sanity checks. From-SVN: r17541 --- gcc/ChangeLog | 6 ++++++ gcc/reload.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5095ab23c97..c84c110820c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Jan 28 20:11:06 1998 J"orn Rennecke + + * reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the + SUBREG_REG if the word count is unchanged, also in the input reload + case. Disable non-applicable sanity checks. + Wed Jan 28 20:08:26 1998 Jeffrey A Law (law@cygnus.com) * config/t-svr4 (TARGET_LIBGCC2_CFLAGS): Add -fPIC. diff --git a/gcc/reload.c b/gcc/reload.c index 2fcdd5a6aea..6006357da29 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -885,6 +885,13 @@ push_reload (in, out, inloc, outloc, class, > GET_MODE_SIZE (GET_MODE (SUBREG_REG (in)))) && INTEGRAL_MODE_P (GET_MODE (SUBREG_REG (in))) && LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (in))) != NIL) +#endif +#ifdef WORD_REGISTER_OPERATIONS + || ((GET_MODE_SIZE (inmode) + < GET_MODE_SIZE (GET_MODE (SUBREG_REG (in)))) + && ((GET_MODE_SIZE (inmode) - 1) / UNITS_PER_WORD == + ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (in))) - 1) + / UNITS_PER_WORD))) #endif )) || (GET_CODE (SUBREG_REG (in)) == REG @@ -923,7 +930,7 @@ push_reload (in, out, inloc, outloc, class, in_subreg_loc = inloc; inloc = &SUBREG_REG (in); in = *inloc; -#ifndef LOAD_EXTEND_OP +#if ! defined (LOAD_EXTEND_OP) && ! defined (WORD_REGISTER_OPERATIONS) if (GET_CODE (in) == MEM) /* This is supposed to happen only for paradoxical subregs made by combine.c. (SUBREG (MEM)) isn't supposed to occur other ways. */ @@ -1027,7 +1034,7 @@ push_reload (in, out, inloc, outloc, class, out_subreg_loc = outloc; outloc = &SUBREG_REG (out); out = *outloc; -#ifndef LOAD_EXTEND_OP +#if ! defined (LOAD_EXTEND_OP) && ! defined (WORD_REGISTER_OPERATIONS) if (GET_CODE (out) == MEM && GET_MODE_SIZE (GET_MODE (out)) > GET_MODE_SIZE (outmode)) abort (); -- 2.30.2