public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/50750] New: SH Target: Pre-decrement addressing used only for first memory access
@ 2011-10-16 22:34 oleg.endo@t-online.de
  2011-10-17  0:33 ` [Bug target/50750] " kkojima at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: oleg.endo@t-online.de @ 2011-10-16 22:34 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50750

             Bug #: 50750
           Summary: SH Target: Pre-decrement addressing used only for
                    first memory access
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: target
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: oleg.endo@t-online.de
                CC: kkojima@gcc.gnu.org
            Target: sh*-*-*


Pre-decrement addressing is generated only for the first
memory access. Any subsequent memory access does not use 
pre-decrement addressing.
The following is a reduced example.
The problem exists with any number of memory accesses > 1
and at any optimization level.


int test_func_2_1 (int* p, int c)
{
  int r = 0;
  do
  {
    r += *--p;
    r += *--p;
    r += *--p;
  } while (--c);
  return r;
}

compiled with -fno-tree-loop-optimize -Os -m4-single -ml:

    mov    #0,r0
.L11:
    mov    r4,r1
    add    #-64,r1
    mov.l    @(60,r1),r2
    dt    r5
    add    #-12,r4
    add    r2,r0
    mov.l    @(56,r1),r2
    mov.l    @(52,r1),r1
    add    r2,r0
    bf/s    .L11
    add    r1,r0
    rts    
    nop


would be better as:

    mov    #0,r0
.L11:
    mov.l    @-r4,r1
    dt    r5
    mov.l    @-r4,r2
    add    r1,r0
    mov.l    @-r4,r3
    add    r2,r0
    bf/s    .L11
    add    r3,r0
    rts    
    nop



Using built-in specs.
COLLECT_GCC=sh-elf-gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/sh-elf/4.7.0/lto-wrapper
Target: sh-elf
Configured with: ../gcc-trunk/configure --target=sh-elf --prefix=/usr/local
--enable-languages=c,c++ --enable-multilib --disable-libssp --disable-nls
--disable-werror --enable-lto --with-newlib --with-gnu-as --with-gnu-ld
--with-system-zlib
Thread model: single
gcc version 4.7.0 20111016 (experimental) (GCC)


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug target/50750] SH Target: Pre-decrement addressing used only for first memory access
  2011-10-16 22:34 [Bug target/50750] New: SH Target: Pre-decrement addressing used only for first memory access oleg.endo@t-online.de
@ 2011-10-17  0:33 ` kkojima at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: kkojima at gcc dot gnu.org @ 2011-10-17  0:33 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50750

Kazumoto Kojima <kkojima at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |DUPLICATE

--- Comment #1 from Kazumoto Kojima <kkojima at gcc dot gnu.org> 2011-10-17 00:32:39 UTC ---
Looks duplicate of PR50749.

*** This bug has been marked as a duplicate of bug 50749 ***


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-10-17  0:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-16 22:34 [Bug target/50750] New: SH Target: Pre-decrement addressing used only for first memory access oleg.endo@t-online.de
2011-10-17  0:33 ` [Bug target/50750] " kkojima at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).