This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/59968] Unused BT patterns


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #9 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int bar1;
void
__attribute__((noinline))
foo1 (int y)
{
  if (!(bar1 & (1 << y)))
    {
      bar1 |= 1 << y;
      xxx1 ();
    }
}

we generate

    .cfi_startproc
    movl    bar1(%rip), %eax
    btl    %edi, %eax
    jnc    .L5
    rep ret
    .p2align 4,,10
    .p2align 3
.L5:
    movl    $1, %edx
    movl    %edi, %ecx
    sall    %cl, %edx
    orl    %edx, %eax
    movl    %eax, bar1(%rip)
    jmp    xxx1

I expect

    bts %edi, bar2(%rip)
    jc .L7
    jmp    xxx2
.L8:
    .p2align 4,,10
    .p2align 3
.L7:
    rep ret


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]