Commit d035c296 by Mark Mitchell Committed by Mark Mitchell

re PR c++/21784 (Using vs builtin names)

	PR c++/21784
	* name-lookup.c (do_nonmember_using_decl): Ignore builtin
	functions, even	when the used name is not a function.

	PR c++/21784
	* g++.dg/lookup/using14.C: New test.

From-SVN: r100365
parent 2a2ea376
2005-05-30 Mark Mitchell <mark@codesourcery.com>
PR c++/21784
* name-lookup.c (do_nonmember_using_decl): Ignore builtin
functions, even when the used name is not a function.
2005-05-30 Kazu Hirata <kazu@cs.umass.edu> 2005-05-30 Kazu Hirata <kazu@cs.umass.edu>
* operators.def, optimize.c: Update copyright. * operators.def, optimize.c: Update copyright.
2005-05-28 Mark Mitchell <mark@codesourcery.com> 2005-05-28 Mark Mitchell <mark@codesourcery.com>
PR c++/21210
* call.c (standard_conversion): Permit conversions to complex
types if conversion to the corresponding scalar type would be
permitted.
PR c++/21340 PR c++/21340
* method.c (implicitly_declare_fn): Clear processing_template_decl * method.c (implicitly_declare_fn): Clear processing_template_decl
when generating implicit declaration. when generating implicit declaration.
......
...@@ -2032,6 +2032,14 @@ do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype, ...@@ -2032,6 +2032,14 @@ do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype,
return; return;
} }
/* It is impossible to overload a built-in function; any explicit
declaration eliminates the built-in declaration. So, if OLDVAL
is a built-in, then we can just pretend it isn't there. */
if (oldval
&& TREE_CODE (oldval) == FUNCTION_DECL
&& DECL_ANTICIPATED (oldval))
oldval = NULL_TREE;
/* Check for using functions. */ /* Check for using functions. */
if (decls.value && is_overloaded_fn (decls.value)) if (decls.value && is_overloaded_fn (decls.value))
{ {
...@@ -2044,15 +2052,6 @@ do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype, ...@@ -2044,15 +2052,6 @@ do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype,
oldval = NULL_TREE; oldval = NULL_TREE;
} }
/* It is impossible to overload a built-in function; any
explicit declaration eliminates the built-in declaration.
So, if OLDVAL is a built-in, then we can just pretend it
isn't there. */
if (oldval
&& TREE_CODE (oldval) == FUNCTION_DECL
&& DECL_ANTICIPATED (oldval))
oldval = NULL_TREE;
*newval = oldval; *newval = oldval;
for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp)) for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp))
{ {
......
2005-05-30 Mark Mitchell <mark@codesourcery.com>
PR c++/21784
* g++.dg/lookup/using14.C: New test.
2005-05-30 Kazu Hirata <kazu@cs.umass.edu> 2005-05-30 Kazu Hirata <kazu@cs.umass.edu>
* gcc.dg/c99-math-double-1.c, gcc.dg/c99-math-float-1.c, * gcc.dg/c99-math-double-1.c, gcc.dg/c99-math-float-1.c,
...@@ -29,6 +34,9 @@ ...@@ -29,6 +34,9 @@
2005-05-28 Mark Mitchell <mark@codesourcery.com> 2005-05-28 Mark Mitchell <mark@codesourcery.com>
PR c++/21210
* g++.dg/ext/complex1.C: New test.
PR c++/21340 PR c++/21340
* g++.dg/init/ctor6.C: New test. * g++.dg/init/ctor6.C: New test.
......
// PR c++/21784
namespace mine
{
int cpow;
};
using mine::cpow;
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