steakhal added a comment.

In D127874#3628112 <https://reviews.llvm.org/D127874#3628112>, @martong wrote:

>> I don't think any of the issues mentioned in this patch relates to strongly 
>> connected components, thus I don't think I can answer to this question.
>
> In your example above, repeated here:
>
>   #6(entry)      #2(goto a;)
>    |              |        ^
>   #5(goto end;)   |         \
>    |             #4(goto b;) |
>   #1(end:)        |          |
>    |             #3(goto c;) |
>   #0(exit)         \________/
>
> [#2, #4, #3] is a strongly connected (and unreachable) component  of the CFG, 
> isn't it?

Right; those three blocks are unreachable in the CFG.

Let me clarify that this (previous) example has nothing to do with the 
visitation order. For that, yes either BFS and DFS order would work.
The `magic_clamp` example supposed to underpin the rationale behind choosing 
BFS instead of DFS.
In the summary, you will find a step-by-step playthrough how the DFS visitation 
worked previously, and resulted in falsely leaving `B3` and `B5` unreachable 
due to the order in which their predecessor nodes were visited. Let me know if 
it helped.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127874/new/

https://reviews.llvm.org/D127874

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to