+2016-06-10 Alan Hayward <alan.hayward@arm.com>
+
+ PR tree-optimization/71407
+ PR tree-optimization/71416
+ * tree-vect-loop.c (vectorizable_live_operation): Use vectype for
+ BIT_FIELD_REF type.
+
2016-06-10 Richard Biener <rguenther@suse.de>
PR middle-end/71477
+2016-06-10 Alan Hayward <alan.hayward@arm.com>
+
+ PR tree-optimization/71407
+ PR tree-optimization/71416
+ * gcc.dg/vect/pr71407.c: New
+ * gcc.dg/vect/pr71416-1.c: New
+ * gcc.dg/vect/pr71416-2.c: New
+
2016-06-10 Richard Biener <rguenther@suse.de>
PR middle-end/71477
worklist.safe_push (use_stmt);
gcc_assert (worklist.length () == 1);
- bitsize = TYPE_SIZE (lhs_type);
+ bitsize = TYPE_SIZE (TREE_TYPE (vectype));
vec_bitsize = TYPE_SIZE (vectype);
/* Get the vectorized lhs of STMT and the lane to use (counted in bits). */
/* Create a new vectorized stmt for the uses of STMT and insert outside the
loop. */
- tree new_name = make_ssa_name (lhs_type);
- tree new_tree = build3 (BIT_FIELD_REF, lhs_type, vec_lhs, bitsize, bitstart);
- gimple *new_stmt = gimple_build_assign (new_name, new_tree);
- gsi_insert_on_edge_immediate (single_exit (loop), new_stmt);
+ gimple_seq stmts = NULL;
+ tree new_tree = build3 (BIT_FIELD_REF, TREE_TYPE (vectype), vec_lhs, bitsize,
+ bitstart);
+ new_tree = force_gimple_operand (fold_convert (lhs_type, new_tree), &stmts,
+ true, NULL_TREE);
+ if (stmts)
+ gsi_insert_seq_on_edge_immediate (single_exit (loop), stmts);
/* Replace all uses of the USE_STMT in the worklist with the newly inserted
statement. */
use_stmt = worklist.pop ();
- replace_uses_by (gimple_phi_result (use_stmt), new_name);
+ replace_uses_by (gimple_phi_result (use_stmt), new_tree);
update_stmt (use_stmt);
return true;