This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ipa/65483] bzip2 bsR/bsW should be auto-inlined
- From: "hubicka at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 20 Mar 2015 03:30:41 +0000
- Subject: [Bug ipa/65483] bzip2 bsR/bsW should be auto-inlined
- Auto-submitted: auto-generated
- References: <bug-65483-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65483
Jan Hubicka <hubicka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenther at suse dot de
--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
The difference between 4.9 and 5.0 seems to be unrolling of the decoder loop
and increased register pressure
4.9 does:
0000000000406d60 <bsR>:
406d60: 8b 35 32 14 01 00 mov 0x11432(%rip),%esi #
418198 <bsLive>
406d66: 53 push %rbx
406d67: 8b 05 27 14 01 00 mov 0x11427(%rip),%eax #
418194 <bsBuff>
406d6d: 39 f7 cmp %esi,%edi
406d6f: 0f 8e f3 00 00 00 jle 406e68 <bsR+0x108>
406d75: 48 63 05 20 14 01 00 movslq 0x11420(%rip),%rax #
41819c <bsStream>
406d7c: 83 f8 03 cmp $0x3,%eax
406d7f: 0f 8f 03 01 00 00 jg 406e88 <bsR+0x128>
406d85: 4c 8d 0c 40 lea (%rax,%rax,2),%r9
406d89: 49 c1 e1 03 shl $0x3,%r9
406d8d: 49 8d 91 c0 81 41 00 lea 0x4181c0(%r9),%rdx
406d94: 8b 4a 08 mov 0x8(%rdx),%ecx
406d97: 39 4a 04 cmp %ecx,0x4(%rdx)
406d9a: 0f 8e c0 00 00 00 jle 406e60 <bsR+0x100>
406da0: 44 8d 56 08 lea 0x8(%rsi),%r10d
406da4: 89 fe mov %edi,%esi
406da6: 48 63 d9 movslq %ecx,%rbx
406da9: 48 03 5a 10 add 0x10(%rdx),%rbx
406dad: 8b 05 e1 13 01 00 mov 0x113e1(%rip),%eax #
418194 <bsBuff>
406db3: 44 8d 59 01 lea 0x1(%rcx),%r11d
406db7: 44 29 d6 sub %r10d,%esi
406dba: 83 c6 07 add $0x7,%esi
406dbd: 83 e6 08 and $0x8,%esi
406dc0: 74 3e je 406e00 <bsR+0xa0>
406dc2: 45 89 d8 mov %r11d,%r8d
406dc5: 44 89 5a 08 mov %r11d,0x8(%rdx)
406dc9: 44 0f b6 1b movzbl (%rbx),%r11d
406dcd: c1 e0 08 shl $0x8,%eax
406dd0: 44 89 d6 mov %r10d,%esi
406dd3: 44 89 15 be 13 01 00 mov %r10d,0x113be(%rip) #
418198 <bsLive>
406dda: 44 09 d8 or %r11d,%eax
406ddd: 44 39 d7 cmp %r10d,%edi
406de0: 89 05 ae 13 01 00 mov %eax,0x113ae(%rip) #
418194 <bsBuff>
406de6: 0f 8e 7c 00 00 00 jle 406e68 <bsR+0x108>
406dec: 41 83 c2 08 add $0x8,%r10d
406df0: 48 83 c3 01 add $0x1,%rbx
406df4: 44 39 42 04 cmp %r8d,0x4(%rdx)
406df8: 44 8d 59 02 lea 0x2(%rcx),%r11d
406dfc: 7e 62 jle 406e60 <bsR+0x100>
406dfe: 66 90 xchg %ax,%ax
406e00: 49 8d 91 c0 81 41 00 lea 0x4181c0(%r9),%rdx
406e07: c1 e0 08 shl $0x8,%eax
406e0a: 44 89 d6 mov %r10d,%esi
406e0d: 44 89 5a 08 mov %r11d,0x8(%rdx)
406e11: 0f b6 0b movzbl (%rbx),%ecx
406e14: 44 89 15 7d 13 01 00 mov %r10d,0x1137d(%rip) #
418198 <bsLive>
406e1b: 09 c8 or %ecx,%eax
406e1d: 44 39 d7 cmp %r10d,%edi
406e20: 89 05 6e 13 01 00 mov %eax,0x1136e(%rip) #
418194 <bsBuff>
406e26: 7e 40 jle 406e68 <bsR+0x108>
406e28: 44 39 5a 04 cmp %r11d,0x4(%rdx)
406e2c: 45 8d 42 08 lea 0x8(%r10),%r8d
406e30: 41 8d 73 01 lea 0x1(%r11),%esi
406e34: 7e 2a jle 406e60 <bsR+0x100>
406e36: 89 72 08 mov %esi,0x8(%rdx)
406e39: 0f b6 4b 01 movzbl 0x1(%rbx),%ecx
406e3d: c1 e0 08 shl $0x8,%eax
406e40: 41 83 c2 10 add $0x10,%r10d
406e44: 41 83 c3 02 add $0x2,%r11d
406e48: 48 83 c3 02 add $0x2,%rbx
406e4c: 44 89 05 45 13 01 00 mov %r8d,0x11345(%rip) #
418198 <bsLive>
406e53: 09 c8 or %ecx,%eax
406e55: 39 72 04 cmp %esi,0x4(%rdx)
406e58: 89 05 36 13 01 00 mov %eax,0x11336(%rip) #
418194 <bsBuff>
406e5e: 7f a0 jg 406e00 <bsR+0xa0>
406e60: e8 3b 28 00 00 callq 4096a0 <compressedStreamEOF>
406e65: 0f 1f 00 nopl (%rax)
406e68: 89 f1 mov %esi,%ecx
406e6a: 41 b9 01 00 00 00 mov $0x1,%r9d
406e70: 29 f9 sub %edi,%ecx
406e72: d3 e8 shr %cl,%eax
406e74: 89 0d 1e 13 01 00 mov %ecx,0x1131e(%rip) #
418198 <bsLive>
406e7a: 89 f9 mov %edi,%ecx
406e7c: 41 d3 e1 shl %cl,%r9d
406e7f: 41 83 e9 01 sub $0x1,%r9d
406e83: 44 21 c8 and %r9d,%eax
406e86: 5b pop %rbx
406e87: c3 retq
406e88: 89 c7 mov %eax,%edi
406e8a: e8 35 9c ff ff callq 400ac4
<spec_getc.part.1.lto_priv.1>
406e8f: 90 nop
While 5.0
00000000004071e0 <bsR>:
4071e0: 41 55 push %r13
4071e2: 41 54 push %r12
4071e4: 55 push %rbp
4071e5: 53 push %rbx
4071e6: 48 83 ec 08 sub $0x8,%rsp
4071ea: 8b 05 dc a5 01 00 mov 0x1a5dc(%rip),%eax #
4217cc <bsLive>
4071f0: 8b 15 da a5 01 00 mov 0x1a5da(%rip),%edx #
4217d0 <bsBuff>
4071f6: 39 c7 cmp %eax,%edi
4071f8: 0f 8e 92 01 00 00 jle 407390 <bsR+0x1b0>
4071fe: 48 63 15 cf a5 01 00 movslq 0x1a5cf(%rip),%rdx #
4217d4 <bsStream>
407205: 41 89 fc mov %edi,%r12d
407208: 83 fa 03 cmp $0x3,%edx
40720b: 0f 8f de 01 00 00 jg 4073ef <bsR+0x20f>
407211: 48 8d 0c 52 lea (%rdx,%rdx,2),%rcx
407215: 48 8d 1c cd 80 17 42 lea 0x421780(,%rcx,8),%rbx
40721c: 00
40721d: 8b 6b 08 mov 0x8(%rbx),%ebp
407220: 44 8b 5b 04 mov 0x4(%rbx),%r11d
407224: 41 39 eb cmp %ebp,%r11d
407227: 0f 8e 53 01 00 00 jle 407380 <bsR+0x1a0>
40722d: 44 8d 48 08 lea 0x8(%rax),%r9d
407231: 41 89 fd mov %edi,%r13d
407234: 4c 63 d5 movslq %ebp,%r10
407237: 41 83 c3 01 add $0x1,%r11d
40723b: 4c 03 53 10 add 0x10(%rbx),%r10
40723f: 8b 15 8b a5 01 00 mov 0x1a58b(%rip),%edx #
4217d0 <bsBuff>
407245: 45 29 cd sub %r9d,%r13d
407248: 8d 75 01 lea 0x1(%rbp),%esi
40724b: 41 83 c5 07 add $0x7,%r13d
40724f: 41 c1 ed 03 shr $0x3,%r13d
407253: 41 83 e5 03 and $0x3,%r13d
407257: 0f 84 a0 00 00 00 je 4072fd <bsR+0x11d>
40725d: 89 73 08 mov %esi,0x8(%rbx)
407260: 41 0f b6 32 movzbl (%r10),%esi
407264: c1 e2 08 shl $0x8,%edx
407267: 44 89 c8 mov %r9d,%eax
40726a: 44 89 0d 5b a5 01 00 mov %r9d,0x1a55b(%rip) #
4217cc <bsLive>
407271: 09 f2 or %esi,%edx
407273: 44 39 cf cmp %r9d,%edi
407276: 89 15 54 a5 01 00 mov %edx,0x1a554(%rip) #
4217d0 <bsBuff>
40727c: 0f 8e 0e 01 00 00 jle 407390 <bsR+0x1b0>
407282: 8d 75 02 lea 0x2(%rbp),%esi
407285: 41 83 c1 08 add $0x8,%r9d
407289: 49 83 c2 01 add $0x1,%r10
40728d: 44 39 de cmp %r11d,%esi
407290: 0f 84 ea 00 00 00 je 407380 <bsR+0x1a0>
407296: 41 83 fd 01 cmp $0x1,%r13d
4072a0: 74 2e je 4072d0 <bsR+0xf0>
4072a2: 89 73 08 mov %esi,0x8(%rbx)
4072a5: 45 0f b6 02 movzbl (%r10),%r8d
4072a9: 8d 75 03 lea 0x3(%rbp),%esi
4072ac: c1 e2 08 shl $0x8,%edx
4072af: 44 89 0d 16 a5 01 00 mov %r9d,0x1a516(%rip) #
4217cc <bsLive>
4072b6: 49 83 c2 01 add $0x1,%r10
4072ba: 41 83 c1 08 add $0x8,%r9d
4072be: 44 09 c2 or %r8d,%edx
4072c1: 44 39 de cmp %r11d,%esi
4072c4: 89 15 06 a5 01 00 mov %edx,0x1a506(%rip) #
4217d0 <bsBuff>
4072ca: 0f 84 b0 00 00 00 je 407380 <bsR+0x1a0>
4072d0: 89 73 08 mov %esi,0x8(%rbx)
4072d3: 41 0f b6 0a movzbl (%r10),%ecx
4072d7: c1 e2 08 shl $0x8,%edx
4072da: 83 c6 01 add $0x1,%esi
4072dd: 44 89 0d e8 a4 01 00 mov %r9d,0x1a4e8(%rip) #
4217cc <bsLive>
4072e4: 49 83 c2 01 add $0x1,%r10
4072e8: 41 83 c1 08 add $0x8,%r9d
4072ec: 09 ca or %ecx,%edx
4072ee: 44 39 de cmp %r11d,%esi
4072f1: 89 15 d9 a4 01 00 mov %edx,0x1a4d9(%rip) #
4217d0 <bsBuff>
4072f7: 0f 84 83 00 00 00 je 407380 <bsR+0x1a0>
4072fd: 89 73 08 mov %esi,0x8(%rbx)
407300: 41 0f b6 2a movzbl (%r10),%ebp
407304: c1 e2 08 shl $0x8,%edx
407307: 44 89 c8 mov %r9d,%eax
40730a: 44 89 0d bb a4 01 00 mov %r9d,0x1a4bb(%rip) #
4217cc <bsLive>
407311: 09 ea or %ebp,%edx
407313: 45 39 cc cmp %r9d,%r12d
407316: 89 15 b4 a4 01 00 mov %edx,0x1a4b4(%rip) #
4217d0 <bsBuff>
40731c: 7e 72 jle 407390 <bsR+0x1b0>
40731e: 8d 46 01 lea 0x1(%rsi),%eax
407321: 45 8d 69 08 lea 0x8(%r9),%r13d
407325: 44 39 d8 cmp %r11d,%eax
407328: 74 56 je 407380 <bsR+0x1a0>
40732a: 89 43 08 mov %eax,0x8(%rbx)
40732d: 45 0f b6 42 01 movzbl 0x1(%r10),%r8d
407332: 8d 6e 02 lea 0x2(%rsi),%ebp
407335: c1 e2 08 shl $0x8,%edx
407338: 44 89 2d 8d a4 01 00 mov %r13d,0x1a48d(%rip) #
4217cc <bsLive>
40733f: 41 8d 49 10 lea 0x10(%r9),%ecx
407343: 44 09 c2 or %r8d,%edx
407346: 44 39 dd cmp %r11d,%ebp
407349: 89 15 81 a4 01 00 mov %edx,0x1a481(%rip) #
4217d0 <bsBuff>
40734f: 74 2f je 407380 <bsR+0x1a0>
407354: 45 0f b6 6a 02 movzbl 0x2(%r10),%r13d
407359: 8d 46 03 lea 0x3(%rsi),%eax
40735c: c1 e2 08 shl $0x8,%edx
40735f: 89 0d 67 a4 01 00 mov %ecx,0x1a467(%rip) #
4217cc <bsLive>
407365: 45 8d 41 18 lea 0x18(%r9),%r8d
407369: 44 09 ea or %r13d,%edx
40736c: 44 39 d8 cmp %r11d,%eax
40736f: 89 15 5b a4 01 00 mov %edx,0x1a45b(%rip) #
4217d0 <bsBuff>
407375: 75 49 jne 4073c0 <bsR+0x1e0>
407377: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
40737e: 00 00
407380: e8 0b e1 ff ff callq 405490 <compressedStreamEOF>
407385: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1)
40738c: 00 00 00 00
407390: 29 f8 sub %edi,%eax
407392: 89 f9 mov %edi,%ecx
407394: 41 bc 01 00 00 00 mov $0x1,%r12d
40739a: 41 d3 e4 shl %cl,%r12d
40739d: 89 c1 mov %eax,%ecx
40739f: 89 05 27 a4 01 00 mov %eax,0x1a427(%rip) #
4217cc <bsLive>
4073a5: d3 ea shr %cl,%edx
4073a7: 48 83 c4 08 add $0x8,%rsp
4073ab: 41 83 ec 01 sub $0x1,%r12d
4073af: 89 d0 mov %edx,%eax
4073b1: 5b pop %rbx
4073b2: 44 21 e0 and %r12d,%eax
4073b5: 5d pop %rbp
4073b6: 41 5c pop %r12
4073b8: 41 5d pop %r13
4073ba: c3 retq
4073bb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
4073c0: 89 43 08 mov %eax,0x8(%rbx)
4073c3: 41 0f b6 4a 03 movzbl 0x3(%r10),%ecx
4073c8: c1 e2 08 shl $0x8,%edx
4073cb: 83 c6 04 add $0x4,%esi
4073ce: 41 83 c1 20 add $0x20,%r9d
4073d2: 49 83 c2 04 add $0x4,%r10
4073d6: 44 89 05 ef a3 01 00 mov %r8d,0x1a3ef(%rip) #
4217cc <bsLive>
4073dd: 09 ca or %ecx,%edx
4073df: 44 39 de cmp %r11d,%esi
4073e2: 89 15 e8 a3 01 00 mov %edx,0x1a3e8(%rip) #
4217d0 <bsBuff>
4073e8: 74 96 je 407380 <bsR+0x1a0>
4073ea: e9 0e ff ff ff jmpq 4072fd <bsR+0x11d>
4073ef: 89 d7 mov %edx,%edi
4073f1: e8 ce 96 ff ff callq 400ac4
<spec_getc.part.1.lto_priv.19>
0000000000407400 <bsR.constprop.3>:
407400: 48 83 ec 08 sub $0x8,%rsp
407404: 8b 0d c2 a3 01 00 mov 0x1a3c2(%rip),%ecx #
4217cc <bsLive>
40740a: 8b 05 c0 a3 01 00 mov 0x1a3c0(%rip),%eax #
4217d0 <bsBuff>
407410: 83 f9 07 cmp $0x7,%ecx
407413: 0f 8f 87 01 00 00 jg 4075a0 <bsR.constprop.3+0x1a0>
407419: 48 63 3d b4 a3 01 00 movslq 0x1a3b4(%rip),%rdi #
4217d4 <bsStream>
407420: 83 ff 03 cmp $0x3,%edi
407423: 0f 8f c6 01 00 00 jg 4075ef <bsR.constprop.3+0x1ef>
407429: 48 8d 04 7f lea (%rdi,%rdi,2),%rax
40742d: 4c 8d 14 c5 80 17 42 lea 0x421780(,%rax,8),%r10
407434: 00
407435: 41 8b 7a 08 mov 0x8(%r10),%edi
407439: 45 8b 4a 04 mov 0x4(%r10),%r9d
40743d: 44 39 cf cmp %r9d,%edi
407440: 0f 8d 4a 01 00 00 jge 407590 <bsR.constprop.3+0x190>
407446: 8d 71 08 lea 0x8(%rcx),%esi
407449: 41 bb 0f 00 00 00 mov $0xf,%r11d
40744f: 4c 63 c7 movslq %edi,%r8
407452: 4d 03 42 10 add 0x10(%r10),%r8
407456: 8b 05 74 a3 01 00 mov 0x1a374(%rip),%eax #
4217d0 <bsBuff>
40745c: 41 29 f3 sub %esi,%r11d
40745f: 41 c1 eb 03 shr $0x3,%r11d
407463: 41 83 e3 03 and $0x3,%r11d
407467: 0f 84 9e 00 00 00 je 40750b <bsR.constprop.3+0x10b>
40746d: 83 c7 01 add $0x1,%edi
407470: c1 e0 08 shl $0x8,%eax
407473: 41 89 7a 08 mov %edi,0x8(%r10)
407477: 41 0f b6 08 movzbl (%r8),%ecx
40747b: 89 35 4b a3 01 00 mov %esi,0x1a34b(%rip) #
4217cc <bsLive>
407481: 09 c8 or %ecx,%eax
407483: 83 fe 07 cmp $0x7,%esi
407486: 89 f1 mov %esi,%ecx
407488: 89 05 42 a3 01 00 mov %eax,0x1a342(%rip) #
4217d0 <bsBuff>
40748e: 0f 8f 0c 01 00 00 jg 4075a0 <bsR.constprop.3+0x1a0>
407494: 83 c6 08 add $0x8,%esi
407497: 49 83 c0 01 add $0x1,%r8
40749b: 44 39 cf cmp %r9d,%edi
40749e: 0f 84 ec 00 00 00 je 407590 <bsR.constprop.3+0x190>
4074a4: 41 83 fb 01 cmp $0x1,%r11d
4074a8: 74 61 je 40750b <bsR.constprop.3+0x10b>
4074aa: 41 83 fb 02 cmp $0x2,%r11d
4074ae: 74 2d je 4074dd <bsR.constprop.3+0xdd>
4074b0: 83 c7 01 add $0x1,%edi
4074b3: c1 e0 08 shl $0x8,%eax
4074b6: 49 83 c0 01 add $0x1,%r8
4074ba: 41 89 7a 08 mov %edi,0x8(%r10)
4074be: 41 0f b6 50 ff movzbl -0x1(%r8),%edx
4074c3: 89 35 03 a3 01 00 mov %esi,0x1a303(%rip) #
4217cc <bsLive>
4074c9: 83 c6 08 add $0x8,%esi
4074cc: 09 d0 or %edx,%eax
4074ce: 44 39 cf cmp %r9d,%edi
4074d1: 89 05 f9 a2 01 00 mov %eax,0x1a2f9(%rip) #
4217d0 <bsBuff>
4074d7: 0f 84 b3 00 00 00 je 407590 <bsR.constprop.3+0x190>
4074dd: 83 c7 01 add $0x1,%edi
4074e0: c1 e0 08 shl $0x8,%eax
4074e3: 49 83 c0 01 add $0x1,%r8
4074e7: 41 89 7a 08 mov %edi,0x8(%r10)
4074eb: 45 0f b6 58 ff movzbl -0x1(%r8),%r11d
4074f0: 89 35 d6 a2 01 00 mov %esi,0x1a2d6(%rip) #
4217cc <bsLive>
4074f6: 83 c6 08 add $0x8,%esi
4074f9: 44 09 d8 or %r11d,%eax
4074fc: 44 39 cf cmp %r9d,%edi
4074ff: 89 05 cb a2 01 00 mov %eax,0x1a2cb(%rip) #
4217d0 <bsBuff>
407505: 0f 84 85 00 00 00 je 407590 <bsR.constprop.3+0x190>
40750b: 8d 57 01 lea 0x1(%rdi),%edx
40750e: c1 e0 08 shl $0x8,%eax
407511: 41 89 52 08 mov %edx,0x8(%r10)
407515: 41 0f b6 08 movzbl (%r8),%ecx
407519: 89 35 ad a2 01 00 mov %esi,0x1a2ad(%rip) #
4217cc <bsLive>
40751f: 09 c8 or %ecx,%eax
407521: 83 fe 07 cmp $0x7,%esi
407524: 89 f1 mov %esi,%ecx
407526: 89 05 a4 a2 01 00 mov %eax,0x1a2a4(%rip) #
4217d0 <bsBuff>
40752c: 7f 72 jg 4075a0 <bsR.constprop.3+0x1a0>
40752e: 44 39 ca cmp %r9d,%edx
407531: 44 8d 5e 08 lea 0x8(%rsi),%r11d
407535: 74 59 je 407590 <bsR.constprop.3+0x190>
407537: 8d 4f 02 lea 0x2(%rdi),%ecx
40753a: c1 e0 08 shl $0x8,%eax
40753d: 41 89 4a 08 mov %ecx,0x8(%r10)
407541: 41 0f b6 50 01 movzbl 0x1(%r8),%edx
407546: 44 89 1d 7f a2 01 00 mov %r11d,0x1a27f(%rip) #
4217cc <bsLive>
40754d: 44 8d 5e 10 lea 0x10(%rsi),%r11d
407551: 09 d0 or %edx,%eax
407553: 44 39 c9 cmp %r9d,%ecx
407556: 89 05 74 a2 01 00 mov %eax,0x1a274(%rip) #
4217d0 <bsBuff>
40755c: 74 32 je 407590 <bsR.constprop.3+0x190>
40755e: 8d 4f 03 lea 0x3(%rdi),%ecx
407561: c1 e0 08 shl $0x8,%eax
407564: 41 89 4a 08 mov %ecx,0x8(%r10)
407568: 41 0f b6 50 02 movzbl 0x2(%r8),%edx
40756d: 44 89 1d 58 a2 01 00 mov %r11d,0x1a258(%rip) #
4217cc <bsLive>
407574: 44 8d 5e 18 lea 0x18(%rsi),%r11d
407578: 09 d0 or %edx,%eax
40757a: 44 39 c9 cmp %r9d,%ecx
40757d: 89 05 4d a2 01 00 mov %eax,0x1a24d(%rip) #
4217d0 <bsBuff>
407583: 75 3b jne 4075c0 <bsR.constprop.3+0x1c0>
407585: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1)
40758c: 00 00 00 00
407590: e8 fb de ff ff callq 405490 <compressedStreamEOF>
407595: 66 66 2e 0f 1f 84 00 data32 nopw %cs:0x0(%rax,%rax,1)
40759c: 00 00 00 00
4075a0: 83 e9 08 sub $0x8,%ecx
4075a3: d3 e8 shr %cl,%eax
4075a5: 89 0d 21 a2 01 00 mov %ecx,0x1a221(%rip) #
4217cc <bsLive>
4075ab: 48 83 c4 08 add $0x8,%rsp
4075af: 0f b6 c0 movzbl %al,%eax
4075b2: c3 retq
4075b3: 66 66 66 66 2e 0f 1f data32 data32 data32 nopw
%cs:0x0(%rax,%rax,1)
4075ba: 84 00 00 00 00 00
4075c0: 83 c7 04 add $0x4,%edi
4075c3: c1 e0 08 shl $0x8,%eax
4075c6: 83 c6 20 add $0x20,%esi
4075c9: 41 89 7a 08 mov %edi,0x8(%r10)
4075cd: 41 0f b6 48 03 movzbl 0x3(%r8),%ecx
4075d2: 49 83 c0 04 add $0x4,%r8
4075d6: 44 89 1d ef a1 01 00 mov %r11d,0x1a1ef(%rip) #
4217cc <bsLive>
4075dd: 09 c8 or %ecx,%eax
4075df: 44 39 cf cmp %r9d,%edi
4075e2: 89 05 e8 a1 01 00 mov %eax,0x1a1e8(%rip) #
4217d0 <bsBuff>
4075e8: 74 a6 je 407590 <bsR.constprop.3+0x190>
4075ea: e9 1c ff ff ff jmpq 40750b <bsR.constprop.3+0x10b>
4075ef: e8 d0 94 ff ff callq 400ac4
<spec_getc.part.1.lto_priv.19>
4075f4: 66 66 66 2e 0f 1f 84 data32 data32 nopw %cs:0x0(%rax,%rax,1)
4075fb: 00 00 00 00 00
which, given the fast path across function, is quite an overkill.
Richard, perhaps we can somehow derive the value range and fact that the number
of iterations is at most 4?