From bd5d175ab8f46a3bee7f9bec19d16ad32ea63900 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 25 Aug 1993 17:38:10 -0600 Subject: [PATCH] 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 --- gcc/expmed.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/expmed.c b/gcc/expmed.c index 1739e703c88..c8e2f22618a 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, -- 2.30.2