arm.c (arm_override_options): Add unaligned_access support.
authorJulian Brown <julian@codesourcery.com>
Wed, 14 Sep 2011 13:47:42 +0000 (13:47 +0000)
committerJulian Brown <jules@gcc.gnu.org>
Wed, 14 Sep 2011 13:47:42 +0000 (13:47 +0000)
commit86b601168af25ef6881ebd5364235abc788731ca
tree1e6ac52a6b4abbbaab31d0119d7a31c0a62ec1e4
parentfafaf06fba1bd3a03b1518666160d9765965a0db
arm.c (arm_override_options): Add unaligned_access support.

gcc/
* config/arm/arm.c (arm_override_options): Add unaligned_access
support.
(arm_file_start): Emit attribute for unaligned access as
appropriate.
* config/arm/arm.md (UNSPEC_UNALIGNED_LOAD)
(UNSPEC_UNALIGNED_STORE): Add constants for unspecs.
(insv, extzv): Add unaligned-access support.
(extv): Change to expander. Likewise.
(extzv_t1, extv_regsi): Add helpers.
(unaligned_loadsi, unaligned_loadhis, unaligned_loadhiu)
(unaligned_storesi, unaligned_storehi): New.
(*extv_reg): New (previous extv implementation).
* config/arm/arm.opt (munaligned_access): Add option.
* config/arm/constraints.md (Uw): New constraint.
* expmed.c (store_bit_field_1): Adjust bitfield numbering according
to size of access, not size of unit, when BITS_BIG_ENDIAN !=
BYTES_BIG_ENDIAN. Don't use bitfield accesses for
volatile accesses when -fstrict-volatile-bitfields is in effect.
(extract_bit_field_1): Likewise.

From-SVN: r178852
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.md
gcc/config/arm/arm.opt
gcc/config/arm/constraints.md
gcc/expmed.c