OSDN Git Service

* stor-layout.c (compute_record_mode): Remove very obsolete test
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 13 Jul 2003 17:12:28 +0000 (17:12 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 13 Jul 2003 17:12:28 +0000 (17:12 +0000)
that forces BLKmode for records with fields crossing word boundary.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69297 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/stor-layout.c

index 5a76780..c9cda02 100644 (file)
@@ -1,3 +1,8 @@
+2003-07-13  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * stor-layout.c (compute_record_mode): Remove very obsolete test
+       that forces BLKmode for records with fields crossing word boundary.
+
 2003-07-13  Zack Weinberg  <zack@codesourcery.com>
 
        * Makefile.in: Remove orphan reference to acconfig.h.
index 403f8ab..061eec4 100644 (file)
@@ -1310,8 +1310,6 @@ compute_record_mode (tree type)
      BLKmode only because it isn't aligned.  */
   for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
     {
-      unsigned HOST_WIDE_INT bitpos;
-
       if (TREE_CODE (field) != FIELD_DECL)
        continue;
 
@@ -1323,19 +1321,6 @@ compute_record_mode (tree type)
          || ! host_integerp (DECL_SIZE (field), 1))
        return;
 
-      bitpos = int_bit_position (field);
-
-      /* Must be BLKmode if any field crosses a word boundary,
-        since extract_bit_field can't handle that in registers.  */
-      if (bitpos / BITS_PER_WORD
-         != ((tree_low_cst (DECL_SIZE (field), 1) + bitpos - 1)
-             / BITS_PER_WORD)
-         /* But there is no problem if the field is entire words
-            or bigger than a word.  */
-         && ! (tree_low_cst (DECL_SIZE (field), 1) % BITS_PER_WORD == 0
-               || compare_tree_int (DECL_SIZE (field), BITS_PER_WORD) > 0))
-       return;
-
       /* If this field is the whole struct, remember its mode so
         that, say, we can put a double in a class into a DF
         register instead of forcing it to live in the stack.  */