From 5a33f47d99d787af43fc8b27c29cea4e5c1432d8 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Wed, 4 Feb 2015 21:59:08 +0000 Subject: [PATCH] * tree-ssa-loop-ivopts.c (get_address_cost): Use right mode for offset. From-SVN: r220419 --- gcc/ChangeLog | 4 ++++ gcc/tree-ssa-loop-ivopts.c | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 755ff3e..4a513fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2015-02-04 Eric Botcazou + + * tree-ssa-loop-ivopts.c (get_address_cost): Use right mode for offset. + 2015-02-04 Jan Hubicka PR middle-end/64922 diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index d50adb0..bde68e7 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -3324,12 +3324,12 @@ get_address_cost (bool symbol_present, bool var_present, XEXP (addr, 1) = gen_int_mode (off, address_mode); if (memory_address_addr_space_p (mem_mode, addr, as)) break; - /* For some TARGET, like ARM THUMB1, the offset should be nature - aligned. Try an aligned offset if address_mode is not QImode. */ - off = (address_mode == QImode) - ? 0 - : ((unsigned HOST_WIDE_INT) 1 << i) - - GET_MODE_SIZE (address_mode); + /* For some strict-alignment targets, the offset must be naturally + aligned. Try an aligned offset if mem_mode is not QImode. */ + off = mem_mode != QImode + ? ((unsigned HOST_WIDE_INT) 1 << i) + - GET_MODE_SIZE (mem_mode) + : 0; if (off > 0) { XEXP (addr, 1) = gen_int_mode (off, address_mode); -- 2.7.4