+2019-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/92510
+ * combine.c (gen_lowpart_for_combine): Only transform lowpart subreg
+ of comparison into a comparison with different mode if both imode and
+ omode are scalar integral modes.
+
2019-11-27 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/90007
/* If X is a comparison operator, rewrite it in a new mode. This
probably won't match, but may allow further simplifications. */
- else if (COMPARISON_P (x))
+ else if (COMPARISON_P (x)
+ && SCALAR_INT_MODE_P (imode)
+ && SCALAR_INT_MODE_P (omode))
return gen_rtx_fmt_ee (GET_CODE (x), omode, XEXP (x, 0), XEXP (x, 1));
/* If we couldn't simplify X any other way, just enclose it in a
+2019-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/92510
+ * gcc.dg/pr92510.c: New test.
+
2019-11-27 Andrew Sutton <asutton@lock3software.com>
PR c++/92236
--- /dev/null
+/* PR rtl-optimization/92510 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -ftree-loop-vectorize -fno-forward-propagate -fno-tree-scev-cprop" } */
+
+int v;
+
+long int
+foo (long int x)
+{
+ signed char i;
+
+ for (i = 0; i < 8; ++i)
+ x |= !!v;
+
+ return x + i;
+}