On Wed, Sep 7, 2011 at 9:47 AM, Terry Guo <terry....@arm.com> wrote: > Hello, > > The SRA optimization requires the reference to struct/union member must be > aligned to their natural boundary e.g. (int *) must be aligned to 4 byte > boundary. This is done in function tree_non_mode_aligned_mem_p. For target > like x86 that define "STRICT_ALIGNMENT" to 0, the function return false. > Afterward, the SRA is conducted. For target like ARM or MIPS that define > "STRICT_ALIGNMENT" to 1, the alignment status is checked by "align = > get_object_alignment (exp)". The function get_object_alignment rely on SSA > and tend to over-conservative. So for most cases, the SRA is stopped here. > > This patch intends to skip this case for target that set STRICT_ALIGNMENT to > 1 otherwise the case will fail due to the SRA isn't performed actually. OK > to commit to trunk?
Hm, the testcase looks like it should actually pass even for strict-align targets. Martin? Richard. > BR, > Terry > > 2011-09-07 Terry Guo <terry....@arm.com> > > * gcc.dg/ipa/ipa-sra-2.c: Only run on > targets that are non_strict_align. > > > diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c > b/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c > index 3437a81..c6b4d63 100644 > --- a/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c > +++ b/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c > @@ -1,5 +1,6 @@ > /* { dg-do compile } */ > /* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details" } */ > +/* { dg-require-effective-target non_strict_align } */ > > struct bovid > { > > >