------- Comment #4 from ludovic at ludovic-brenta dot org 2009-11-17 19:59 ------- Actually the disassembly above was that of Tab.Get_Next. The source for Tab.Get_Next is:
function Get_Next (T : Instance) return Elmt_Ptr is begin if T = null or else not T.Iterator_Started then return Null_Ptr; end if; T.Iterator_Ptr := Next (T.Iterator_Ptr); return Get_Non_Null (T); end Get_Next; The disassembly of Simple_HTable.Get_Next is: (gdb) up #1 0x000002000086f344 in prj__tree__tree_private_part__projects_htable__get_next () from /usr/lib/libgnatprj.so.4.4 (gdb) disassemble Dump of assembler code for function prj__tree__tree_private_part__projects_htable__get_next: 0x000002000086f320 <prj__tree__tree_private_part__projects_htable__get_next+0>: ldah gp,6(t12) 0x000002000086f324 <prj__tree__tree_private_part__projects_htable__get_next+4>: lda gp,-12160(gp) 0x000002000086f328 <prj__tree__tree_private_part__projects_htable__get_next+8>: lda sp,-16(sp) 0x000002000086f32c <prj__tree__tree_private_part__projects_htable__get_next+12>: ldq t12,-27200(gp) 0x000002000086f330 <prj__tree__tree_private_part__projects_htable__get_next+16>: stq s0,8(sp) 0x000002000086f334 <prj__tree__tree_private_part__projects_htable__get_next+20>: mov a0,s0 0x000002000086f338 <prj__tree__tree_private_part__projects_htable__get_next+24>: stq ra,0(sp) 0x000002000086f33c <prj__tree__tree_private_part__projects_htable__get_next+28>: mov a1,a0 0x000002000086f340 <prj__tree__tree_private_part__projects_htable__get_next+32>: jsr ra,(t12),0x2000086f344 <prj__tree__tree_private_part__projects_htable__get_next+36> 0x000002000086f344 <prj__tree__tree_private_part__projects_htable__get_next+36>: ldah gp,6(ra) 0x000002000086f348 <prj__tree__tree_private_part__projects_htable__get_next+40>: lda gp,-12196(gp) 0x000002000086f34c <prj__tree__tree_private_part__projects_htable__get_next+44>: beq v0,0x2000086f390 <prj__tree__tree_private_part__projects_htable__get_next+112> 0x000002000086f350 <prj__tree__tree_private_part__projects_htable__get_next+48>: ldl t0,16(v0) 0x000002000086f354 <prj__tree__tree_private_part__projects_htable__get_next+52>: ldl t3,4(v0) 0x000002000086f358 <prj__tree__tree_private_part__projects_htable__get_next+56>: ldl t2,8(v0) 0x000002000086f35c <prj__tree__tree_private_part__projects_htable__get_next+60>: ldl t1,12(v0) 0x000002000086f360 <prj__tree__tree_private_part__projects_htable__get_next+64>: stl t3,0(s0) 0x000002000086f364 <prj__tree__tree_private_part__projects_htable__get_next+68>: stl t2,4(s0) 0x000002000086f368 <prj__tree__tree_private_part__projects_htable__get_next+72>: stl t1,8(s0) 0x000002000086f36c <prj__tree__tree_private_part__projects_htable__get_next+76>: stl t0,12(s0) 0x000002000086f370 <prj__tree__tree_private_part__projects_htable__get_next+80>: mov s0,v0 0x000002000086f374 <prj__tree__tree_private_part__projects_htable__get_next+84>: ldq ra,0(sp) 0x000002000086f378 <prj__tree__tree_private_part__projects_htable__get_next+88>: ldq s0,8(sp) 0x000002000086f37c <prj__tree__tree_private_part__projects_htable__get_next+92>: lda sp,16(sp) 0x000002000086f380 <prj__tree__tree_private_part__projects_htable__get_next+96>: ret 0x000002000086f384 <prj__tree__tree_private_part__projects_htable__get_next+100>: unop 0x000002000086f388 <prj__tree__tree_private_part__projects_htable__get_next+104>: nop 0x000002000086f38c <prj__tree__tree_private_part__projects_htable__get_next+108>: unop 0x000002000086f390 <prj__tree__tree_private_part__projects_htable__get_next+112>: ldah t1,-4(gp) 0x000002000086f394 <prj__tree__tree_private_part__projects_htable__get_next+116>: lda t0,20296(t1) 0x000002000086f398 <prj__tree__tree_private_part__projects_htable__get_next+120>: ldl t3,20296(t1) 0x000002000086f39c <prj__tree__tree_private_part__projects_htable__get_next+124>: ldl t2,4(t0) 0x000002000086f3a0 <prj__tree__tree_private_part__projects_htable__get_next+128>: ldl t1,12(t0) 0x000002000086f3a4 <prj__tree__tree_private_part__projects_htable__get_next+132>: ldl t0,8(t0) 0x000002000086f3a8 <prj__tree__tree_private_part__projects_htable__get_next+136>: stl t3,0(s0) 0x000002000086f3ac <prj__tree__tree_private_part__projects_htable__get_next+140>: stl t2,4(s0) 0x000002000086f3b0 <prj__tree__tree_private_part__projects_htable__get_next+144>: stl t0,8(s0) 0x000002000086f3b4 <prj__tree__tree_private_part__projects_htable__get_next+148>: stl t1,12(s0) 0x000002000086f3b8 <prj__tree__tree_private_part__projects_htable__get_next+152>: mov s0,v0 0x000002000086f3bc <prj__tree__tree_private_part__projects_htable__get_next+156>: ldq ra,0(sp) 0x000002000086f3c0 <prj__tree__tree_private_part__projects_htable__get_next+160>: ldq s0,8(sp) 0x000002000086f3c4 <prj__tree__tree_private_part__projects_htable__get_next+164>: lda sp,16(sp) 0x000002000086f3c8 <prj__tree__tree_private_part__projects_htable__get_next+168>: ret End of assembler dump. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073