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