diff options
Diffstat (limited to 'gcc/testsuite/gcc.dg/attr-ifunc-2.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/attr-ifunc-2.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/attr-ifunc-2.c b/gcc/testsuite/gcc.dg/attr-ifunc-2.c new file mode 100644 index 000000000..f717315f3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/attr-ifunc-2.c @@ -0,0 +1,28 @@ +/* { dg-require-ifunc "" } */ + +static void *resolver () +{ + return 0; +} + +extern int magic (void) /* { dg-message "previous definition" } */ + __attribute__ ((ifunc ("resolver"))); +extern int magic (void) /* { dg-error "redefinition" "" } */ + __attribute__ ((alias ("resolver"))); + +extern int spell (void) /* { dg-message "previous definition" } */ +{ + return 0; +} +extern int spell (void) /* { dg-error "redefinition" "" } */ + __attribute__ ((ifunc ("resolver"))); + +extern int mantra (void) /* { dg-message "previous definition" } */ + __attribute__ ((alias ("resolver"))); +extern int mantra (void) /* { dg-error "redefinition" "" } */ + __attribute__ ((ifunc ("resolver"))); + +extern int saying (void) /* { dg-error "weak .* cannot be defined" "" } */ + __attribute__ ((weak,ifunc ("resolver"))); +extern int maxim (void) /* { dg-error "indirect function .* cannot be declared weak" "" } */ + __attribute__ ((ifunc ("resolver"),weak)); |