Viewing file: builtins.c (3.59 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Test to verify that calls to common built-in functions declared with no prototype do not cause an ICE. { dg-do compile } { dg-options "-O2 -Wall -Wextra" } { dg-prune-output "warning" } { dg-require-effective-target alloca } */
typedef __SIZE_TYPE__ size_t;
#if __cplusplus extern "C" {
#define NO_PROTO ... #else #define NO_PROTO /* empty */ #endif
/* Character classification built-ins from <ctype.h>. */ int isalpha (NO_PROTO); int isalnum (NO_PROTO); int isalpha (NO_PROTO); int iscntrl (NO_PROTO); int isdigit (NO_PROTO); int isgraph (NO_PROTO); int islower (NO_PROTO); int isprint (NO_PROTO); int ispunct (NO_PROTO); int isspace (NO_PROTO); int isupper (NO_PROTO); int isxdigit (NO_PROTO); int tolower (NO_PROTO); int toupper (NO_PROTO);
/* Memory allocation built-ins from <stdlib.h>. */ void* alloca (NO_PROTO); void* aligned_alloc (NO_PROTO); void* calloc (NO_PROTO); void* malloc (NO_PROTO); void* realloc (NO_PROTO);
/* Raw memory built-ins from <string.h>. */ void* memcpy (NO_PROTO); void* memchr (NO_PROTO); void* memmove (NO_PROTO); void* mempcpy (NO_PROTO); void* memset (NO_PROTO);
/* String built-ins from <string.h>. */ char* stpcpy (NO_PROTO); char* stpncpy (NO_PROTO);
char* strcat (NO_PROTO); char* strcpy (NO_PROTO);
char* strdup (NO_PROTO); char* strndup (NO_PROTO);
char* strncat (NO_PROTO); char* strncpy (NO_PROTO);
size_t strlen (NO_PROTO); size_t strnlen (NO_PROTO);
char* strchr (NO_PROTO); int strcmp (NO_PROTO); int strncmp (NO_PROTO);
/* Input/output functions from <stdio.h>. */ int puts (NO_PROTO); int fputs (NO_PROTO);
int scanf (NO_PROTO); int fscanf (NO_PROTO); int sscanf (NO_PROTO); int vfscanf (NO_PROTO); int vsscanf (NO_PROTO);
int printf (NO_PROTO); int fprintf (NO_PROTO); int sprintf (NO_PROTO);
int snprintf (NO_PROTO);
int vprintf (NO_PROTO); int vfprintf (NO_PROTO); int vsprintf (NO_PROTO);
int vsnprintf (NO_PROTO);
#if __cplusplus } #endif
#define CONCAT(a, b) a ## b #define UNIQ_NAME(func, id) CONCAT (test_ ## func ## _, id)
#define TEST_FUNC(func, arglist) \ __typeof__ (func arglist) \ UNIQ_NAME (func, __COUNTER__) (void) { \ return func arglist; \ }
#define T1(func) \ TEST_FUNC (func, ()); \ TEST_FUNC (func, (1)); \ TEST_FUNC (func, ("")); \ TEST_FUNC (func, ((void*)1)); \ TEST_FUNC (func, (iarr)); \ TEST_FUNC (func, (function))
#define T2(func) \ TEST_FUNC (func, (1, 1)); \ TEST_FUNC (func, (1, "")); \ TEST_FUNC (func, (1, (void*)1)); \ TEST_FUNC (func, (1, iarr)); \ TEST_FUNC (func, (1, function))
#define T3(func) \ TEST_FUNC (func, (1, 1, 1)); \ TEST_FUNC (func, (1, 1, "")); \ TEST_FUNC (func, (1, 1, (void*)1)); \ TEST_FUNC (func, (1, 1, iarr)); \ TEST_FUNC (func, (1, 1, function))
extern int iarr[]; extern void function (void);
T1 (isalpha); T1 (isalnum); T1 (isalpha); T1 (iscntrl); T1 (isdigit); T1 (isgraph); T1 (islower); T1 (isprint); T1 (ispunct); T1 (isspace); T1 (isupper); T1 (isxdigit); T1 (tolower); T1 (toupper);
T1 (alloca); T2 (aligned_alloc); T2 (malloc); T2 (calloc); T2 (realloc);
T3 (memcpy); T3 (memmove); T3 (mempcpy); T3 (memset); T3 (memchr);
T2 (stpcpy); T3 (stpncpy);
T2 (strcat); T2 (strcpy);
T1 (strdup); T2 (strndup);
T3 (strncat); T3 (strncpy);
T2 (strchr); T2 (strcmp); T3 (strncmp);
T1 (strlen); T2 (strnlen);
T1 (puts); T2 (fputs);
T1 (scanf); T2 (fscanf); T2 (sscanf); T2 (vfscanf); T2 (vsscanf);
T2 (printf); T3 (fprintf); T3 (sprintf);
T3 (snprintf);
T2 (vprintf); T2 (vfprintf); T2 (vsprintf);
T3 (vsnprintf);
|