author | Stefan Teleman <stefan.teleman@oracle.com> |
Thu, 07 May 2015 10:31:56 -0700 | |
branch | s11-update |
changeset 4259 | 03635257972b |
parent 2569 | 9b54136e00bb |
permissions | -rw-r--r-- |
2569
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
1 |
# |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
2 |
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43430 |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
3 |
# http://patchwork.ozlabs.org/patch/64010/ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
4 |
# |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
5 |
# patch had to be re-written because it did not apply cleanly |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
6 |
# |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
7 |
# Bug Summary: when compiling FFmpeg with -ftree-vectorizer-verbose |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
8 |
# certain loops are not being vectorized. This is due to the following |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
9 |
# comparison test in gcc/tree-vect-stmts.c: |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
10 |
# |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
11 |
# if (TREE_TYPE (TREE_OPERAND (cond_expr, 0)) != TREE_TYPE (vectype)) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
12 |
# return false; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
13 |
# |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
14 |
# By replacing all the pointer equality comparisons with types_compatible_p |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
15 |
# comparisons, loops can now be vectorized (this is a very simplified |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
16 |
# description of the patch). |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
17 |
# |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
18 |
--- gcc-4.5.2/gcc/tree-vect-stmts.c 2010-11-02 05:12:56.000000000 -0700 |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
19 |
+++ gcc-4.5.2/gcc/tree-vect-stmts.c 2013-02-12 15:35:40.852464111 -0800 |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
20 |
@@ -4041,16 +4041,18 @@ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
21 |
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
22 |
enum machine_mode vec_mode; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
23 |
tree def; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
24 |
- enum vect_def_type dt; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
25 |
+ enum vect_def_type dt, dts[4]; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
26 |
int nunits = TYPE_VECTOR_SUBPARTS (vectype); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
27 |
int ncopies = LOOP_VINFO_VECT_FACTOR (loop_vinfo) / nunits; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
28 |
enum tree_code code; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
29 |
+ stmt_vec_info prev_stmt_info = NULL; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
30 |
+ int j; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
31 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
32 |
/* FORNOW: unsupported in basic block SLP. */ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
33 |
gcc_assert (loop_vinfo); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
34 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
35 |
gcc_assert (ncopies >= 1); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
36 |
- if (ncopies > 1) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
37 |
+ if (reduc_index && ncopies > 1) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
38 |
return false; /* FORNOW */ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
39 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
40 |
if (!STMT_VINFO_RELEVANT_P (stmt_info)) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
41 |
@@ -4137,18 +4139,51 @@ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
42 |
vec_dest = vect_create_destination_var (scalar_dest, vectype); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
43 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
44 |
/* Handle cond expr. */ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
45 |
+ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
46 |
+ for (j = 0; j < ncopies; j++) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
47 |
+ { |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
48 |
+ gimple new_stmt; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
49 |
+ if (j == 0) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
50 |
+ { |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
51 |
+ gimple gtemp; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
52 |
vec_cond_lhs = |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
53 |
- vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 0), stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
54 |
+ vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 0), |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
55 |
+ stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
56 |
+ vect_is_simple_use (TREE_OPERAND (cond_expr, 0), loop_vinfo, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
57 |
+ NULL, >emp, &def, &dts[0]); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
58 |
vec_cond_rhs = |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
59 |
- vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 1), stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
60 |
+ vect_get_vec_def_for_operand (TREE_OPERAND (cond_expr, 1), |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
61 |
+ stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
62 |
+ vect_is_simple_use (TREE_OPERAND (cond_expr, 1), loop_vinfo, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
63 |
+ NULL, >emp, &def, &dts[1]); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
64 |
if (reduc_index == 1) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
65 |
vec_then_clause = reduc_def; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
66 |
else |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
67 |
- vec_then_clause = vect_get_vec_def_for_operand (then_clause, stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
68 |
+ { |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
69 |
+ vec_then_clause = vect_get_vec_def_for_operand (then_clause, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
70 |
+ stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
71 |
+ vect_is_simple_use (then_clause, loop_vinfo, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
72 |
+ NULL, >emp, &def, &dts[2]); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
73 |
+ } |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
74 |
if (reduc_index == 2) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
75 |
vec_else_clause = reduc_def; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
76 |
else |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
77 |
- vec_else_clause = vect_get_vec_def_for_operand (else_clause, stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
78 |
+ { |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
79 |
+ vec_else_clause = vect_get_vec_def_for_operand (else_clause, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
80 |
+ stmt, NULL); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
81 |
+ vect_is_simple_use (else_clause, loop_vinfo, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
82 |
+ NULL, >emp, &def, &dts[3]); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
83 |
+ } |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
84 |
+ } |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
85 |
+ else |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
86 |
+ { |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
87 |
+ vec_cond_lhs = vect_get_vec_def_for_stmt_copy (dts[0], vec_cond_lhs); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
88 |
+ vec_cond_rhs = vect_get_vec_def_for_stmt_copy (dts[1], vec_cond_rhs); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
89 |
+ vec_then_clause = vect_get_vec_def_for_stmt_copy (dts[2], |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
90 |
+ vec_then_clause); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
91 |
+ vec_else_clause = vect_get_vec_def_for_stmt_copy (dts[3], |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
92 |
+ vec_else_clause); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
93 |
+ } |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
94 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
95 |
/* Arguments are ready. Create the new vector stmt. */ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
96 |
vec_compare = build2 (TREE_CODE (cond_expr), vectype, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
97 |
@@ -4156,10 +4191,17 @@ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
98 |
vec_cond_expr = build3 (VEC_COND_EXPR, vectype, |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
99 |
vec_compare, vec_then_clause, vec_else_clause); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
100 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
101 |
- *vec_stmt = gimple_build_assign (vec_dest, vec_cond_expr); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
102 |
- new_temp = make_ssa_name (vec_dest, *vec_stmt); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
103 |
- gimple_assign_set_lhs (*vec_stmt, new_temp); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
104 |
- vect_finish_stmt_generation (stmt, *vec_stmt, gsi); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
105 |
+ new_stmt = gimple_build_assign (vec_dest, vec_cond_expr); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
106 |
+ new_temp = make_ssa_name (vec_dest, new_stmt); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
107 |
+ gimple_assign_set_lhs (new_stmt, new_temp); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
108 |
+ vect_finish_stmt_generation (stmt, new_stmt, gsi); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
109 |
+ if (j == 0) |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
110 |
+ STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
111 |
+ else |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
112 |
+ STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
113 |
+ |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
114 |
+ prev_stmt_info = vinfo_for_stmt (new_stmt); |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
115 |
+ } |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
116 |
|
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
117 |
return true; |
9b54136e00bb
16325156 gcc 4.5.2 testsuite fails pr43430-1.c scan-tree-dump-times testcase
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
118 |
} |