1/* { dg-require-ifunc "" } */
2
3static void *resolver ()
4{
5  return 0;
6}
7
8extern int magic (void)  /* { dg-message "previous definition" } */
9     __attribute__ ((ifunc ("resolver")));
10extern int magic (void)  /* { dg-error "redefinition" "" } */
11     __attribute__ ((alias ("resolver")));
12
13extern int spell (void)  /* { dg-message "previous definition" } */
14{
15  return 0;
16}
17extern int spell (void)  /* { dg-error "redefinition" "" } */
18     __attribute__ ((ifunc ("resolver")));
19
20extern int mantra (void)  /* { dg-message "previous definition" } */
21     __attribute__ ((alias ("resolver")));
22extern int mantra (void)  /* { dg-error "redefinition" "" } */
23     __attribute__ ((ifunc ("resolver")));
24
25extern int saying (void)  /* { dg-error "weak .* cannot be defined" "" } */
26     __attribute__ ((weak,ifunc ("resolver")));
27extern int maxim (void) /* { dg-error "indirect function .* cannot be declared weak" "" } */
28     __attribute__ ((ifunc ("resolver"),weak));
29