https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117081
--- Comment #15 from H.J. Lu <hjl.tools at gmail dot com> ---
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?