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.
