+/* To work out the back-to-back flag, we need to detect branches and
+ * "fallthrough" branches, implied in the last clause of a block that falls
+ * through to another block with *multiple predecessors*. */
+
+static bool
+bi_back_to_back(bi_block *block)
+{
+ /* Last block of a program */
+ if (!block->base.successors[0]) {
+ assert(!block->base.successors[1]);
+ return false;
+ }
+
+ /* Multiple successors? We're branching */
+ if (block->base.successors[1])
+ return false;
+
+ struct pan_block *succ = block->base.successors[0];
+ assert(succ->predecessors);
+ unsigned count = succ->predecessors->entries;
+
+ /* Back to back only if the successor has only a single predecessor */
+ return (count == 1);
+}
+