This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Continue strict-volatile-bitfields fixes
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Thomas Schwinge <thomas at codesourcery dot com>
- Cc: Bernd Schmidt <bernds at codesourcery dot com>, Richard Guenther <richard dot guenther at gmail dot com>, Joey Ye <Joey dot Ye at arm dot com>, "dj at redhat dot com" <dj at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, "Mitchell, Mark" <mark_mitchell at mentor dot com>
- Date: Wed, 18 Apr 2012 17:14:04 +0100
- Subject: Re: Continue strict-volatile-bitfields fixes
- References: <4EBD4BCB.4080807@codesourcery.com> <4ED50901.8090300@codesourcery.com> <DC8FF7F4C84BE44B907369AEF21D9D446E5D368C@NA-MBX-04.mgc.mentorg.com> <4F1D72CA.1060908@codesourcery.com> <874nupb2v4.fsf@schwinge.name> <CAFiYyc08w4PGPEgOGAPH0Ag_BBds_1_wLv=R-DnO+j0b7nPycQ@mail.gmail.com> <4F4282AF.7000804@codesourcery.com> <4F428565.1050508@arm.com> <4F42881B.80800@codesourcery.com> <4F436677.9090203@arm.com> <87obqpnj9i.fsf@schwinge.name>
On 18/04/12 16:37, Thomas Schwinge wrote:
> Hi!
>
> As it's been some time: this was the discussion about
> -fstrict-volatile-bitfields (as enabled by default on SH, for example)
> breaking some testsuite bits due to missed optimizations (even for
> bitfields that are not volatile).
>
> On Tue, 21 Feb 2012 09:40:07 +0000, Richard Earnshaw <rearnsha@arm.com> wrote:
>> On 20/02/12 17:51, Bernd Schmidt wrote:
>>> On 02/20/2012 06:39 PM, Richard Earnshaw wrote:
>>>> I'm not sure why it should be. Can't a user write
>>>>
>>>> #ifdef __cplusplus
>>>> #define BOOL bool
>>>> #else
>>>> #define bool _Bool
>>>> #endif
>>>>
>>>> struct x {
>>>> volatile BOOL a : 1;
>>>> volatile BOOL b : 1;
>>>> volatile unsigned char c : 6;
>>>> volatile BOOL d : 1;
>>>> } y;
>>>>
>>>> ?
>>>>
>>>> If you've got strict volatile bitfields, then the concept here is that
>>>> the access uses the declared type for accessing the member. Since in
>>>> the ABI bool has a defined size, then it should access the member using
>>>> that size.
>>>>
>>>> On ARM, sizeof bool is 1, so I'd take the above to mean that accessing
>>>> y.a to mean a read of a, b and c, but not d.
>>>
>>> What are your thoughts on the argument about enums?
>>
>> Similar. A particular enumeration type has a defined size, so accesses
>> should use that size.
>
> In that case, would it be appropriate to apply the following?
>
> gcc/testsuite/
> * gcc.dg/tree-ssa/20030922-1.c: Compile with
> -fno-strict-volatile-bitfields.
> * gcc.dg/tree-ssa/foldconst-3.c: Likewise.
> * gcc.dg/tree-ssa/vrp15.c: Likewise.
>
None of these have any volatile bitfields, so the option should be a no-op.