From 62926f0b9cdcb60759994120091a28ab8e6f11ef Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 10 Jul 2001 11:25:32 +0000 Subject: [PATCH] emit-rtl.c (adjust_address, [...]): Change criteria for whether can put offset inside LO_SUM to check mode alignment... * emit-rtl.c (adjust_address, adjust_address_nv): Change criteria for whether can put offset inside LO_SUM to check mode alignment, not size. From-SVN: r43896 --- gcc/ChangeLog | 5 +++++ gcc/emit-rtl.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 101fbcf6817..840fd8306cc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Jul 10 07:27:53 2001 Richard Kenner + + * emit-rtl.c (adjust_address, adjust_address_nv): Change criteria for + whether can put offset inside LO_SUM to check mode alignment, not size. + 2001-07-10 Gabriel Dos Reis * doc/tm.texi (Misc): Fix thinko. diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 42137bf776d..eae04b6cff7 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1631,10 +1631,11 @@ adjust_address (memref, mode, offset) will do memref tracking. */ rtx addr = XEXP (memref, 0); - /* If MEMREF is a LO_SUM and the offset is within the size of the + /* If MEMREF is a LO_SUM and the offset is within the alignment of the object, we can merge it into the LO_SUM. */ if (GET_MODE (memref) != BLKmode && GET_CODE (addr) == LO_SUM - && offset >= 0 && offset < GET_MODE_SIZE (GET_MODE (memref))) + && offset >= 0 + && offset < GET_MODE_ALIGNMENT (GET_MODE (memref)) / BITS_PER_UNIT) addr = gen_rtx_LO_SUM (mode, XEXP (addr, 0), plus_constant (XEXP (addr, 1), offset)); else @@ -1658,7 +1659,8 @@ adjust_address_nv (memref, mode, offset) /* If MEMREF is a LO_SUM and the offset is within the size of the object, we can merge it into the LO_SUM. */ if (GET_MODE (memref) != BLKmode && GET_CODE (addr) == LO_SUM - && offset >= 0 && offset < GET_MODE_SIZE (GET_MODE (memref))) + && offset >= 0 + && offset < GET_MODE_ALIGNMENT (GET_MODE (memref)) / BITS_PER_UNIT) addr = gen_rtx_LO_SUM (mode, XEXP (addr, 0), plus_constant (XEXP (addr, 1), offset)); else -- 2.30.2