https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112445
--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Jakub Jelinek from comment #4) > I think this goes wrong during combine. Combine does not / should not combine moves from hard registers just because of extending register live range. It looks that this should also include zero-extracts and other "pseudo-move" instructions. The relevant patch and discussion is at [1]. [1] https://gcc.gnu.org/legacy-ml/gcc-patches/2018-10/msg01356.html