diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ed17a6b5b0dddfa8cb3e7b617104819e1bf056e2..5a004d507d935a7c5b2a4986df176bab0d9abe4c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-07  Joseph S. Myers  <joseph@codesourcery.com>
+
+	* c-typeck.c (build_unary_op): Replace unreachable diagnostic for
+	taking address of bit-field by assertion.
+
 2004-11-06  Ulrich Weigand  <uweigand@de.ibm.com>
 
 	* config/s390/s390.md (attribute "op_type"): Default to "NN".
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index cf883b7d545040a0745948115232d27994eed1bc..f9481f809a99e28e37938af36730cfd0b36997a6 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -2655,13 +2655,8 @@ build_unary_op (enum tree_code code, tree xarg, int flag)
       if (!c_mark_addressable (arg))
 	return error_mark_node;
 
-      if (TREE_CODE (arg) == COMPONENT_REF
-	  && DECL_C_BIT_FIELD (TREE_OPERAND (arg, 1)))
-	{
-	  error ("attempt to take address of bit-field structure member %qD",
-		 TREE_OPERAND (arg, 1));
-	  return error_mark_node;
-	}
+      gcc_assert (TREE_CODE (arg) != COMPONENT_REF
+		  || !DECL_C_BIT_FIELD (TREE_OPERAND (arg, 1)));
 
       argtype = build_pointer_type (argtype);