Martin Jambor wrote: > Hi, > > On Tue, Mar 20, 2012 at 08:16:04PM +0100, Georg-Johann Lay wrote: >> Martin Jambor wrote: >>> Hi, >>> >>> this is another iteration of my attempts to fix expansion of >>> misaligned memory accesses on strict-alignment platforms (which was >>> suggested by Richi in >>> http://gcc.gnu.org/ml/gcc-patches/2011-08/msg00931.html and my first >>> attempt was posted as >>> http://gcc.gnu.org/ml/gcc-patches/2012-01/msg00319.html). >>> >>> This time I got further, to big extent thanks to parts of Richi's >>> fixes of PR 50444 which cleaned up expr.c considerably. I have >>> successfully bootstrapped the combined patch on x86_64-linux, >>> i686-linux, ia64-linux (without Ada) and sparc64-linux (without Java). >>> I have run the c and c++ testsuites on individual patches on sparc64 >>> and ia64 too. >>> >>> Nevertheless, since I still lack experience in this area, there will >>> almost certainly be comments and suggestions and therefore I have >>> divided the three main changes to three different patches, so that >>> they are easier to comment on by both me and anybody reviewing them. >>> >>> Thanks in advance for any comments, >>> >>> Martin >> Hi Martin. >> >> The new test cases make implications on the size of int: for example >> they crash for targets with sizeof(int) == 2 >> > > Crash? I assume the tests misaligned-expand-[12].c abort because of > the comparison with 0xdeadbeef constant, misaligned-expand-3.c should
Yes. With "crash" I meant "failing at run-time" as opposed to a fail at compile-time. > not be affected by size of int. If that is the case, does the > following patch fixes the issue for you? Yes, the tests pass now. I went ahead and applied your patch: http://gcc.gnu.org/viewcvs?view=revision&revision=185602 Johann > Martin > > > 2012-03-21 Martin Jambor <mjam...@suse.cz> > > * gcc.dg/misaligned-expand-1.c (cst): Cast to int. > * gcc.dg/misaligned-expand-2.c (cst): Likewise. > > Index: src/gcc/testsuite/gcc.dg/misaligned-expand-1.c > =================================================================== > --- src.orig/gcc/testsuite/gcc.dg/misaligned-expand-1.c > +++ src/gcc/testsuite/gcc.dg/misaligned-expand-1.c > @@ -14,7 +14,7 @@ foo (myint *p) > return *p; > } > > -#define cst 0xdeadbeef > +#define cst (int) 0xdeadbeef > #define NUM 8 > > struct blah > Index: src/gcc/testsuite/gcc.dg/misaligned-expand-2.c > =================================================================== > --- src.orig/gcc/testsuite/gcc.dg/misaligned-expand-2.c > +++ src/gcc/testsuite/gcc.dg/misaligned-expand-2.c > @@ -14,7 +14,7 @@ foo (myint *p, unsigned int i) > *p = i; > } > > -#define cst 0xdeadbeef > +#define cst (int) 0xdeadbeef > #define NUM 8 > > struct blah > @@ -25,8 +25,6 @@ struct blah > > struct blah g; > > -#define cst 0xdeadbeef > - > int > main (int argc, char **argv) > { > > >