diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2cb9eb8babaf2afd22af711753e04a0228980266..645d96ba0b8f7351ff297b1ad818ce59bbb08e24 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Wed Nov  3 10:10:58 1999  Richard Henderson  <rth@cygnus.com>
+
+	* c-decl.c (duplicate_decls): Copy DECL_MODE too.
+
 Wed Nov  3 12:12:59 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
 
 	* reload1.c (eliminate_regs_in_insn): If copying insn, also copy notes.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index e64f0a7505800e955d9262839431916437d8f833..60e6e0e8563a24ed09868f98f278d63c7856d595 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1819,6 +1819,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
 	{
 	  /* Since the type is OLDDECL's, make OLDDECL's size go with.  */
 	  DECL_SIZE (newdecl) = DECL_SIZE (olddecl);
+	  DECL_MODE (newdecl) = DECL_MODE (olddecl);
 	  if (TREE_CODE (olddecl) != FUNCTION_DECL)
 	    if (DECL_ALIGN (olddecl) > DECL_ALIGN (newdecl))
 	      DECL_ALIGN (newdecl) = DECL_ALIGN (olddecl);