===================================================================
@@ -612,9 +612,10 @@ memrefs_read_or_written_unconditionally
data_reference_p a, b;
tree ca = bb_predicate (gimple_bb (stmt));
- for (i = 0; drs.iterate (i, &a); i++)
- if (DR_STMT (a) == stmt)
- {
+ for (i = gimple_uid (stmt) - 1; drs.iterate (i, &a); i++)
+ {
+ if (DR_STMT (a) != stmt)
+ break;
bool found = false;
int x = DR_RW_UNCONDITIONALLY (a);
@@ -684,10 +685,13 @@ write_memrefs_written_at_least_once (gim
data_reference_p a, b;
tree ca = bb_predicate (gimple_bb (stmt));
- for (i = 0; drs.iterate (i, &a); i++)
- if (DR_STMT (a) == stmt
- && DR_IS_WRITE (a))
- {
+ for (i = gimple_uid (stmt) - 1; drs.iterate (i, &a); i++)
+ {
+ if (DR_STMT (a) != stmt)
+ break;
+ if (! DR_IS_WRITE (a))
+ continue;
+
bool found = false;
int x = DR_WRITTEN_AT_LEAST_ONCE (a);
@@ -721,7 +725,7 @@ write_memrefs_written_at_least_once (gim
DR_WRITTEN_AT_LEAST_ONCE (a) = 0;
return false;
}
- }
+ }
return true;
}
@@ -1291,6 +1297,7 @@ if_convertible_loop_p_1 (struct loop *lo
case GIMPLE_CALL:
case GIMPLE_DEBUG:
case GIMPLE_COND:
+ gimple_set_uid (gsi_stmt (gsi), 0);
break;
default:
return false;
@@ -1304,6 +1311,8 @@ if_convertible_loop_p_1 (struct loop *lo
dr->aux = XNEW (struct ifc_dr);
DR_WRITTEN_AT_LEAST_ONCE (dr) = -1;
DR_RW_UNCONDITIONALLY (dr) = -1;
+ if (gimple_uid (DR_STMT (dr)) == 0)
+ gimple_set_uid (DR_STMT (dr), i + 1);
}
predicate_bbs (loop);