- * if not, we have to check the back edges in question, if
- * they lead to places which are reachable.
+ * This is somewhat tricky. Since this routine handles both, live in
+ * and end/out we have to handle all the border cases correctly.
+ * Each node is in its own red_reachable set (see calculation
+ * function above). That means, that in the case where bl == t, the
+ * intersection check of uses and reachability below will always
+ * find an intersection, namely t.
+ *
+ * However, if a block contains a use and the variable is dead
+ * afterwards, it is not live end/out at that block. Besides
+ * back-edge target. If a var is live-in at a back-edge target it
+ * is also live out/end there since the variable is live in the
+ * underlying loop. So in the case where t == bl and that is not
+ * a back-edge target, we have to remove that use from consideration
+ * to determine if the var is live out/end there.
+ *
+ * Note that the live in information has been calculated by the
+ * uses iteration above.