https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124901

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
> Did you try moving the existing postreload late_combine later?

While moving the pass results in the same code for the above trivial
testcase, it regressed linux code size considerably:

$size *.o
  text    data     bss     dec     hex filename
29483880        4932443  754228 35170551        218a8f7 vmlinux-moved.o
29415516        4932443  754228 35102187        2179deb vmlinux-new.o
29432351        4932443  754228 35119022        217dfae vmlinux-old.o

The postreload late_combine pass apparently frees some registers, so
follow-up passes can use them. This is not the case when the pass is
simply moved to the new location. The instructions are still combined
when the pass is moved after bbro pass, but used registers are "dead"
for the preceding optimization passes.

Reply via email to