aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-decl.c16
2 files changed, 17 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 367b933..7cb7002 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Thu Jan 25 02:01:16 2001 J"orn Rennecke <amylaar@redhat.com>
+
+ * 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 <drepper@redhat.com>
* dwarf2out.c (prefix_of): New function. Determine longest common
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 97ae2ba..06bbbef 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)