http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781
--- Comment #13 from H.J. Lu <hjl.tools at gmail dot com> 2011-08-03 16:18:45 UTC --- (In reply to comment #10) > > This additional patch prevents zero_extend when we deal with > wider-than-word-size moves. These moves need offsetable_operand, which > zero_extend (...) isn't. > > Index: i386.c > =================================================================== > --- i386.c (revision 177281) > +++ i386.c (working copy) > @@ -11681,6 +11689,10 @@ ix86_legitimate_address_p (enum machine_ > rtx base, index, disp; > HOST_WIDE_INT scale; > > + if (GET_CODE (addr) == ZERO_EXTEND > + && GET_MODE_SIZE (mode) > UNITS_PER_WORD) > + return false; > + > if (ix86_decompose_address (addr, &parts) <= 0) > /* Decomposition failed. */ > return false; Doesn't work. I got FAIL: gcc.dg/graphite/pr35356-2.c (internal compiler error) FAIL: gcc.dg/graphite/pr35356-2.c (test for excess errors) FAIL: libgomp.fortran/omp_parse4.f90 -Os (internal compiler error) FAIL: libgomp.fortran/omp_parse4.f90 -Os (test for excess errors) FAIL: gfortran.dg/gomp/crayptr5.f90 -O (internal compiler error) FAIL: gfortran.dg/gomp/crayptr5.f90 -O (test for excess errors) so far: spawn -ignore SIGHUP /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/graphite/pr35356-2.c -O2 -fgraphite-identity -fdump-tree-graphite-all -S -mx32 -o pr35356-2.s^M /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/graphite/pr35356-2.c: In function 'foo':^M /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/graphite/pr35356-2.c:17:1: internal compiler error: Segmentation fault^M Please submit a full bug report,^M with preprocessed source if appropriate.^M See <http://gcc.gnu.org/bugs.html> for instructions.^M compiler exited with status 1