mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-04 20:20:23 +08:00
re PR c/5503 (GCC ignores prototype)
PR c/5503: * c-decl.c (duplicate_decls): If builtin type has TYPE_ARG_TYPES NULL, use arguments from newtype. * gcc.dg/noncompile/20020213-1.c: New test. From-SVN: r49763
This commit is contained in:
parent
2a5e0aeacd
commit
d76e68001b
@ -1,3 +1,9 @@
|
||||
2002-02-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/5503:
|
||||
* c-decl.c (duplicate_decls): If builtin type has TYPE_ARG_TYPES NULL,
|
||||
use arguments from newtype.
|
||||
|
||||
2002-02-13 Eric Christopher <echristo@redhat.com>
|
||||
|
||||
* config/mips/mips.c (override_options): Add check for march/mipsX
|
||||
@ -21,7 +27,7 @@
|
||||
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Do
|
||||
not push_reload for altivec modes.
|
||||
|
||||
2002-02-13 Joel Sherrill <joel@OARcorp.com>
|
||||
2002-02-13 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* config.gcc (a29k-*-rtems), config/a29k/rtems.h: General cleanup across
|
||||
all RTEMS targets including removal of #includes from config/*/rtems*.h
|
||||
|
16
gcc/c-decl.c
16
gcc/c-decl.c
@ -1548,6 +1548,22 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
|
||||
if (! different_binding_level)
|
||||
TREE_TYPE (olddecl) = oldtype;
|
||||
}
|
||||
else if (TYPE_ARG_TYPES (oldtype) == NULL
|
||||
&& TYPE_ARG_TYPES (newtype) != NULL)
|
||||
{
|
||||
/* For bcmp, bzero, fputs the builtin type has arguments not
|
||||
specified. Use the ones from the prototype so that type checking
|
||||
is done for them. */
|
||||
tree trytype
|
||||
= build_function_type (TREE_TYPE (oldtype),
|
||||
TYPE_ARG_TYPES (newtype));
|
||||
trytype = build_type_attribute_variant (trytype,
|
||||
TYPE_ATTRIBUTES (oldtype));
|
||||
|
||||
oldtype = trytype;
|
||||
if (! different_binding_level)
|
||||
TREE_TYPE (olddecl) = oldtype;
|
||||
}
|
||||
if (!types_match)
|
||||
{
|
||||
/* If types don't match for a built-in, throw away the built-in. */
|
||||
|
@ -1,3 +1,7 @@
|
||||
2002-02-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.dg/noncompile/20020213-1.c: New test.
|
||||
|
||||
2002-02-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* g++.dg/other/debug3.C: New test.
|
||||
|
31
gcc/testsuite/gcc.dg/noncompile/20020213-1.c
Normal file
31
gcc/testsuite/gcc.dg/noncompile/20020213-1.c
Normal file
@ -0,0 +1,31 @@
|
||||
/* PR c/5503
|
||||
Test whether argument checking is done for fputs, bzero and bcmp. */
|
||||
typedef struct { int i; } FILE;
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
int fputs (const char *, FILE *);
|
||||
void bzero (void *, size_t);
|
||||
int bcmp (const void *, const void *, size_t);
|
||||
|
||||
char buf[32];
|
||||
FILE *f;
|
||||
|
||||
int main ()
|
||||
{
|
||||
fputs ("foo"); /* { dg-error "too few" } */
|
||||
fputs ("foo", "bar", "baz"); /* { dg-error "too many" } */
|
||||
fputs (21, 43);
|
||||
bzero (buf); /* { dg-error "too few" } */
|
||||
bzero (21); /* { dg-error "too few" } */
|
||||
bcmp (buf, buf + 16); /* { dg-error "too few" } */
|
||||
bcmp (21); /* { dg-error "too few" } */
|
||||
fputs ("foo", f);
|
||||
bzero (buf, 32);
|
||||
bcmp (buf, buf + 16, 16);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-warning "passing arg 2 of" "2nd incompatible" { target *-*-* } 15 } */
|
||||
/* { dg-warning "passing arg 1 of" "1st incompatible" { target *-*-* } 16 } */
|
||||
/* { dg-warning "passing arg 2 of" "2nd incompatible" { target *-*-* } 16 } */
|
||||
/* { dg-warning "passing arg 1 of" "1st incompatible" { target *-*-* } 18 } */
|
||||
/* { dg-warning "passing arg 1 of" "1st incompatible" { target *-*-* } 20 } */
|
Loading…
Reference in New Issue
Block a user