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