// File: dsharlet[P]array/test/array_lifetime.cpp
// Function: void nda::test_default_init_constant_lifetime<std::allocator<nda::lifetime_counter>>()
void test_default_init_constant_lifetime() {
  lifetime_counter::reset();
  typedef shape<dim<0, 4>, dim<0, 5>, dim<0, 6>> ConstantShape;
  { array<lifetime_counter, ConstantShape, Alloc> default_constant_init; }
  ConstantShape constant_shape;
  ASSERT_EQ(lifetime_counter::default_constructs, constant_shape.size());
  ASSERT_EQ(lifetime_counter::destructs, constant_shape.size());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4e0, %rsp            # imm = 0x4E0
callq 0x7f630
leaq -0x50(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0x81810
movq -0x438(%rbp), %rdi
callq 0x81840
leaq -0x80(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x81880
movq -0x430(%rbp), %rdi
leaq 0x238a26(%rip), %rax    # 0x292330
movq (%rax), %rax
movq %rax, -0x428(%rbp)
callq 0x818a0
movq %rax, %rcx
movq -0x428(%rbp), %rax
subq %rcx, %rax
sete %al
movb %al, -0x419(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0x33b0
movq -0x418(%rbp), %rdx
leaq 0x1891c2(%rip), %rsi    # 0x1e2b12
leaq -0x230(%rbp), %rdi
callq 0x10a90
jmp 0x5995e
movb -0x419(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x210(%rbp), %rdi
leaq -0x230(%rbp), %rdx
callq 0x10f80
jmp 0x5997f
leaq 0x182e5f(%rip), %rsi    # 0x1dc7e5
leaq -0x210(%rbp), %rdi
callq 0x34320
movq %rax, -0x440(%rbp)
jmp 0x5999b
movq -0x440(%rbp), %rdi
leaq 0x187edb(%rip), %rsi    # 0x1e1884
callq 0x7f8b0
movq %rax, -0x448(%rbp)
jmp 0x599b7
movq -0x448(%rbp), %rdi
leaq 0x186de7(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x450(%rbp)
jmp 0x599d3
movq -0x450(%rbp), %rdi
leaq 0x23894f(%rip), %rsi    # 0x292330
callq 0x355c0
movq %rax, -0x458(%rbp)
jmp 0x599ef
movq -0x458(%rbp), %rdi
leaq 0x182de8(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x460(%rbp)
jmp 0x59a0b
movq -0x460(%rbp), %rdi
leaq 0x189156(%rip), %rsi    # 0x1e2b6f
callq 0x34ba0
movq %rax, -0x468(%rbp)
jmp 0x59a27
movq -0x468(%rbp), %rdi
leaq 0x186d77(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x470(%rbp)
jmp 0x59a43
leaq -0x80(%rbp), %rdi
callq 0x818a0
movq %rax, -0x478(%rbp)
jmp 0x59a55
movq -0x470(%rbp), %rdi
movq -0x478(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq -0x250(%rbp), %rsi
callq 0x355c0
movq %rax, -0x480(%rbp)
jmp 0x59a7f
movq -0x480(%rbp), %rdi
leaq 0x19c9ee(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0x59a94
leaq -0x210(%rbp), %rdi
callq 0x10ff0
jmp 0x59aa2
leaq -0x230(%rbp), %rdi
callq 0x3100
leaq -0x231(%rbp), %rdi
callq 0x3290
leaq 0x238897(%rip), %rax    # 0x292358
movq (%rax), %rax
movq %rax, -0x498(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x818a0
movq %rax, %rcx
movq -0x498(%rbp), %rax
subq %rcx, %rax
sete %al
movb %al, -0x489(%rbp)
leaq -0x401(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0x33b0
movq -0x488(%rbp), %rdx
leaq 0x189045(%rip), %rsi    # 0x1e2b50
leaq -0x400(%rbp), %rdi
callq 0x10a90
jmp 0x59b19
movb -0x489(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rdx
callq 0x10f80
jmp 0x59b3a
leaq 0x182ca4(%rip), %rsi    # 0x1dc7e5
leaq -0x3e0(%rbp), %rdi
callq 0x34320
movq %rax, -0x4a0(%rbp)
jmp 0x59b56
movq -0x4a0(%rbp), %rdi
leaq 0x187d7a(%rip), %rsi    # 0x1e18de
callq 0x7f8f0
movq %rax, -0x4a8(%rbp)
jmp 0x59b72
movq -0x4a8(%rbp), %rdi
leaq 0x186c2c(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x4b0(%rbp)
jmp 0x59b8e
movq -0x4b0(%rbp), %rdi
leaq 0x2387bc(%rip), %rsi    # 0x292358
callq 0x355c0
movq %rax, -0x4b8(%rbp)
jmp 0x59baa
movq -0x4b8(%rbp), %rdi
leaq 0x182c2d(%rip), %rsi    # 0x1dc7e5
callq 0x34320
movq %rax, -0x4c0(%rbp)
jmp 0x59bc6
movq -0x4c0(%rbp), %rdi
leaq 0x188f9b(%rip), %rsi    # 0x1e2b6f
callq 0x34ba0
movq %rax, -0x4c8(%rbp)
jmp 0x59be2
movq -0x4c8(%rbp), %rdi
leaq 0x186bbc(%rip), %rsi    # 0x1e07ac
callq 0x34320
movq %rax, -0x4d0(%rbp)
jmp 0x59bfe
leaq -0x80(%rbp), %rdi
callq 0x818a0
movq %rax, -0x4d8(%rbp)
jmp 0x59c10
movq -0x4d0(%rbp), %rdi
movq -0x4d8(%rbp), %rax
movq %rax, -0x410(%rbp)
leaq -0x410(%rbp), %rsi
callq 0x355c0
movq %rax, -0x4e0(%rbp)
jmp 0x59c3a
movq -0x4e0(%rbp), %rdi
leaq 0x19c833(%rip), %rsi    # 0x1f647b
callq 0x34320
jmp 0x59c4f
leaq -0x3e0(%rbp), %rdi
callq 0x10ff0
jmp 0x59c5d
leaq -0x400(%rbp), %rdi
callq 0x3100
leaq -0x401(%rbp), %rdi
callq 0x3290
addq $0x4e0, %rsp            # imm = 0x4E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x59cd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x59cc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x10ff0
jmp 0x59cc6
jmp 0x59cc8
leaq -0x230(%rbp), %rdi
callq 0x3100
leaq -0x231(%rbp), %rdi
callq 0x3290
jmp 0x59d44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x59d38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x59d2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x10ff0
jmp 0x59d2a
jmp 0x59d2c
leaq -0x400(%rbp), %rdi
callq 0x3100
leaq -0x401(%rbp), %rdi
callq 0x3290
movq -0x240(%rbp), %rdi
callq 0x33a0
movq %rax, %rdi
callq 0x116d0
nopl (%rax,%rax)