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 <rich...@metafoo.co.uk> wrote:
> 
> On Fri, Apr 29, 2016 at 12:12 PM, Akira Hatanaka via cfe-commits 
> <cfe-commits@lists.llvm.org <mailto:cfe-commits@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 <rich...@metafoo.co.uk 
>> <mailto:rich...@metafoo.co.uk>> wrote:
>> 
>> On Fri, Apr 29, 2016 at 11:07 AM, Akira Hatanaka via cfe-commits 
>> <cfe-commits@lists.llvm.org <mailto:cfe-commits@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@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote:
>>> 
>>> On Thu, Apr 28, 2016 at 7:34 PM, Akira Hatanaka via cfe-commits 
>>> <cfe-commits@lists.llvm.org <mailto:cfe-commits@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 <http://reviews.llvm.org/D19175>
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
>>> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
>>> 
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
>>> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
>> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
>> 
>> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to