aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106821.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106821.patch')
-rw-r--r--toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106821.patch240
1 files changed, 0 insertions, 240 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106821.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106821.patch
deleted file mode 100644
index f25a37858d..0000000000
--- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106821.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-2011-10-06 Ira Rosen <ira.rosen@linaro.org>
-
- gcc/testsuite/
- * gcc.dg/vect/bb-slp-26.c: Simplify to make the basic block
- vectorizable.
-
- Backport from mainline:
-
- 2011-09-25 Ira Rosen <ira.rosen@linaro.org>
-
- gcc/
- * tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part
- of vect_analyze_bb here.
- (vect_analyze_bb): Loop over vector sizes calling vect_analyze_bb_1.
-
- gcc/testsuite/
- * lib/target-supports.exp (check_effective_target_vect64): New.
- * gcc.dg/vect/bb-slp-11.c: Expect the error message twice in case
- of multiple vector sizes.
- * gcc.dg/vect/bb-slp-26.c: New.
-
-=== modified file 'gcc/testsuite/gcc.dg/vect/bb-slp-11.c'
---- old/gcc/testsuite/gcc.dg/vect/bb-slp-11.c 2010-11-22 12:16:52 +0000
-+++ new/gcc/testsuite/gcc.dg/vect/bb-slp-11.c 2011-10-02 10:40:34 +0000
-@@ -49,6 +49,7 @@
- }
-
- /* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 0 "slp" } } */
--/* { dg-final { scan-tree-dump-times "SLP with multiple types" 1 "slp" } } */
-+/* { dg-final { scan-tree-dump-times "SLP with multiple types" 1 "slp" { xfail vect_multiple_sizes } } } */
-+/* { dg-final { scan-tree-dump-times "SLP with multiple types" 2 "slp" { target vect_multiple_sizes } } } */
- /* { dg-final { cleanup-tree-dump "slp" } } */
-
-
-=== added file 'gcc/testsuite/gcc.dg/vect/bb-slp-26.c'
---- old/gcc/testsuite/gcc.dg/vect/bb-slp-26.c 1970-01-01 00:00:00 +0000
-+++ new/gcc/testsuite/gcc.dg/vect/bb-slp-26.c 2011-10-02 10:40:34 +0000
-@@ -0,0 +1,60 @@
-+/* { dg-require-effective-target vect_int } */
-+
-+#include <stdarg.h>
-+#include "tree-vect.h"
-+
-+#define A 3
-+#define B 4
-+#define N 256
-+
-+char src[N], dst[N];
-+
-+void foo (char * __restrict__ dst, char * __restrict__ src, int h,
-+ int stride, int dummy)
-+{
-+ int i;
-+ h /= 16;
-+ for (i = 0; i < h; i++)
-+ {
-+ dst[0] += A*src[0];
-+ dst[1] += A*src[1];
-+ dst[2] += A*src[2];
-+ dst[3] += A*src[3];
-+ dst[4] += A*src[4];
-+ dst[5] += A*src[5];
-+ dst[6] += A*src[6];
-+ dst[7] += A*src[7];
-+ dst += 8;
-+ src += 8;
-+ if (dummy == 32)
-+ abort ();
-+ }
-+}
-+
-+
-+int main (void)
-+{
-+ int i;
-+
-+ check_vect ();
-+
-+ for (i = 0; i < N; i++)
-+ {
-+ dst[i] = 0;
-+ src[i] = i/8;
-+ }
-+
-+ foo (dst, src, N, 8, 0);
-+
-+ for (i = 0; i < N/2; i++)
-+ {
-+ if (dst[i] != A * src[i])
-+ abort ();
-+ }
-+
-+ return 0;
-+}
-+
-+/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect64 } } } */
-+/* { dg-final { cleanup-tree-dump "slp" } } */
-+
-
-=== modified file 'gcc/testsuite/lib/target-supports.exp'
---- old/gcc/testsuite/lib/target-supports.exp 2011-09-20 07:54:28 +0000
-+++ new/gcc/testsuite/lib/target-supports.exp 2011-10-02 10:40:34 +0000
-@@ -3283,6 +3283,24 @@
- return $et_vect_multiple_sizes_saved
- }
-
-+# Return 1 if the target supports vectors of 64 bits.
-+
-+proc check_effective_target_vect64 { } {
-+ global et_vect64
-+
-+ if [info exists et_vect64_saved] {
-+ verbose "check_effective_target_vect64: using cached result" 2
-+ } else {
-+ set et_vect64_saved 0
-+ if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok]) } {
-+ set et_vect64_saved 1
-+ }
-+ }
-+
-+ verbose "check_effective_target_vect64: returning $et_vect64_saved" 2
-+ return $et_vect64_saved
-+}
-+
- # Return 1 if the target supports section-anchors
-
- proc check_effective_target_section_anchors { } {
-
-=== modified file 'gcc/tree-vect-slp.c'
---- old/gcc/tree-vect-slp.c 2011-07-06 12:04:10 +0000
-+++ new/gcc/tree-vect-slp.c 2011-10-02 10:40:34 +0000
-@@ -1664,42 +1664,18 @@
-
- /* Check if the basic block can be vectorized. */
-
--bb_vec_info
--vect_slp_analyze_bb (basic_block bb)
-+static bb_vec_info
-+vect_slp_analyze_bb_1 (basic_block bb)
- {
- bb_vec_info bb_vinfo;
- VEC (ddr_p, heap) *ddrs;
- VEC (slp_instance, heap) *slp_instances;
- slp_instance instance;
-- int i, insns = 0;
-- gimple_stmt_iterator gsi;
-+ int i;
- int min_vf = 2;
- int max_vf = MAX_VECTORIZATION_FACTOR;
- bool data_dependence_in_bb = false;
-
-- current_vector_size = 0;
--
-- if (vect_print_dump_info (REPORT_DETAILS))
-- fprintf (vect_dump, "===vect_slp_analyze_bb===\n");
--
-- for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
-- {
-- gimple stmt = gsi_stmt (gsi);
-- if (!is_gimple_debug (stmt)
-- && !gimple_nop_p (stmt)
-- && gimple_code (stmt) != GIMPLE_LABEL)
-- insns++;
-- }
--
-- if (insns > PARAM_VALUE (PARAM_SLP_MAX_INSNS_IN_BB))
-- {
-- if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
-- fprintf (vect_dump, "not vectorized: too many instructions in basic "
-- "block.\n");
--
-- return NULL;
-- }
--
- bb_vinfo = new_bb_vec_info (bb);
- if (!bb_vinfo)
- return NULL;
-@@ -1819,6 +1795,61 @@
- }
-
-
-+bb_vec_info
-+vect_slp_analyze_bb (basic_block bb)
-+{
-+ bb_vec_info bb_vinfo;
-+ int insns = 0;
-+ gimple_stmt_iterator gsi;
-+ unsigned int vector_sizes;
-+
-+ if (vect_print_dump_info (REPORT_DETAILS))
-+ fprintf (vect_dump, "===vect_slp_analyze_bb===\n");
-+
-+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
-+ {
-+ gimple stmt = gsi_stmt (gsi);
-+ if (!is_gimple_debug (stmt)
-+ && !gimple_nop_p (stmt)
-+ && gimple_code (stmt) != GIMPLE_LABEL)
-+ insns++;
-+ }
-+
-+ if (insns > PARAM_VALUE (PARAM_SLP_MAX_INSNS_IN_BB))
-+ {
-+ if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
-+ fprintf (vect_dump, "not vectorized: too many instructions in basic "
-+ "block.\n");
-+
-+ return NULL;
-+ }
-+
-+ /* Autodetect first vector size we try. */
-+ current_vector_size = 0;
-+ vector_sizes = targetm.vectorize.autovectorize_vector_sizes ();
-+
-+ while (1)
-+ {
-+ bb_vinfo = vect_slp_analyze_bb_1 (bb);
-+ if (bb_vinfo)
-+ return bb_vinfo;
-+
-+ destroy_bb_vec_info (bb_vinfo);
-+
-+ vector_sizes &= ~current_vector_size;
-+ if (vector_sizes == 0
-+ || current_vector_size == 0)
-+ return NULL;
-+
-+ /* Try the next biggest vector size. */
-+ current_vector_size = 1 << floor_log2 (vector_sizes);
-+ if (vect_print_dump_info (REPORT_DETAILS))
-+ fprintf (vect_dump, "***** Re-trying analysis with "
-+ "vector size %d\n", current_vector_size);
-+ }
-+}
-+
-+
- /* SLP costs are calculated according to SLP instance unrolling factor (i.e.,
- the number of created vector stmts depends on the unrolling factor).
- However, the actual number of vector stmts for every SLP node depends on
-