blob: 345abe4a274bcf89792e9175dea382572130110c [file] [log] [blame]
/* 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 "" }
}