On Thu, Aug 08, 2013 at 04:11:06PM +0200, David Kastrup wrote: > I don't have a 64bit system available. Can you send me a disassembly of > the axis_aligned_side_helper routine? I have the suspicion that the > code generated for it may be fishy.
Here you are, hth. Thanks, Petr
(gdb) disassemble axis_aligned_side_helper Dump of assembler code for function axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*): 0x000000000049b560 <+0>: push %r15 0x000000000049b562 <+2>: mov %edx,%r15d 0x000000000049b565 <+5>: push %r14 0x000000000049b567 <+7>: mov %r8d,%r14d 0x000000000049b56a <+10>: push %r13 0x000000000049b56c <+12>: mov %ecx,%r13d 0x000000000049b56f <+15>: push %r12 0x000000000049b571 <+17>: mov %rdi,%r12 0x000000000049b574 <+20>: mov %r9,%rdi 0x000000000049b577 <+23>: push %rbp 0x000000000049b578 <+24>: mov %esi,%ebp 0x000000000049b57a <+26>: push %rbx 0x000000000049b57b <+27>: mov %r9,%rbx 0x000000000049b57e <+30>: sub $0x28,%rsp 0x000000000049b582 <+34>: callq 0x4099a0 <scm_is_number@plt> 0x000000000049b587 <+39>: xor %r9d,%r9d 0x000000000049b58a <+42>: test %eax,%eax 0x000000000049b58c <+44>: jne 0x49b5d0 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+112> 0x000000000049b58e <+46>: xor %ebx,%ebx 0x000000000049b590 <+48>: test $0x6,%r12b 0x000000000049b594 <+52>: jne 0x49b5a3 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+67> 0x000000000049b596 <+54>: mov 0x55ba33(%rip),%rax # 0x9f6fd0 <_ZN4Grob9smob_tag_E> 0x000000000049b59d <+61>: cmp %rax,(%r12) 0x000000000049b5a1 <+65>: je 0x49b5e8 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+136> 0x000000000049b5a3 <+67>: movzbl %r15b,%edx 0x000000000049b5a7 <+71>: mov %r14d,%r8d 0x000000000049b5aa <+74>: mov %r13d,%ecx 0x000000000049b5ad <+77>: mov %ebp,%esi 0x000000000049b5af <+79>: mov %rbx,%rdi 0x000000000049b5b2 <+82>: callq 0x499ef0 <Side_position_interface::aligned_side(Grob*, Axis, bool, int, int, double*)> 0x000000000049b5b7 <+87>: add $0x28,%rsp 0x000000000049b5bb <+91>: pop %rbx 0x000000000049b5bc <+92>: pop %rbp 0x000000000049b5bd <+93>: pop %r12 0x000000000049b5bf <+95>: pop %r13 0x000000000049b5c1 <+97>: pop %r14 0x000000000049b5c3 <+99>: pop %r15 0x000000000049b5c5 <+101>: retq 0x000000000049b5c6 <+102>: nopw %cs:0x0(%rax,%rax,1) 0x000000000049b5d0 <+112>: mov %rbx,%rdi 0x000000000049b5d3 <+115>: callq 0x409540 <scm_to_double@plt> 0x000000000049b5d8 <+120>: lea 0x18(%rsp),%r9 0x000000000049b5dd <+125>: movsd %xmm0,0x18(%rsp) 0x000000000049b5e3 <+131>: jmp 0x49b58e <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+46> 0x000000000049b5e5 <+133>: nopl (%rax) 0x000000000049b5e8 <+136>: mov 0x8(%r12),%rbx 0x000000000049b5ed <+141>: test %rbx,%rbx 0x000000000049b5f0 <+144>: je 0x49b5a3 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+67> 0x000000000049b5f2 <+146>: xor %ecx,%ecx 0x000000000049b5f4 <+148>: mov $0x7104b0,%edx 0x000000000049b5f9 <+153>: mov $0x70d4a0,%esi 0x000000000049b5fe <+158>: mov %rbx,%rdi 0x000000000049b601 <+161>: mov %r9,0x8(%rsp) 0x000000000049b606 <+166>: callq 0x409f30 <__dynamic_cast@plt> 0x000000000049b60b <+171>: test %rax,%rax 0x000000000049b60e <+174>: mov 0x8(%rsp),%r9 0x000000000049b613 <+179>: je 0x49b5a3 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+67> 0x000000000049b615 <+181>: xor %edx,%edx 0x000000000049b617 <+183>: test %ebp,%ebp 0x000000000049b619 <+185>: je 0x49b5a7 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+71> 0x000000000049b61b <+187>: jmp 0x49b5a3 <axis_aligned_side_helper(scm_unused_struct*, Axis, bool, int, int, scm_unused_struct*)+67> End of assembler dump. (gdb)
signature.asc
Description: Digital signature
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel