| /* Copyright (C) 2004, 2005 Free Software Foundation. |
| |
| Verify that built-in wctype function attributes are correctly set |
| by the compiler. |
| |
| Written by Kaveh Ghazi, 2004-03-25. */ |
| |
| /* { dg-do link } */ |
| |
| /* Use the target type definitions if we can. */ |
| #ifndef __WINT_TYPE__ |
| #define __WINT_TYPE__ int |
| #endif |
| |
| #ifndef __WCHAR_TYPE__ |
| #define __WCHAR_TYPE__ int |
| #endif |
| |
| void test(int i) |
| { |
| /* All of these ctype functions should be const/pure and thus |
| eliminated. */ |
| #define TEST_IS_WCTYPE(FN) \ |
| extern int FN(__WINT_TYPE__); \ |
| extern void link_failure_##FN(void); \ |
| if (FN(i) != FN(i)) \ |
| link_failure_##FN() |
| |
| #define TEST_TO_WCTYPE(FN) \ |
| extern __WINT_TYPE__ FN(__WINT_TYPE__); \ |
| extern void link_failure_##FN(void); \ |
| if (FN(i) != FN(i)) \ |
| link_failure_##FN() |
| |
| |
| #ifdef __OPTIMIZE__ |
| TEST_IS_WCTYPE(iswalnum); |
| TEST_IS_WCTYPE(iswalpha); |
| TEST_IS_WCTYPE(iswblank); |
| TEST_IS_WCTYPE(iswcntrl); |
| TEST_IS_WCTYPE(iswdigit); |
| TEST_IS_WCTYPE(iswgraph); |
| TEST_IS_WCTYPE(iswlower); |
| TEST_IS_WCTYPE(iswprint); |
| TEST_IS_WCTYPE(iswpunct); |
| TEST_IS_WCTYPE(iswspace); |
| TEST_IS_WCTYPE(iswupper); |
| TEST_IS_WCTYPE(iswxdigit); |
| TEST_TO_WCTYPE(towlower); |
| TEST_TO_WCTYPE(towupper); |
| #endif /* __OPTIMIZE__ */ |
| } |
| |
| int main (void) |
| { |
| return 0; |
| } |