// PR c++/66260 // { dg-do compile { target c++14 } } template bool foo = false; template <> bool foo = true; template bool foo = foo; #define assert(X) if (!(X)) __builtin_abort(); int main() { // { dg-final { scan-assembler "_Z3fooIiE" } } assert(foo); // { dg-final { scan-assembler "_Z3fooIdE" } } assert(!foo); // { dg-final { scan-assembler "_Z3fooIA3_iE" } } assert(foo); // { dg-final { scan-assembler "_Z3fooIA3_dE" } } assert(!foo); // { dg-final { scan-assembler "_Z3fooIA2_A5_A3_iE" } } assert(foo); // { dg-final { scan-assembler "_Z3fooIA2_A5_A3_dE" } } assert(!foo); }