blob: 22cfd181043d63a6960bda96e29267dbd88f8d09 [file] [log] [blame]
// This file is distributed under the University of Illinois Open Source License.
// See LICENSE.TXT for details.
// RUN: cxx_compiler cxx_11 -c %s -o %t.o
// RUN: bindump %t.o | FileCheck prefixes %s
// arrays
// CHECK-DAG: _Z3bazRA6_i
void baz(int (&) [6]) {}
// CHECK-DAG: _Z4barcILi6EEvRAT__i
template <int n> void barc(int (&) [n]);
template <> void barc<6>(int (&) [6]) {}
// CHECK-DAG: _Z3razRA6_A3_i
void raz(int (&) [6] [3]) {}
// CHECK-DAG: _Z3razRA3_iRA3_S_
void raz(int (&) [3], int (&) [3] [3]) {}
// CHECK-DAG: _Z3fooIfEvRAplstT_Li1E_i
template <typename T> void foo(int (&) [((sizeof (T))+1)]);
template <> void foo<float>(int (&) [((sizeof (float))+1)]) {}
// CHECK-DAG: _Z3fooIA5_iEvv
template <typename T> void foo();
template <> void foo<int [5]>() {}
// CHECK-DAG: _Z3fooIA5_iEvPT_
template <typename T> void foo(T*);
template <> void foo<int [5]>(int (*) [5]) {}
// CHECK-DAG: _Z3fooIA5_iEvT_PS1_
template <typename T> void foo(T, T*);
template <> void foo<int [5]>(int [5], int (*) [5]) {}
// CHECK-DAG: _Z3fooIA5_iEPT_v
template <typename T> T* foo();
template <> int (* foo<int [5]>()) [5] { return 0;}