Douglas Gregor | 336fd81 | 2010-01-23 00:40:08 +0000 | [diff] [blame] | 1 | typedef int T; |
| 2 | struct X { int a, b; }; |
| 3 | void f(void *ptr) { |
| 4 | T* t_ptr = (T *)ptr; |
| 5 | (void)sizeof(T); |
| 6 | struct X x = (struct X){1, 2}; |
Douglas Gregor | 3512107 | 2010-01-25 17:48:13 +0000 | [diff] [blame] | 7 | void *xx = ptr ? : &x; |
Douglas Gregor | 336fd81 | 2010-01-23 00:40:08 +0000 | [diff] [blame] | 8 | } |
| 9 | |
Ted Kremenek | 1ee6cad | 2010-04-11 21:47:37 +0000 | [diff] [blame] | 10 | int test_blocks(int x) { |
| 11 | __block int y = x; |
| 12 | ^{ |
| 13 | static int z = 0; |
| 14 | y = (++z) + x; |
| 15 | ^{ |
| 16 | ++z; |
| 17 | ++y; |
| 18 | }(); |
| 19 | }(); |
| 20 | return y; |
| 21 | } |
Douglas Gregor | 336fd81 | 2010-01-23 00:40:08 +0000 | [diff] [blame] | 22 | |
Douglas Gregor | 8ccef2d | 2010-09-09 23:10:46 +0000 | [diff] [blame] | 23 | struct Y { |
| 24 | struct X array[3]; |
| 25 | }; |
| 26 | |
| 27 | enum { StartIndex = 1 }; |
| 28 | |
| 29 | void test_members(int aval, int bval) { |
| 30 | struct Y y0 = { .array[StartIndex].b = bval, .array[StartIndex].a = aval }; |
| 31 | __builtin_offsetof(struct Y, array[StartIndex].b); |
| 32 | } |
| 33 | |
Ted Kremenek | 1ee6cad | 2010-04-11 21:47:37 +0000 | [diff] [blame] | 34 | // RUN: c-index-test -test-load-source all %s -fblocks | FileCheck %s |
| 35 | |
| 36 | // CHECK: load-exprs.c:1:13: TypedefDecl=T:1:13 (Definition) Extent=[1:13 - 1:14] |
| 37 | // CHECK: load-exprs.c:2:8: StructDecl=X:2:8 (Definition) Extent=[2:1 - 2:23] |
| 38 | // CHECK: load-exprs.c:2:16: FieldDecl=a:2:16 (Definition) Extent=[2:16 - 2:17] |
| 39 | // CHECK: load-exprs.c:2:19: FieldDecl=b:2:19 (Definition) Extent=[2:19 - 2:20] |
| 40 | // CHECK: load-exprs.c:3:6: FunctionDecl=f:3:6 (Definition) Extent=[3:6 - 8:2] |
| 41 | // CHECK: load-exprs.c:3:14: ParmDecl=ptr:3:14 (Definition) Extent=[3:8 - 3:17] |
| 42 | // CHECK: load-exprs.c:4:6: VarDecl=t_ptr:4:6 (Definition) Extent=[4:3 - 4:22] |
| 43 | // CHECK: load-exprs.c:4:3: TypeRef=T:1:13 Extent=[4:3 - 4:4] |
Daniel Dunbar | 8f0bf81 | 2010-02-14 08:32:51 +0000 | [diff] [blame] | 44 | // CHECK: load-exprs.c:4:15: TypeRef=T:1:13 Extent=[4:15 - 4:16] |
Ted Kremenek | 1ee6cad | 2010-04-11 21:47:37 +0000 | [diff] [blame] | 45 | // CHECK: load-exprs.c:4:19: DeclRefExpr=ptr:3:14 Extent=[4:19 - 4:22] |
Daniel Dunbar | 8f0bf81 | 2010-02-14 08:32:51 +0000 | [diff] [blame] | 46 | // CHECK: load-exprs.c:5:16: TypeRef=T:1:13 Extent=[5:16 - 5:17] |
Ted Kremenek | 1ee6cad | 2010-04-11 21:47:37 +0000 | [diff] [blame] | 47 | // CHECK: load-exprs.c:6:12: VarDecl=x:6:12 (Definition) Extent=[6:10 - 6:32] |
Daniel Dunbar | 8f0bf81 | 2010-02-14 08:32:51 +0000 | [diff] [blame] | 48 | // CHECK: load-exprs.c:6:10: TypeRef=struct X:2:8 Extent=[6:10 - 6:11] |
| 49 | // CHECK: load-exprs.c:6:24: TypeRef=struct X:2:8 Extent=[6:24 - 6:25] |
| 50 | // CHECK: load-exprs.c:7:9: VarDecl=xx:7:9 (Definition) Extent=[7:3 - 7:24] |
| 51 | // CHECK: load-exprs.c:7:14: DeclRefExpr=ptr:3:14 Extent=[7:14 - 7:17] |
| 52 | // CHECK: load-exprs.c:7:23: DeclRefExpr=x:6:12 Extent=[7:23 - 7:24] |
Ted Kremenek | 1ee6cad | 2010-04-11 21:47:37 +0000 | [diff] [blame] | 53 | // CHECK: load-exprs.c:10:5: FunctionDecl=test_blocks:10:5 (Definition) Extent=[10:5 - 21:2] |
| 54 | // CHECK: load-exprs.c:10:21: ParmDecl=x:10:21 (Definition) Extent=[10:17 - 10:22] |
| 55 | // CHECK: load-exprs.c:11:15: VarDecl=y:11:15 (Definition) Extent=[11:11 - 11:20] |
| 56 | // CHECK: load-exprs.c:11:19: DeclRefExpr=x:10:21 Extent=[11:19 - 11:20] |
| 57 | // CHECK: load-exprs.c:12:3: CallExpr= Extent=[12:3 - 19:7] |
| 58 | // CHECK: load-exprs.c:13:17: VarDecl=z:13:17 (Definition) Extent=[13:13 - 13:22] |
| 59 | // CHECK: load-exprs.c:14:6: DeclRefExpr= Extent=[14:6 - 14:7] |
| 60 | // CHECK: load-exprs.c:14:13: DeclRefExpr=z:13:17 Extent=[14:13 - 14:14] |
| 61 | // CHECK: load-exprs.c:14:18: DeclRefExpr= Extent=[14:18 - 14:19] |
| 62 | // CHECK: load-exprs.c:15:6: CallExpr= Extent=[15:6 - 18:9] |
| 63 | // CHECK: load-exprs.c:16:10: DeclRefExpr=z:13:17 Extent=[16:10 - 16:11] |
| 64 | // CHECK: load-exprs.c:17:10: DeclRefExpr= Extent=[17:10 - 17:11] |
| 65 | // CHECK: load-exprs.c:20:10: DeclRefExpr=y:11:15 Extent=[20:10 - 20:11] |
Douglas Gregor | 8ccef2d | 2010-09-09 23:10:46 +0000 | [diff] [blame] | 66 | // CHECK: load-exprs.c:29:6: FunctionDecl=test_members:29:6 (Definition) |
Douglas Gregor | fa2e26f | 2010-09-09 23:28:23 +0000 | [diff] [blame] | 67 | // CHECK: load-exprs.c:30:12: VarDecl=y0:30:12 (Definition) Extent=[30:10 - 30:77] |
| 68 | // CHECK: load-exprs.c:30:10: TypeRef=struct Y:23:8 Extent=[30:10 - 30:11] |
| 69 | // CHECK: load-exprs.c:30:20: MemberRef=array:24:12 Extent=[30:20 - 30:25] |
| 70 | // CHECK: load-exprs.c:30:26: DeclRefExpr=StartIndex:27:8 Extent=[30:26 - 30:36] |
| 71 | // CHECK: load-exprs.c:30:38: MemberRef=b:2:19 Extent=[30:38 - 30:39] |
| 72 | // CHECK: load-exprs.c:30:42: DeclRefExpr=bval:29:33 Extent=[30:42 - 30:46] |
| 73 | // CHECK: load-exprs.c:30:49: MemberRef=array:24:12 Extent=[30:49 - 30:54] |
| 74 | // CHECK: load-exprs.c:30:55: DeclRefExpr=StartIndex:27:8 Extent=[30:55 - 30:65] |
| 75 | // CHECK: load-exprs.c:30:67: MemberRef=a:2:16 Extent=[30:67 - 30:68] |
| 76 | // CHECK: load-exprs.c:30:71: DeclRefExpr=aval:29:23 Extent=[30:71 - 30:75] |
Douglas Gregor | 8ccef2d | 2010-09-09 23:10:46 +0000 | [diff] [blame] | 77 | // CHECK: load-exprs.c:31:29: TypeRef=struct Y:23:8 Extent=[31:29 - 31:30] |
| 78 | // CHECK: load-exprs.c:31:32: MemberRef=array:24:12 Extent=[31:32 - 31:37] |
| 79 | // CHECK: load-exprs.c:31:38: DeclRefExpr=StartIndex:27:8 Extent=[31:38 - 31:48] |
| 80 | // CHECK: load-exprs.c:31:50: MemberRef=b:2:19 Extent=[31:50 - 31:51] |
Ted Kremenek | 21b7323 | 2010-04-11 22:25:18 +0000 | [diff] [blame] | 81 | |