]> gcc.gnu.org Git - gcc.git/commitdiff
(get_inner_reference): When finding mode to access bitfield that ends up properly...
authorRichard Kenner <kenner@gcc.gnu.org>
Mon, 1 Apr 1996 21:16:06 +0000 (16:16 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Mon, 1 Apr 1996 21:16:06 +0000 (16:16 -0500)
(get_inner_reference): When finding mode to access bitfield that ends
up properly aligned, use mode class of its type unless type's mode was
BLKmode.

From-SVN: r11651

gcc/expr.c

index c3328a1677984f2d4242349418b55c80970f7ba1..98f83e2aa1bed11bd7394b3c771bc5ebf444229e 100644 (file)
@@ -4150,7 +4150,12 @@ get_inner_reference (exp, pbitsize, pbitpos, poffset, pmode,
      access in case EXP is in memory.  */
   if (mode == VOIDmode && *pbitsize != 0 && *pbitpos % *pbitsize == 0)
     {
-      mode = mode_for_size (*pbitsize, MODE_INT, 0);
+      mode = mode_for_size (*pbitsize,
+                           (TYPE_MODE (TREE_TYPE (orig_exp)) == BLKmode
+                            ? MODE_INT
+                            : GET_MODE_CLASS (TYPE_MODE
+                                              (TREE_TYPE (orig_exp)))),
+                           0);
       if (mode == BLKmode)
        mode = VOIDmode;
     }
This page took 0.078949 seconds and 5 git commands to generate.