------- 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

Reply via email to