#include "tst-unique4.h"
#include <cstdio>
-#include <libc-diag.h>
-/* clang warns that the instantiation of the variable is required, but no
- definition is available. They are implemented on tst-unique4lib.so. */
-DIAG_PUSH_NEEDS_COMMENT_CLANG;
-DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wundefined-var-template");
+extern template struct S<1>;
+extern template struct S<2>;
+extern template struct S<3>;
+extern template struct S<4>;
+extern template struct S<5>;
+extern template struct S<6>;
+extern template struct S<7>;
+extern template struct S<8>;
+extern template struct S<9>;
+extern template struct S<10>;
+extern template struct S<11>;
+extern template struct S<12>;
+extern template struct S<13>;
+extern template struct S<14>;
+extern template struct S<15>;
+extern template struct S<16>;
+extern template struct S<17>;
+extern template struct S<18>;
+extern template struct S<19>;
+extern template struct S<20>;
+extern template struct S<21>;
+extern template struct S<22>;
+extern template struct S<23>;
+extern template struct S<24>;
+
static int a[24] =
{
S<1>::i, S<2>::i, S<3>::i, S<4>::i, S<5>::i, S<6>::i, S<7>::i, S<8>::i,
S<16>::i, S<17>::i, S<18>::i, S<19>::i, S<20>::i, S<21>::i, S<22>::i,
S<23>::i, S<24>::i
};
-DIAG_POP_NEEDS_COMMENT_CLANG;
int
main (void)
// BZ 12511
#include "tst-unique4.h"
-template<int N>
-int S<N>::i __attribute__ ((used)) = N;
-template<int N>
-const int S<N>::j __attribute__ ((used)) = -1;
-
-static int a[24] __attribute__ ((used)) =
- {
- S<1>::i, S<2>::i, S<3>::i, S<4>::i, S<5>::i, S<6>::i, S<7>::i, S<8>::i,
- S<9>::i, S<10>::i, S<11>::i, S<12>::i, S<13>::i, S<14>::i, S<15>::i,
- S<16>::i, S<17>::i, S<18>::i, S<19>::i, S<20>::i, S<21>::i, S<22>::i,
- S<23>::i, S<24>::i
- };
-
-static int b __attribute__ ((used)) = S<1>::j;
+template<> int S<1>::i = 1;
+template<> int S<2>::i = 2;
+template<> int S<3>::i = 3;
+template<> int S<4>::i = 4;
+template<> int S<5>::i = 5;
+template<> int S<6>::i = 6;
+template<> int S<7>::i = 7;
+template<> int S<8>::i = 8;
+template<> int S<9>::i = 9;
+template<> int S<10>::i = 10;
+template<> int S<11>::i = 11;
+template<> int S<12>::i = 12;
+template<> int S<13>::i = 13;
+template<> int S<14>::i = 14;
+template<> int S<15>::i = 15;
+template<> int S<16>::i = 16;
+template<> int S<17>::i = 17;
+template<> int S<18>::i = 18;
+template<> int S<19>::i = 19;
+template<> int S<20>::i = 20;
+template<> int S<21>::i = 21;
+template<> int S<22>::i = 22;
+template<> int S<23>::i = 23;
+template<> int S<24>::i = 24;
+template<> const int S<1>::j = -1;