(finish_struct): Don't mess with the type of bitfields.
authorJason Merrill <merrill@gnu.org>
Mon, 4 Dec 1995 23:56:00 +0000 (23:56 +0000)
committerJason Merrill <merrill@gnu.org>
Mon, 4 Dec 1995 23:56:00 +0000 (23:56 +0000)
From-SVN: r10673

gcc/c-decl.c

index 20165214f9453b7171cc7a4d52e4bda3702b5629..68d61db579145fc017203ae095c0a470d7d1e035 100644 (file)
@@ -5690,27 +5690,6 @@ finish_struct (t, fieldlist, attributes)
       TYPE_ALIGN (x) = TYPE_ALIGN (t);
     }
 
-  /* Promote each bit-field's type to int if it is narrower than that.  */
-  for (x = fieldlist; x; x = TREE_CHAIN (x))
-    if (DECL_BIT_FIELD (x)
-       && (C_PROMOTING_INTEGER_TYPE_P (TREE_TYPE (x))
-           || DECL_FIELD_SIZE (x) < TYPE_PRECISION (integer_type_node)))
-      {
-       tree type = TREE_TYPE (x);
-
-       /* Preserve unsignedness if traditional
-          or if not really getting any wider.  */
-       if (TREE_UNSIGNED (type)
-           && (flag_traditional
-               ||
-               (TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node)
-                &&
-                DECL_FIELD_SIZE (x) == TYPE_PRECISION (integer_type_node))))
-         TREE_TYPE (x) = unsigned_type_node;
-       else
-         TREE_TYPE (x) = integer_type_node;
-      }
-
   /* If this was supposed to be a transparent union, but we can't
      make it one, warn and turn off the flag.  */
   if (TREE_CODE (t) == UNION_TYPE