https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117081
--- Comment #16 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #15)
> r15-7400-gd3ff498c478ace gave
>
> $ cat x.c
> int f (int);
> int
> advance (int dz)
> {
> if (dz > 0)
> return (dz + dz) * dz;
> else
> return dz * f (dz);
> }
> [hjl@gnu-tgl-3 pr111673]$ make x.o
> /export/build/gnu/tools-build/gcc-gitlab-debug/build-x86_64-linux/gcc/xgcc
> -B/export/build/gnu/tools-build/gcc-gitlab-debug/build-x86_64-linux/gcc/ -O2
> -c -o x.o x.c
> $ objdump -dw x.o
>
> x.o: file format elf64-x86-64
>
>
> Disassembly of section .text:
>
> 0000000000000000 <advance>:
> 0: 85 ff test %edi,%edi
> 2: 7e 0c jle 10 <advance+0x10>
> 4: 0f af ff imul %edi,%edi
> 7: 8d 04 3f lea (%rdi,%rdi,1),%eax
> a: c3 ret
> b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
> 10: 53 push %rbx
> 11: 89 fb mov %edi,%ebx
> 13: e8 00 00 00 00 call 18 <advance+0x18>
> 18: 0f af c3 imul %ebx,%eax
> 1b: 5b pop %rbx
> 1c: c3 ret
> $
>
> Does it look OK?
It looks reasonable.