public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Tom de Vries <vries@codesourcery.com>
To: gcc-patches@gcc.gnu.org, ebotcazou@libertysurf.fr
Cc: Maxim Kuvyrkov <maxim@codesourcery.com>,
	 Bernd Schmidt <bernds@codesourcery.com>
Subject: [PATCH, PR43920, 4-9/9] Cross-jumping.
Date: Thu, 31 Mar 2011 18:35:00 -0000	[thread overview]
Message-ID: <4D94C88B.4020206@codesourcery.com> (raw)
In-Reply-To: <4D94C603.7080505@codesourcery.com>

The impact of patches 4-9 of the patch set on the example from the bug
report for ARM Thumb-2 -Os is a further size reduction of 7%, from 58 to
54 bytes.

This size reduction is illustrated in this diff of the assembly
(left, without patches, size 58. right, with patches, size 54):
...
push    {r3, r4, r5, r6, r7,    push    {r3, r4, r5, r6, r7,
mov     r7, r1                  mov     r7, r1
mov     r6, r2                  mov     r6, r2
movs    r1, #0                  movs    r1, #0
movs    r2, #1                  movs    r2, #1
mov     r5, r0                  mov     r5, r0
bl      lseek                   bl      lseek
movs    r1, #0                  movs    r1, #0
movs    r2, #2                  movs    r2, #2
mov     r4, r0                  mov     r4, r0
mov     r0, r5                  mov     r0, r5
bl      lseek                   bl      lseek
adds    r2, r4, #1              adds    r2, r4, #1
beq     .L3                  |  beq     .L5
adds    r3, r0, #1              adds    r3, r0, #1
beq     .L2                     beq     .L2
subs    r0, r0, r4              subs    r0, r0, r4
beq     .L5                     beq     .L5
str     r4, [r7, #0]            str     r4, [r7, #0]
str     r0, [r6, #0]            str     r0, [r6, #0]
movs    r0, #0                  movs    r0, #0
pop     {r3, r4, r5, r6, r7,    pop     {r3, r4, r5, r6, r7,
.L3:                         <
mov     r0, r4               <
pop     {r3, r4, r5, r6, r7, <
.L5:                            .L5:
mov     r0, #-1                 mov     r0, #-1
.L2:                            .L2:
pop     {r3, r4, r5, r6, r7,    pop     {r3, r4, r5, r6, r7,
...

The patches 4-9 allows crossjumping:
- to recognize that 'mov r0, r4' and 'move r0, #-1' have the same
  effect, and
- to extend the search scope past label .L2 backward to .L5, in order
  to recognize that the jump to .L3 can be replaced with a jump to .L5.

Thanks,
- Tom

  parent reply	other threads:[~2011-03-31 18:31 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-31 18:27 [PATCH, PR43920] Improve code-size optimizations Tom de Vries
2011-03-31 18:29 ` [PATCH, PR43920, 1/9] ARM specific part Tom de Vries
2011-04-01 14:46   ` Tom de Vries
2011-04-01 15:19     ` Richard Earnshaw
2011-04-01 16:06       ` Tom de Vries
2011-04-02  7:47         ` Richard Guenther
2011-04-02 17:06           ` Tom de Vries
2011-04-03  7:38             ` Richard Guenther
2011-04-03 17:03               ` Tom de Vries
     [not found]                 ` <BANLkTikEruAfGJ392FXtasLv6-yV2tYSRQ@mail.gmail.com>
2011-04-04 12:14                   ` Richard Guenther
2011-04-04 12:23                     ` Rainer Orth
2011-04-05 13:35                       ` Tom de Vries
2011-05-03 18:19                         ` Rainer Orth
2011-04-03 18:40               ` Mike Stump
2011-03-31 18:31 ` [PATCH, PR43920, 2/9] ARM specific part - test case Tom de Vries
2011-04-01 14:47   ` Tom de Vries
2011-04-01 15:17     ` Tom de Vries
2011-04-01 15:34     ` Richard Earnshaw
2011-04-01 16:10       ` Tom de Vries
2011-04-05 10:43         ` Tom de Vries
2011-04-05 12:20           ` Richard Earnshaw
2011-04-06 10:48           ` Ramana Radhakrishnan
2011-04-06 12:29             ` Tom de Vries
2011-03-31 18:35 ` [PATCH, PR43920, 3/9] Cleanup Tom de Vries
2011-03-31 18:43   ` Jeff Law
2011-04-01 14:48   ` Tom de Vries
2011-04-01 15:15     ` Tom de Vries
2011-04-04 18:26       ` Jeff Law
2011-03-31 18:35 ` Tom de Vries [this message]
2011-03-31 18:36   ` [PATCH, PR43920, 4/9] Cross-jumping - Don't count use or clobber Tom de Vries
2011-03-31 18:40     ` Jeff Law
2011-03-31 19:09       ` Tom de Vries
2011-03-31 19:19         ` Jeff Law
2011-04-01 14:48     ` Tom de Vries
2011-04-04 19:11       ` Jeff Law
2011-03-31 18:42   ` [PATCH, PR43920, 5/9] Cross-jumping - Add missing use of return register Tom de Vries
2011-03-31 18:52     ` Jeff Law
2011-04-01 14:49     ` Tom de Vries
2011-04-04 19:11       ` Jeff Law
2011-03-31 18:44   ` [PATCH, PR43920, 6/9] Cross-jumping - Use reg-notes Tom de Vries
2011-03-31 18:56     ` Jeff Law
2011-03-31 21:25       ` Tom de Vries
2011-04-01 14:54         ` Tom de Vries
2011-04-04 16:14           ` Tom de Vries
2011-04-06 17:41           ` Jeff Law
2011-03-31 18:45   ` [PATCH, PR43920, 7/9] Cross-jumping - Extend search scope Tom de Vries
2011-03-31 18:58     ` Jeff Law
2011-04-05 11:44       ` Tom de Vries
2011-04-01 14:55     ` Tom de Vries
2011-04-05 21:45       ` Jeff Law
2011-03-31 18:46   ` [PATCH, PR43920, 8/9] Cross-jumping - Extend search scope - test case Tom de Vries
2011-03-31 19:00     ` Jeff Law
2011-04-01 14:56     ` Tom de Vries
2011-04-01 15:01       ` Jakub Jelinek
2011-04-01 15:18         ` Tom de Vries
2011-04-01 16:14           ` Tom de Vries
2011-04-05 21:46           ` Jeff Law
2011-03-31 18:56   ` [PATCH, PR43920, 9/9] Cross-jumping - Allow both directions Tom de Vries
2011-03-31 19:02     ` Jeff Law
2011-04-01 14:56     ` Tom de Vries
2011-04-05 21:46       ` Jeff Law
2011-03-31 21:16 ` [PATCH, PR43920] Improve code-size optimizations Eric Botcazou
2011-04-01 15:06   ` Tom de Vries
2011-04-01 16:06     ` Eric Botcazou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D94C88B.4020206@codesourcery.com \
    --to=vries@codesourcery.com \
    --cc=bernds@codesourcery.com \
    --cc=ebotcazou@libertysurf.fr \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=maxim@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).