Home | History | Annotate | Line # | Download | only in lint1
msg_193.c revision 1.5
      1  1.5  rillig /*	$NetBSD: msg_193.c,v 1.5 2021/03/21 15:24:56 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_193.c"
      3  1.1  rillig 
      4  1.1  rillig // Test for message: statement not reached [193]
      5  1.1  rillig 
      6  1.3  rillig /*
      7  1.3  rillig  * Test the reachability of statements in a function.
      8  1.3  rillig  *
      9  1.3  rillig  *	if
     10  1.3  rillig  *	if-else
     11  1.3  rillig  *	if-else-if-else
     12  1.3  rillig  *	for
     13  1.3  rillig  *	while
     14  1.3  rillig  *	do-while
     15  1.3  rillig  *	switch
     16  1.3  rillig  *	break
     17  1.3  rillig  *	continue
     18  1.3  rillig  *	goto
     19  1.3  rillig  *	return
     20  1.3  rillig  *
     21  1.3  rillig  *	constant expression
     22  1.3  rillig  *	system-dependent constant expression
     23  1.3  rillig  */
     24  1.3  rillig 
     25  1.3  rillig extern void
     26  1.3  rillig reachable(void);
     27  1.3  rillig extern void
     28  1.3  rillig unreachable(void);
     29  1.3  rillig 
     30  1.3  rillig void
     31  1.3  rillig test_statement(void)
     32  1.3  rillig {
     33  1.3  rillig 	reachable();
     34  1.3  rillig 	reachable();
     35  1.3  rillig }
     36  1.3  rillig 
     37  1.3  rillig void
     38  1.3  rillig test_compound_statement(void)
     39  1.3  rillig {
     40  1.3  rillig 	reachable();
     41  1.3  rillig 	{
     42  1.3  rillig 		reachable();
     43  1.3  rillig 		reachable();
     44  1.3  rillig 	}
     45  1.3  rillig 	reachable();
     46  1.3  rillig }
     47  1.3  rillig 
     48  1.3  rillig void
     49  1.3  rillig test_if_statement(void)
     50  1.3  rillig {
     51  1.3  rillig 	if (1)
     52  1.3  rillig 		reachable();
     53  1.3  rillig 	reachable();
     54  1.3  rillig 	if (0)
     55  1.4  rillig 		unreachable();		/* expect: 193 */
     56  1.3  rillig 	reachable();
     57  1.3  rillig }
     58  1.3  rillig 
     59  1.3  rillig void
     60  1.3  rillig test_if_compound_statement(void)
     61  1.3  rillig {
     62  1.3  rillig 	if (1) {
     63  1.3  rillig 		reachable();
     64  1.3  rillig 	}
     65  1.3  rillig 	if (1) {
     66  1.3  rillig 		{
     67  1.3  rillig 			{
     68  1.3  rillig 				reachable();
     69  1.3  rillig 			}
     70  1.3  rillig 		}
     71  1.3  rillig 	}
     72  1.3  rillig 
     73  1.3  rillig 	if (0) {
     74  1.4  rillig 		unreachable();		/* expect: 193 */
     75  1.3  rillig 	}
     76  1.3  rillig 	if (0) {
     77  1.3  rillig 		{
     78  1.3  rillig 			{
     79  1.4  rillig 				unreachable();	/* expect: 193 */
     80  1.3  rillig 			}
     81  1.3  rillig 		}
     82  1.3  rillig 	}
     83  1.3  rillig }
     84  1.3  rillig 
     85  1.3  rillig void
     86  1.3  rillig test_if_without_else(void)
     87  1.3  rillig {
     88  1.3  rillig 	if (1)
     89  1.3  rillig 		reachable();
     90  1.3  rillig 	reachable();
     91  1.3  rillig 
     92  1.3  rillig 	if (0)
     93  1.4  rillig 		unreachable();		/* expect: 193 */
     94  1.3  rillig 	reachable();
     95  1.3  rillig }
     96  1.3  rillig 
     97  1.3  rillig void
     98  1.3  rillig test_if_with_else(void)
     99  1.3  rillig {
    100  1.3  rillig 	if (1)
    101  1.3  rillig 		reachable();
    102  1.3  rillig 	else
    103  1.4  rillig 		unreachable();		/* expect: 193 */
    104  1.3  rillig 	reachable();
    105  1.3  rillig 
    106  1.3  rillig 	if (0)
    107  1.4  rillig 		unreachable();		/* expect: 193 */
    108  1.3  rillig 	else
    109  1.3  rillig 		reachable();
    110  1.3  rillig 	reachable();
    111  1.3  rillig }
    112  1.3  rillig 
    113  1.3  rillig void
    114  1.3  rillig test_if_else_if_else(void)
    115  1.3  rillig {
    116  1.3  rillig 	if (1)
    117  1.3  rillig 		reachable();
    118  1.4  rillig 	else if (1)			/* expect: 193 */
    119  1.4  rillig 		unreachable();
    120  1.3  rillig 	else
    121  1.4  rillig 		unreachable();		/* expect: 193 */
    122  1.3  rillig 
    123  1.3  rillig 	if (0)
    124  1.4  rillig 		unreachable();		/* expect: 193 */
    125  1.3  rillig 	else if (1)
    126  1.3  rillig 		reachable();
    127  1.3  rillig 	else
    128  1.4  rillig 		unreachable();		/* expect: 193 */
    129  1.3  rillig 
    130  1.3  rillig 	if (0)
    131  1.4  rillig 		unreachable();		/* expect: 193 */
    132  1.3  rillig 	else if (0)
    133  1.4  rillig 		unreachable();		/* expect: 193 */
    134  1.3  rillig 	else
    135  1.3  rillig 		reachable();
    136  1.3  rillig }
    137  1.3  rillig 
    138  1.3  rillig void
    139  1.3  rillig test_if_return(void)
    140  1.3  rillig {
    141  1.3  rillig 	if (1)
    142  1.3  rillig 		return;
    143  1.5  rillig 	unreachable();			/* expect: 193 */
    144  1.3  rillig }
    145  1.3  rillig 
    146  1.3  rillig void
    147  1.3  rillig test_if_else_return(void)
    148  1.3  rillig {
    149  1.3  rillig 	if (1)
    150  1.3  rillig 		reachable();
    151  1.3  rillig 	else
    152  1.4  rillig 		return;			/* expect: 193 */
    153  1.3  rillig 	reachable();
    154  1.3  rillig }
    155  1.3  rillig 
    156  1.3  rillig void
    157  1.3  rillig test_for_forever(void)
    158  1.3  rillig {
    159  1.3  rillig 	for (;;)
    160  1.3  rillig 		reachable();
    161  1.3  rillig 	unreachable();			/* expect: 193 */
    162  1.3  rillig }
    163  1.3  rillig 
    164  1.3  rillig void
    165  1.3  rillig test_for_true(void)
    166  1.3  rillig {
    167  1.3  rillig 	for (; 1;)
    168  1.3  rillig 		reachable();
    169  1.3  rillig 	unreachable();			/* expect: 193 */
    170  1.3  rillig }
    171  1.3  rillig 
    172  1.3  rillig void
    173  1.3  rillig test_for_false(void)
    174  1.3  rillig {
    175  1.3  rillig 	for (; 0;)
    176  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    177  1.3  rillig 	reachable();
    178  1.3  rillig }
    179  1.3  rillig 
    180  1.3  rillig void
    181  1.3  rillig test_for_break(void)
    182  1.3  rillig {
    183  1.3  rillig 	for (;;) {
    184  1.3  rillig 		reachable();
    185  1.3  rillig 		break;
    186  1.3  rillig 		unreachable();		/* expect: 193 */
    187  1.3  rillig 	}
    188  1.3  rillig 	reachable();
    189  1.3  rillig }
    190  1.3  rillig 
    191  1.3  rillig void
    192  1.3  rillig test_for_if_break(void)
    193  1.3  rillig {
    194  1.3  rillig 	for (;;) {
    195  1.3  rillig 		reachable();
    196  1.3  rillig 		if (0) {
    197  1.4  rillig 			unreachable();	/* expect: 193 */
    198  1.3  rillig 			break;
    199  1.3  rillig 			unreachable();	/* expect: 193 */
    200  1.3  rillig 		}
    201  1.3  rillig 		if (1) {
    202  1.3  rillig 			reachable();
    203  1.3  rillig 			break;
    204  1.3  rillig 			unreachable();	/* expect: 193 */
    205  1.3  rillig 		}
    206  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    207  1.3  rillig 	}
    208  1.3  rillig 	reachable();
    209  1.3  rillig }
    210  1.3  rillig 
    211  1.3  rillig void
    212  1.3  rillig test_for_continue(void)
    213  1.3  rillig {
    214  1.3  rillig 	for (;;) {
    215  1.3  rillig 		reachable();
    216  1.3  rillig 		continue;
    217  1.3  rillig 		unreachable();		/* expect: 193 */
    218  1.3  rillig 	}
    219  1.3  rillig 	unreachable();			/* expect: 193 */
    220  1.3  rillig }
    221  1.3  rillig 
    222  1.3  rillig void
    223  1.3  rillig test_for_if_continue(void)
    224  1.3  rillig {
    225  1.3  rillig 	for (;;) {
    226  1.3  rillig 		reachable();
    227  1.3  rillig 		if (0) {
    228  1.4  rillig 			unreachable();	/* expect: 193 */
    229  1.3  rillig 			continue;
    230  1.3  rillig 			unreachable();	/* expect: 193 */
    231  1.3  rillig 		}
    232  1.3  rillig 		if (1) {
    233  1.3  rillig 			reachable();
    234  1.3  rillig 			continue;
    235  1.3  rillig 			unreachable();	/* expect: 193 */
    236  1.3  rillig 		}
    237  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    238  1.3  rillig 	}
    239  1.3  rillig 	unreachable();			/* expect: 193 */
    240  1.3  rillig }
    241  1.3  rillig 
    242  1.3  rillig void
    243  1.3  rillig test_for_return(void)
    244  1.2  rillig {
    245  1.3  rillig 	for (;;) {
    246  1.3  rillig 		reachable();
    247  1.3  rillig 		return;
    248  1.3  rillig 		unreachable();		/* expect: 193 */
    249  1.3  rillig 	}
    250  1.3  rillig 	unreachable();			/* expect: 193 */
    251  1.2  rillig }
    252  1.3  rillig 
    253  1.3  rillig void
    254  1.3  rillig test_for_if_return(void)
    255  1.3  rillig {
    256  1.3  rillig 	for (;;) {
    257  1.3  rillig 		reachable();
    258  1.3  rillig 		if (0) {
    259  1.4  rillig 			unreachable();	/* expect: 193 */
    260  1.3  rillig 			return;
    261  1.3  rillig 			unreachable();	/* expect: 193 */
    262  1.3  rillig 		}
    263  1.3  rillig 		if (1) {
    264  1.3  rillig 			reachable();
    265  1.3  rillig 			return;
    266  1.3  rillig 			unreachable();	/* expect: 193 */
    267  1.3  rillig 		}
    268  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    269  1.3  rillig 	}
    270  1.3  rillig 	unreachable();			/* expect: 193 */
    271  1.3  rillig }
    272  1.3  rillig 
    273  1.3  rillig void
    274  1.3  rillig test_while_true(void)
    275  1.3  rillig {
    276  1.3  rillig 	while (1)
    277  1.3  rillig 		reachable();
    278  1.3  rillig 	unreachable();			/* expect: 193 */
    279  1.3  rillig }
    280  1.3  rillig 
    281  1.3  rillig void
    282  1.3  rillig test_while_false(void)
    283  1.3  rillig {
    284  1.3  rillig 	while (0)
    285  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    286  1.3  rillig 	reachable();
    287  1.3  rillig }
    288  1.3  rillig 
    289  1.3  rillig void
    290  1.3  rillig test_while_break(void)
    291  1.3  rillig {
    292  1.3  rillig 	while (1) {
    293  1.3  rillig 		reachable();
    294  1.3  rillig 		break;
    295  1.3  rillig 		unreachable();		/* expect: 193 */
    296  1.3  rillig 	}
    297  1.3  rillig 	reachable();
    298  1.3  rillig }
    299  1.3  rillig 
    300  1.3  rillig void
    301  1.3  rillig test_while_if_break(void)
    302  1.3  rillig {
    303  1.3  rillig 	while (1) {
    304  1.3  rillig 		reachable();
    305  1.3  rillig 		if (0) {
    306  1.4  rillig 			unreachable();	/* expect: 193 */
    307  1.3  rillig 			break;
    308  1.3  rillig 			unreachable();	/* expect: 193 */
    309  1.3  rillig 		}
    310  1.3  rillig 		if (1) {
    311  1.3  rillig 			reachable();
    312  1.3  rillig 			break;
    313  1.3  rillig 			unreachable();	/* expect: 193 */
    314  1.3  rillig 		}
    315  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    316  1.3  rillig 	}
    317  1.3  rillig 	reachable();
    318  1.3  rillig }
    319  1.3  rillig 
    320  1.3  rillig void
    321  1.3  rillig test_while_continue(void)
    322  1.3  rillig {
    323  1.3  rillig 	while (1) {
    324  1.3  rillig 		reachable();
    325  1.3  rillig 		continue;
    326  1.3  rillig 		unreachable();		/* expect: 193 */
    327  1.3  rillig 	}
    328  1.3  rillig 	unreachable();			/* expect: 193 */
    329  1.3  rillig }
    330  1.3  rillig 
    331  1.3  rillig void
    332  1.3  rillig test_while_if_continue(void)
    333  1.3  rillig {
    334  1.3  rillig 	while (1) {
    335  1.3  rillig 		reachable();
    336  1.3  rillig 		if (0) {
    337  1.4  rillig 			unreachable();	/* expect: 193 */
    338  1.3  rillig 			continue;
    339  1.3  rillig 			unreachable();	/* expect: 193 */
    340  1.3  rillig 		}
    341  1.3  rillig 		if (1) {
    342  1.3  rillig 			reachable();
    343  1.3  rillig 			continue;
    344  1.3  rillig 			unreachable();	/* expect: 193 */
    345  1.3  rillig 		}
    346  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    347  1.3  rillig 	}
    348  1.3  rillig 	unreachable();			/* expect: 193 */
    349  1.3  rillig }
    350  1.3  rillig 
    351  1.3  rillig void
    352  1.3  rillig test_while_return(void)
    353  1.3  rillig {
    354  1.3  rillig 	while (1) {
    355  1.3  rillig 		reachable();
    356  1.3  rillig 		return;
    357  1.3  rillig 		unreachable();		/* expect: 193 */
    358  1.3  rillig 	}
    359  1.3  rillig 	unreachable();			/* expect: 193 */
    360  1.3  rillig }
    361  1.3  rillig 
    362  1.3  rillig void
    363  1.3  rillig test_while_if_return(void)
    364  1.3  rillig {
    365  1.3  rillig 	while (1) {
    366  1.3  rillig 		reachable();
    367  1.3  rillig 		if (0) {
    368  1.4  rillig 			unreachable();	/* expect: 193 */
    369  1.3  rillig 			return;
    370  1.3  rillig 			unreachable();	/* expect: 193 */
    371  1.3  rillig 		}
    372  1.3  rillig 		if (1) {
    373  1.3  rillig 			reachable();
    374  1.3  rillig 			return;
    375  1.3  rillig 			unreachable();	/* expect: 193 */
    376  1.3  rillig 		}
    377  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    378  1.3  rillig 	}
    379  1.3  rillig 	unreachable();			/* expect: 193 */
    380  1.3  rillig }
    381  1.3  rillig 
    382  1.3  rillig void
    383  1.3  rillig test_do_while_true(void)
    384  1.3  rillig {
    385  1.3  rillig 	do {
    386  1.3  rillig 		reachable();
    387  1.3  rillig 	} while (1);
    388  1.3  rillig 	unreachable();			/* expect: 193 */
    389  1.3  rillig }
    390  1.3  rillig 
    391  1.3  rillig void
    392  1.3  rillig test_do_while_false(void)
    393  1.3  rillig {
    394  1.3  rillig 	do {
    395  1.3  rillig 		reachable();
    396  1.3  rillig 	} while (0);
    397  1.3  rillig 	reachable();
    398  1.3  rillig }
    399  1.3  rillig 
    400  1.3  rillig void
    401  1.3  rillig test_do_while_break(void)
    402  1.3  rillig {
    403  1.3  rillig 	do {
    404  1.3  rillig 		reachable();
    405  1.3  rillig 		break;
    406  1.3  rillig 		unreachable();		/* expect: 193 */
    407  1.3  rillig 	} while (1);
    408  1.3  rillig 	reachable();
    409  1.3  rillig }
    410  1.3  rillig 
    411  1.3  rillig void
    412  1.3  rillig test_do_while_if_break(void)
    413  1.3  rillig {
    414  1.3  rillig 	do {
    415  1.3  rillig 		reachable();
    416  1.3  rillig 		if (0) {
    417  1.4  rillig 			unreachable();	/* expect: 193 */
    418  1.3  rillig 			break;
    419  1.3  rillig 			unreachable();	/* expect: 193 */
    420  1.3  rillig 		}
    421  1.3  rillig 		if (1) {
    422  1.3  rillig 			reachable();
    423  1.3  rillig 			break;
    424  1.3  rillig 			unreachable();	/* expect: 193 */
    425  1.3  rillig 		}
    426  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    427  1.3  rillig 	} while (1);
    428  1.3  rillig 	reachable();
    429  1.3  rillig }
    430  1.3  rillig 
    431  1.3  rillig void
    432  1.3  rillig test_do_while_continue(void)
    433  1.3  rillig {
    434  1.3  rillig 	do {
    435  1.3  rillig 		reachable();
    436  1.3  rillig 		continue;
    437  1.3  rillig 		unreachable();		/* expect: 193 */
    438  1.3  rillig 	} while (1);
    439  1.3  rillig 	unreachable();			/* expect: 193 */
    440  1.3  rillig }
    441  1.3  rillig 
    442  1.3  rillig void
    443  1.3  rillig test_do_while_if_continue(void)
    444  1.3  rillig {
    445  1.3  rillig 	do {
    446  1.3  rillig 		reachable();
    447  1.3  rillig 		if (0) {
    448  1.4  rillig 			unreachable();	/* expect: 193 */
    449  1.3  rillig 			continue;
    450  1.3  rillig 			unreachable();	/* expect: 193 */
    451  1.3  rillig 		}
    452  1.3  rillig 		if (1) {
    453  1.3  rillig 			reachable();
    454  1.3  rillig 			continue;
    455  1.3  rillig 			unreachable();	/* expect: 193 */
    456  1.3  rillig 		}
    457  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    458  1.3  rillig 	} while (1);
    459  1.3  rillig 	unreachable();			/* expect: 193 */
    460  1.3  rillig }
    461  1.3  rillig 
    462  1.3  rillig void
    463  1.3  rillig test_do_while_return(void)
    464  1.3  rillig {
    465  1.3  rillig 	do {
    466  1.3  rillig 		reachable();
    467  1.3  rillig 		return;
    468  1.3  rillig 		unreachable();		/* expect: 193 */
    469  1.3  rillig 	} while (1);
    470  1.3  rillig 	unreachable();			/* expect: 193 */
    471  1.3  rillig }
    472  1.3  rillig 
    473  1.3  rillig void
    474  1.3  rillig test_do_while_if_return(void)
    475  1.3  rillig {
    476  1.3  rillig 	do {
    477  1.3  rillig 		reachable();
    478  1.3  rillig 		if (0) {
    479  1.4  rillig 			unreachable();	/* expect: 193 */
    480  1.3  rillig 			return;
    481  1.3  rillig 			unreachable();	/* expect: 193 */
    482  1.3  rillig 		}
    483  1.3  rillig 		if (1) {
    484  1.3  rillig 			reachable();
    485  1.3  rillig 			return;
    486  1.3  rillig 			unreachable();	/* expect: 193 */
    487  1.3  rillig 		}
    488  1.3  rillig 		unreachable();		/* TODO: expect: 193 */
    489  1.3  rillig 	} while (1);
    490  1.3  rillig 	unreachable();			/* expect: 193 */
    491  1.3  rillig }
    492  1.3  rillig 
    493  1.3  rillig /* TODO: switch */
    494  1.3  rillig 
    495  1.3  rillig /* TODO: goto */
    496  1.3  rillig 
    497  1.3  rillig /* TODO: system-dependent constant expression (see tn_system_dependent) */
    498