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