------- Comment #2 from ro at gcc dot gnu dot org 2010-07-07 15:54 ------- A reghunt identified this patch as the culprit:
2010-07-05 Richard Guenther <rguent...@suse.de> * tree.c (reference_alias_ptr_type): New function. * tree.h (reference_alias_ptr_type): Declare. * tree-ssa-loop-ivopts.c (copy_ref_info): Restructure to allow non-TARGET_MEM_REF new refs. (rewrite_use_address): Pass old alias pointer type to create_mem_ref. * tree-ssa-address.c (create_mem_ref_raw): Get alias pointer type. Build a MEM_REF instead of a TARGET_MEM_REF if possible. (create_mem_ref): Get alias pointer type. Adjust calls to create_mem_ref_raw. (maybe_fold_tmr): Likewise. * tree-flow.h (create_mem_ref): Adjust prototype. I'm attaching the preprocessed format.i (from libgfortran/io/format.c). The patch changes format.s as follows: --- format.s 2010-07-07 16:26:07.933989030 +0200 +++ /var/gcc/gcc-4.6.0-20100705/10-gcc/sparc-sun-solaris2.10/libgfortran/format. s 2010-07-07 16:23:08.775373256 +0200 @@ -2267,7 +2267,7 @@ _gfortrani_free_format_hash_table: ld [%i0+248], %g1 orcc %g1, 0, %o0 be,a,pn %icc, .LL256 - st %g0, [%i0+240] + stx %g0, [%i0+240] .LLSM424: call _gfortrani_free_format_data, 0 nop I.e. a store to [%i0+240] is done with stx, although the destination isn't 8-byte aligned. I'm compiling the .i file like this: ./cc1 -fpreprocessed format.i -mcpu=v9 -g -O2 -std=gnu99 -fcx-fortran-rules -ffunction-sections -fdata-sections -fPIC -o format.s $ -- ro at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rguenther at suse dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44843