From 25c25947019a3e4628e8b382d7e1b00d9482d717 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 11 Jul 2002 21:03:51 +0000 Subject: [PATCH] combine.c (try_combine): When converting a paradoxical subreg to an extension... * combine.c (try_combine): When converting a paradoxical subreg to an extension, take LOAD_EXTEND_OP into account. From-SVN: r55404 --- gcc/ChangeLog | 5 +++++ gcc/combine.c | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34cbd0d3e84..aece9e4a123 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Jul 11 22:02:57 2002 J"orn Rennecke + + * combine.c (try_combine): When converting a paradoxical subreg + to an extension, take LOAD_EXTEND_OP into account. + 2002-07-11 Rainer Orth * config.gcc (mips-sgi-irix6*o32): New configuration. diff --git a/gcc/combine.c b/gcc/combine.c index e7f22553062..cd2e8df7b73 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2283,8 +2283,19 @@ try_combine (i3, i2, i1, new_direct_jump_p) /* If *SPLIT is a paradoxical SUBREG, when we split it, it should be written as a ZERO_EXTEND. */ if (split_code == SUBREG && GET_CODE (SUBREG_REG (*split)) == MEM) - SUBST (*split, gen_rtx_ZERO_EXTEND (split_mode, - SUBREG_REG (*split))); + { +#ifdef LOAD_EXTEND_OP + /* Or as a SIGN_EXTEND if LOAD_EXTEND_OP says that that's + what it really is. */ + if (LOAD_EXTEND_OP (GET_MODE (SUBREG_REG (*split))) + == SIGN_EXTEND) + SUBST (*split, gen_rtx_SIGN_EXTEND (split_mode, + SUBREG_REG (*split))); + else +#endif + SUBST (*split, gen_rtx_ZERO_EXTEND (split_mode, + SUBREG_REG (*split))); + } #endif newi2pat = gen_rtx_SET (VOIDmode, newdest, *split); -- 2.30.2