diff options
| author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-12-15 16:15:52 +0000 |
|---|---|---|
| committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-12-15 16:15:52 +0000 |
| commit | 0bbc01c33937abcb37ee5d69cd0ca1a945595d19 (patch) | |
| tree | a93c275abcfc9a60e8703ae251ac53109640e4b7 | |
| parent | 540997700ca35d5997a6a32a060100318349f8fe (diff) | |
| download | ppe42-gcc-0bbc01c33937abcb37ee5d69cd0ca1a945595d19.tar.gz ppe42-gcc-0bbc01c33937abcb37ee5d69cd0ca1a945595d19.zip | |
* decl.c (pushdecl): Don't check for linkage on a non-decl.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38290 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
| -rw-r--r-- | gcc/cp/decl.c | 5 | ||||
| -rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/local4.C | 10 |
3 files changed, 15 insertions, 2 deletions
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 <jason@redhat.com> + * 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 (); +} |

