From 91239b939c222c178e872bbe673c7d37f62969f0 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 25 Jan 2001 02:03:14 +0000 Subject: [PATCH] c-decl.c (duplicate_decls): If different_binding_level is nonzero... * c-decl.c (duplicate_decls): If different_binding_level is nonzero, olddecl has argument types and newdecl has none, use the argument types from olddecl. From-SVN: r39254 --- gcc/ChangeLog | 6 ++++++ gcc/c-decl.c | 16 +++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 367b9338d67..7cb70023082 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Jan 25 02:01:16 2001 J"orn Rennecke + + * c-decl.c (duplicate_decls): If different_binding_level is nonzero, + olddecl has argument types and newdecl has none, use the argument + types from olddecl. + 2001-01-24 Ulrich Drepper * dwarf2out.c (prefix_of): New function. Determine longest common diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 97ae2bae9bb..06bbbef9c45 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1800,11 +1800,17 @@ duplicate_decls (newdecl, olddecl, different_binding_level) if (TREE_CODE (newdecl) != FUNCTION_DECL || !DECL_BUILT_IN (olddecl)) { if (different_binding_level) - TREE_TYPE (newdecl) - = build_type_attribute_variant - (newtype, - merge_attributes (TYPE_ATTRIBUTES (newtype), - TYPE_ATTRIBUTES (oldtype))); + { + if (TYPE_ARG_TYPES (oldtype) != 0 + && TYPE_ARG_TYPES (newtype) == 0) + TREE_TYPE (newdecl) = common_type (newtype, oldtype); + else + TREE_TYPE (newdecl) + = build_type_attribute_variant + (newtype, + merge_attributes (TYPE_ATTRIBUTES (newtype), + TYPE_ATTRIBUTES (oldtype))); + } else TREE_TYPE (newdecl) = TREE_TYPE (olddecl) -- 2.30.2