From: Jeff Law Date: Wed, 25 Aug 1993 23:38:10 +0000 (-0600) Subject: expmed.c (store_bit_field): Do not use bitfield instructions for STRICT_ALIGNMENT... X-Git-Tag: misc/cutover-egcs-0~8730 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bd5d175ab8f46a3bee7f9bec19d16ad32ea63900;p=thirdparty%2Fgcc.git expmed.c (store_bit_field): Do not use bitfield instructions for STRICT_ALIGNMENT machines if... * expmed.c (store_bit_field): Do not use bitfield instructions for STRICT_ALIGNMENT machines if the MEM's alignment isn't as big as the MEM's mode. From-SVN: r5213 --- diff --git a/gcc/expmed.c b/gcc/expmed.c index 1739e703c883..c8e2f22618ad 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -389,7 +389,8 @@ store_bit_field (str_rtx, bitsize, bitnum, fieldmode, value, align, total_size) else bestmode = GET_MODE (op0); - if (bestmode == VOIDmode) + if (bestmode == VOIDmode + || (STRICT_ALIGNMENT && GET_MODE_SIZE (bestmode) > align)) goto insv_loses; /* Adjust address to point to the containing unit of that mode. */ @@ -959,7 +960,8 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp, else bestmode = GET_MODE (xop0); - if (bestmode == VOIDmode) + if (bestmode == VOIDmode + || (STRICT_ALIGNMENT && GET_MODE_SIZE (bestmode) > align)) goto extzv_loses; /* Compute offset as multiple of this unit, @@ -1092,7 +1094,8 @@ extract_bit_field (str_rtx, bitsize, bitnum, unsignedp, else bestmode = GET_MODE (xop0); - if (bestmode == VOIDmode) + if (bestmode == VOIDmode + || (STRICT_ALIGNMENT && GET_MODE_SIZE (bestmode) > align)) goto extv_loses; /* Compute offset as multiple of this unit,