From 23ed92ca4c901a654040989a067819c1f0b77860 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Fri, 20 Jan 1995 17:23:12 -0800 Subject: [PATCH] (machine_dependent_reorg): When remove SUBREG, add in SUBREG_WORD to new register number. From-SVN: r8778 --- gcc/config/sh/sh.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index ce64a4e50a2..fac1a76e593 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -1961,10 +1961,14 @@ machine_dependent_reorg (first) if (mode == SImode && hi_const (src)) { /* This is an HI source, clobber the dest to get the mode right too */ + int offset = 0; mode = HImode; while (GET_CODE (dst) == SUBREG) - dst = SUBREG_REG (dst); - dst = gen_rtx (REG, HImode, REGNO (dst)); + { + offset += SUBREG_WORD (dst); + dst = SUBREG_REG (dst); + } + dst = gen_rtx (REG, HImode, REGNO (dst) + offset); } lab = add_constant (src, mode); newsrc = gen_rtx (MEM, mode, -- 2.30.2