Require target lra in gcc.dg/pr108095.c
[official-gcc.git] / gcc / testsuite / gcc.dg / uninit-42.c
blobefaaacdf9bcc7d565d24dd03143ca5f0e3498651
1 /* PR middle-end/101734 - missing warning reading from a write-only object
2 Verify that reading objects pointed to by arguments
3 declared with attribute access none or write-only is diagnosed by
4 -Wmaybe-uninitialized.
5 { dg-do compile }
6 { dg-options "-Wall" } */
8 #define A(mode, ...) __attribute__ ((access (mode, __VA_ARGS__)))
10 void sink (void *, ...);
13 A (write_only, 1, 2)
14 int nowarn_wo_assign_r0 (int *p, int n)
16 *p = n;
17 return *p;
20 A (write_only, 1, 2)
21 int nowarn_wo_sink_r0 (int *p, int n)
23 sink (p, p + 1, p + n);
24 return *p;
27 A (write_only, 1, 2)
28 int warn_wo_r0 (int *p, int n)
30 return *p; // { dg-warning "'\\*p' may be used uninitialized \\\[-Wmaybe-uninitialized" }
34 A (write_only, 1, 2)
35 int nowarn_wo_w1_r1 (int *p, int n)
37 p[1] = n;
38 return p[1];
41 A (write_only, 1, 2)
42 int warn_wo_r1 (int *p, int n)
44 return p[1]; // { dg-warning "'p\\\[1]' may be used uninitialized" }
48 A (write_only, 1, 2)
49 int nowarn_wo_rwi_rj (int *p, int n, int i, int j)
51 p[i] = n;
52 return p[j];
55 A (write_only, 1, 2)
56 int warn_wo_ri (int *p, int n, int i)
58 return p[i]; // { dg-warning " may be used uninitialized" }
63 A (none, 1, 2)
64 int* nowarn_none_sink_return (int *p, int n)
66 sink (p, p + 1, p + n);
67 return p;
70 A (none, 1, 2)
71 int warn_none_r0 (int *p, int n)
73 (void)&n;
74 return *p; // { dg-warning "'\\*p' may be used uninitialized" }
77 A (none, 1, 2)
78 int warn_none_r1 (int *p, int n)
80 return p[1]; // { dg-warning "'p\\\[1]' may be used uninitialized" }
83 A (write_only, 1, 2)
84 int warn_none_ri (int *p, int n, int i)
86 return p[i]; // { dg-warning " may be used uninitialized" }