[cfe-dev] [analyzer] What's up with c++-allocator-inlining?
Artem Dergachev via cfe-dev
cfe-dev at lists.llvm.org
Thu Feb 27 06:53:54 PST 2020
On 2/26/20 6:45 PM, Artem Dergachev wrote:
> Yes, we should remove the old code for c++-allocator-inlining=false.
> The worry we've had back then was that in the new mode we've disabled
> aggressive behavior of MallocChecker in which it reacted to some
> overloaded operator new invocations but i think this was the right
> thing to do and also nobody complained; also nothing prevents us from
> bringing back the old behavior in a much less confusing way.
>
> Using a CXXAllocatorCall sounds wonderful as well. I'm afraid it might
> be technically difficult to do so because our Environment is screwed
> due to CXXNewExpr serving two different purposes, so there's a wrong
> SVal attached to it and CallEvent might be unable to retrieve the
> right SVal, so we're passing it separately. If this issue is solved,
> we might as well provide these callbacks as part of
> checkPreCall/checkPostCall and then abandon the check::NewAllocator
> callback entirely. More discussion on this in
> http://lists.llvm.org/pipermail/cfe-dev/2017-December/056314.html
>
> I think at this point we might actually do a good job sorting out this
> check::NewAllocator issue because we have a "separate" "Environment"
> to hold the other SVal, which is "objects under construction"! - so we
> should probably simply teach CXXAllocatorCall to extract the value
> from the objects-under-construction trait of the program state and
> we're good.
Nvm, i'm wrong. CXXAllocatorCall should have the value before the cast
but "objects under construction" and check::NewAllocator should have the
value after the cast. So there's still no easy way to fix CXXAllocatorCall.
>
> On 2/26/20 5:02 PM, Kristóf Umann via cfe-dev wrote:
>> Hey!
>>
>> This is short and sweet. MallocChecker uses both check::newAllocator
>> and check::postStmt<CXXNewExpr> to model aspects of operator new.
>> Mind that these two are redundant not only with each other, but with
>> the already used check::postCall. The reason I can see is handling
>> all values of the analyzer config c++-allocator-inlining.
>>
>> So, this flag has been true by default for a long-long time, and I
>> personally never changed had the need to change it. Is there a need
>> to keep tiptoeing around it? Here is a patch that tackles the issue,
>> but it quite dated and I'm not too sure about the current state of
>> things.
>>
>> [analyzer] Add a new checker callback, check::NewAllocator.
>> https://reviews.llvm.org/D41406
>>
>> Also, shouldn't we make check::NewAllocator provide a
>> CXXAllocatorCall rather then a CXXNewExpr and a related
>> under-construction SVal?
>>
>> Cheers,
>> Husi
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
More information about the cfe-dev
mailing list