|  | /* Test program for the gcc interface. | 
|  | Copyright (C) 2000-2016 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" |