summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch
new file mode 100644
index 000000000..e3c000bb3
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0084-PR-tree-optimization-48377.patch
@@ -0,0 +1,68 @@
+From eba70fb9976ef047a8fb8dc6499c42e8fd3551f7 Mon Sep 17 00:00:00 2001
+From: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Fri, 8 Apr 2011 11:45:29 +0000
+Subject: [PATCH 084/200] PR tree-optimization/48377
+ * tree-vect-data-refs.c (vector_alignment_reachable_p): Set
+ is_packed to true even for types with smaller TYPE_ALIGN than
+ TYPE_SIZE.
+
+ * gcc.dg/vect/pr48377.c: New test.
+
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172174 138bc75d-0d04-0410-961f-82ee72b054a4
+
+index 5295c71..270462e 100644
+new file mode 100644
+index 0000000..e0cde43
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/pr48377.c
+@@ -0,0 +1,25 @@
++/* PR tree-optimization/48377 */
++/* { dg-do run } */
++
++typedef unsigned int U __attribute__((__aligned__ (1), __may_alias__));
++
++__attribute__((noinline, noclone)) unsigned int
++foo (const char *s, int len)
++{
++ const U *p = (const U *) s;
++ unsigned int f = len / sizeof (unsigned int), hash = len, i;
++
++ for (i = 0; i < f; ++i)
++ hash += *p++;
++ return hash;
++}
++
++char buf[64] __attribute__((aligned (32)));
++
++int
++main (void)
++{
++ return foo (buf + 1, 26) != 26;
++}
++
++/* { dg-final { cleanup-tree-dump "vect" } } */
+diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
+index 2c9936c..a1437b5 100644
+--- a/gcc/tree-vect-data-refs.c
++++ b/gcc/tree-vect-data-refs.c
+@@ -1,5 +1,5 @@
+ /* Data References Analysis and Manipulation Utilities for Vectorization.
+- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
++ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+ Free Software Foundation, Inc.
+ Contributed by Dorit Naishlos <dorit@il.ibm.com>
+ and Ira Rosen <irar@il.ibm.com>
+@@ -1143,6 +1143,9 @@ vector_alignment_reachable_p (struct data_reference *dr)
+ if (ba)
+ is_packed = contains_packed_reference (ba);
+
++ if (compare_tree_int (TYPE_SIZE (type), TYPE_ALIGN (type)) > 0)
++ is_packed = true;
++
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "Unknown misalignment, is_packed = %d",is_packed);
+ if (targetm.vectorize.vector_alignment_reachable (type, is_packed))
+--
+1.7.0.4
+