summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch154
1 files changed, 0 insertions, 154 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch
deleted file mode 100644
index 681d4b0..0000000
--- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0077-Backport-from-mainline.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 354f280d6446d87730bacabf798f88a7aedd1af1 Mon Sep 17 00:00:00 2001
-From: abel <abel@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Thu, 7 Apr 2011 12:07:24 +0000
-Subject: [PATCH] Backport from mainline
- 2011-03-26 Andrey Belevantsev <abel@ispras.ru>
-
- PR rtl-optimization/48144
- * sel-sched-ir.c (merge_history_vect): Factor out from ...
- (merge_expr_data): ... here.
- (av_set_intersect): Rename to av_set_code_motion_filter.
- Update all callers. Call merge_history_vect when an
- expression is found in both sets.
- * sel-sched-ir.h (av_set_code_motion_filter): Add prototype.
-
-
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172097 138bc75d-0d04-0410-961f-82ee72b054a4
-
-index b88dad1..61f3ffb 100644
---- a/gcc/sel-sched-ir.c
-+++ b/gcc/sel-sched-ir.c
-@@ -1564,6 +1564,20 @@ free_history_vect (VEC (expr_history_def, heap) **pvect)
- *pvect = NULL;
- }
-
-+/* Merge vector FROM to PVECT. */
-+static void
-+merge_history_vect (VEC (expr_history_def, heap) **pvect,
-+ VEC (expr_history_def, heap) *from)
-+{
-+ expr_history_def *phist;
-+ int i;
-+
-+ /* We keep this vector sorted. */
-+ for (i = 0; VEC_iterate (expr_history_def, from, i, phist); i++)
-+ insert_in_history_vect (pvect, phist->uid, phist->type,
-+ phist->old_expr_vinsn, phist->new_expr_vinsn,
-+ phist->spec_ds);
-+}
-
- /* Compare two vinsns as rhses if possible and as vinsns otherwise. */
- bool
-@@ -1796,9 +1810,6 @@ update_speculative_bits (expr_t to, expr_t from, insn_t split_point)
- void
- merge_expr_data (expr_t to, expr_t from, insn_t split_point)
- {
-- int i;
-- expr_history_def *phist;
--
- /* For now, we just set the spec of resulting expr to be minimum of the specs
- of merged exprs. */
- if (EXPR_SPEC (to) > EXPR_SPEC (from))
-@@ -1822,20 +1833,12 @@ merge_expr_data (expr_t to, expr_t from, insn_t split_point)
- EXPR_ORIG_SCHED_CYCLE (to) = MIN (EXPR_ORIG_SCHED_CYCLE (to),
- EXPR_ORIG_SCHED_CYCLE (from));
-
-- /* We keep this vector sorted. */
-- for (i = 0;
-- VEC_iterate (expr_history_def, EXPR_HISTORY_OF_CHANGES (from),
-- i, phist);
-- i++)
-- insert_in_history_vect (&EXPR_HISTORY_OF_CHANGES (to),
-- phist->uid, phist->type,
-- phist->old_expr_vinsn, phist->new_expr_vinsn,
-- phist->spec_ds);
--
- EXPR_WAS_SUBSTITUTED (to) |= EXPR_WAS_SUBSTITUTED (from);
- EXPR_WAS_RENAMED (to) |= EXPR_WAS_RENAMED (from);
- EXPR_CANT_MOVE (to) |= EXPR_CANT_MOVE (from);
-
-+ merge_history_vect (&EXPR_HISTORY_OF_CHANGES (to),
-+ EXPR_HISTORY_OF_CHANGES (from));
- update_target_availability (to, from, split_point);
- update_speculative_bits (to, from, split_point);
- }
-@@ -2328,16 +2331,24 @@ av_set_split_usefulness (av_set_t av, int prob, int all_prob)
- }
-
- /* Leave in AVP only those expressions, which are present in AV,
-- and return it. */
-+ and return it, merging history expressions. */
- void
--av_set_intersect (av_set_t *avp, av_set_t av)
-+av_set_code_motion_filter (av_set_t *avp, av_set_t av)
- {
- av_set_iterator i;
-- expr_t expr;
-+ expr_t expr, expr2;
-
- FOR_EACH_EXPR_1 (expr, i, avp)
-- if (av_set_lookup (av, EXPR_VINSN (expr)) == NULL)
-+ if ((expr2 = av_set_lookup (av, EXPR_VINSN (expr))) == NULL)
- av_set_iter_remove (&i);
-+ else
-+ /* When updating av sets in bookkeeping blocks, we can add more insns
-+ there which will be transformed but the upper av sets will not
-+ reflect those transformations. We then fail to undo those
-+ when searching for such insns. So merge the history saved
-+ in the av set of the block we are processing. */
-+ merge_history_vect (&EXPR_HISTORY_OF_CHANGES (expr),
-+ EXPR_HISTORY_OF_CHANGES (expr2));
- }
-
-
-diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
-index 1f3dec4..5516da9 100644
---- a/gcc/sel-sched-ir.h
-+++ b/gcc/sel-sched-ir.h
-@@ -1565,7 +1565,7 @@ extern void av_set_leave_one_nonspec (av_set_t *);
- extern expr_t av_set_element (av_set_t, int);
- extern void av_set_substract_cond_branches (av_set_t *);
- extern void av_set_split_usefulness (av_set_t, int, int);
--extern void av_set_intersect (av_set_t *, av_set_t);
-+extern void av_set_code_motion_filter (av_set_t *, av_set_t);
-
- extern void sel_save_haifa_priorities (void);
-
-diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
-index e26ddac..9179249 100644
---- a/gcc/sel-sched.c
-+++ b/gcc/sel-sched.c
-@@ -6481,7 +6481,7 @@ code_motion_path_driver (insn_t insn, av_set_t orig_ops, ilist_t path,
-
- /* Filter the orig_ops set. */
- if (AV_SET_VALID_P (insn))
-- av_set_intersect (&orig_ops, AV_SET (insn));
-+ av_set_code_motion_filter (&orig_ops, AV_SET (insn));
-
- /* If no more original ops, return immediately. */
- if (!orig_ops)
-new file mode 100644
-index 0000000..030202d
---- /dev/null
-+++ b/gcc/testsuite/gcc.dg/pr48144.c
-@@ -0,0 +1,16 @@
-+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
-+/* { dg-options "-O -frerun-cse-after-loop -fschedule-insns2 -fselective-scheduling2 -fno-tree-ch -funroll-loops --param=max-sched-extend-regions-iters=2 --param=max-sched-region-blocks=15" } */
-+extern void *memcpy(void *dest, const void *src, __SIZE_TYPE__ n);
-+
-+void bar (void *, void *, void *);
-+
-+void foo
-+ (void *p, char *data, unsigned data_len)
-+{
-+ int buffer[8];
-+ int buf2[8];
-+ unsigned i;
-+ for (i = 0; i + 8 <= data_len; i += 8)
-+ bar (p, buffer, data + i);
-+ memcpy (buf2, data + i, data_len);
-+}
---
-1.7.0.4
-
OpenPOWER on IntegriCloud