https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108498

--- Comment #1 from Adam Stylinski <kungfujesus06 at gmail dot com> ---
I also should note this affects GCC 11.3, as well.  The code being generated
via this optimization, while marginally shorter, seems to be rather suboptimal
in general.  Here's what clang's emitting for the same sequence:

0000000000000930 <.emit_test>:
 930:   3c a0 02 00     lis     r5,512
 934:   38 80 00 01     li      r4,1
 938:   88 e3 00 08     lbz     r7,8(r3)
 93c:   60 a5 ff 03     ori     r5,r5,65283
 940:   38 c0 02 01     li      r6,513
 944:   f8 83 00 0c     std     r4,12(r3)
 948:   38 80 00 02     li      r4,2
 94c:   78 a5 01 8a     rldic   r5,r5,32,6
 950:   f8 83 00 14     std     r4,20(r3)
 954:   38 80 00 00     li      r4,0
 958:   78 c6 d0 02     rotldi  r6,r6,58
 95c:   64 a5 00 01     oris    r5,r5,1
 960:   f8 83 00 34     std     r4,52(r3)
 964:   38 80 00 1c     li      r4,28
 968:   60 a5 02 03     ori     r5,r5,515
 96c:   f8 c3 00 24     std     r6,36(r3)
 970:   54 e6 07 fe     clrlwi  r6,r7,31
 974:   50 c4 07 b4     rlwimi  r4,r6,0,30,26
 978:   f8 a3 00 00     std     r5,0(r3)
 97c:   3c a0 00 01     lis     r5,1
 980:   98 83 00 08     stb     r4,8(r3)
 984:   60 a4 02 03     ori     r4,r5,515
 988:   78 84 c5 c8     rldic   r4,r4,24,23
 98c:   f8 83 00 3c     std     r4,60(r3)
 990:   4e 80 00 20     blr

This bug is affecting the mesa project, so at least fixing this to emitting
correct code (if a little suboptimal) would go a long way.

Reply via email to