text: // RUN: %clang_cc1 -templight-dump %s 2>&1 | FileCheck %s
  
  template <int N>
  struct foo : foo<N - 1> {};
  
  template <>
  struct foo<0> {};
  
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<2>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+Begin$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<2>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+End$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<2>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+Begin$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
  //
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<1>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+Begin$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<1>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+End$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<1>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+Begin$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  //
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<0>'$}}
  // CHECK: {{^kind:[ ]+Memoization$}}
  // CHECK: {{^event:[ ]+Begin$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:7:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<0>'$}}
  // CHECK: {{^kind:[ ]+Memoization$}}
  // CHECK: {{^event:[ ]+End$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:7:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  //
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<1>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+End$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<1>'$}}
  // CHECK: {{^kind:[ ]+Memoization$}}
  // CHECK: {{^event:[ ]+Begin$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<1>'$}}
  // CHECK: {{^kind:[ ]+Memoization$}}
  // CHECK: {{^event:[ ]+End$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:4:14'$}}
  // CHECK-LABEL: {{^---$}}
  // CHECK: {{^name:[ ]+'foo<2>'$}}
  // CHECK: {{^kind:[ ]+TemplateInstantiation$}}
  // CHECK: {{^event:[ ]+End$}}
  // CHECK: {{^orig:[ ]+'.*templight-nested-template-instantiation.cpp:4:8'}}
  // CHECK: {{^poi:[ ]+'.*templight-nested-template-instantiation.cpp:84:8'$}}
  foo<2> x;
  