Comment 23 for bug 1247607

Revision history for this message
In , Bugs-i (bugs-i) wrote :

Compiled code with this patch:

00000000000015b0 <nouveau_pushbuf_reloc>:
    15b0: 55 push %rbp
    15b1: 48 8b 6f 30 mov 0x30(%rdi),%rbp
    15b5: 53 push %rbx
    15b6: 48 89 fb mov %rdi,%rbx
    15b9: e8 42 ea ff ff callq 0 <pushbuf_krel>
    15be: 89 45 00 mov %eax,0x0(%rbp)
    15c1: 48 83 43 30 04 addq $0x4,0x30(%rbx)
    15c6: 5b pop %rbx
    15c7: 5d pop %rbp
    15c8: c3 retq

Without:
0000000000001650 <nouveau_pushbuf_reloc>:
    1650: 48 89 5c 24 f0 mov %rbx,-0x10(%rsp)
    1655: 48 89 6c 24 f8 mov %rbp,-0x8(%rsp)
    165a: 48 83 ec 10 sub $0x10,%rsp
    165e: 48 8b 6f 30 mov 0x30(%rdi),%rbp
    1662: 48 89 fb mov %rdi,%rbx
    1665: e8 96 e9 ff ff callq 0 <pushbuf_krel>
    166a: 89 45 00 mov %eax,0x0(%rbp)
    166d: 48 83 c5 04 add $0x4,%rbp
    1671: 48 89 6b 30 mov %rbp,0x30(%rbx)
    1675: 48 8b 1c 24 mov (%rsp),%rbx
    1679: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp
    167e: 48 83 c4 10 add $0x10,%rsp
    1682: c3 retq

It seems that the nouveau_pushbuf_reloc difference is harmless. Code is equivalent, except that without the patch applied it uses another temp variable causing less optimal code generation.

Remaining candidates: pushbuf_validate, nouveau_pushbuf_data, nouveau_pushbuf_del.