1 /* Copyright (C) 2004, 2005 Free Software Foundation. 2 3 Verify that built-in wctype function attributes are correctly set 4 by the compiler. 5 6 Written by Kaveh Ghazi, 2004-03-25. */ 7 8 /* { dg-do link } */ 9 10 /* Use the target type definitions if we can. */ 11 #ifndef __WINT_TYPE__ 12 #define __WINT_TYPE__ int 13 #endif 14 15 #ifndef __WCHAR_TYPE__ 16 #define __WCHAR_TYPE__ int 17 #endif 18 test(int i)19void test(int i) 20 { 21 /* All of these ctype functions should be const/pure and thus 22 eliminated. */ 23 #define TEST_IS_WCTYPE(FN) \ 24 extern int FN(__WINT_TYPE__); \ 25 extern void link_failure_##FN(void); \ 26 if (FN(i) != FN(i)) \ 27 link_failure_##FN() 28 29 #define TEST_TO_WCTYPE(FN) \ 30 extern __WINT_TYPE__ FN(__WINT_TYPE__); \ 31 extern void link_failure_##FN(void); \ 32 if (FN(i) != FN(i)) \ 33 link_failure_##FN() 34 35 36 #ifdef __OPTIMIZE__ 37 TEST_IS_WCTYPE(iswalnum); 38 TEST_IS_WCTYPE(iswalpha); 39 TEST_IS_WCTYPE(iswblank); 40 TEST_IS_WCTYPE(iswcntrl); 41 TEST_IS_WCTYPE(iswdigit); 42 TEST_IS_WCTYPE(iswgraph); 43 TEST_IS_WCTYPE(iswlower); 44 TEST_IS_WCTYPE(iswprint); 45 TEST_IS_WCTYPE(iswpunct); 46 TEST_IS_WCTYPE(iswspace); 47 TEST_IS_WCTYPE(iswupper); 48 TEST_IS_WCTYPE(iswxdigit); 49 TEST_TO_WCTYPE(towlower); 50 TEST_TO_WCTYPE(towupper); 51 #endif /* __OPTIMIZE__ */ 52 } 53 main(void)54int main (void) 55 { 56 return 0; 57 } 58