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.