| /* PR c/104633 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Winfinite-recursion" } */ |
| |
| typedef __SIZE_TYPE__ size_t; |
| int memcmp (const void *, const void *, size_t); |
| |
| extern inline __attribute__((always_inline, gnu_inline)) int |
| memcmp (const void *p, const void *q, size_t size) /* { dg-warning "infinite recursion detected" } */ |
| { /* { dg-error "inlining failed in call to" "" { target *-*-* } .-1 } */ |
| return memcmp (p, q, size); /* { dg-message "recursive call" } */ |
| } /* { dg-message "called from here" "" { target *-*-* } .-1 } */ |
| |
| int |
| foo (const void *p, const void *q, size_t size) |
| { |
| return memcmp (p, q, size); |
| } |