summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/gcc/r160561.patch
diff options
context:
space:
mode:
authorCecil Hugh Watson <knoppmyth@gmail.com>2010-09-04 22:58:18 (GMT)
committerCecil Hugh Watson <knoppmyth@gmail.com>2010-09-04 22:58:18 (GMT)
commit947b0a71611be195c3d099bc247d9bdd194467e7 (patch)
tree675d6e52ed56b70d52bc94302854154effad1e9b /abs/core-testing/gcc/r160561.patch
parentdc0c8146a39dca5deb78e6afb7a7234de4e1b21e (diff)
downloadlinhes_pkgbuild-947b0a71611be195c3d099bc247d9bdd194467e7.zip
linhes_pkgbuild-947b0a71611be195c3d099bc247d9bdd194467e7.tar.gz
linhes_pkgbuild-947b0a71611be195c3d099bc247d9bdd194467e7.tar.bz2
gcc:Bumped/Updated for LinHES 7.
Diffstat (limited to 'abs/core-testing/gcc/r160561.patch')
-rw-r--r--abs/core-testing/gcc/r160561.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/abs/core-testing/gcc/r160561.patch b/abs/core-testing/gcc/r160561.patch
new file mode 100644
index 0000000..f3c386b
--- /dev/null
+++ b/abs/core-testing/gcc/r160561.patch
@@ -0,0 +1,64 @@
+--- trunk/gcc/tree-sra.c 2010/06/10 16:44:04 160560
++++ trunk/gcc/tree-sra.c 2010/06/10 16:49:09 160561
+@@ -1689,9 +1689,10 @@
+
+ /* Build a subtree of accesses rooted in *ACCESS, and move the pointer in the
+ linked list along the way. Stop when *ACCESS is NULL or the access pointed
+- to it is not "within" the root. */
++ to it is not "within" the root. Return false iff some accesses partially
++ overlap. */
+
+-static void
++static bool
+ build_access_subtree (struct access **access)
+ {
+ struct access *root = *access, *last_child = NULL;
+@@ -1706,24 +1707,32 @@
+ last_child->next_sibling = *access;
+ last_child = *access;
+
+- build_access_subtree (access);
++ if (!build_access_subtree (access))
++ return false;
+ }
++
++ if (*access && (*access)->offset < limit)
++ return false;
++
++ return true;
+ }
+
+ /* Build a tree of access representatives, ACCESS is the pointer to the first
+- one, others are linked in a list by the next_grp field. Decide about scalar
+- replacements on the way, return true iff any are to be created. */
++ one, others are linked in a list by the next_grp field. Return false iff
++ some accesses partially overlap. */
+
+-static void
++static bool
+ build_access_trees (struct access *access)
+ {
+ while (access)
+ {
+ struct access *root = access;
+
+- build_access_subtree (&access);
++ if (!build_access_subtree (&access))
++ return false;
+ root->next_grp = access;
+ }
++ return true;
+ }
+
+ /* Return true if expr contains some ARRAY_REFs into a variable bounded
+@@ -2062,9 +2071,7 @@
+ struct access *access;
+
+ access = sort_and_splice_var_accesses (var);
+- if (access)
+- build_access_trees (access);
+- else
++ if (!access || !build_access_trees (access))
+ disqualify_candidate (var,
+ "No or inhibitingly overlapping accesses.");
+ }