tomasz-kaminski-sonarsource marked 2 inline comments as done. tomasz-kaminski-sonarsource added inline comments.
================ Comment at: clang/test/Analysis/nonreturn-destructors-cfg-output.cpp:99 +// +// CHECK: [B2 (NORETURN)] +// CHECK-NEXT: 1: [B3.3].~A() (Implicit destructor) ---------------- xazax.hun wrote: > B3 and B5 look almost identical. Do we need both? If not, would there be a > way to deduplicate? `B2` is created when we visit the statement in reverse order. This includes all statement until we reach `goto`. So if the code would look like: ``` { A a; goto label; int b; foo(); } label: foo(); ``` Then `B2` will include two calls to `foo` and lifetime of `int b`. The `B5` only includes destructor of `a` that happens after `goto`. So the similarly here only happens by accident, or in other words is by product of the code. In this case any deduplication mechanism for blocks will need to be content based, and I haven't seen anything like that happening in the code. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D153273/new/ https://reviews.llvm.org/D153273 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits