]>
Commit | Line | Data |
---|---|---|
b825a228 MS |
1 | /* PR middle-end/95136 - missing -Wuninitialized on an array access with |
2 | a variable offset | |
3 | { dg-do compile } | |
4 | { dg-options "-O -Wall" } */ | |
5 | ||
6 | #define NOIPA __attribute__ ((noipa)) | |
7 | ||
8 | NOIPA int a1_addr_varidx_plus_cst (int i) | |
9 | { | |
10 | int a[4]; // { dg-message "'a' declared here" } | |
11 | int *p = &a[i + 1]; | |
12 | return *p; // { dg-warning "'a|a\\\[<unknown>]' is used uninitialized" } | |
13 | } | |
14 | ||
15 | NOIPA int a1_plus_addr_varidx_cst (int i) | |
16 | { | |
17 | int a[4]; // { dg-message "'a' declared here" } | |
18 | int *p = &a[i] + 1; | |
19 | return *p; // { dg-warning "'a' is used uninitialized" } | |
20 | } | |
21 | ||
22 | NOIPA int a1_plus_addr_cstidx_var (int i) | |
23 | { | |
24 | int a[4]; // { dg-message "'a' declared here" } | |
25 | int *p = &a[1] + i; | |
26 | return *p; // { dg-warning "'a' is used uninitialized" } | |
27 | } | |
28 | ||
29 | NOIPA int a1_plus_addr_varidx_var (int i, int j) | |
30 | { | |
31 | int a[4]; // { dg-message "'a' declared here" } | |
32 | int *p = &a[i] + j; | |
33 | return *p; // { dg-warning "'a' is used uninitialized" } | |
34 | } | |
35 | ||
36 | ||
37 | NOIPA int a2_addr_varidx_plus_cst (int i, int j) | |
38 | { | |
39 | int a[4][4]; // { dg-message "'a' declared here" } | |
40 | int *p = &a[i + 1][j + 1]; | |
41 | return *p; // { dg-warning "'a|a\\\[<unknown>]\\\[<unknown>]' is used uninitialized" } | |
42 | } | |
43 | ||
44 | NOIPA int a2_plus_addr_varidx_cst (int i, int j) | |
45 | { | |
46 | int a[4][4]; // { dg-message "'a' declared here" } | |
47 | int *p = &a[i][j] + 1; | |
48 | return *p; // { dg-warning "'a' is used uninitialized" } | |
49 | } | |
50 | ||
51 | NOIPA int a2_plus_addr_cstidx_var (int i) | |
52 | { | |
53 | int a[4][4]; // { dg-message "'a' declared here" } | |
54 | int *p = &a[1][1] + i; | |
55 | return *p; // { dg-warning "'a' is used uninitialized" } | |
56 | } | |
57 | ||
58 | NOIPA int a2_plus_addr_varidx_var (int i, int j, int k) | |
59 | { | |
60 | int a[4][4]; // { dg-message "'a' declared here" } | |
61 | int *p = &a[i][j] + k; | |
62 | return *p; // { dg-warning "'a' is used uninitialized" } | |
63 | } |