https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57430

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |tree-optimization

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So on the trunk, it looks like the inlined version has only one mov while the
out of line one has two.

inlined:
.L19:
        cmpq    %rax, %rsi
        je      .L18
.L17:
        movq    %rax, %rdx
        movq    24(%rax), %rax
        testq   %rax, %rax
        jne     .L19

out of line:
.L7:
        movq    %rdx, %rax
.L4:
        cmpq    %rax, %rsi
        je      .L3
        movq    24(%rax), %rdx
        movq    %rax, %rcx
        testq   %rdx, %rdx
        jne     .L7

Note this is 64bit x86.

inlined:
  <bb 10> [local count: 376074471]:
  if (first_24 != curr_34)
    goto <bb 11>; [94.50%]
  else
    goto <bb 12>; [5.50%]

  <bb 11> [local count: 397962402]:
  # curr_55 = PHI <curr_34(10), head.0_9(9)>
  curr_34 = curr_55->next;
  if (curr_34 != 0B)
    goto <bb 10>; [94.50%]
  else
    goto <bb 13>; [5.50%]

out of line:
  <bb 3> [local count: 1014686024]:
  # curr_24 = PHI <curr_15(4), _1(2)>
  # prev_25 = PHI <curr_24(4), 0B(2)>
  if (elt_12(D) != curr_24)
    goto <bb 4>; [94.50%]
  else
    goto <bb 5>; [5.50%]

  <bb 4> [local count: 958878294]:
  curr_15 = curr_24->next;
  if (curr_15 != 0B)
    goto <bb 3>; [93.84%]
  else
    goto <bb 8>; [6.16%]

Reply via email to