| /* APPLE LOCAL file radar 5939894 */ |
| /* Check that if a definition of struct invoke_impl already exist, then use it. */ |
| /* { dg-options "-fblocks" } */ |
| /* { dg-do compile } */ |
| |
| struct invoke_impl { |
| void *isa; |
| int Flags; |
| int Size; |
| void *FuncPtr; |
| }; |
| |
| enum numbers |
| { |
| zero, one, two, three, four |
| }; |
| |
| typedef enum numbers (^myblock)(enum numbers); |
| |
| |
| double test(myblock I) { |
| return I(three); |
| } |
| |
| int main() { |
| __block enum numbers x = one; |
| __block enum numbers y = two; |
| |
| myblock CL = ^(enum numbers z) |
| { y = z; |
| test ( |
| ^ (enum numbers z) { |
| x = z; |
| return (enum numbers) four; |
| } |
| ); |
| return x; |
| }; |
| |
| enum numbers res = (numbers)test(CL); |
| |
| return 0; |
| } |