diff options
Diffstat (limited to 'toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106853.patch')
-rw-r--r-- | toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106853.patch | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106853.patch b/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106853.patch deleted file mode 100644 index 8c51c1d1f3..0000000000 --- a/toolchain-layer/recipes-devtools/gcc/gcc-4.6/linaro/gcc-4.6-linaro-r106853.patch +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | 2011-12-20 Ira Rosen <ira.rosen@linaro.org> | ||
2 | |||
3 | Backport from mainline: | ||
4 | |||
5 | 2011-11-29 Ira Rosen <ira.rosen@linaro.org> | ||
6 | |||
7 | PR tree-optimization/51301 | ||
8 | gcc/ | ||
9 | * tree-vect-patterns.c (vect_recog_over_widening_pattern): Check that | ||
10 | the last statement doesn't convert to a bigger type than the original | ||
11 | type of the computation. | ||
12 | |||
13 | gcc/testsuite/ | ||
14 | * gcc.dg/vect/pr51301.c: New test. | ||
15 | |||
16 | === added file 'gcc/testsuite/gcc.dg/vect/pr51301.c' | ||
17 | --- old/gcc/testsuite/gcc.dg/vect/pr51301.c 1970-01-01 00:00:00 +0000 | ||
18 | +++ new/gcc/testsuite/gcc.dg/vect/pr51301.c 2011-11-30 17:54:51 +0000 | ||
19 | @@ -0,0 +1,15 @@ | ||
20 | +/* { dg-do compile } */ | ||
21 | + | ||
22 | +typedef signed char int8_t; | ||
23 | +typedef signed long long int64_t; | ||
24 | +int64_t | ||
25 | +f0a (int8_t * __restrict__ arg1) | ||
26 | +{ | ||
27 | + int idx; | ||
28 | + int64_t result = 0; | ||
29 | + for (idx = 0; idx < 416; idx += 1) | ||
30 | + result += arg1[idx] << (arg1[idx] == arg1[idx]); | ||
31 | + return result; | ||
32 | +} | ||
33 | + | ||
34 | +/* { dg-final { cleanup-tree-dump "vect" } } */ | ||
35 | |||
36 | === modified file 'gcc/tree-vect-patterns.c' | ||
37 | --- old/gcc/tree-vect-patterns.c 2011-11-27 12:17:31 +0000 | ||
38 | +++ new/gcc/tree-vect-patterns.c 2011-12-20 07:47:44 +0000 | ||
39 | @@ -1138,6 +1138,7 @@ | ||
40 | struct loop *loop = NULL; | ||
41 | bb_vec_info bb_vinfo; | ||
42 | stmt_vec_info stmt_vinfo; | ||
43 | + tree type = NULL; | ||
44 | |||
45 | stmt_vinfo = vinfo_for_stmt (stmt); | ||
46 | loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo); | ||
47 | @@ -1207,6 +1208,7 @@ | ||
48 | print_gimple_stmt (vect_dump, pattern_stmt, 0, TDF_SLIM); | ||
49 | } | ||
50 | |||
51 | + type = gimple_expr_type (stmt); | ||
52 | prev_stmt = stmt; | ||
53 | stmt = use_stmt; | ||
54 | |||
55 | @@ -1222,9 +1224,11 @@ | ||
56 | { | ||
57 | use_lhs = gimple_assign_lhs (use_stmt); | ||
58 | use_type = TREE_TYPE (use_lhs); | ||
59 | - /* Support only type promotion or signedess change. */ | ||
60 | + /* Support only type promotion or signedess change. Check that USE_TYPE | ||
61 | + is not bigger than the original type. */ | ||
62 | if (!INTEGRAL_TYPE_P (use_type) | ||
63 | - || TYPE_PRECISION (new_type) > TYPE_PRECISION (use_type)) | ||
64 | + || TYPE_PRECISION (new_type) > TYPE_PRECISION (use_type) | ||
65 | + || TYPE_PRECISION (type) < TYPE_PRECISION (use_type)) | ||
66 | return NULL; | ||
67 | |||
68 | if (TYPE_UNSIGNED (new_type) != TYPE_UNSIGNED (use_type) | ||
69 | |||