[cfe-commits] r119341 - /cfe/trunk/lib/Checker/GRCXXExprEngine.cpp

Marcin Świderski marcin.sfider at gmail.com
Wed Nov 17 06:04:05 PST 2010


W dniu 17 listopada 2010 14:14 użytkownik Zhongxing Xu <
xuzhongxing at gmail.com> napisał:

>
>
> 2010/11/17 Marcin Świderski <marcin.sfider at gmail.com>
>
>> W dniu 17 listopada 2010 12:24 użytkownik Zhongxing Xu <
>> xuzhongxing at gmail.com> napisał:
>>
>>
>>>
>>> 2010/11/17 Marcin Świderski <marcin.sfider at gmail.com>
>>>
>>>> W dniu 17 listopada 2010 12:08 użytkownik Zhongxing Xu <
>>>> xuzhongxing at gmail.com> napisał:
>>>>
>>>>>
>>>>>
>>>>> 2010/11/17 Marcin Świderski <marcin.sfider at gmail.com>
>>>>>
>>>>> 2010/11/17 Zhongxing Xu <xuzhongxing at gmail.com>
>>>>>>
>>>>>>> On Tue, Nov 16, 2010 at 4:50 PM, Marcin Swiderski <
>>>>>>> marcin.sfider at gmail.com> wrote:
>>>>>>>
>>>>>>>> Author: sfider
>>>>>>>> Date: Tue Nov 16 02:50:38 2010
>>>>>>>> New Revision: 119341
>>>>>>>>
>>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=119341&view=rev
>>>>>>>> Log:
>>>>>>>> Refactored GRExprEngine::getCXXThisRegion to use
>>>>>>>> CXXMethodDecl::getThisType instead of calculating it by hand.
>>>>>>>>
>>>>>>>
>>>>>>> Please don't do this for now. CXXMethodDecl::getThisType() takes
>>>>>>> qualifiers into account. But in the analyzer, we sometimes analyze methods
>>>>>>> in isolation. So we always use unqualified type.
>>>>>>>
>>>>>>
>>>>>>>
>>>>>> What would this change impact? Maybe there should be a comment
>>>>>> regarding this, because it's counter-intuitive.
>>>>>>
>>>>>
>>>>> To be more precise, we cannot do this. We do not always have
>>>>> CXXMethodDecl. We sometimes only have CXXRecordDecl when visiting
>>>>> constructors.
>>>>>
>>>>>
>>>> But what did you meant by analyzing methods in isolation? What would be
>>>> impacted by using type of 'this' with const qualifier for methods that are
>>>> const qualified?
>>>>
>>>
>>> Using qualified this is not a problem itself.
>>>
>>> But in GRExprEngine::ProcessInitializer(), we only have CXXRecordDecl to
>>> create the 'this' region.  So to uniform interface, we use CXXRecordDecl to
>>> create 'this' region.
>>>
>>> So if a checker will try to get CXXThisRegion based on
>> CXXMethodDecl::getThisType() returned type it will get different region then
>> the one used in state?
>
>
> I think so.
>
> If that's the case we probably should use properly qualified type. I can
fix this when I'll find some time.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20101117/abfea3dc/attachment.html>


More information about the cfe-commits mailing list