https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120440
--- Comment #9 from Sam James <sjames at gcc dot gnu.org> --- (In reply to Sam James from comment #8) But for the top frame, _ada_gnatcmd is huge: [...] 0x0000555555575082 <-248190>: lea rdx,[rip+0xab707] # 0x555555620790 <alternate_commandN.37> 0x0000555555575089 <-248183>: lea rdi,[rip+0xab6f0] # 0x555555620780 <alternate_commandS.36> 0x0000555555575090 <-248176>: lea rsi,[rip+0xab671] # 0x555555620708 0x0000555555575097 <-248169>: call 0x5555555c9660 <system__val_enum_8__impl__value_enumeration> 0x000055555557509c <-248164>: mov r12d,eax 0x000055555557509f <-248161>: pop rax 0x00005555555750a0 <-248160>: pop rdx 0x00005555555750a1 <-248159>: lea rdi,[rbp-0x5a0] 0x00005555555750a8 <-248152>: call 0x5555555899b0 <system__secondary_stack__ss_release> 0x00005555555750ad <-248147>: mov rsi,QWORD PTR [rbp-0x690] 0x00005555555750b4 <-248140>: movzx r12d,r12b 0x00005555555750b8 <-248136>: lea rax,[rip+0xab6b9] # 0x555555620778 <corresponding_to.35> 0x00005555555750bf <-248129>: xor edx,edx 0x00005555555750c1 <-248127>: mov rdi,rbx 0x00005555555750c4 <-248124>: movzx r14d,BYTE PTR [rax+r12*1] 0x00005555555750c9 <-248119>: call 0x55555558a8e0 <__gnat_end_handler_v1> => 0x00005555555750ce <-248114>: jmp 0x5555555b29d5 <_ada_gnatcmd+4053> 0x00005555555750d3 <-248109>: mov rbx,rax 0x00005555555750d6 <-248106>: mov rax,rdx 0x00005555555750d9 <-248103>: mov rsp,r12 0x00005555555750dc <-248100>: mov rsp,QWORD PTR [rbp-0x6c0] 0x00005555555750e3 <-248093>: vzeroupper 0x00005555555750e6 <-248090>: dec rax [...] but we're not in a loop there either AFAICT. It'll be interesting to try decompose -march=znver3 next to see what actually does it given -fno-tree-vectorize doesn't help.