From e8621b3c1cbd3d2db673450c8744ab5a3457de28 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 1 Apr 1996 16:16:06 -0500 Subject: [PATCH] (get_inner_reference): When finding mode to access bitfield that ends up properly aligned... (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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/expr.c b/gcc/expr.c index c3328a16779..98f83e2aa1b 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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; } -- 2.30.2