aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vect-generic.c')
-rw-r--r--gcc/tree-vect-generic.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 27d03a7..a9a6640 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -1337,18 +1337,19 @@ lower_vec_perm (gimple_stmt_iterator *gsi)
!= CODE_FOR_nothing
&& TREE_CODE (vec1) == VECTOR_CST
&& initializer_zerop (vec1)
- && indices[0]
- && indices[0] < elements)
+ && maybe_ne (indices[0], 0)
+ && known_lt (indices[0], elements))
{
bool ok_p = indices.series_p (0, 1, indices[0], 1);
if (!ok_p)
{
for (i = 1; i < elements; ++i)
{
- unsigned int expected = i + indices[0];
+ poly_int64 expected = i + indices[0];
/* Indices into the second vector are all equivalent. */
- if (MIN (elements, (unsigned) indices[i])
- != MIN (elements, expected))
+ if (maybe_lt (indices[i], elements)
+ ? maybe_ne (indices[i], expected)
+ : maybe_lt (expected, elements))
break;
}
ok_p = i == elements;