gamesh411 wrote:

> > Note that we have [trouble with matching some sort functions 
> > directly](https://github.com/llvm/llvm-project/issues/78132#issuecomment-2028445993).
> >  If I understand it correctly, that only affects `std::ranges::sort` and 
> > not `std::sort` but I'm not sure -- and maybe @gamesh411 decided to match 
> > the internal functions because he was scared of that.
> 
> Yea, we can't match 
> [niebloids](https://brevzin.github.io/c++/2020/12/19/cpo-niebloid/), but I 
> think matching the internals is even worse because that is tied to a very 
> specific STL implementation. IMO that is strictly worse.

I was aware of the hurdles here 
https://github.com/llvm/llvm-project/issues/78132#issuecomment-2028445993, but 
that was only part of the reason for this implementation.
First, I may have went too far and placed every suppression from the 
`LikelyFalsePositiveSuppressionBRVisitor` (minus the macro-related suppression 
of <sys/queue.h> and the option-driven suppression: 
`ShouldSuppressFromCXXStandardLibrary`). This means I had all the `std::list`, 
`std::shared_ptr` and `std::basic_string` methods in this checkers `evalCall`.
But that broke the modeling we have for those in other checkers, namely in 
`ContainerModeling` and `IteratorModeling`. So, for sure there are some 
use-cases that cannot be handled by `evalCall`-ing them like this, and I was 
not thinking through the effects of that change deep enough.
Then I concluded that it is not an option to migrate those suppressions into 
this modeling checker, because modeling with `evalCall` here interferes with 
modeling them elsewhere. I think the same could be said about the "public API" 
of the sort functions the `std::sort` and co. If we `evalCall` those, we cannot 
model them elsewhere, so that leaves us with suppressing the problematic 
internals.

Now, maybe in this `OpaqueSTLFuncstionModeling` checker we could match for a 
parent-context that matches the "API-public" signature, but still suppress the 
current internal function call? That way we can avoid naming the internal 
function, but can still suppress it. Would that be better, WDYT? @steakhal 
@NagyDonat 

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

Reply via email to