Home | History | Annotate | Line # | Download | only in lint1
      1  1.6  rillig /*	$NetBSD: msg_158.c,v 1.6 2023/03/28 14:44:35 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_158.c"
      3  1.1  rillig 
      4  1.5  rillig // Test for message: '%s' may be used before set [158]
      5  1.1  rillig 
      6  1.6  rillig /* lint1-extra-flags: -X 351 */
      7  1.6  rillig 
      8  1.3  rillig void sink_int(int);
      9  1.3  rillig 
     10  1.3  rillig void
     11  1.3  rillig example(int arg)
     12  1.3  rillig {
     13  1.3  rillig 	int twice_arg;
     14  1.3  rillig 
     15  1.5  rillig 	/* expect+1: warning: 'twice_arg' may be used before set [158] */
     16  1.4  rillig 	sink_int(twice_arg);
     17  1.3  rillig 	twice_arg = 2 * arg;
     18  1.3  rillig 	sink_int(twice_arg);
     19  1.3  rillig }
     20  1.3  rillig 
     21  1.3  rillig void
     22  1.3  rillig conditionally_used(int arg)
     23  1.3  rillig {
     24  1.3  rillig 	int twice_arg;
     25  1.3  rillig 
     26  1.3  rillig 	if (arg > 0)
     27  1.3  rillig 		twice_arg = 2 * arg;
     28  1.3  rillig 	if (arg > 0)
     29  1.3  rillig 		sink_int(twice_arg);
     30  1.3  rillig }
     31  1.3  rillig 
     32  1.3  rillig void
     33  1.3  rillig conditionally_unused(int arg)
     34  1.3  rillig {
     35  1.3  rillig 	int twice_arg;
     36  1.3  rillig 
     37  1.3  rillig 	if (arg > 0)
     38  1.3  rillig 		twice_arg = 2 * arg;
     39  1.3  rillig 
     40  1.3  rillig 	/*
     41  1.3  rillig 	 * This situation is not detected by lint as it does not track the
     42  1.3  rillig 	 * possible code paths for all conditions.
     43  1.3  rillig 	 */
     44  1.3  rillig 	if (arg < 0)
     45  1.3  rillig 		sink_int(twice_arg);
     46  1.3  rillig }
     47