* tree-ssa-loop-ivopts.c (get_address_cost): Use right mode for offset.
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 4 Feb 2015 21:59:08 +0000 (21:59 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 4 Feb 2015 21:59:08 +0000 (21:59 +0000)
From-SVN: r220419

gcc/ChangeLog
gcc/tree-ssa-loop-ivopts.c

index 755ff3e53773a439d13fbc65714a49b48dc573f4..4a513fc601c42fdcd6b682b8d596b5f9696aa5a6 100644 (file)
@@ -1,3 +1,7 @@
+2015-02-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * tree-ssa-loop-ivopts.c (get_address_cost): Use right mode for offset.
+
 2015-02-04  Jan Hubicka  <hubicka@ucw.cz>
 
        PR middle-end/64922
index d50adb0f257cc302ee001b35d49ec4d8b654a25c..bde68e719ff0a537384c0eacaffe7bdc772483be 100644 (file)
@@ -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);