re PR c++/21784 (Using vs builtin names)
authorMark Mitchell <mark@codesourcery.com>
Mon, 30 May 2005 16:20:29 +0000 (16:20 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 30 May 2005 16:20:29 +0000 (16:20 +0000)
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

gcc/cp/ChangeLog
gcc/cp/name-lookup.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/lookup/using14.C [new file with mode: 0644]

index 66a3d4fe55e4ea06d89165f543d919b83e2185f2..ae4aca71f5f1fa00d57534c8a4864cf56202f29a 100644 (file)
@@ -1,9 +1,20 @@
+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>
 
        * operators.def, optimize.c: Update copyright.
 
 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
        * method.c (implicitly_declare_fn): Clear processing_template_decl
        when generating implicit declaration.
index bd83695cd0a7e758758e8118dd80f0dd1d2dac6e..dde4227f790e83dc0c21116f3270dd6af6f528d8 100644 (file)
@@ -2032,6 +2032,14 @@ do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype,
       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.  */
   if (decls.value && is_overloaded_fn (decls.value))
     {
@@ -2044,15 +2052,6 @@ do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype,
          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;
       for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp))
        {
index 7fd9b0e0299f2ef00f26db951b8849f929d80983..3e3c60900d5bf32f4def9b5d2eff06313efaa74a 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        * gcc.dg/c99-math-double-1.c, gcc.dg/c99-math-float-1.c,
@@ -29,6 +34,9 @@
 
 2005-05-28  Mark Mitchell  <mark@codesourcery.com>
 
+       PR c++/21210
+       * g++.dg/ext/complex1.C: New test.
+
        PR c++/21340
        * g++.dg/init/ctor6.C: New test.
 
diff --git a/gcc/testsuite/g++.dg/lookup/using14.C b/gcc/testsuite/g++.dg/lookup/using14.C
new file mode 100644 (file)
index 0000000..072018e
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/21784
+
+namespace mine
+{
+  int cpow;
+};
+
+using mine::cpow;