[llvm-dev] Potentially unsafe loop optimization

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 17 16:46:16 PST 2021


What version of llvm are you using? Godbolt is showing trunk and llvm 10
have a conditional branch, llvm 11 does not.

~Craig


On Wed, Feb 17, 2021 at 4:41 PM Richard Kenner via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> > Long story short, from what I can see there is no miscompilation
> > or change in semantics for that matter.
>
> So why does the .s file not contain the loop exit test?
>
>         .text
>         .file   "c26006a.adb"
>         .globl  _ada_c26006a                    # -- Begin function
> _ada_c26006a
>         .p2align        4, 0x90
>         .type   _ada_c26006a, at function
> _ada_c26006a:                           # @_ada_c26006a
>         .cfi_startproc
> # %bb.0:                                # %entry
>         pushq   %rbx
>         .cfi_def_cfa_offset 16
>         subq    $32, %rsp
>         .cfi_def_cfa_offset 48
>         .cfi_offset %rbx, -16
>         movw    $8257, 16(%rsp)                 # imm = 0x2041
>         movb    $49, 18(%rsp)
>         movw    $8257, (%rsp)                   # imm = 0x2041
>         movb    $50, 2(%rsp)
>         xorl    %ebx, %ebx
>         jmp     .LBB0_1
>         .p2align        4, 0x90
> .LBB0_3:                                # %loop.cond.iter
>                                         #   in Loop: Header=BB0_1 Depth=1
>         incb    %bl
> .LBB0_1:                                # %loop.cond
>                                         # =>This Inner Loop Header: Depth=1
>         movb    %bl, 17(%rsp)
>         movb    %bl, 1(%rsp)
>         movzwl  (%rsp), %eax
>         xorw    16(%rsp), %ax
>         movzbl  2(%rsp), %ecx
>         xorb    18(%rsp), %cl
>         movzbl  %cl, %ecx
>         orw     %ax, %cx
>         jne     .LBB0_3
> # %bb.2:                                #   in Loop: Header=BB0_1 Depth=1
>         callq   abort
>         jmp     .LBB0_3
> .Lfunc_end0:
>         .size   _ada_c26006a, .Lfunc_end0-_ada_c26006a
>         .cfi_endproc
>                                         # -- End function
>         .section        ".note.GNU-stack","", at progbits
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210217/bae16d8c/attachment.html>


More information about the llvm-dev mailing list