--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O3 -march=rv64gcv -mabi=lp64d" } */
+
+long long a;
+short c, d;
+extern int e[][1][1][1];
+extern bool f[][1][4][2];
+#include <vector>
+
+void
+g ()
+{
+ for (bool b;;)
+ for (signed char h (c); h < 4; h += -4487 - 119)
+ {
+ e[b][b][b][b] = std::max (std::min ((long long) 3, a), (long long) d);
+ f[0][0][h][1] = h;
+ }
+}
unsigned int precision
= TYPE_PRECISION (TREE_TYPE (configs[i].offset_vectype));
if (configs[i].scale < scale
- && precision >= needed_precision
- && (supportable_convert_operation (CONVERT_EXPR,
- configs[i].offset_vectype,
- offset_vectype, &tmp)
- || (needed_precision == offset_precision
- && tree_nop_conversion_p (configs[i].offset_vectype,
- offset_vectype))))
+ && TYPE_SIGN (configs[i].offset_vectype)
+ == TYPE_SIGN (offset_vectype)
+ && precision >= needed_precision)
{
*ifn_out = configs[i].ifn;
*offset_vectype_out = configs[i].offset_vectype;