re PR c/59717 (better warning when using functions without including appropriate header files)
PR c/59717 * c-decl.c (header_for_builtin_fn): New function. (implicitly_declare): Suggest which header to include. * gcc.dg/pr59717.c: New test. From-SVN: r215979
This commit is contained in:
parent
12e99c3838
commit
0382aaa033
|
@ -1,3 +1,9 @@
|
|||
2014-10-07 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/59717
|
||||
* c-decl.c (header_for_builtin_fn): New function.
|
||||
(implicitly_declare): Suggest which header to include.
|
||||
|
||||
2014-10-07 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* c-convert.c (convert): Use error_operand_p.
|
||||
|
|
197
gcc/c/c-decl.c
197
gcc/c/c-decl.c
|
@ -2968,6 +2968,189 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
|
|||
}
|
||||
}
|
||||
|
||||
/* This function represents mapping of a function code FCODE
|
||||
to its respective header. */
|
||||
|
||||
static const char *
|
||||
header_for_builtin_fn (enum built_in_function fcode)
|
||||
{
|
||||
switch (fcode)
|
||||
{
|
||||
CASE_FLT_FN (BUILT_IN_ACOS):
|
||||
CASE_FLT_FN (BUILT_IN_ACOSH):
|
||||
CASE_FLT_FN (BUILT_IN_ASIN):
|
||||
CASE_FLT_FN (BUILT_IN_ASINH):
|
||||
CASE_FLT_FN (BUILT_IN_ATAN):
|
||||
CASE_FLT_FN (BUILT_IN_ATANH):
|
||||
CASE_FLT_FN (BUILT_IN_ATAN2):
|
||||
CASE_FLT_FN (BUILT_IN_CBRT):
|
||||
CASE_FLT_FN (BUILT_IN_CEIL):
|
||||
CASE_FLT_FN (BUILT_IN_COPYSIGN):
|
||||
CASE_FLT_FN (BUILT_IN_COS):
|
||||
CASE_FLT_FN (BUILT_IN_COSH):
|
||||
CASE_FLT_FN (BUILT_IN_ERF):
|
||||
CASE_FLT_FN (BUILT_IN_ERFC):
|
||||
CASE_FLT_FN (BUILT_IN_EXP):
|
||||
CASE_FLT_FN (BUILT_IN_EXP2):
|
||||
CASE_FLT_FN (BUILT_IN_EXPM1):
|
||||
CASE_FLT_FN (BUILT_IN_FABS):
|
||||
CASE_FLT_FN (BUILT_IN_FDIM):
|
||||
CASE_FLT_FN (BUILT_IN_FLOOR):
|
||||
CASE_FLT_FN (BUILT_IN_FMA):
|
||||
CASE_FLT_FN (BUILT_IN_FMAX):
|
||||
CASE_FLT_FN (BUILT_IN_FMIN):
|
||||
CASE_FLT_FN (BUILT_IN_FMOD):
|
||||
CASE_FLT_FN (BUILT_IN_FREXP):
|
||||
CASE_FLT_FN (BUILT_IN_HYPOT):
|
||||
CASE_FLT_FN (BUILT_IN_ILOGB):
|
||||
CASE_FLT_FN (BUILT_IN_LDEXP):
|
||||
CASE_FLT_FN (BUILT_IN_LGAMMA):
|
||||
CASE_FLT_FN (BUILT_IN_LLRINT):
|
||||
CASE_FLT_FN (BUILT_IN_LLROUND):
|
||||
CASE_FLT_FN (BUILT_IN_LOG):
|
||||
CASE_FLT_FN (BUILT_IN_LOG10):
|
||||
CASE_FLT_FN (BUILT_IN_LOG1P):
|
||||
CASE_FLT_FN (BUILT_IN_LOG2):
|
||||
CASE_FLT_FN (BUILT_IN_LOGB):
|
||||
CASE_FLT_FN (BUILT_IN_LRINT):
|
||||
CASE_FLT_FN (BUILT_IN_LROUND):
|
||||
CASE_FLT_FN (BUILT_IN_MODF):
|
||||
CASE_FLT_FN (BUILT_IN_NAN):
|
||||
CASE_FLT_FN (BUILT_IN_NEARBYINT):
|
||||
CASE_FLT_FN (BUILT_IN_NEXTAFTER):
|
||||
CASE_FLT_FN (BUILT_IN_NEXTTOWARD):
|
||||
CASE_FLT_FN (BUILT_IN_POW):
|
||||
CASE_FLT_FN (BUILT_IN_REMAINDER):
|
||||
CASE_FLT_FN (BUILT_IN_REMQUO):
|
||||
CASE_FLT_FN (BUILT_IN_RINT):
|
||||
CASE_FLT_FN (BUILT_IN_ROUND):
|
||||
CASE_FLT_FN (BUILT_IN_SCALBLN):
|
||||
CASE_FLT_FN (BUILT_IN_SCALBN):
|
||||
CASE_FLT_FN (BUILT_IN_SIN):
|
||||
CASE_FLT_FN (BUILT_IN_SINH):
|
||||
CASE_FLT_FN (BUILT_IN_SINCOS):
|
||||
CASE_FLT_FN (BUILT_IN_SQRT):
|
||||
CASE_FLT_FN (BUILT_IN_TAN):
|
||||
CASE_FLT_FN (BUILT_IN_TANH):
|
||||
CASE_FLT_FN (BUILT_IN_TGAMMA):
|
||||
CASE_FLT_FN (BUILT_IN_TRUNC):
|
||||
case BUILT_IN_ISINF:
|
||||
case BUILT_IN_ISNAN:
|
||||
return "<math.h>";
|
||||
CASE_FLT_FN (BUILT_IN_CABS):
|
||||
CASE_FLT_FN (BUILT_IN_CACOS):
|
||||
CASE_FLT_FN (BUILT_IN_CACOSH):
|
||||
CASE_FLT_FN (BUILT_IN_CARG):
|
||||
CASE_FLT_FN (BUILT_IN_CASIN):
|
||||
CASE_FLT_FN (BUILT_IN_CASINH):
|
||||
CASE_FLT_FN (BUILT_IN_CATAN):
|
||||
CASE_FLT_FN (BUILT_IN_CATANH):
|
||||
CASE_FLT_FN (BUILT_IN_CCOS):
|
||||
CASE_FLT_FN (BUILT_IN_CCOSH):
|
||||
CASE_FLT_FN (BUILT_IN_CEXP):
|
||||
CASE_FLT_FN (BUILT_IN_CIMAG):
|
||||
CASE_FLT_FN (BUILT_IN_CLOG):
|
||||
CASE_FLT_FN (BUILT_IN_CONJ):
|
||||
CASE_FLT_FN (BUILT_IN_CPOW):
|
||||
CASE_FLT_FN (BUILT_IN_CPROJ):
|
||||
CASE_FLT_FN (BUILT_IN_CREAL):
|
||||
CASE_FLT_FN (BUILT_IN_CSIN):
|
||||
CASE_FLT_FN (BUILT_IN_CSINH):
|
||||
CASE_FLT_FN (BUILT_IN_CSQRT):
|
||||
CASE_FLT_FN (BUILT_IN_CTAN):
|
||||
CASE_FLT_FN (BUILT_IN_CTANH):
|
||||
return "<complex.h>";
|
||||
case BUILT_IN_MEMCHR:
|
||||
case BUILT_IN_MEMCMP:
|
||||
case BUILT_IN_MEMCPY:
|
||||
case BUILT_IN_MEMMOVE:
|
||||
case BUILT_IN_MEMSET:
|
||||
case BUILT_IN_STRCAT:
|
||||
case BUILT_IN_STRCHR:
|
||||
case BUILT_IN_STRCMP:
|
||||
case BUILT_IN_STRCPY:
|
||||
case BUILT_IN_STRCSPN:
|
||||
case BUILT_IN_STRLEN:
|
||||
case BUILT_IN_STRNCAT:
|
||||
case BUILT_IN_STRNCMP:
|
||||
case BUILT_IN_STRNCPY:
|
||||
case BUILT_IN_STRPBRK:
|
||||
case BUILT_IN_STRRCHR:
|
||||
case BUILT_IN_STRSPN:
|
||||
case BUILT_IN_STRSTR:
|
||||
return "<string.h>";
|
||||
case BUILT_IN_FPRINTF:
|
||||
case BUILT_IN_PUTC:
|
||||
case BUILT_IN_FPUTC:
|
||||
case BUILT_IN_FPUTS:
|
||||
case BUILT_IN_FSCANF:
|
||||
case BUILT_IN_FWRITE:
|
||||
case BUILT_IN_PRINTF:
|
||||
case BUILT_IN_PUTCHAR:
|
||||
case BUILT_IN_PUTS:
|
||||
case BUILT_IN_SCANF:
|
||||
case BUILT_IN_SNPRINTF:
|
||||
case BUILT_IN_SPRINTF:
|
||||
case BUILT_IN_SSCANF:
|
||||
case BUILT_IN_VFPRINTF:
|
||||
case BUILT_IN_VFSCANF:
|
||||
case BUILT_IN_VPRINTF:
|
||||
case BUILT_IN_VSCANF:
|
||||
case BUILT_IN_VSNPRINTF:
|
||||
case BUILT_IN_VSPRINTF:
|
||||
case BUILT_IN_VSSCANF:
|
||||
return "<stdio.h>";
|
||||
case BUILT_IN_ISALNUM:
|
||||
case BUILT_IN_ISALPHA:
|
||||
case BUILT_IN_ISBLANK:
|
||||
case BUILT_IN_ISCNTRL:
|
||||
case BUILT_IN_ISDIGIT:
|
||||
case BUILT_IN_ISGRAPH:
|
||||
case BUILT_IN_ISLOWER:
|
||||
case BUILT_IN_ISPRINT:
|
||||
case BUILT_IN_ISPUNCT:
|
||||
case BUILT_IN_ISSPACE:
|
||||
case BUILT_IN_ISUPPER:
|
||||
case BUILT_IN_ISXDIGIT:
|
||||
case BUILT_IN_TOLOWER:
|
||||
case BUILT_IN_TOUPPER:
|
||||
return "<ctype.h>";
|
||||
case BUILT_IN_ISWALNUM:
|
||||
case BUILT_IN_ISWALPHA:
|
||||
case BUILT_IN_ISWBLANK:
|
||||
case BUILT_IN_ISWCNTRL:
|
||||
case BUILT_IN_ISWDIGIT:
|
||||
case BUILT_IN_ISWGRAPH:
|
||||
case BUILT_IN_ISWLOWER:
|
||||
case BUILT_IN_ISWPRINT:
|
||||
case BUILT_IN_ISWPUNCT:
|
||||
case BUILT_IN_ISWSPACE:
|
||||
case BUILT_IN_ISWUPPER:
|
||||
case BUILT_IN_ISWXDIGIT:
|
||||
case BUILT_IN_TOWLOWER:
|
||||
case BUILT_IN_TOWUPPER:
|
||||
return "<wctype.h>";
|
||||
case BUILT_IN_ABORT:
|
||||
case BUILT_IN_ABS:
|
||||
case BUILT_IN_CALLOC:
|
||||
case BUILT_IN_EXIT:
|
||||
case BUILT_IN_FREE:
|
||||
case BUILT_IN_LABS:
|
||||
case BUILT_IN_LLABS:
|
||||
case BUILT_IN_MALLOC:
|
||||
case BUILT_IN_REALLOC:
|
||||
case BUILT_IN__EXIT2:
|
||||
case BUILT_IN_ALIGNED_ALLOC:
|
||||
return "<stdlib.h>";
|
||||
case BUILT_IN_IMAXABS:
|
||||
return "<inttypes.h>";
|
||||
case BUILT_IN_STRFTIME:
|
||||
return "<time.h>";
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Generate an implicit declaration for identifier FUNCTIONID at LOC as a
|
||||
function of type int (). */
|
||||
|
||||
|
@ -3025,8 +3208,15 @@ implicitly_declare (location_t loc, tree functionid)
|
|||
(TREE_TYPE (decl)));
|
||||
if (!comptypes (newtype, TREE_TYPE (decl)))
|
||||
{
|
||||
warning_at (loc, 0, "incompatible implicit declaration of "
|
||||
"built-in function %qD", decl);
|
||||
bool warned = warning_at (loc, 0, "incompatible implicit "
|
||||
"declaration of built-in "
|
||||
"function %qD", decl);
|
||||
/* See if we can hint which header to include. */
|
||||
const char *header
|
||||
= header_for_builtin_fn (DECL_FUNCTION_CODE (decl));
|
||||
if (header != NULL && warned)
|
||||
inform (loc, "include %qs or provide a declaration of %qD",
|
||||
header, decl);
|
||||
newtype = TREE_TYPE (decl);
|
||||
}
|
||||
}
|
||||
|
@ -3034,7 +3224,8 @@ implicitly_declare (location_t loc, tree functionid)
|
|||
{
|
||||
if (!comptypes (newtype, TREE_TYPE (decl)))
|
||||
{
|
||||
error_at (loc, "incompatible implicit declaration of function %qD", decl);
|
||||
error_at (loc, "incompatible implicit declaration of "
|
||||
"function %qD", decl);
|
||||
locate_old_decl (decl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-10-07 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c/59717
|
||||
* gcc.dg/pr59717.c: New test.
|
||||
|
||||
2014-10-07 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* gcc.dg/guality/pr41616-1.c: Use -fgnu89-inline.
|
||||
|
|
|
@ -0,0 +1,277 @@
|
|||
/* PR c/59717 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=gnu11 -Wno-implicit-function-declaration" } */
|
||||
|
||||
void
|
||||
math (double d, int *ex, double *dp)
|
||||
{
|
||||
acos (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 8 } */
|
||||
acosh (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 10 } */
|
||||
asin (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 12 } */
|
||||
asinh (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 14 } */
|
||||
atan (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 16 } */
|
||||
atanh (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 18 } */
|
||||
atan2 (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 20 } */
|
||||
cbrt (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 22 } */
|
||||
ceil (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 24 } */
|
||||
copysign (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 26 } */
|
||||
cos (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 28 } */
|
||||
cosh (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 30 } */
|
||||
erf (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 32 } */
|
||||
erfc (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 34 } */
|
||||
exp (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 36 } */
|
||||
exp2 (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 38 } */
|
||||
expm1 (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 40 } */
|
||||
fabs (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 42 } */
|
||||
fdim (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 44 } */
|
||||
floor (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 46 } */
|
||||
fma (d, d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 48 } */
|
||||
fmax (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 50 } */
|
||||
fmin (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 52 } */
|
||||
fmod (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 54 } */
|
||||
frexp (d, ex); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 56 } */
|
||||
hypot (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 58 } */
|
||||
/* We don't generate the warning for ilogb. */
|
||||
ilogb (d);
|
||||
ldexp (d, *ex); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 62 } */
|
||||
lgamma (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 64 } */
|
||||
llrint (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 66 } */
|
||||
llround (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 68 } */
|
||||
log (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 70 } */
|
||||
log10 (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 72 } */
|
||||
log1p (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 74 } */
|
||||
log2 (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 76 } */
|
||||
logb (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 78 } */
|
||||
lrint (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 80 } */
|
||||
lround (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 82 } */
|
||||
modf (d, dp); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 84 } */
|
||||
nan (""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 86 } */
|
||||
nearbyint (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 88 } */
|
||||
nextafter (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 90 } */
|
||||
nexttoward (d, 20.0L); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 92 } */
|
||||
pow (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 94 } */
|
||||
remainder (d, d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 96 } */
|
||||
remquo (d, d, ex); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 98 } */
|
||||
rint (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 100 } */
|
||||
round (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 102 } */
|
||||
scalbln (d, 100L); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 104 } */
|
||||
scalbn (d, 100); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 106 } */
|
||||
sin (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 108 } */
|
||||
sinh (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 110 } */
|
||||
sincos (d, dp, dp); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 112 } */
|
||||
sqrt (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 114 } */
|
||||
tan (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 116 } */
|
||||
tanh (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 118 } */
|
||||
tgamma (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 120 } */
|
||||
trunc (d); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..math.h.." "" { target *-*-* } 122 } */
|
||||
}
|
||||
|
||||
void
|
||||
cmplx (double _Complex z)
|
||||
{
|
||||
cabs (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 129 } */
|
||||
cacos (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 131 } */
|
||||
cacosh (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 133 } */
|
||||
carg (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 135 } */
|
||||
casin (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 137 } */
|
||||
casinh (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 139 } */
|
||||
catan (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 141 } */
|
||||
catanh (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 143 } */
|
||||
ccos (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 145 } */
|
||||
ccosh (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 147 } */
|
||||
cexp (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 149 } */
|
||||
cimag (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 151 } */
|
||||
clog (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 153 } */
|
||||
conj (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 155 } */
|
||||
cpow (z, z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 157 } */
|
||||
cproj (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 159 } */
|
||||
creal (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 161 } */
|
||||
csin (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 163 } */
|
||||
csinh (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 165 } */
|
||||
csqrt (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 167 } */
|
||||
ctan (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 169 } */
|
||||
ctanh (z); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..complex.h.." "" { target *-*-* } 171 } */
|
||||
}
|
||||
|
||||
void
|
||||
string (void *p, void *q, __SIZE_TYPE__ sz)
|
||||
{
|
||||
memchr (p, 2, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 178 } */
|
||||
/* We don't generate the warning for memcmp. */
|
||||
memcmp (p, q, sz);
|
||||
memcpy (p, q, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 182 } */
|
||||
memmove (p, q, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 184 } */
|
||||
memset (p, 0, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 186 } */
|
||||
strcat (p, q); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 188 } */
|
||||
strchr (p, 'a'); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 190 } */
|
||||
/* We don't generate the warning for strcmp. */
|
||||
strcmp (p, q);
|
||||
strcpy (p, q); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 194 } */
|
||||
strcspn (p, q); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 196 } */
|
||||
strlen (p); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 198 } */
|
||||
strncat (p, q, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 200 } */
|
||||
/* We don't generate the warning for strncmp. */
|
||||
strncmp (p, q, sz);
|
||||
strncpy (p, q, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 204 } */
|
||||
strpbrk (p, q); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 206 } */
|
||||
strrchr (p, 'q'); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 208 } */
|
||||
strspn (p, q); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 210 } */
|
||||
strstr (p, q); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..string.h.." "" { target *-*-* } 212 } */
|
||||
}
|
||||
|
||||
/* Fake FILE. */
|
||||
typedef struct { int i; } FILE;
|
||||
|
||||
void
|
||||
stdio (FILE *fp, void *p, __SIZE_TYPE__ sz)
|
||||
{
|
||||
fprintf (fp, ""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 222 } */
|
||||
fscanf (fp, ""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 224 } */
|
||||
fwrite (p, sz, sz, fp); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 226 } */
|
||||
printf (""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 228 } */
|
||||
scanf (""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 230 } */
|
||||
snprintf ("", sz, ""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 232 } */
|
||||
sprintf ("", ""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 234 } */
|
||||
sscanf ("", ""); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdio.h.." "" { target *-*-* } 236 } */
|
||||
}
|
||||
|
||||
void
|
||||
stdlib (void *p, void *q, __SIZE_TYPE__ sz)
|
||||
{
|
||||
abort (); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 243 } */
|
||||
calloc (sz, 1); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 245 } */
|
||||
exit (1); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 247 } */
|
||||
free (p); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 249 } */
|
||||
labs (1L); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 251 } */
|
||||
llabs (1LL); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 253 } */
|
||||
malloc (sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 255 } */
|
||||
realloc (p, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 257 } */
|
||||
aligned_alloc (sz, sz); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..stdlib.h.." "" { target *-*-* } 259 } */
|
||||
}
|
||||
|
||||
void
|
||||
inttypes (__INTMAX_TYPE__ j)
|
||||
{
|
||||
imaxabs (j); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..inttypes.h.." "" { target *-*-* } 266 } */
|
||||
}
|
||||
|
||||
struct tm;
|
||||
|
||||
void
|
||||
timeh (char *s, __SIZE_TYPE__ sz, struct tm *tm)
|
||||
{
|
||||
strftime (s, sz, "", tm); /* { dg-warning "incompatible implicit" } */
|
||||
/* { dg-message "include ..time.h.." "" { target *-*-* } 275 } */
|
||||
}
|
Loading…
Reference in New Issue