* call.c (equal_functions): Also call decls_match for extern "C" fns.
From-SVN: r37024
This commit is contained in:
parent
57dd137ffb
commit
6c6ed0ef92
|
@ -1,3 +1,12 @@
|
||||||
|
2000-10-23 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* call.c (equal_functions): Also call decls_match for extern "C" fns.
|
||||||
|
|
||||||
|
2000-10-22 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
|
* call.c (build_conditional_expr): Use ocp_convert to force
|
||||||
|
rvalue conversion.
|
||||||
|
|
||||||
2000-10-22 Mark Mitchell <mark@codesourcery.com>
|
2000-10-22 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
* call.c (standard_conversion): Use RVALUE_CONVs for all
|
* call.c (standard_conversion): Use RVALUE_CONVs for all
|
||||||
|
|
|
@ -4931,14 +4931,16 @@ add_warning (winner, loser)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns true iff functions are equivalent. Equivalent functions are
|
/* Returns true iff functions are equivalent. Equivalent functions are
|
||||||
not identical only if one is a function-local extern function. */
|
not '==' only if one is a function-local extern function or if
|
||||||
|
both are extern "C". */
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
equal_functions (fn1, fn2)
|
equal_functions (fn1, fn2)
|
||||||
tree fn1;
|
tree fn1;
|
||||||
tree fn2;
|
tree fn2;
|
||||||
{
|
{
|
||||||
if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2))
|
if (DECL_LOCAL_FUNCTION_P (fn1) || DECL_LOCAL_FUNCTION_P (fn2)
|
||||||
|
|| DECL_EXTERN_C_FUNCTION_P (fn1))
|
||||||
return decls_match (fn1, fn2);
|
return decls_match (fn1, fn2);
|
||||||
return fn1 == fn2;
|
return fn1 == fn2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
// Test that two extern "C" declarations of the same name in different
|
||||||
|
// namespaces are treated as declaring the same function.
|
||||||
|
|
||||||
|
namespace foo {
|
||||||
|
extern "C" int f ();
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int f () { return 0; }
|
||||||
|
|
||||||
|
using namespace foo;
|
||||||
|
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
f ();
|
||||||
|
}
|
Loading…
Reference in New Issue