1 // RUN: %clang_cc1 -templight-dump %s 2>&1 | FileCheck %s 2 3 template <int N> 4 struct fib 5 { 6 static const int value = fib<N-1>::value + fib<N-2>::value; 7 }; 8 9 template <> 10 struct fib<0> 11 { 12 static const int value = 1; 13 }; 14 15 template <> 16 struct fib<1> 17 { 18 static const int value = 1; 19 }; 20 21 // CHECK-LABEL: {{^---$}} 22 // CHECK: {{^name:[ ]+'fib<4>'$}} 23 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 24 // CHECK: {{^event:[ ]+Begin$}} 25 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 26 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} 27 // CHECK-LABEL: {{^---$}} 28 // CHECK: {{^name:[ ]+'fib<4>'$}} 29 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 30 // CHECK: {{^event:[ ]+End$}} 31 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 32 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} 33 // CHECK-LABEL: {{^---$}} 34 // CHECK: {{^name:[ ]+'fib<4>'$}} 35 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 36 // CHECK: {{^event:[ ]+Begin$}} 37 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 38 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} 39 // 40 // CHECK-LABEL: {{^---$}} 41 // CHECK: {{^name:[ ]+'fib<3>'$}} 42 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 43 // CHECK: {{^event:[ ]+Begin$}} 44 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 45 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 46 // CHECK-LABEL: {{^---$}} 47 // CHECK: {{^name:[ ]+'fib<3>'$}} 48 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 49 // CHECK: {{^event:[ ]+End$}} 50 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 51 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 52 // CHECK-LABEL: {{^---$}} 53 // CHECK: {{^name:[ ]+'fib<3>'$}} 54 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 55 // CHECK: {{^event:[ ]+Begin$}} 56 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 57 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 58 // 59 // CHECK-LABEL: {{^---$}} 60 // CHECK: {{^name:[ ]+'fib<2>'$}} 61 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 62 // CHECK: {{^event:[ ]+Begin$}} 63 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 64 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 65 // CHECK-LABEL: {{^---$}} 66 // CHECK: {{^name:[ ]+'fib<2>'$}} 67 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 68 // CHECK: {{^event:[ ]+End$}} 69 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 70 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 71 // CHECK-LABEL: {{^---$}} 72 // CHECK: {{^name:[ ]+'fib<2>'$}} 73 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 74 // CHECK: {{^event:[ ]+Begin$}} 75 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 76 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 77 78 // CHECK-LABEL: {{^---$}} 79 // CHECK: {{^name:[ ]+'fib<1>'$}} 80 // CHECK: {{^kind:[ ]+Memoization$}} 81 // CHECK: {{^event:[ ]+Begin$}} 82 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} 83 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 84 // CHECK-LABEL: {{^---$}} 85 // CHECK: {{^name:[ ]+'fib<1>'$}} 86 // CHECK: {{^kind:[ ]+Memoization$}} 87 // CHECK: {{^event:[ ]+End$}} 88 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} 89 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 90 // CHECK-LABEL: {{^---$}} 91 // CHECK: {{^name:[ ]+'fib<0>'$}} 92 // CHECK: {{^kind:[ ]+Memoization$}} 93 // CHECK: {{^event:[ ]+Begin$}} 94 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:10:8'}} 95 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} 96 // CHECK-LABEL: {{^---$}} 97 // CHECK: {{^name:[ ]+'fib<0>'$}} 98 // CHECK: {{^kind:[ ]+Memoization$}} 99 // CHECK: {{^event:[ ]+End$}} 100 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:10:8'}} 101 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} 102 // 103 // CHECK-LABEL: {{^---$}} 104 // CHECK: {{^name:[ ]+'fib<2>'$}} 105 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 106 // CHECK: {{^event:[ ]+End$}} 107 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 108 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 109 // CHECK-LABEL: {{^---$}} 110 // CHECK: {{^name:[ ]+'fib<2>'$}} 111 // CHECK: {{^kind:[ ]+Memoization$}} 112 // CHECK: {{^event:[ ]+Begin$}} 113 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 114 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 115 // CHECK-LABEL: {{^---$}} 116 // CHECK: {{^name:[ ]+'fib<2>'$}} 117 // CHECK: {{^kind:[ ]+Memoization$}} 118 // CHECK: {{^event:[ ]+End$}} 119 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 120 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 121 // 122 // CHECK-LABEL: {{^---$}} 123 // CHECK: {{^name:[ ]+'fib<1>'$}} 124 // CHECK: {{^kind:[ ]+Memoization$}} 125 // CHECK: {{^event:[ ]+Begin$}} 126 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} 127 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} 128 // CHECK-LABEL: {{^---$}} 129 // CHECK: {{^name:[ ]+'fib<1>'$}} 130 // CHECK: {{^kind:[ ]+Memoization$}} 131 // CHECK: {{^event:[ ]+End$}} 132 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:16:8'}} 133 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} 134 // 135 // CHECK-LABEL: {{^---$}} 136 // CHECK: {{^name:[ ]+'fib<3>'$}} 137 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 138 // CHECK: {{^event:[ ]+End$}} 139 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 140 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 141 // CHECK-LABEL: {{^---$}} 142 // CHECK: {{^name:[ ]+'fib<3>'$}} 143 // CHECK: {{^kind:[ ]+Memoization$}} 144 // CHECK: {{^event:[ ]+Begin$}} 145 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 146 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 147 // CHECK-LABEL: {{^---$}} 148 // CHECK: {{^name:[ ]+'fib<3>'$}} 149 // CHECK: {{^kind:[ ]+Memoization$}} 150 // CHECK: {{^event:[ ]+End$}} 151 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 152 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:28'$}} 153 // 154 // CHECK-LABEL: {{^---$}} 155 // CHECK: {{^name:[ ]+'fib<2>'$}} 156 // CHECK: {{^kind:[ ]+Memoization$}} 157 // CHECK: {{^event:[ ]+Begin$}} 158 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 159 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} 160 // CHECK-LABEL: {{^---$}} 161 // CHECK: {{^name:[ ]+'fib<2>'$}} 162 // CHECK: {{^kind:[ ]+Memoization$}} 163 // CHECK: {{^event:[ ]+End$}} 164 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 165 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:6:46'$}} 166 // CHECK-LABEL: {{^---$}} 167 // 168 // CHECK: {{^name:[ ]+'fib<4>'$}} 169 // CHECK: {{^kind:[ ]+TemplateInstantiation$}} 170 // CHECK: {{^event:[ ]+End$}} 171 // CHECK: {{^orig:[ ]+'.*templight-nested-memoization.cpp:4:8'}} 172 // CHECK: {{^poi:[ ]+'.*templight-nested-memoization.cpp:173:8'$}} 173 fib<4> x; 174 175