Xazax-hun wrote: Sorry for all the false starts, it looks like I mislead you a couple times generating some extra work on your end. This is sometimes part of the process to come up with the best possible fix though. I realized `isInevitablySinking` is not the right fix. Consider the following code:
``` int *p = cond ? q : r; throw 5; ``` Here, all nodes post-dominated by the `throw` will be "inevitably sinking". I think the right fix really is just checking if there is an edge between the CFG nodes representing the whole ternary and the branches. The whole flow of fact generation is driven by the CFG edges. But in case of ternary, we occasionally end up visiting an AST node that belongs to a different CFG node even if there is no corresponding CFG edge. This is the root cause of both problem 1 and 2 that I mentioned earlier. So I think the right solution is to just check for the presence of those edges. https://github.com/llvm/llvm-project/pull/190345 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
