diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-08-25 17:38:10 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-08-25 17:38:10 -0600 |
commit | bd5d175ab8f46a3bee7f9bec19d16ad32ea63900 (patch) | |
tree | dadcaacb464e7c2b2e9552e80afa7b66c6953d58 /gcc | |
parent | 673596d8b201cf7657a681a3968913baa023db7b (diff) | |
download | gcc-bd5d175ab8f46a3bee7f9bec19d16ad32ea63900.zip gcc-bd5d175ab8f46a3bee7f9bec19d16ad32ea63900.tar.gz gcc-bd5d175ab8f46a3bee7f9bec19d16ad32ea63900.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/expmed.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index 1739e70..c8e2f22 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, |