Home | History | Annotate | Line # | Download | only in lint1
msg_158.c revision 1.3
      1  1.3  rillig /*	$NetBSD: msg_158.c,v 1.3 2021/03/16 23:39:41 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.3  rillig 	sink_int(twice_arg);	/* expect: 158 */
     14  1.3  rillig 	twice_arg = 2 * arg;
     15  1.3  rillig 	sink_int(twice_arg);
     16  1.3  rillig }
     17  1.3  rillig 
     18  1.3  rillig void
     19  1.3  rillig conditionally_used(int arg)
     20  1.3  rillig {
     21  1.3  rillig 	int twice_arg;
     22  1.3  rillig 
     23  1.3  rillig 	if (arg > 0)
     24  1.3  rillig 		twice_arg = 2 * arg;
     25  1.3  rillig 	if (arg > 0)
     26  1.3  rillig 		sink_int(twice_arg);
     27  1.3  rillig }
     28  1.3  rillig 
     29  1.3  rillig void
     30  1.3  rillig conditionally_unused(int arg)
     31  1.3  rillig {
     32  1.3  rillig 	int twice_arg;
     33  1.3  rillig 
     34  1.3  rillig 	if (arg > 0)
     35  1.3  rillig 		twice_arg = 2 * arg;
     36  1.3  rillig 
     37  1.3  rillig 	/*
     38  1.3  rillig 	 * This situation is not detected by lint as it does not track the
     39  1.3  rillig 	 * possible code paths for all conditions.
     40  1.3  rillig 	 */
     41  1.3  rillig 	if (arg < 0)
     42  1.3  rillig 		sink_int(twice_arg);
     43  1.3  rillig }
     44