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