Message ID | 201106082003.p58K3re25438@lucas.cup.hp.com |
---|---|
State | New |
Headers | show |
On Wed, Jun 08, 2011 at 01:03:53PM -0700, Steve Ellcey wrote: > 2011-06-08 Steve Ellcey <sje@cup.hp.com> > > PR middle-end/49191 > * lib/target-supports.exp (check_effective_target_strict_align): New. > * gcc.dg/memcpy-3.c: Add dg-require-effective-target strict_align. Isn't the test backwards, i.e. doesn't { dg-require-effective-target strict_align } actually mean !STRICT_ALIGNMENT? > Index: lib/target-supports.exp > =================================================================== > --- lib/target-supports.exp (revision 174336) > +++ lib/target-supports.exp (working copy) > @@ -3901,3 +3901,11 @@ > return 1 > } > > +proc check_effective_target_strict_align {} { > + return [check_no_compiler_messages strict_align assembly { > + char *y; > + typedef char __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) c; > + c *z; > + void foo(void) { z = (c *) y; } > + } "-Wcast-align"] > +} > Index: gcc.dg/memcpy-3.c > =================================================================== > --- gcc.dg/memcpy-3.c (revision 174336) > +++ gcc.dg/memcpy-3.c (working copy) > @@ -1,5 +1,6 @@ > /* { dg-do compile } */ > /* { dg-options "-O -fdump-tree-optimized" } */ > +/* { dg-require-effective-target strict_align } */ > > int get_int(const void *p) > { Jakub
On Wed, 2011-06-08 at 22:08 +0200, Jakub Jelinek wrote: > On Wed, Jun 08, 2011 at 01:03:53PM -0700, Steve Ellcey wrote: > > 2011-06-08 Steve Ellcey <sje@cup.hp.com> > > > > PR middle-end/49191 > > * lib/target-supports.exp (check_effective_target_strict_align): New. > > * gcc.dg/memcpy-3.c: Add dg-require-effective-target strict_align. > > Isn't the test backwards, i.e. doesn't > { dg-require-effective-target strict_align } > actually mean !STRICT_ALIGNMENT? You are right. What do you think I should do, reverse the test or just rename it? I would be inclined to just rename it, maybe: dg-require-effective-target non_strict_align Steve Ellcey sje@cup.hp.com
On Wed, Jun 08, 2011 at 01:16:26PM -0700, Steve Ellcey wrote: > On Wed, 2011-06-08 at 22:08 +0200, Jakub Jelinek wrote: > > On Wed, Jun 08, 2011 at 01:03:53PM -0700, Steve Ellcey wrote: > > > 2011-06-08 Steve Ellcey <sje@cup.hp.com> > > > > > > PR middle-end/49191 > > > * lib/target-supports.exp (check_effective_target_strict_align): New. > > > * gcc.dg/memcpy-3.c: Add dg-require-effective-target strict_align. > > > > Isn't the test backwards, i.e. doesn't > > { dg-require-effective-target strict_align } > > actually mean !STRICT_ALIGNMENT? > > You are right. What do you think I should do, reverse the test or just > rename it? I would be inclined to just rename it, maybe: > > dg-require-effective-target non_strict_align Yeah, either that, or reverse the test and then { dg-do run { target { !strict_align } } } */ (if that is the right syntax). Jakub
On Wed, 2011-06-08 at 22:19 +0200, Jakub Jelinek wrote: > On Wed, Jun 08, 2011 at 01:16:26PM -0700, Steve Ellcey wrote: > > On Wed, 2011-06-08 at 22:08 +0200, Jakub Jelinek wrote: > > > On Wed, Jun 08, 2011 at 01:03:53PM -0700, Steve Ellcey wrote: > > > > 2011-06-08 Steve Ellcey <sje@cup.hp.com> > > > > > > > > PR middle-end/49191 > > > > * lib/target-supports.exp (check_effective_target_strict_align): New. > > > > * gcc.dg/memcpy-3.c: Add dg-require-effective-target strict_align. > > > > > > Isn't the test backwards, i.e. doesn't > > > { dg-require-effective-target strict_align } > > > actually mean !STRICT_ALIGNMENT? > > > > You are right. What do you think I should do, reverse the test or just > > rename it? I would be inclined to just rename it, maybe: > > > > dg-require-effective-target non_strict_align > > Yeah, either that, or reverse the test and then > { dg-do run { target { !strict_align } } } */ > (if that is the right syntax). > > Jakub Renaming it seems simpler. If we reverse the test, I can't just return the result of check_no_compiler_messages, I need to save the result and reverse the return value. Then in the actual tests we can't use dg-require-effective-target but need to modify the dg-do line to do the check and it will probably always include the '!' to (re-)negate the check. It can be done but renaming the test seems a lot simpler. Steve Ellcey sje@cup.hp.com
On 06/08/11 22:51, Steve Ellcey wrote: > On Wed, 2011-06-08 at 22:19 +0200, Jakub Jelinek wrote: >> On Wed, Jun 08, 2011 at 01:16:26PM -0700, Steve Ellcey wrote: >>> On Wed, 2011-06-08 at 22:08 +0200, Jakub Jelinek wrote: >>>> On Wed, Jun 08, 2011 at 01:03:53PM -0700, Steve Ellcey wrote: >>>>> 2011-06-08 Steve Ellcey <sje@cup.hp.com> >>>>> >>>>> PR middle-end/49191 >>>>> * lib/target-supports.exp (check_effective_target_strict_align): New. >>>>> * gcc.dg/memcpy-3.c: Add dg-require-effective-target strict_align. >>>> Isn't the test backwards, i.e. doesn't >>>> { dg-require-effective-target strict_align } >>>> actually mean !STRICT_ALIGNMENT? >>> You are right. What do you think I should do, reverse the test or just >>> rename it? I would be inclined to just rename it, maybe: >>> >>> dg-require-effective-target non_strict_align >> Yeah, either that, or reverse the test and then >> { dg-do run { target { !strict_align } } } */ >> (if that is the right syntax). >> >> Jakub > Renaming it seems simpler. If we reverse the test, I can't just return > the result of check_no_compiler_messages, I need to save the result and > reverse the return value. Then in the actual tests we can't use > dg-require-effective-target but need to modify the dg-do line to do the > check and it will probably always include the '!' to (re-)negate the > check. It can be done but renaming the test seems a lot simpler. I just happened to notice that the (no longer new) non_strict_align keyword lacks both a comment in target-supports.exp and documentation in sourcebuild.texi. Could you please add both? Thanks. Rainer
Index: lib/target-supports.exp =================================================================== --- lib/target-supports.exp (revision 174336) +++ lib/target-supports.exp (working copy) @@ -3901,3 +3901,11 @@ return 1 } +proc check_effective_target_strict_align {} { + return [check_no_compiler_messages strict_align assembly { + char *y; + typedef char __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) c; + c *z; + void foo(void) { z = (c *) y; } + } "-Wcast-align"] +} Index: gcc.dg/memcpy-3.c =================================================================== --- gcc.dg/memcpy-3.c (revision 174336) +++ gcc.dg/memcpy-3.c (working copy) @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O -fdump-tree-optimized" } */ +/* { dg-require-effective-target strict_align } */ int get_int(const void *p) {