NeKon69 wrote:

Hey! I was trying to implement this, but it doesn't seem like the CFG knows 
that one of the branches does not continue control flow from there

Here's a CFG dump of your example (plus some extra stuff from my side):
```
[B4]
  1: cond
  2: [B4.1] (ImplicitCastExpr, LValueToRValue, _Bool)
  T: [B4.2] ? ... : ...
  Preds (1): B5
  Succs (2): B2 B3
True expression reachable: 1
False expression reachable: 1
```

However, on something simpler it works as expected, such as `int *p = true ? q1 
: q2;`. So I'm wondering if I need to modify the CFG logic to check whether the 
branch expression is a call to a `[[noreturn]]` function, or maybe you want 
something more general?

https://github.com/llvm/llvm-project/pull/190345
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to