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