From d7041732999cc4ab850ff823358b34eba59af6bf Mon Sep 17 00:00:00 2001 From: uweigand Date: Thu, 28 Oct 2004 12:47:21 +0000 Subject: PR target/15286 * final.c (alter_subreg): Compute correct offset to use with paradoxical SUBREGs of memory operands. * recog.c (general_operand): Allow paradoxical SUBREGs of memory operands after reload. * simplify-rtx.c (simplify_gen_subreg): Fail if simplify_subreg has failed when passed a hard register. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89752 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/recog.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'gcc/recog.c') diff --git a/gcc/recog.c b/gcc/recog.c index 61e1186d07a..eeb37afe9bb 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -936,8 +936,10 @@ general_operand (rtx op, enum machine_mode mode) #ifdef INSN_SCHEDULING /* On machines that have insn scheduling, we want all memory - reference to be explicit, so outlaw paradoxical SUBREGs. */ - if (MEM_P (sub) + reference to be explicit, so outlaw paradoxical SUBREGs. + However, we must allow them after reload so that they can + get cleaned up by cleanup_subreg_operands. */ + if (!reload_completed && MEM_P (sub) && GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (sub))) return 0; #endif -- cgit v1.2.1