OSDN Git Service

Backport from mainline:
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Jul 2011 08:39:39 +0000 (08:39 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 28 Jul 2011 08:39:39 +0000 (08:39 +0000)
2011-07-26  Martin Jambor  <mjambor@suse.cz>

* tree-sra.c (tree_non_mode_aligned_mem_p): Strip conversions and
return false for invariants.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@176864 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-sra.c

index 4ebea1d..18b5414 100644 (file)
@@ -1,3 +1,11 @@
+2011-07-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+       Backport from mainline:
+       2011-07-26  Martin Jambor  <mjambor@suse.cz>
+
+       * tree-sra.c (tree_non_mode_aligned_mem_p): Strip conversions and
+       return false for invariants.
+
 2011-07-27  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/49866
index 7a2f0fc..a92633a 100644 (file)
@@ -1028,9 +1028,13 @@ tree_non_mode_aligned_mem_p (tree exp)
   enum machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
   unsigned int align;
 
+  if (TREE_CODE (exp) == VIEW_CONVERT_EXPR)
+    exp = TREE_OPERAND (exp, 0);
+
   if (TREE_CODE (exp) == SSA_NAME
       || TREE_CODE (exp) == MEM_REF
       || mode == BLKmode
+      || is_gimple_min_invariant (exp)
       || !STRICT_ALIGNMENT)
     return false;