mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-27 10:03:58 +08:00
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
This commit is contained in:
parent
784904958d
commit
bc30fc12b1
@ -1,3 +1,9 @@
|
||||
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;
|
||||
|
@ -1,3 +1,9 @@
|
||||
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,
|
||||
|
15
gcc/testsuite/g++.dg/warn/pr15774-1.C
Normal file
15
gcc/testsuite/g++.dg/warn/pr15774-1.C
Normal file
@ -0,0 +1,15 @@
|
||||
// { 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" }
|
||||
{
|
||||
}
|
||||
|
||||
|
15
gcc/testsuite/g++.dg/warn/pr15774-2.C
Normal file
15
gcc/testsuite/g++.dg/warn/pr15774-2.C
Normal file
@ -0,0 +1,15 @@
|
||||
// { 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)
|
||||
{
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user