aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-transform.c
diff options
context:
space:
mode:
authorDorit Nuzman <dorit@il.ibm.com>2005-08-09 15:58:59 +0000
committerDorit Nuzman <dorit@gcc.gnu.org>2005-08-09 15:58:59 +0000
commit0ed414a4f6aa5a2d5fb5e2b6b3e508333cea047e (patch)
tree7ef85fe001b20d7e65640fb991108889be50583f /gcc/tree-vect-transform.c
parent323dff9a7c3c468744d3345166806633fceef95e (diff)
downloadgcc-0ed414a4f6aa5a2d5fb5e2b6b3e508333cea047e.zip
gcc-0ed414a4f6aa5a2d5fb5e2b6b3e508333cea047e.tar.gz
gcc-0ed414a4f6aa5a2d5fb5e2b6b3e508333cea047e.tar.bz2
tree-vect-transform.c (vect_create_epilog_for_reduction): Set BIT_FIELD_REF_UNSIGNED for newly created BIT_FIELD_REFs.
* tree-vect-transform.c (vect_create_epilog_for_reduction): Set BIT_FIELD_REF_UNSIGNED for newly created BIT_FIELD_REFs. From-SVN: r102913
Diffstat (limited to 'gcc/tree-vect-transform.c')
-rw-r--r--gcc/tree-vect-transform.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
index 9dab8bc..1923cbc 100644
--- a/gcc/tree-vect-transform.c
+++ b/gcc/tree-vect-transform.c
@@ -1021,9 +1021,12 @@ vect_create_epilog_for_reduction (tree vect_def, tree stmt, tree reduction_op,
&& (integer_zerop (scalar_initial_def)
|| real_zerop (scalar_initial_def)))
{
- epilog_stmt = build2 (MODIFY_EXPR, scalar_type, new_scalar_dest,
- build3 (BIT_FIELD_REF, scalar_type,
- vec_temp, bitsize, bitsize_zero_node));
+ tree rhs = build3 (BIT_FIELD_REF, scalar_type, vec_temp, bitsize,
+ bitsize_zero_node);
+
+ BIT_FIELD_REF_UNSIGNED (rhs) = TYPE_UNSIGNED (scalar_type);
+ epilog_stmt = build2 (MODIFY_EXPR, scalar_type, new_scalar_dest,
+ rhs);
new_temp = make_ssa_name (new_scalar_dest, epilog_stmt);
TREE_OPERAND (epilog_stmt, 0) = new_temp;
bsi_insert_after (&exit_bsi, epilog_stmt, BSI_NEW_STMT);
@@ -1043,10 +1046,12 @@ vect_create_epilog_for_reduction (tree vect_def, tree stmt, tree reduction_op,
bit_offset += element_bitsize)
{
tree bitpos = bitsize_int (bit_offset);
-
+ tree rhs = build3 (BIT_FIELD_REF, scalar_type, vec_temp, bitsize,
+ bitpos);
+
+ BIT_FIELD_REF_UNSIGNED (rhs) = TYPE_UNSIGNED (scalar_type);
epilog_stmt = build2 (MODIFY_EXPR, scalar_type, new_scalar_dest,
- build3 (BIT_FIELD_REF, scalar_type,
- vec_temp, bitsize, bitpos));
+ rhs);
new_name = make_ssa_name (new_scalar_dest, epilog_stmt);
TREE_OPERAND (epilog_stmt, 0) = new_name;
bsi_insert_after (&exit_bsi, epilog_stmt, BSI_NEW_STMT);
@@ -1074,6 +1079,8 @@ vect_create_epilog_for_reduction (tree vect_def, tree stmt, tree reduction_op,
if (extract_scalar_result)
{
+ tree rhs;
+
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "extract scalar result");
@@ -1085,9 +1092,9 @@ vect_create_epilog_for_reduction (tree vect_def, tree stmt, tree reduction_op,
else
bitpos = bitsize_zero_node;
- epilog_stmt = build2 (MODIFY_EXPR, scalar_type, new_scalar_dest,
- build3 (BIT_FIELD_REF, scalar_type,
- new_temp, bitsize, bitpos));
+ rhs = build3 (BIT_FIELD_REF, scalar_type, new_temp, bitsize, bitpos);
+ BIT_FIELD_REF_UNSIGNED (rhs) = TYPE_UNSIGNED (scalar_type);
+ epilog_stmt = build2 (MODIFY_EXPR, scalar_type, new_scalar_dest, rhs);
new_temp = make_ssa_name (new_scalar_dest, epilog_stmt);
TREE_OPERAND (epilog_stmt, 0) = new_temp;
bsi_insert_after (&exit_bsi, epilog_stmt, BSI_NEW_STMT);