On Fri, 7 Apr 2017, Rainer Orth wrote: > Hi Richard, > > > On Thu, 6 Apr 2017, Rainer Orth wrote: > > > >> Hi Richard, > >> > >> > The following patch makes sure to preserve (mis-)alignment of memory > >> > references when IVOPTs generates TARGET_MEM_REFs for them. > >> > > >> > Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. > >> > > >> > Richard. > >> > > >> > 2017-04-06 Richard Biener <rguent...@suse.de> > >> > > >> > PR tree-optimization/80334 > >> > * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly > >> > preserve alignment of accesses. > >> > > >> > * g++.dg/torture/pr80334.C: New testcase. > >> > >> the new testcase FAILs on 32-bit Solaris/SPARC: > >> > >> +FAIL: g++.dg/torture/pr80334.C -O0 (test for excess errors) > >> +FAIL: g++.dg/torture/pr80334.C -O1 (test for excess errors) > >> +FAIL: g++.dg/torture/pr80334.C -O2 (test for excess errors) > >> +FAIL: g++.dg/torture/pr80334.C -O2 -flto (test for excess errors) > >> +FAIL: g++.dg/torture/pr80334.C -O2 -flto -flto-partition=none (test for > >> exce > >> ss errors) > >> +FAIL: g++.dg/torture/pr80334.C -O3 -fomit-frame-pointer -funroll-loops > >> -fpeel > >> -loops -ftracer -finline-functions (test for excess errors) > >> +FAIL: g++.dg/torture/pr80334.C -O3 -g (test for excess errors) > >> +FAIL: g++.dg/torture/pr80334.C -Os (test for excess errors) > >> > >> Excess errors: > >> /vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/torture/pr80334.C:11:20: > >> warning: requested alignment 16 is larger than 8 [-Wattributes] > > > > Any suggestion how to mitigate that? Possible solution includes > > adding { target { ! ... } } to dg-do run. > > No idea. However, according to gcc-testresults there are other > failures: s390-ibm-inux-gnu and s390x-ibm-linux-gnu so far. > > This might argue against just excluding a random list of failing targets.
Hmm. Does using __BIGGEST_ALIGNMENT__, thus int main() { alignas(__BIGGEST_ALIGNMENT__) B b[3]; ... work for you? Richard.