Commit bc30fc12 by Kai Tietz Committed by Kai Tietz

re PR c++/15774 (Conflicting function decls not diagnosed)

2010-12-25  Kai Tietz  <kai.tietz@onevision.com>

	PR c++/15774
	* decl.c (decls_match): Check for FUNCTION_DECL
	also for identity of compatible attributes.


ChangeLog gcc/testsuite

2010-12-25  Kai Tietz  <kai.tietz@onevision.com>

	PR c++/15774
	* g++.dg/warn/pr15774-1.C: New test.
	* g++.dg/warn/pr15774-2.C: New test.

From-SVN: r168241
parent 78490495
2010-12-25 Kai Tietz <kai.tietz@onevision.com>
PR c++/15774
* decl.c (decls_match): Check for FUNCTION_DECL
also for identity of compatible attributes.
2010-12-22 Nathan Froyd <froydnj@codesourcery.com>
* decl.c (decls_match, duplicate_decls): Use prototype_p.
......
......@@ -1009,7 +1009,11 @@ decls_match (tree newdecl, tree olddecl)
}
#endif
else
types_match = compparms (p1, p2);
types_match =
compparms (p1, p2)
&& (TYPE_ATTRIBUTES (TREE_TYPE (newdecl)) == NULL_TREE
|| targetm.comp_type_attributes (TREE_TYPE (newdecl),
TREE_TYPE (olddecl)) != 0);
}
else
types_match = 0;
......
2010-12-25 Kai Tietz <kai.tietz@onevision.com>
PR c++/15774
* g++.dg/warn/pr15774-1.C: New test.
* g++.dg/warn/pr15774-2.C: New test.
2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
* objc.dg/gnu-api-2-sel.m: Test calling sel_getUid,
......
// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
// Test that an new declartion with different attributes then old one fail.
extern void foo (int); // { dg-error "ambiguates old declaration" }
void
bar (void)
{
foo (1);
}
void __attribute__((stdcall)) foo (int i) // { dg-error "new declaration" }
{
}
// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
// Test that old declaration is used, if new one has no attributes.
extern void __attribute__((stdcall)) foo (int);
void
bar (void)
{
foo (1);
}
void foo (int i)
{
}
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