idx),
gimple_assign_rhs2 (stmt), idx);
case SSA_NAME:
+ case PAREN_EXPR:
case INTEGER_CST:
return handle_operand (gimple_assign_rhs1 (stmt), idx);
CASE_CONVERT:
|| gimple_store_p (stmt)
|| gimple_assign_load_p (stmt)
|| eq_p
- || mergeable_cast_p)
+ || mergeable_cast_p
+ || (is_gimple_assign (stmt)
+ && gimple_assign_rhs_code (stmt) == PAREN_EXPR))
{
lhs = lower_mergeable_stmt (stmt, cmp_code, cmp_op1, cmp_op2);
if (!eq_p)
--- /dev/null
+/* PR middle-end/117459 */
+/* { dg-do run { target bitint } } */
+/* { dg-options "-std=c23" } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */
+/* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */
+
+#if __BITINT_MAXWIDTH__ >= 255
+_BitInt(255) b, c, d;
+
+_BitInt(255)
+foo ()
+{
+ return __builtin_assoc_barrier (b + c) + d;
+}
+#endif
+
+int
+main ()
+{
+#if __BITINT_MAXWIDTH__ >= 255
+ b = 3162082328713384445049140446737468449630746270013462291267283007210433157591wb;
+ c = 12998515555477887328635550261966833804427562203752161174274777867442907371807wb;
+ d = 5016523343681809792116154509287659112784399275423992541459788346980443294044wb;
+ if (foo () != 21177121227873081565800845217991961366842707749189616007001849221633783823442wb)
+ __builtin_abort ();
+#endif
+}