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