On Tue, Jun 21, 2022 at 5:06 AM xionghuluo(罗雄虎) via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Current GCC generates:
>
>
> &nbsp;test2:
> .LFB0:
> &nbsp; &nbsp; &nbsp; &nbsp; .cfi_startproc
> &nbsp; &nbsp; &nbsp; &nbsp; xorl &nbsp; &nbsp;%edx, %edx
> &nbsp; &nbsp; &nbsp; &nbsp; cmpl &nbsp; &nbsp;$3, (%rdi)
> &nbsp; &nbsp; &nbsp; &nbsp; jle &nbsp; &nbsp; .L1
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;16(%rdi), %eax
> &nbsp; &nbsp; &nbsp; &nbsp; cmpl &nbsp; &nbsp;$1, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; je &nbsp; &nbsp; &nbsp;.L4
> &nbsp; &nbsp; &nbsp; &nbsp; subl &nbsp; &nbsp;$2, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; cmpl &nbsp; &nbsp;$4, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; ja &nbsp; &nbsp; &nbsp;.L1
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;CSWTCH.1(,%rax,4), %edx
> .L1:
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;%edx, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; ret
> &nbsp; &nbsp; &nbsp; &nbsp; .p2align 4,,10
> &nbsp; &nbsp; &nbsp; &nbsp; .p2align 3
> .L4:
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;$12, %edx
> &nbsp; &nbsp; &nbsp; &nbsp; jmp &nbsp; &nbsp; .L1
> &nbsp; &nbsp; &nbsp; &nbsp; .cfi_endproc
> .LFE0:
> &nbsp; &nbsp; &nbsp; &nbsp; .size &nbsp; test2, .-test2
> &nbsp; &nbsp; &nbsp; &nbsp; .section &nbsp; &nbsp; &nbsp; &nbsp;.rodata
> &nbsp; &nbsp; &nbsp; &nbsp; .align 16
> &nbsp; &nbsp; &nbsp; &nbsp; .type &nbsp; CSWTCH.1, @object
> &nbsp; &nbsp; &nbsp; &nbsp; .size &nbsp; CSWTCH.1, 20
> CSWTCH.1:
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 27
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 38
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 18
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 58
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 68
>
>
>
>
> With the patch attatched:
>
>
> &nbsp;test2:
> .LFB0:
> &nbsp; &nbsp; &nbsp; &nbsp; .cfi_startproc
> &nbsp; &nbsp; &nbsp; &nbsp; xorl &nbsp; &nbsp;%edx, %edx
> &nbsp; &nbsp; &nbsp; &nbsp; cmpl &nbsp; &nbsp;$3, (%rdi)
> &nbsp; &nbsp; &nbsp; &nbsp; jle &nbsp; &nbsp; .L1
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;16(%rdi), %eax
> &nbsp; &nbsp; &nbsp; &nbsp; subl &nbsp; &nbsp;$1, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; cmpl &nbsp; &nbsp;$5, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; jbe &nbsp; &nbsp; .L6
> .L1:
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;%edx, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; ret
> &nbsp; &nbsp; &nbsp; &nbsp; .p2align 4,,10
> &nbsp; &nbsp; &nbsp; &nbsp; .p2align 3
> .L6:
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;CSWTCH.1(,%rax,4), %edx
> &nbsp; &nbsp; &nbsp; &nbsp; movl &nbsp; &nbsp;%edx, %eax
> &nbsp; &nbsp; &nbsp; &nbsp; ret
> &nbsp; &nbsp; &nbsp; &nbsp; .cfi_endproc
> .LFE0:
> &nbsp; &nbsp; &nbsp; &nbsp; .size &nbsp; test2, .-test2
> &nbsp; &nbsp; &nbsp; &nbsp; .section &nbsp; &nbsp; &nbsp; &nbsp;.rodata
> &nbsp; &nbsp; &nbsp; &nbsp; .align 16
> &nbsp; &nbsp; &nbsp; &nbsp; .type &nbsp; CSWTCH.1, @object
> &nbsp; &nbsp; &nbsp; &nbsp; .size &nbsp; CSWTCH.1, 24
> CSWTCH.1:
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 12
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 27
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 38
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 18
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 58
> &nbsp; &nbsp; &nbsp; &nbsp; .long &nbsp; 68
>
>
> Bootstrap and regression tested pass on x86_64-linux-gnu, OK for master?

OK if you add a comment that an empty conditions_in_bbs indicates we are
processing the first basic-block (that's not obvious to me).

Thanks,
Richard.

Reply via email to