[PATCH] unbreak gcc.dg/tree-ssa/ssa-ccp-33.c on m68k (PR testsuite/47954)

Richard Guenther richard.guenther@gmail.com
Tue Mar 8 10:45:00 GMT 2011


On Tue, Mar 8, 2011 at 10:43 AM, Mikael Pettersson <mikpe@it.uu.se> wrote:
> gcc.dg/tree-ssa/ssa-ccp-33.c fails with gcc trunk on m68k-linux:
>
> ssa-ccp-33.c:(.text+0x2a): undefined reference to `link_error'
> ssa-ccp-33.c:(.text+0x2a): undefined reference to `link_error'
> FAIL: gcc.dg/tree-ssa/ssa-ccp-33.c (test for excess errors)
> ssa-ccp-33.c:(.text+0x2a): undefined reference to `link_error'
>
> The test case checks that the compiler is able to eliminate a
> runtime check that an aligned pointer-to-int remains aligned after
> a loop of increments.  It uses sizeof to compute the alignment
> of int, but on m68k (and possibly others) the alignment of int
> is less than its size.  The compiler is then unable to eliminate
> the broken alignment check, and the call to link_error () is not
> removed.
>
> Fixed by using __alignof__ instead.  Regression tested on m68k-linux
> where it eliminated the FAIL for gcc.dg/tree-ssa/ssa-ccp-33.c.
> Also tested on i686-linux, no changes there.
>
> Ok for trunk?
>
> (Richard G. pre-approved this change on the PR entry, however I
> cannot commit it myself.)

Committed.
Richard.

> gcc/testsuite/
>
> 2011-03-08  Mikael Pettersson  <mikpe@it.uu.se>
>
>        PR testsuite/47954
>        * gcc.dg/tree-ssa/ssa-ccp-33.c: Use __alignof__ not
>        sizeof to compute alignment.
>
> --- gcc-4.6-20110305/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-33.c.~1~     2010-08-06 13:47:31.000000000 +0200
> +++ gcc-4.6-20110305/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-33.c 2011-03-08 10:34:13.000000000 +0100
> @@ -8,7 +8,7 @@ void foo(int n)
>   int *p;
>   for (p = a; n != 0; --n, ++p)
>     ;
> -  if ((__SIZE_TYPE__)p & (sizeof (int) - 1))
> +  if ((__SIZE_TYPE__)p & (__alignof__ (int) - 1))
>     link_error ();
>  }
>  int main()
>



More information about the Gcc-patches mailing list