/* { dg-do run } */ /* { dg-options "-fsanitize=nonnull-attribute" } */ __attribute__((noipa, nonnull_if_nonzero (1, 4, 7))) __attribute__((nonnull (3), nonnull_if_nonzero (5, 2, 6))) void foo (void *a, unsigned long b, void *c, int d, void *e, unsigned long f, int g) { (void) a; (void) b; (void) c; (void) d; (void) e; (void) f; (void) g; } __attribute__((noipa)) void bar (void *a, unsigned long b, void *c, int d, void *e, unsigned long f, int g) { foo (a, b, c, d, e, f, g); } int main () { char x; bar (&x, 42, 0, 1, &x, 17, 18); bar (0, 25, &x, 7, &x, 0, 8); bar (&x, -82, &x, 68, 0, 9, 0); foo (&x, 42, 0, 1, &x, 17, 18); foo (0, 25, &x, 7, &x, 0, 8); foo (&x, -82, &x, 68, 0, 9, 0); } /* { dg-output "\.c:21:\[0-9]*:\[^\n\r]*null pointer passed as argument 3, which is declared to never be null\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*\.c:21:\[0-9]*:\[^\n\r]*null pointer passed as argument 1, which is declared to never be null\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*\.c:21:\[0-9]*:\[^\n\r]*null pointer passed as argument 5, which is declared to never be null\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*\.c:31:\[0-9]*:\[^\n\r]*null pointer passed as argument 3, which is declared to never be null\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*\.c:32:\[0-9]*:\[^\n\r]*null pointer passed as argument 1, which is declared to never be null\[^\n\r]*(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*\.c:33:\[0-9]*:\[^\n\r]*null pointer passed as argument 5, which is declared to never be null" } */