From fab09a2494224143e42b78a8b4af1c318cc188cb Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 15 Dec 2000 11:15:52 -0500 Subject: [PATCH] * decl.c (pushdecl): Don't check for linkage on a non-decl. From-SVN: r38290 --- gcc/cp/ChangeLog | 2 ++ gcc/cp/decl.c | 5 +++-- gcc/testsuite/g++.old-deja/g++.other/local4.C | 10 ++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.other/local4.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a13baaa1d55..3143094f058 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2000-12-15 Jason Merrill + * decl.c (pushdecl): Don't check for linkage on a non-decl. + * call.c (build_op_delete_call): See through ARRAY_TYPEs. * call.c (build_new_function_call): Lose space before paren in diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 4d1867d1366..924447f402d 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -3821,8 +3821,9 @@ pushdecl (x) /* Or in the innermost namespace. */ if (! t) t = namespace_binding (name, DECL_CONTEXT (x)); - /* Does it have linkage? */ - if (t && ! (TREE_STATIC (t) || DECL_EXTERNAL (t))) + /* Does it have linkage? Note that if this isn't a DECL, it's an + OVERLOAD, which is OK. */ + if (t && DECL_P (t) && ! (TREE_STATIC (t) || DECL_EXTERNAL (t))) t = NULL_TREE; if (t) different_binding_level = 1; diff --git a/gcc/testsuite/g++.old-deja/g++.other/local4.C b/gcc/testsuite/g++.old-deja/g++.other/local4.C new file mode 100644 index 00000000000..fd8f512f57f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/local4.C @@ -0,0 +1,10 @@ +// Test that a local declaration of one of a global overload set works + +int f () { return 0; } +int f (int); + +int main () +{ + int f (); + return f (); +} -- 2.30.2