[cfe-commits] r56770 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/Sema/block-args.c

steve naroff snaroff at apple.com
Sun Sep 28 14:08:42 PDT 2008


Agreed. I just added a FIXME to the code. I can likely clean this up  
tomorrow.

snaroff

On Sep 28, 2008, at 4:44 PM, Chris Lattner wrote:

>
> On Sep 28, 2008, at 1:42 PM, Chris Lattner wrote:
>
>>
>> On Sep 28, 2008, at 7:02 AM, Steve Naroff wrote:
>>
>>> Author: snaroff
>>> Date: Sun Sep 28 09:02:55 2008
>>> New Revision: 56770
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=56770&view=rev
>>> Log:
>>> Fix <rdar://problem/6252108> assigning to argument passed to block  
>>> should not require __block.
>>
>> Hi Steve,
>>
>> Won't this break something like this:
>>
>>> +int main(int argc) {
>>> +  ^(int X) {
>>> +    argc = 3;
>>> +  };
>>> +}
>>
>>
>> The ParmVarDecl referenced has to belong to the block, it can't  
>> belong to the containing function.
>
> In fact, I think the whole problem is really the reliance on  
> 'DeclDefinedWithinScope'.  I think that DeclDefinedWithinScope  
> should be nuked, and DeclContext should be used to determine whether  
> something is within the block or not.  Each block literal should  
> define a new DeclContext, and this will hopefully make the predicate  
> trivial (and faster!).  DeclContext didn't exist when the initial  
> blocks support was added to clang.
>
> -Chris




More information about the cfe-commits mailing list