From 8fb81470d9466b7e3d60cbfd6fc2d04fd1aae78a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 2 Aug 2000 00:09:25 +0000 Subject: Update. * gnulib/Makefile (tests): Add tst-gcc. * gnulib/tst-gcc.c: New file. * assert/Makefile (routines): Add __assert. * assert/Versions: Export __assert for glibc 2.2. * assert/__assert.c: New file. * assert/assert.h: Declare __assert. 2000-07-27 Bruno Haible * locale/localeinfo.h (_ISCTYPE): New macro. * posix/fnmatch_loop.c (internal_fnmatch): Use it, support new LC_CTYPE locale format. * locale/programs/ld-ctype.c (locale_ctype_t): New field class_b. (ctype_output): Output class_b[nr] right before class_3level[nr]. (allocate_arrays): Fill class_b, similarly to class_3level. 2000-08-01 Ulrich Drepper --- gnulib/Makefile | 5 +++- gnulib/tst-gcc.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 gnulib/tst-gcc.c (limited to 'gnulib') diff --git a/gnulib/Makefile b/gnulib/Makefile index a7255b3..3586feb 100644 --- a/gnulib/Makefile +++ b/gnulib/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1991, 1997 Free Software Foundation, Inc. +# Copyright (C) 1991, 1997, 2000 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 @@ -18,6 +18,9 @@ subdir := gnulib +# 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/gnulib/tst-gcc.c b/gnulib/tst-gcc.c new file mode 100644 index 0000000..2d930ae --- /dev/null +++ b/gnulib/tst-gcc.c @@ -0,0 +1,74 @@ +/* Test program for the gcc interface. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper . + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +#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; \ + }) + + +int +main (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; +} -- cgit v1.1