// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// RUN: cxx_compiler -c %s -o %t.o
// RUN: bindump %t.o | FileCheck prefixes %s

#include <climits>

// CHECK: _Z3fooILi6EEvv
template <int I> void foo();
template <> void foo<6>() {}

// CHECK: _Z3fooILin6EEvv
template <> void foo<-6>() {}

// CHECK: _Z4foo2ILj6EEvv
template <unsigned int I> void foo2();
template <> void foo2<6u>() {}

// CHECK: _Z4foo3ILl6EEvv
template <long I> void foo3();
template <> void foo3<6l>() {}

// CHECK: _Z4foo4ILm6EEvv
template <unsigned long I> void foo4();
template <> void foo4<6ul>() {}


// CHECK: _Z4foo5ILx6EEvv
template <long long I> void foo5();
template <> void foo5<6ll>() {}

// CHECK: _Z4foo6ILy6EEvv
template <unsigned long long I> void foo6();
template <> void foo6<6ull>() {}

// CHECK: _Z4foo7ILb0EEvv
template <bool I> void foo7();
template <> void foo7<0>() {}

// CHECK: _Z4foo7ILb1EEvv
template <> void foo7<1>() {}
