https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87600
--- Comment #9 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Alexandre Oliva from comment #8) > I've noticed regressions caused by make_more_copies, in scenarios that used > subreg s for the low part of promoted incoming parms. With hard regs, the > substitution into a subreg became a reg, but with a pseudo, it remains a > subreg, which prevents further combines in some cases, as in e.g. > gcc_target/powerpc/20050603-3.c on ppc64. That happens because of the zero_extract problems. The only thing make_more_copies has to do with this is that this change exposes this problem on this testcase. > I thought one way to go about it could be to scan for subregs of pseudos > copied from hard regs before introducing the additional copies, and > introduce the intermediate pseudo with the widest subreg mode if there > aren't uses of the full pseudo. Usually we want the *smallest* possible mode for pseudos. This is important to get good optimisation.