1 1.3 rillig /* $NetBSD: msg_302.c,v 1.3 2022/06/17 06:59:16 rillig Exp $ */ 2 1.1 rillig # 3 "msg_302.c" 3 1.1 rillig 4 1.1 rillig // Test for message: %s returns pointer to automatic object [302] 5 1.1 rillig 6 1.3 rillig void * 7 1.3 rillig return_arg(int arg) 8 1.3 rillig { 9 1.3 rillig /* expect+1: warning: return_arg returns pointer to automatic object [302] */ 10 1.3 rillig return &arg; 11 1.3 rillig } 12 1.3 rillig 13 1.3 rillig void * 14 1.3 rillig return_local(void) 15 1.3 rillig { 16 1.3 rillig int local = 3; 17 1.3 rillig /* expect+1: warning: return_local returns pointer to automatic object [302] */ 18 1.3 rillig return &local; 19 1.3 rillig } 20 1.3 rillig 21 1.3 rillig void * 22 1.3 rillig return_local_array(_Bool cond) 23 1.3 rillig { 24 1.3 rillig int local[5]; 25 1.3 rillig int *p = local; 26 1.3 rillig 27 1.3 rillig /* XXX: lint doesn't track this indirection, but Clang-tidy does. */ 28 1.3 rillig if (cond) 29 1.3 rillig return p; 30 1.3 rillig 31 1.3 rillig /* expect+1: warning: return_local_array returns pointer to automatic object [302] */ 32 1.3 rillig return local + 5; 33 1.3 rillig } 34 1.3 rillig 35 1.3 rillig void * 36 1.3 rillig return_static(void) 37 1.3 rillig { 38 1.3 rillig static int long_lived = 3; 39 1.3 rillig return &long_lived; 40 1.3 rillig } 41