On 26/08/11 17:39, Julian Brown wrote:
> On Thu, 25 Aug 2011 18:31:21 +0100
> Julian Brown <jul...@codesourcery.com> wrote:
> 
>> On Thu, 25 Aug 2011 16:46:50 +0100
>> Julian Brown <jul...@codesourcery.com> wrote:
>>
>>> So, OK to apply this version, assuming testing comes out OK? (And
>>> the followup patch [2/2], which remains unchanged?)
>>
>> FWIW, all tests pass, apart from
>> gcc.target/arm/volatile-bitfields-3.c, which regresses. The output
>> contains:
>>
>>         ldrh    r0, [r3, #2]    @ unaligned
>>
>> I believe that, to conform to the ARM EABI, that GCC must use an
>> (aligned) ldr in this case. Is that correct? If so, it looks like the
>> middle-end bitfield code does not take the setting of
>> -fstrict-volatile-bitfields into account.
> 
> This version fixes the last issue, by adding additional checks for
> volatile accesses/-fstrict-volatile-bitfields. Tests now show no
> regressions.
> 
> OK to apply?
> 

+      /* On big-endian machines, we count bits from the most significant.
+        If the bit field insn does not, we must invert.  */


It sounds to me like this comment is somewhat out of date now that we
have BITS_BIG_ENDIAN; it would be better re-worded to reflect the code
as it stands now.

Other than that, OK.

R.

> Thanks,
> 
> Julian
> 
> ChangeLog
> 
>     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.
> 

Reply via email to