]> git.ipfire.org Git - thirdparty/gcc.git/commit
x86: Transform to "pushq $-1; popq reg" for -Oz
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 29 Jul 2025 18:22:35 +0000 (11:22 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 31 Jul 2025 02:46:33 +0000 (19:46 -0700)
commit8b959ca27ee95ba32e5a587e0490f6cb49ef9760
tree4c8425edaeffc529ad970cd1da0e1cc1b43aed79
parentc8eb4fcd40c2faef5dadbaa83abfcc6e058ee9f6
x86: Transform to "pushq $-1; popq reg" for -Oz

commit 4c80062d7b8c272e2e193b8074a8440dbb4fe588
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sun May 25 07:40:29 2025 +0800

    x86: Enable *mov<mode>_(and|or) only for -Oz

disabled transformation from "movq $-1,reg" to "pushq $-1; popq reg" for
-Oz.  But for legacy integer registers, the former is 4 bytes and the
latter is 3 bytes.  Enable such transformation for -Oz.

gcc/

PR target/120427
* config/i386/i386.md (peephole2): Transform "movq $-1,reg" to
"pushq $-1; popq reg" for -Oz if reg is a legacy integer register.

gcc/testsuite/

PR target/120427
* gcc.target/i386/pr120427-5.c: New test.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 71dae74158d05b75e367629ce21da3f0a2945576)
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr120427-5.c [new file with mode: 0644]