+ gcc_assert (EDGE_COUNT (bb->preds) == 2);
+ first_edge = EDGE_PRED (bb, 0);
+ second_edge = EDGE_PRED (bb, 1);
+
+ /* Use condition based on following criteria:
+ 1)
+ S1: x = !c ? a : b;
+
+ S2: x = c ? b : a;
+
+ S2 is preferred over S1. Make 'b' first_bb and use its condition.
+
+ 2) Do not make loop header first_bb.
+
+ 3)
+ S1: x = !(c == d)? a : b;
+
+ S21: t1 = c == d;
+ S22: x = t1 ? b : a;
+
+ S3: x = (c == d) ? b : a;
+
+ S3 is preferred over S1 and S2*, Make 'b' first_bb and use
+ its condition.
+
+ 4) If pred B is dominated by pred A then use pred B's condition.
+ See PR23115. */
+
+ /* Select condition that is not TRUTH_NOT_EXPR. */
+ tmp_cond = (first_edge->src)->aux;
+ gcc_assert (tmp_cond);
+
+ if (TREE_CODE (tmp_cond) == TRUTH_NOT_EXPR)