https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91109
--- Comment #7 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- I can reproduce this defect with gcc-9 (!) $ ../gcc-9-branch/configure --prefix=/home/ed/gnu/arm-linux-gnueabihf-linux64-1 --target=arm-linux-gnueabihf --enable-languages=c,c++ --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard $ TMP=. arm-linux-gnueabihf-gcc -O2 -flto -save-temps -fdump-rtl-all-all 20040709-1.c $ grep same *.reload Assigning the same 6155 to r11 $ vi *.ltrans0.s look for the last umull (it is always the last one): str r5, [fp] umull fp, r3, r7, r8 [...] str r6, [fp] But the same does not happen for gcc-8: $ grep same *.reload the assembler listing looks okay. But the update_scratch_ops looks exactly identical, Therefore the issue is likely just a hidden one there.