xref: /llvm-project/clang/test/CodeGenCXX/dependent-template-alias.cpp (revision 87ec4ab72cb3ae27ac08d040b2825ee01214fe75)
1*87ec4ab7SOrlando Cazalet-Hyams // RUN: %clang_cc1 -triple x86_64-unk-unk -o - -emit-llvm -debug-info-kind=standalone -gtemplate-alias %s -gsimple-template-names=simple \
2*87ec4ab7SOrlando Cazalet-Hyams // RUN: | FileCheck %s
3*87ec4ab7SOrlando Cazalet-Hyams 
4*87ec4ab7SOrlando Cazalet-Hyams //// Check that -gtemplate-alias falls back to DW_TAG_typedef emission
5*87ec4ab7SOrlando Cazalet-Hyams //// for instantiation dependent type aliases.
6*87ec4ab7SOrlando Cazalet-Hyams 
7*87ec4ab7SOrlando Cazalet-Hyams template <int>
8*87ec4ab7SOrlando Cazalet-Hyams using A = int;
9*87ec4ab7SOrlando Cazalet-Hyams 
10*87ec4ab7SOrlando Cazalet-Hyams template<int I>
11*87ec4ab7SOrlando Cazalet-Hyams struct S {
12*87ec4ab7SOrlando Cazalet-Hyams   using AA = A<I>;
13*87ec4ab7SOrlando Cazalet-Hyams   AA aa;
14*87ec4ab7SOrlando Cazalet-Hyams };
15*87ec4ab7SOrlando Cazalet-Hyams 
16*87ec4ab7SOrlando Cazalet-Hyams S<0> s;
17*87ec4ab7SOrlando Cazalet-Hyams 
18*87ec4ab7SOrlando Cazalet-Hyams // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "aa", scope: ![[#]], file: ![[#]], line: [[#]], baseType: ![[AA:[0-9]+]], size: 32)
19*87ec4ab7SOrlando Cazalet-Hyams // CHECK: [[AA]] = !DIDerivedType(tag: DW_TAG_typedef, name: "AA", file: ![[#]], line: [[#]], baseType: ![[A:[0-9]+]])
20*87ec4ab7SOrlando Cazalet-Hyams // CHECK: [[A]] = !DIDerivedType(tag: DW_TAG_typedef, name: "A<I>", file: ![[#]], line: [[#]], baseType: ![[int:[0-9]+]])
21*87ec4ab7SOrlando Cazalet-Hyams // CHECK: [[int]] = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
22