// File: dsharlet[P]array/test/array_lifetime.cpp
// Function: void nda::test_clear_lifetime<std::allocator<nda::lifetime_counter>>()
void test_clear_lifetime() {
  lifetime_counter::reset();
  lifetime_array<Alloc> default_init(lifetime_shape);
  default_init.clear();
  ASSERT_EQ(lifetime_counter::default_constructs, lifetime_shape.size());
  ASSERT_EQ(lifetime_counter::destructs, lifetime_shape.size());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4c0, %rsp            # imm = 0x4C0
callq 0x7f630
leaq 0x221f91(%rip), %rsi    # 0x292258
leaq -0x50(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x7f7e0
movq -0x3e8(%rbp), %rdi
callq 0x8aec0
jmp 0x702e5
leaq 0x222044(%rip), %rax    # 0x292330
movq (%rax), %rax
movq %rax, -0x3f8(%rbp)
leaq 0x221f5b(%rip), %rdi    # 0x292258
callq 0x1a900
movq %rax, -0x3f0(%rbp)
jmp 0x7030b
movq -0x3f0(%rbp), %rcx
movq -0x3f8(%rbp), %rax
subq %rcx, %rax
sete %al
movb %al, -0x401(%rbp)
leaq -0x211(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x33b0
movq -0x400(%rbp), %rdx
leaq 0x171500(%rip), %rsi    # 0x1e1846
leaq -0x210(%rbp), %rdi
callq 0x10a90
jmp 0x70354
movb -0x401(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x1f0(%rbp), %rdi
leaq -0x210(%rbp), %rdx
callq 0x10f80
jmp 0x70375
leaq 0x16c469(%rip), %rsi    # 0x1dc7e5
leaq -0x1f0(%rbp), %rdi
callq 0x34320
movq %rax, -0x410(%rbp)
jmp 0x70391
movq -0x410(%rbp), %rdi
leaq 0x1714e5(%rip), %rsi    # 0x1e1884
callq 0x7f8b0
movq %rax, -0x418(%rbp)
jmp 0x703ad
movq -0x418(%rbp), %rdi
leaq 0x1703f1(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x420(%rbp)
jmp 0x703c9
movq -0x420(%rbp), %rdi
leaq 0x221f59(%rip), %rsi    # 0x292330
callq 0x355c0
movq %rax, -0x428(%rbp)
jmp 0x703e5
movq -0x428(%rbp), %rdi
leaq 0x16c3f2(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x430(%rbp)
jmp 0x70401
movq -0x430(%rbp), %rdi
leaq 0x175295(%rip), %rsi    # 0x1e56a4
callq 0x34ba0
movq %rax, -0x438(%rbp)
jmp 0x7041d
movq -0x438(%rbp), %rdi
leaq 0x170381(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x440(%rbp)
jmp 0x70439
leaq 0x221e18(%rip), %rdi    # 0x292258
callq 0x1a900
movq %rax, -0x448(%rbp)
jmp 0x7044e
movq -0x440(%rbp), %rdi
movq -0x448(%rbp), %rax
movq %rax, -0x220(%rbp)
leaq -0x220(%rbp), %rsi
callq 0x355c0
movq %rax, -0x450(%rbp)
jmp 0x70478
movq -0x450(%rbp), %rdi
leaq 0x185ff5(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0x7048d
leaq -0x1f0(%rbp), %rdi
callq 0x10ff0
jmp 0x7049b
leaq -0x210(%rbp), %rdi
callq 0x3100
leaq -0x211(%rbp), %rdi
callq 0x3290
leaq 0x221e9e(%rip), %rax    # 0x292358
movq (%rax), %rax
movq %rax, -0x460(%rbp)
leaq 0x221d8d(%rip), %rdi    # 0x292258
callq 0x1a900
movq %rax, -0x458(%rbp)
jmp 0x704d9
movq -0x458(%rbp), %rcx
movq -0x460(%rbp), %rax
subq %rcx, %rax
sete %al
movb %al, -0x469(%rbp)
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x33b0
movq -0x468(%rbp), %rdx
leaq 0x171395(%rip), %rsi    # 0x1e18a9
leaq -0x3d0(%rbp), %rdi
callq 0x10a90
jmp 0x70522
movb -0x469(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rdx
callq 0x10f80
jmp 0x70543
leaq 0x16c29b(%rip), %rsi    # 0x1dc7e5
leaq -0x3b0(%rbp), %rdi
callq 0x34320
movq %rax, -0x478(%rbp)
jmp 0x7055f
movq -0x478(%rbp), %rdi
leaq 0x171371(%rip), %rsi    # 0x1e18de
callq 0x7f8f0
movq %rax, -0x480(%rbp)
jmp 0x7057b
movq -0x480(%rbp), %rdi
leaq 0x170223(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x488(%rbp)
jmp 0x70597
movq -0x488(%rbp), %rdi
leaq 0x221db3(%rip), %rsi    # 0x292358
callq 0x355c0
movq %rax, -0x490(%rbp)
jmp 0x705b3
movq -0x490(%rbp), %rdi
leaq 0x16c224(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x498(%rbp)
jmp 0x705cf
movq -0x498(%rbp), %rdi
leaq 0x1750c7(%rip), %rsi    # 0x1e56a4
callq 0x34ba0
movq %rax, -0x4a0(%rbp)
jmp 0x705eb
movq -0x4a0(%rbp), %rdi
leaq 0x1701b3(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x4a8(%rbp)
jmp 0x70607
leaq 0x221c4a(%rip), %rdi    # 0x292258
callq 0x1a900
movq %rax, -0x4b0(%rbp)
jmp 0x7061c
movq -0x4a8(%rbp), %rdi
movq -0x4b0(%rbp), %rax
movq %rax, -0x3e0(%rbp)
leaq -0x3e0(%rbp), %rsi
callq 0x355c0
movq %rax, -0x4b8(%rbp)
jmp 0x70646
movq -0x4b8(%rbp), %rdi
leaq 0x185e27(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0x7065b
leaq -0x3b0(%rbp), %rdi
callq 0x10ff0
jmp 0x70669
leaq -0x3d0(%rbp), %rdi
callq 0x3100
leaq -0x3d1(%rbp), %rdi
callq 0x3290
leaq -0x50(%rbp), %rdi
callq 0x7f870
addq $0x4c0, %rsp            # imm = 0x4C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x70746
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x706e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x706dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x10ff0
jmp 0x706da
jmp 0x706dc
leaq -0x210(%rbp), %rdi
callq 0x3100
leaq -0x211(%rbp), %rdi
callq 0x3290
jmp 0x70746
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7073a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7072e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x10ff0
jmp 0x7072c
jmp 0x7072e
leaq -0x3d0(%rbp), %rdi
callq 0x3100
leaq -0x3d1(%rbp), %rdi
callq 0x3290
leaq -0x50(%rbp), %rdi
callq 0x7f870
movq -0x58(%rbp), %rdi
callq 0x33a0
movq %rax, %rdi
callq 0x116d0