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?

Reply via email to