Commit 1552f874 by Joseph Myers Committed by Joseph Myers

re PR c/3116 (Bug with using oldstyle prototype declarations)

	* c-decl.c (store_parm_decls): When comparing types in an
	old-style function declaration with those from a previous
	prototype, compare the unqualified versions of parameter types.
	Fixes PR c/3116.

testsuite:
	* gcc.c-torture/compile/20010611-1.c: New test.

From-SVN: r43186
parent cff75d2e
2001-06-11 Joseph S. Myers <jsm28@cam.ac.uk>
* c-decl.c (store_parm_decls): When comparing types in an
old-style function declaration with those from a previous
prototype, compare the unqualified versions of parameter types.
Fixes PR c/3116.
2001-06-11 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/objc.texi: Use more logical markup. Use TeX dashes.
2001-06-11 Joseph S. Myers <jsm28@cam.ac.uk>
......
......@@ -6436,9 +6436,11 @@ store_parm_decls ()
"prototype declaration");
break;
}
/* Type for passing arg must be consistent
with that declared for the arg. */
if (! comptypes (DECL_ARG_TYPE (parm), TREE_VALUE (type)))
/* Type for passing arg must be consistent with that
declared for the arg. ISO C says we take the unqualified
type for parameters declared with qualified type. */
if (! comptypes (TYPE_MAIN_VARIANT (DECL_ARG_TYPE (parm)),
TYPE_MAIN_VARIANT (TREE_VALUE (type))))
{
if (TYPE_MAIN_VARIANT (TREE_TYPE (parm))
== TYPE_MAIN_VARIANT (TREE_VALUE (type)))
......
2001-06-11 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc.c-torture/compile/20010611-1.c: New test.
2001-06-11 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc.dg/c99-tag-1.c: Add more tests.
2001-06-10 Alexandre Oliva <aoliva@redhat.com>
......
/* Origin: PR c/3116 from Andreas Jaeger <aj@suse.de>. */
/* When determining type compatibility of function types, we must remove
qualifiers from argument types. We used to fail to do this properly
in store_parm_decls when comparing prototype and non-prototype
declarations. */
struct _IO_FILE {
int _flags;
};
typedef struct _IO_FILE __FILE;
typedef struct _IO_FILE _IO_FILE;
typedef long int wchar_t;
extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
__FILE *__restrict __stream);
wchar_t *
fgetws (buf, n, fp)
wchar_t *buf;
int n;
_IO_FILE *fp;
{
return (wchar_t *)0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment