===================================================================
@@ -293,7 +293,9 @@ in_class_p (rtx reg, enum reg_class cl,
if (nregs == 1)
return true;
for (j = 0; j < nregs; j++)
- if (TEST_HARD_REG_BIT (lra_no_alloc_regs, hard_regno + j))
+ if (TEST_HARD_REG_BIT (lra_no_alloc_regs, hard_regno + j)
+ || ! TEST_HARD_REG_BIT (reg_class_contents[common_class],
+ hard_regno + j))
break;
if (j >= nregs)
return true;
===================================================================
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O1" } */
+
+int a, c;
+
+void f(long long p)
+{
+ long long b;
+
+ if(b)
+ b = p ? : 0;
+
+ for (; p; p++)
+ p *= a & (c = p *= !a < 2);
+
+ a = b += !(b & 3740917449u);
+}