https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64500

--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
sassembly of section .text:
       │
       │     0000000000ddaba0 <push_to_top_level()>:
       │     _Z17push_to_top_levelv():
  0.00 │       push   %r15
  0.03 │       push   %r14
       │       mov    $0xb,%edi
       │       push   %r13
       │  b:   push   %r12
       │       push   %rbp
       │       push   %rbx
       │       sub    $0x18,%rsp
       │     → callq  timevar_cond_start(timevar_id_t)
       │       xor    %edx,%edx
       │       xor    %esi,%esi
       │       mov    $0x1,%ecx
  0.00 │       mov    $0xc0,%edi
       │       mov    %al,0xf(%rsp)
       │     → callq  ggc_internal_cleared_alloc(unsigned long, void
(*)(void*), unsigned long, unsigned long)
       │       mov    %rax,%r15
       │       mov    scope_chain,%rax
       │       test   %rax,%rax
       │     ↓ je     636
       │       mov    cfun,%rbx
       │ 49:   test   %rbx,%rbx
       │     ↓ jne    65b
  0.01 │       mov    0xa8(%rax),%r14
       │       xor    %r13d,%r13d
       │ 5c:   mov    0x50(%rax),%rbp
  0.01 │       test   %rbp,%rbp
       │     ↓ je     693
       │       mov    0x28(%rbp),%rdi
  0.00 │       mov    %r15,%rsi
       │     → callq  store_class_bindings(vec<cp_class_binding, va_gc,
vl_embed
       │       test   %r14,%r14
       │     ↓ je     647
       │       mov    global_namespace,%r10
       │       mov    0x68(%r10),%r11
       │       cmp    %r14,0x8(%r11)
       │     ↓ je     64a
       │ 93:   mov    (%r14),%rbx
  0.03 │       movzbl guard variable for store_bindings(tree_node*,
vec<cxx_saved_binding, va_gc, vl_embed,%r12d
       │       test   %r12b,%r12b
  0.01 │     ↓ je     6e5
       │       mov    $0xb,%edi
       │     → callq  timevar_cond_start(timevar_id_t)
       │       test   %rbx,%rbx
       │       mov    %eax,%r12d
       │     ↓ je     6c0
       │       nop
  1.93 │ c0:   cmpw   $0x2,(%rbx)
 17.12 │     ↓ je     3e3
  1.87 │       mov    0x20(%rbx),%rbp
 12.03 │       test   %rbp,%rbp
 35.44 │    ┌──je     6cc
 11.90 │    │  cmpq   $0x0,0x40(%rbp)
  1.76 │    │↓ jne    400
  8.67 │    │  mov    0x10(%rbx),%rbx
  7.52 │    │  test   %rbx,%rbx
  0.95 │    │↑ jne    c0
  0.00 │    │  mov    store_bindings(tree_node*, vec<cxx_saved_binding, va_gc,
vl_embed,%rax
  0.12 │ f2:│  test   %rax,%rax
  0.00 │    │  mov    %rax,%rdx
       │    │↓ je     107
       │    │  mov    0x4(%rax),%r8d
       │    │  test   %r8d,%r8d
... 
6cc is very far away.

Reply via email to