NagyDonat wrote:

@steakhal Thanks for the informative reply!

> > I verified that the `BranchCondition` callback does not react to `switch` 
> > statements because although they perform branching, they don't have a 
> > branch _condition_ like the other statements.
> 
> That's correct. I also documented this in the CheckerDocumentation of 
> `checkBranchCondition` 
> [here](https://clang.llvm.org/doxygen/classclang_1_1ento_1_1CheckerDocumentation.html#acec0e845a9dce2fac06bf3b1e136aff7):
> 
> > * ternary operators (?:), gnu conditionals, gnu choose expressions 
> > Interestingly, switch statements don't seem to trigger BranchCondition.

Yes, I found that comment a few days after my initial confusion :sweat_smile: 

> > * What do you think about this situation?
> > * Should I use the `BlockEntrance` callback or do you see another approach?
> 
> I have no strong preference for using `BlockEntrance`. The `BranchCondition` 
> should probably cover switches. If possible, `BlockEntrance` should be 
> avoided as it gets triggered really frequently.

This fits with my plan that I would extend the `BranchCondition` callback to 
let it cover switches as well :smile:. That way, I'm eliminating a small piece 
of old technical debt, the new `BranchCondition` would be a comfortable tool 
for this checker, and I won't need to resort to `BlockEntrance`. 

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

Reply via email to