diff options
Diffstat (limited to 'REORG.TODO/gnulib')
-rw-r--r-- | REORG.TODO/gnulib/Makefile | 27 | ||||
-rw-r--r-- | REORG.TODO/gnulib/tst-gcc.c | 76 |
2 files changed, 103 insertions, 0 deletions
diff --git a/REORG.TODO/gnulib/Makefile b/REORG.TODO/gnulib/Makefile new file mode 100644 index 0000000000..996e824333 --- /dev/null +++ b/REORG.TODO/gnulib/Makefile @@ -0,0 +1,27 @@ +# Copyright (C) 1991-2017 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# <http://www.gnu.org/licenses/>. + +subdir := gnulib + +include ../Makeconfig + +# Maybe this is the right place for a test of gcc's interface. +tests = tst-gcc + +# Which routines are required is machine-dependent. + +include ../Rules diff --git a/REORG.TODO/gnulib/tst-gcc.c b/REORG.TODO/gnulib/tst-gcc.c new file mode 100644 index 0000000000..9eefc0afca --- /dev/null +++ b/REORG.TODO/gnulib/tst-gcc.c @@ -0,0 +1,76 @@ +/* Test program for the gcc interface. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +#define __no_type_class -1 +#define __void_type_class 0 +#define __integer_type_class 1 +#define __char_type_class 2 +#define __enumeral_type_class 3 +#define __boolean_type_class 4 +#define __pointer_type_class 5 +#define __reference_type_class 6 +#define __offset_type_class 7 +#define __real_type_class 8 +#define __complex_type_class 9 +#define __function_type_class 10 +#define __method_type_class 11 +#define __record_type_class 12 +#define __union_type_class 13 +#define __array_type_class 14 +#define __string_type_class 15 +#define __set_type_class 16 +#define __file_type_class 17 +#define __lang_type_class 18 + + +#define TEST(var) \ + ({ int wrong = (__builtin_classify_type (__##var##_type) \ + != __##var##_type_class); \ + printf ("%-15s is %d: %s\n", \ + #var, __builtin_classify_type (__##var##_type), \ + wrong ? "WRONG" : "OK"); \ + wrong; \ + }) + + +static int +do_test (void) +{ + int result = 0; + int __integer_type; + void *__pointer_type; + double __real_type; + __complex__ double __complex_type; + struct { int a; } __record_type; + union { int a; int b; } __union_type; + + result |= TEST (integer); + result |= TEST (pointer); + result |= TEST (real); + result |= TEST (complex); + result |= TEST (record); + result |= TEST (union); + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |