1*0333dd95SReid Kleckner // Matches 2*0333dd95SReid Kleckner struct S0 { 3*0333dd95SReid Kleckner int field1; 4*0333dd95SReid Kleckner float field2; 5*0333dd95SReid Kleckner }; 6*0333dd95SReid Kleckner 7*0333dd95SReid Kleckner struct S0 x0; 8*0333dd95SReid Kleckner 9*0333dd95SReid Kleckner // Mismatch in field type 10*0333dd95SReid Kleckner struct S1 { 11*0333dd95SReid Kleckner int field1; 12*0333dd95SReid Kleckner float field2; 13*0333dd95SReid Kleckner }; 14*0333dd95SReid Kleckner 15*0333dd95SReid Kleckner struct S1 x1; 16*0333dd95SReid Kleckner 17*0333dd95SReid Kleckner // Mismatch in tag kind. 18*0333dd95SReid Kleckner union S2 { int i; float f; } x2; 19*0333dd95SReid Kleckner 20*0333dd95SReid Kleckner // Missing fields 21*0333dd95SReid Kleckner struct S3 { int i; float f; } x3; 22*0333dd95SReid Kleckner 23*0333dd95SReid Kleckner // Extra fields 24*0333dd95SReid Kleckner struct S4 { int i; float f; } x4; 25*0333dd95SReid Kleckner 26*0333dd95SReid Kleckner // Bit-field matches 27*0333dd95SReid Kleckner struct S5 { int i : 8; unsigned j : 8; } x5; 28*0333dd95SReid Kleckner 29*0333dd95SReid Kleckner // Bit-field mismatch 30*0333dd95SReid Kleckner struct S6 { int i : 8; unsigned j; } x6; 31*0333dd95SReid Kleckner 32*0333dd95SReid Kleckner // Bit-field mismatch 33*0333dd95SReid Kleckner struct S7 { int i : 8; unsigned j : 16; } x7; 34*0333dd95SReid Kleckner 35*0333dd95SReid Kleckner // Incomplete type 36*0333dd95SReid Kleckner struct S8 { int i; float f; } *x8; 37*0333dd95SReid Kleckner 38*0333dd95SReid Kleckner // Incomplete type 39*0333dd95SReid Kleckner struct S9 *x9; 40*0333dd95SReid Kleckner 41*0333dd95SReid Kleckner // Incomplete type 42*0333dd95SReid Kleckner struct S10 *x10; 43*0333dd95SReid Kleckner 44*0333dd95SReid Kleckner // Matches 45*0333dd95SReid Kleckner struct ListNode { 46*0333dd95SReid Kleckner int value; 47*0333dd95SReid Kleckner struct ListNode *Next; 48*0333dd95SReid Kleckner } xList; 49*0333dd95SReid Kleckner 50*0333dd95SReid Kleckner // Mismatch due to struct used internally 51*0333dd95SReid Kleckner struct DeepError { 52*0333dd95SReid Kleckner int value; 53*0333dd95SReid Kleckner struct DeeperError { int i; float f; } *Deeper; 54*0333dd95SReid Kleckner } xDeep; 55*0333dd95SReid Kleckner 56*0333dd95SReid Kleckner // Matches 57*0333dd95SReid Kleckner struct { 58*0333dd95SReid Kleckner int i; 59*0333dd95SReid Kleckner float f; 60*0333dd95SReid Kleckner } x11; 61*0333dd95SReid Kleckner 62*0333dd95SReid Kleckner // Matches 63*0333dd95SReid Kleckner typedef struct { 64*0333dd95SReid Kleckner int i; 65*0333dd95SReid Kleckner float f; 66*0333dd95SReid Kleckner } S12; 67*0333dd95SReid Kleckner 68*0333dd95SReid Kleckner S12 x12; 69*0333dd95SReid Kleckner 70*0333dd95SReid Kleckner // Mismatch 71*0333dd95SReid Kleckner typedef struct { 72*0333dd95SReid Kleckner int i; // Mismatch here. 73*0333dd95SReid Kleckner float f; 74*0333dd95SReid Kleckner } S13; 75*0333dd95SReid Kleckner 76*0333dd95SReid Kleckner S13 x13; 77*0333dd95SReid Kleckner 78*0333dd95SReid Kleckner // Matches 79*0333dd95SReid Kleckner struct Unnamed { 80*0333dd95SReid Kleckner union { 81*0333dd95SReid Kleckner struct { 82*0333dd95SReid Kleckner int i; 83*0333dd95SReid Kleckner } S; 84*0333dd95SReid Kleckner struct { 85*0333dd95SReid Kleckner float i; 86*0333dd95SReid Kleckner } R; 87*0333dd95SReid Kleckner } U; 88*0333dd95SReid Kleckner } x14; 89*0333dd95SReid Kleckner 90*0333dd95SReid Kleckner // Matches 91*0333dd95SReid Kleckner struct DeepUnnamed { 92*0333dd95SReid Kleckner union { 93*0333dd95SReid Kleckner union { 94*0333dd95SReid Kleckner struct { 95*0333dd95SReid Kleckner long i; 96*0333dd95SReid Kleckner } S; 97*0333dd95SReid Kleckner struct { 98*0333dd95SReid Kleckner int i; 99*0333dd95SReid Kleckner } R; 100*0333dd95SReid Kleckner } U1; 101*0333dd95SReid Kleckner union { 102*0333dd95SReid Kleckner struct { 103*0333dd95SReid Kleckner long i; 104*0333dd95SReid Kleckner } S; 105*0333dd95SReid Kleckner struct { 106*0333dd95SReid Kleckner float i; 107*0333dd95SReid Kleckner } T; 108*0333dd95SReid Kleckner } U2; 109*0333dd95SReid Kleckner } U; 110*0333dd95SReid Kleckner struct { 111*0333dd95SReid Kleckner long i; 112*0333dd95SReid Kleckner } V; 113*0333dd95SReid Kleckner } x15; 114*0333dd95SReid Kleckner 115*0333dd95SReid Kleckner // Mismatch due to unnamed struct used internally 116*0333dd95SReid Kleckner struct DeepUnnamedError { 117*0333dd95SReid Kleckner union { 118*0333dd95SReid Kleckner union { 119*0333dd95SReid Kleckner struct { 120*0333dd95SReid Kleckner long i; 121*0333dd95SReid Kleckner } S; 122*0333dd95SReid Kleckner struct { 123*0333dd95SReid Kleckner int i; 124*0333dd95SReid Kleckner } R; 125*0333dd95SReid Kleckner } U1; 126*0333dd95SReid Kleckner union { 127*0333dd95SReid Kleckner struct { 128*0333dd95SReid Kleckner float i; // Mismatch here. 129*0333dd95SReid Kleckner } S; 130*0333dd95SReid Kleckner struct { 131*0333dd95SReid Kleckner float i; 132*0333dd95SReid Kleckner } T; 133*0333dd95SReid Kleckner } U2; 134*0333dd95SReid Kleckner } U; 135*0333dd95SReid Kleckner struct { 136*0333dd95SReid Kleckner long i; 137*0333dd95SReid Kleckner } V; 138*0333dd95SReid Kleckner } x16; 139