modernc.org/ccgo/v3@v3.16.14/lib/testdata/bug/incfp2.c (about)

     1  int f(int i) {
     2  	return 2*i;
     3  }
     4  
     5  int g(int i) {
     6  	return 10*i;
     7  }
     8  
     9  typedef int (*intf)(int);
    10  
    11  intf *ga[2] = {f, g};
    12  intf *gap = &ga[0];
    13  
    14  int main() {
    15  	intf la[2] = {f, g};
    16  	intf *lap = &la[0];
    17  
    18  	intf x = *gap;
    19  	if (x(1) != 2) {
    20  		return 1;
    21  	}
    22  
    23  	x = ga[0];
    24  	if (x(2) != 4) {
    25  		return 2;
    26  	}
    27  
    28  	x = ga[1];
    29  	if (x(3) != 30) {
    30  		return 3;
    31  	}
    32  
    33  	x = *lap;
    34  	if (x(3) != 6) {
    35  		return 4;
    36  	}
    37  
    38  	x = la[0];
    39  	if (x(4) != 8) {
    40  		return 5;
    41  	}
    42  
    43  	x = la[1];
    44  	if (x(5) != 50) {
    45  		return 6;
    46  	}
    47  
    48  	x = *gap++;
    49  	if (x(6) != 12) {
    50  		return 7;
    51  	}
    52  
    53  	x = *gap++;
    54  	if (x(7) != 70) {
    55  		return 8;
    56  	}
    57  
    58  	x = *lap++;
    59  	if (x(8) != 16) {
    60  		return 9;
    61  	}
    62  
    63  	x = *lap++;
    64  	if (x(9) != 90) {
    65  		return 10;
    66  	}
    67  
    68  	gap = &ga[0];
    69  	if ((*gap++)(10) != 20) {
    70  		return 11;
    71  	}
    72  
    73  	if ((*gap++)(11) != 110) {
    74  		return 12;
    75  	}
    76  
    77  	lap = &la[0];
    78  	if ((*lap++)(10) != 20) {
    79  		return 13;
    80  	}
    81  
    82  	if ((*lap++)(40) != 400) {
    83  		return 14;
    84  	}
    85  
    86  	return 0;
    87  }