<div dir="ltr">I ran the IR through clang -O2 on godbolt and didn't get a return. So I think something is happening in the middle end?<br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br></div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 17, 2021 at 4:57 PM Johannes Doerfert <<a href="mailto:johannesdoerfert@gmail.com">johannesdoerfert@gmail.com</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">llc generates the return in all version I tried: <br>
<a href="https://godbolt.org/z/oh3fqh" rel="noreferrer" target="_blank">https://godbolt.org/z/oh3fqh</a><br>
<br>
<br>
On 2/17/21 6:46 PM, Craig Topper wrote:<br>
> What version of llvm are you using? Godbolt is showing trunk and llvm 10<br>
> have a conditional branch, llvm 11 does not.<br>
><br>
> ~Craig<br>
><br>
><br>
> On Wed, Feb 17, 2021 at 4:41 PM Richard Kenner via llvm-dev <<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
><br>
>>> Long story short, from what I can see there is no miscompilation<br>
>>> or change in semantics for that matter.<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<br>
>> _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>
>><br>
</blockquote></div>