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
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
54int main (void)
55{
56  return 0;
57}
58