[cfe-commits] r56595 - in /cfe/trunk: include/clang/Basic/DiagnosticKinds.def lib/Sema/SemaExpr.cpp test/Sema/block-call.c test/Sema/block-return.c

steve naroff snaroff at apple.com
Thu Sep 25 03:13:36 PDT 2008


On Sep 24, 2008, at 9:32 PM, Mike Stump wrote:

> On Sep 24, 2008, at 6:08 PM, steve naroff wrote:
>> On Sep 24, 2008, at 9:00 PM, Mike Stump wrote:
>>
>>> On Sep 24, 2008, at 4:31 PM, Steve Naroff wrote:
>>>> New Revision: 56595
>>>
>>>> Downgrade incompatible block pointer error to a warning (to be  
>>>> consistent with incompatible pointer warnings in general).
>>>
>>> :-(  In gcc these are all hard errors I believe, and I think in  
>>> clang they should be hard errors as well.  Strong typing in this  
>>> case I don't think poses a problem.
>>>
>>
>> I don't think you are correct. Can you please check and get back to  
>> me.
>>
>> snaroff
>>
>>>> -  short (^add1)(void) = ^{ return y+1; }; // expected-error  
>>>> {{incompatible block pointer types initializing 'int (^)(void)',  
>>>> expected 'short (^)(void)'}}
>>>> +  short (^add1)(void) = ^{ return y+1; }; // expected-warning  
>>>> {{incompatible block pointer types initializing 'int (^)(void)',  
>>>> expected 'short (^)(void)'}}
>
> I did that before I sent the email:
>
> $ cat t4.c
> main() {
>  int y;
>  short (^add1)(void) = ^{ return y+1; };
> }
> mrs $ gcc -fblocks -xc++ t4.c -c
> t4.c: In function ‘int main()’:
> t4.c:3: error: cannot convert ‘int (^)()’ to ‘short int (^)()’ in  
> initialization
> mrs $ gcc -fblocks -xc t4.c -c
> t4.c: In function ‘main’:
> t4.c:3: error: incompatible block pointer types initializing ‘int (^) 
> (void)’, expected ‘short int (^)(void)’
>
> Pretty clear to me.

Thanks!  Unfortunately, this means the following will be considered an  
error.

void foo() {
   int (^xx)(const char *s) = ^(char *s) { return 1; };
}

Can you try this this on your gcc? (I don't have it handy).

Fariborz said we should treat this the same as function pointer  
assignments (which is why I made the change...).

Fariborz, feel free to chime in:-)

snaroff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20080925/68bdac32/attachment.html>


More information about the cfe-commits mailing list