[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

Mike Stump mrs at apple.com
Wed Sep 24 18:32:55 PDT 2008


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.



More information about the cfe-commits mailing list