|  | // RUN: %clang_cc1 -templight-dump %s 2>&1 | FileCheck %s | 
|  |  | 
|  | template <int N> | 
|  | struct fib | 
|  | { | 
|  | static const int value = fib<N-1>::value + fib<N-2>::value; | 
|  | }; | 
|  |  | 
|  | template <> | 
|  | struct fib<0> | 
|  | { | 
|  | static const int value = 1; | 
|  | }; | 
|  |  | 
|  | template <> | 
|  | struct fib<1> | 
|  | { | 
|  | static const int value = 1; | 
|  | }; | 
|  |  | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<4>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<4>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<4>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} | 
|  | // | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<3>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<3>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<3>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  |  | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<1>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<1>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<0>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:10:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<0>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:10:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} | 
|  | // | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<1>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<1>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} | 
|  | // | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<3>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<3>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<3>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} | 
|  | // | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+Begin$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // CHECK: {{^name:[ ]+'fib<2>'$}} | 
|  | // CHECK: {{^kind:[ ]+Memoization$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} | 
|  | // CHECK-LABEL: {{^---$}} | 
|  | // | 
|  | // CHECK: {{^name:[ ]+'fib<4>'$}} | 
|  | // CHECK: {{^kind:[ ]+TemplateInstantiation$}} | 
|  | // CHECK: {{^event:[ ]+End$}} | 
|  | // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} | 
|  | // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} | 
|  | fib<4> x; | 
|  |  |