<div dir="ltr">What version of llvm are you using? Godbolt is showing trunk and llvm 10 have a conditional branch, llvm 11 does not.<div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 17, 2021 at 4:41 PM Richard Kenner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> Long story short, from what I can see there is no miscompilation<br>
> or change in semantics for that matter.<br>
<br>
So why does the .s file not contain the loop exit test?<br>
<br>
        .text<br>
        .file   "c26006a.adb"<br>
        .globl  _ada_c26006a                    # -- Begin function _ada_c26006a<br>
        .p2align        4, 0x90<br>
        .type   _ada_c26006a,@function<br>
_ada_c26006a:                           # @_ada_c26006a<br>
        .cfi_startproc<br>
# %bb.0:                                # %entry<br>
        pushq   %rbx<br>
        .cfi_def_cfa_offset 16<br>
        subq    $32, %rsp<br>
        .cfi_def_cfa_offset 48<br>
        .cfi_offset %rbx, -16<br>
        movw    $8257, 16(%rsp)                 # imm = 0x2041<br>
        movb    $49, 18(%rsp)<br>
        movw    $8257, (%rsp)                   # imm = 0x2041<br>
        movb    $50, 2(%rsp)<br>
        xorl    %ebx, %ebx<br>
        jmp     .LBB0_1<br>
        .p2align        4, 0x90<br>
.LBB0_3:                                # %loop.cond.iter<br>
                                        #   in Loop: Header=BB0_1 Depth=1<br>
        incb    %bl<br>
.LBB0_1:                                # %loop.cond<br>
                                        # =>This Inner Loop Header: Depth=1<br>
        movb    %bl, 17(%rsp)<br>
        movb    %bl, 1(%rsp)<br>
        movzwl  (%rsp), %eax<br>
        xorw    16(%rsp), %ax<br>
        movzbl  2(%rsp), %ecx<br>
        xorb    18(%rsp), %cl<br>
        movzbl  %cl, %ecx<br>
        orw     %ax, %cx<br>
        jne     .LBB0_3<br>
# %bb.2:                                #   in Loop: Header=BB0_1 Depth=1<br>
        callq   abort<br>
        jmp     .LBB0_3<br>
.Lfunc_end0:<br>
        .size   _ada_c26006a, .Lfunc_end0-_ada_c26006a<br>
        .cfi_endproc<br>
                                        # -- End function<br>
        .section        ".note.GNU-stack","",@progbits<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>