This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Continue strict-volatile-bitfields fixes


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.

Index: gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c	(revision 355696)
+++ gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-dom2" } */
+/* { dg-options "-O1 -fno-strict-volatile-bitfields -fdump-tree-dom2" } */
   
 extern void abort (void);
 
Index: gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c	(revision 355696)
+++ gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-optimized -fno-short-enums" } */
+/* { dg-options "-O2 -fno-strict-volatile-bitfields -fdump-tree-optimized -fno-short-enums" } */
 typedef const union tree_node *const_tree;
 typedef struct
 {
Index: gcc/testsuite/gcc.dg/tree-ssa/vrp15.c
===================================================================
--- gcc/testsuite/gcc.dg/tree-ssa/vrp15.c	(revision 355696)
+++ gcc/testsuite/gcc.dg/tree-ssa/vrp15.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-vrp1" } */
+/* { dg-options "-O2 -fno-strict-volatile-bitfields -fdump-tree-vrp1" } */
 
 
 extern void abort (void) __attribute__ ((__noreturn__));


GrÃÃe,
 Thomas

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]