blob: 345abe4a274bcf89792e9175dea382572130110c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/* PR middle-end/101751 - attribute access none with void pointer expects
nonzero size
{ dg-do compile }
{ dg-options "-Wall" } */
__attribute__ ((access (none, 1))) void
fvp_m1 (const void*);
void nowarn_m1 (void)
{
/* Verify these don't trigger a warning for calls to a function
declared with attribute access none. */
fvp_m1 ((void*)-1); // { dg-bogus "-Wstringop-" }
fvp_m1 ((void*)1); // { dg-bogus "-Wstringop-" }
}
__attribute__ ((access (none, 1))) void
fvp_none (void*);
void nowarn_c_cp1 (void)
{
char c;
fvp_none (&c);
fvp_none (&c + 1); // { dg-bogus "-Wstringop-" }
}
void nowarn_f_fp1 (void)
{
fvp_none ((char*)&nowarn_f_fp1);
fvp_none ((char*)&nowarn_f_fp1 + 1);
}
void nowarn_sp1_sp_4 (void)
{
fvp_none ("" + 1); // { dg-bogus "-Wstringop-" }
fvp_none ("123" + 4); // { dg-bogus "-Wstringop-" }
}
__attribute__ ((access (none, 1))) void
wfvp_none (void*); // { dg-message "in a call to function 'wfvp_none' declared with attribute 'access \\\(none, 1\\\)'" }
void warn_cm1_p1 (void)
{
char c;
/* With optimization both of the following are diagnosed by -Warray-bounds.
The second also without optimization by -Wstringop-overread. They
should both be diagnosed by the same warning even without optimization. */
wfvp_none (&c - 1); // { dg-warning "" "pr??????" { xfail *-*-* } }
wfvp_none (&c + 2); // { dg-warning "" }
}
void warn_fp2 (void)
{
void *p = (char*)&warn_fp2 + sizeof warn_fp2;
fvp_none (p); // { dg-warning "" "pr??????" { xfail *-*-* } }
}
void warn_sp2 (void)
{
wfvp_none ("" + 2); // { dg-warning "" }
}
|