| /* PR c/33925 - missing -Waddress with the address of an inline function |
| { dg-do compile } |
| { dg-options "-Wall" } |
| { dg-require-weak "" } */ |
| |
| extern inline int eifn (void); |
| extern inline int eifn_def (void) { return 0; } |
| |
| static inline int sifn (void); |
| static inline int sifn_def (void) { return 0; } |
| |
| inline int ifn (void); |
| inline int ifn_def (void) { return 0; } |
| |
| extern __attribute__ ((weak)) int ewfn (void); |
| extern __attribute__ ((weak)) int ewfn_def (void) { return 0; } |
| |
| __attribute__ ((weak)) int wfn (void); |
| __attribute__ ((weak)) int wfn_def (void) { return 0; } |
| |
| static __attribute__((weakref ("ewfn"))) int swrfn (void); |
| |
| void test_function_eqz (int *p) |
| { |
| *p++ = eifn == 0; // { dg-warning "-Waddress" } |
| *p++ = eifn_def == 0; // { dg-warning "-Waddress" } |
| *p++ = sifn == 0; // { dg-warning "-Waddress" } |
| *p++ = sifn_def == 0; // { dg-warning "-Waddress" } |
| *p++ = ifn == 0; // { dg-warning "-Waddress" } |
| *p++ = ifn_def == 0; // { dg-warning "-Waddress" } |
| *p++ = ewfn == 0; |
| *p++ = ewfn_def == 0; // { dg-warning "-Waddress" } |
| *p++ = wfn == 0; |
| *p++ = wfn_def == 0; // { dg-warning "-Waddress" } |
| *p++ = swrfn == 0; |
| } |
| |
| |
| int test_function_if (int i) |
| { |
| if (eifn) // { dg-warning "-Waddress" } |
| i++; |
| if (eifn_def) // { dg-warning "-Waddress" } |
| i++; |
| if (sifn) // { dg-warning "-Waddress" } |
| i++; |
| if (sifn_def) // { dg-warning "-Waddress" } |
| i++; |
| if (ifn) // { dg-warning "-Waddress" } |
| i++; |
| if (ifn_def) // { dg-warning "-Waddress" } |
| i++; |
| if (ewfn) |
| i++; |
| if (ewfn_def) // { dg-warning "-Waddress" } |
| i++; |
| if (wfn) |
| i++; |
| if(wfn_def) // { dg-warning "-Waddress" } |
| i++; |
| if (swrfn) |
| i++; |
| return i; |
| } |
| |
| |
| extern int ei; |
| extern int ei_def = 1; |
| |
| static int si; |
| static int si_def = 1; |
| |
| int i; |
| int i_def = 1; |
| |
| extern __attribute__ ((weak)) int ewi; // declaration (may be null) |
| extern __attribute__ ((weak)) int ewi_def = 1; |
| |
| __attribute__ ((weak)) int wi; // definition (cannot be bull) |
| __attribute__ ((weak)) int wi_def = 1; |
| |
| static __attribute__((weakref ("ewi"))) int swri; |
| |
| void test_scalar (int *p) |
| { |
| *p++ = &ei == 0; // { dg-warning "-Waddress" } |
| *p++ = &ei_def == 0; // { dg-warning "-Waddress" } |
| *p++ = &si == 0; // { dg-warning "-Waddress" } |
| *p++ = &si_def == 0; // { dg-warning "-Waddress" } |
| *p++ = &i == 0; // { dg-warning "-Waddress" } |
| *p++ = &i_def == 0; // { dg-warning "-Waddress" } |
| *p++ = &ewi == 0; |
| *p++ = &ewi_def == 0; // { dg-warning "-Waddress" } |
| *p++ = &wi == 0; // { dg-warning "-Waddress" } |
| *p++ = &wi_def == 0; // { dg-warning "-Waddress" } |
| *p++ = &swri == 0; |
| } |
| |
| |
| extern int eia[]; |
| extern int eia_def[] = { 1 }; |
| |
| static int sia[1]; |
| static int sia_def[1] = { 1 }; |
| |
| int ia[1]; |
| int ia_def[] = { 1 }; |
| |
| extern __attribute__ ((weak)) int ewia[]; |
| extern __attribute__ ((weak)) int ewia_def[] = { 1 }; |
| |
| __attribute__ ((weak)) int wia[1]; // definition (cannot be null) |
| __attribute__ ((weak)) int wia_def[] = { 1 }; |
| |
| static __attribute__((weakref ("ewia"))) int swria[1]; |
| |
| void test_array (int *p) |
| { |
| *p++ = eia == 0; // { dg-warning "-Waddress" } |
| *p++ = eia_def == 0; // { dg-warning "-Waddress" } |
| *p++ = sia == 0; // { dg-warning "-Waddress" } |
| *p++ = sia_def == 0; // { dg-warning "-Waddress" } |
| *p++ = ia == 0; // { dg-warning "-Waddress" } |
| *p++ = ia_def == 0; // { dg-warning "-Waddress" } |
| *p++ = ewia == 0; |
| *p++ = ewia_def == 0; // { dg-warning "-Waddress" } |
| *p++ = wia == 0; // { dg-warning "-Waddress" } |
| *p++ = wia_def == 0; // { dg-warning "-Waddress" } |
| *p++ = swria == 0; |
| } |
| |
| /* { dg-prune-output "never defined" } |
| { dg-prune-output "initialized and declared 'extern'" } */ |