[PATCH] D19175: Fix for PR27015 (variable template initialized with a generic lambda expression)

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 29 12:25:57 PDT 2016


OK. Feel free to add an early exit if you like if F == Flags.

On Fri, Apr 29, 2016 at 12:19 PM, Akira Hatanaka via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> OK, I understand your question now.
>
> I added the assert to the public overload of setFlags that has one
> parameter (just the flag value), not the one the constructor eventually
> calls.
>
> void setFlags(unsigned F) { assert(F != Flags); setFlags(getParent(), F); }
>
> On Apr 29, 2016, at 12:13 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>
> On Fri, Apr 29, 2016 at 12:12 PM, Akira Hatanaka via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Scope’s constructor passes the parameter ScopeFlags to Scope::Init, which
>> calls setFlags(Scope *parent, unsigned flags) and setFlags initializes
>> Scope::Flags to the value passed to the constructor.
>>
>
> Right, but you're making setFlags assert (F != Flags), at which point
> Flags is presumably uninitialized if the constructor didn't set it itself.
>
>
>> On Apr 29, 2016, at 11:36 AM, Richard Smith <richard at metafoo.co.uk>
>> wrote:
>>
>> On Fri, Apr 29, 2016 at 11:07 AM, Akira Hatanaka via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> If I add an assert to check (F != Flags) in setFlags, 2700+ out of 5000+
>>> clang regression tests fail. I haven’t figured out which parts of clang are
>>> passing the same value to setFlags.
>>>
>>
>> What are you initializing Flags to in the constructor?
>>
>>> On Apr 28, 2016, at 7:38 PM, Richard Smith via cfe-commits <
>>> cfe-commits at lists.llvm.org> wrote:
>>>
>>> On Thu, Apr 28, 2016 at 7:34 PM, Akira Hatanaka via cfe-commits <
>>> cfe-commits at lists.llvm.org> wrote:
>>>
>>>> ahatanak added a comment.
>>>>
>>>> Thanks for the review. I committed the patch in r267956 and r267975.
>>>>
>>>> Do you think I should make setFlags(unsigned F) return early if F ==
>>>> Flags?
>>>
>>>
>>> I don't think that should happen in practice, so it doesn't seem worth
>>> checking.
>>>
>>> Repository:
>>>>   rL LLVM
>>>>
>>>> http://reviews.llvm.org/D19175
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160429/829cab61/attachment.html>


More information about the cfe-commits mailing list