Viewing file: Wstringop-overflow-86.c (1.66 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* 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 "" } }
|