Commit e80a2a7
committed
[Utils] Identity map global debug info on first use in CloneFunction*
Summary:
To avoid cloning 'global' debug info, CloneFunction implementation used to eagerly identity map a known
subset of global debug into into ValueMap's MD map. In larger modules with meaningful volume of
debug info this gets very expensive.
By passing such global metadata via an IdentityMD set for the ValueMapper to map on first use, we
get several benefits:
1. Mapping metadata is not cheap, particularly because of tracking. When cloning a Function we
identity map lots of global module-level metadata to avoid cloning it, while only a fraction of it
is actually used by the function. Mapping on first use is a lot faster for modules with meaningful
amount of debug info.
2. Eagerly identity mapping metadata makes it harder to cache module-level data (e.g. a set of
metadata nodes in a \a DICompileUnit). With this patch we can cache certain module-level metadata
calculations to speed things up further.
Anecdata from compiling a sample cpp file with full debug info shows that this moderately speeds up
CoroSplitPass which is one of the heavier users of cloning:
| | Baseline | IdentityMD set |
|-----------------+----------+----------------|
| CoroSplitPass | 306ms | 221ms |
| CoroCloner | 101ms | 72ms |
|-----------------+----------+----------------|
| Speed up | 1x | 1.4x |
Test Plan:
ninja check-llvm-unit
ninja check-llvm
stack-info: PR: #118627, branch: users/artempyanykh/fast-coro-upstream/81 parent f0e2d2b commit e80a2a7
File tree
4 files changed
+103
-59
lines changed- llvm
- include/llvm/Transforms/Utils
- lib/Transforms/Utils
4 files changed
+103
-59
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
195 | | - | |
| 195 | + | |
| 196 | + | |
196 | 197 | | |
197 | 198 | | |
198 | 199 | | |
| |||
201 | 202 | | |
202 | 203 | | |
203 | 204 | | |
204 | | - | |
| 205 | + | |
| 206 | + | |
205 | 207 | | |
206 | 208 | | |
207 | 209 | | |
| |||
241 | 243 | | |
242 | 244 | | |
243 | 245 | | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
250 | 252 | | |
251 | 253 | | |
252 | 254 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| |||
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
| 39 | + | |
38 | 40 | | |
39 | 41 | | |
40 | 42 | | |
| |||
136 | 138 | | |
137 | 139 | | |
138 | 140 | | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
139 | 153 | | |
140 | 154 | | |
141 | 155 | | |
| |||
152 | 166 | | |
153 | 167 | | |
154 | 168 | | |
155 | | - | |
| 169 | + | |
| 170 | + | |
156 | 171 | | |
157 | 172 | | |
158 | 173 | | |
| |||
218 | 233 | | |
219 | 234 | | |
220 | 235 | | |
221 | | - | |
222 | | - | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
223 | 240 | | |
224 | 241 | | |
225 | 242 | | |
| |||
231 | 248 | | |
232 | 249 | | |
233 | 250 | | |
234 | | - | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
235 | 254 | | |
236 | 255 | | |
237 | 256 | | |
| |||
240 | 259 | | |
241 | 260 | | |
242 | 261 | | |
243 | | - | |
244 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
245 | 266 | | |
246 | 267 | | |
247 | 268 | | |
248 | 269 | | |
249 | 270 | | |
250 | 271 | | |
251 | | - | |
252 | | - | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
253 | 276 | | |
254 | 277 | | |
255 | 278 | | |
| |||
263 | 286 | | |
264 | 287 | | |
265 | 288 | | |
266 | | - | |
267 | | - | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
268 | 293 | | |
269 | 294 | | |
270 | 295 | | |
271 | 296 | | |
272 | 297 | | |
273 | 298 | | |
274 | 299 | | |
275 | | - | |
276 | | - | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
277 | 304 | | |
278 | 305 | | |
279 | 306 | | |
| |||
283 | 310 | | |
284 | 311 | | |
285 | 312 | | |
286 | | - | |
287 | | - | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
288 | 316 | | |
289 | 317 | | |
290 | 318 | | |
| |||
297 | 325 | | |
298 | 326 | | |
299 | 327 | | |
300 | | - | |
301 | | - | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
302 | 331 | | |
303 | 332 | | |
304 | 333 | | |
305 | 334 | | |
306 | 335 | | |
307 | 336 | | |
308 | | - | |
309 | | - | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
310 | 341 | | |
311 | 342 | | |
312 | 343 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
159 | 159 | | |
160 | 160 | | |
161 | | - | |
162 | | - | |
| 161 | + | |
| 162 | + | |
163 | 163 | | |
164 | 164 | | |
165 | 165 | | |
166 | | - | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | 166 | | |
173 | 167 | | |
174 | 168 | | |
175 | 169 | | |
176 | | - | |
| 170 | + | |
177 | 171 | | |
178 | 172 | | |
179 | 173 | | |
180 | 174 | | |
181 | 175 | | |
182 | 176 | | |
183 | | - | |
| 177 | + | |
184 | 178 | | |
185 | 179 | | |
186 | 180 | | |
187 | | - | |
| 181 | + | |
188 | 182 | | |
189 | 183 | | |
190 | | - | |
| 184 | + | |
191 | 185 | | |
192 | 186 | | |
193 | 187 | | |
194 | 188 | | |
195 | | - | |
196 | | - | |
197 | 189 | | |
198 | 190 | | |
199 | 191 | | |
200 | 192 | | |
201 | 193 | | |
202 | 194 | | |
203 | | - | |
| 195 | + | |
| 196 | + | |
204 | 197 | | |
205 | 198 | | |
206 | 199 | | |
207 | 200 | | |
208 | 201 | | |
209 | 202 | | |
210 | | - | |
211 | | - | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
212 | 206 | | |
213 | 207 | | |
214 | 208 | | |
| |||
218 | 212 | | |
219 | 213 | | |
220 | 214 | | |
221 | | - | |
| 215 | + | |
| 216 | + | |
222 | 217 | | |
223 | 218 | | |
224 | 219 | | |
| |||
259 | 254 | | |
260 | 255 | | |
261 | 256 | | |
262 | | - | |
| 257 | + | |
| 258 | + | |
263 | 259 | | |
264 | | - | |
| 260 | + | |
265 | 261 | | |
266 | 262 | | |
267 | 263 | | |
| |||
323 | 319 | | |
324 | 320 | | |
325 | 321 | | |
326 | | - | |
327 | | - | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
328 | 325 | | |
329 | | - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
330 | 330 | | |
331 | 331 | | |
332 | | - | |
| 332 | + | |
333 | 333 | | |
334 | 334 | | |
335 | | - | |
| 335 | + | |
336 | 336 | | |
337 | 337 | | |
338 | 338 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| 123 | + | |
123 | 124 | | |
124 | 125 | | |
125 | 126 | | |
126 | | - | |
| 127 | + | |
| 128 | + | |
127 | 129 | | |
128 | | - | |
| 130 | + | |
129 | 131 | | |
130 | 132 | | |
131 | 133 | | |
| |||
899 | 901 | | |
900 | 902 | | |
901 | 903 | | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
902 | 912 | | |
903 | 913 | | |
904 | 914 | | |
| |||
1198 | 1208 | | |
1199 | 1209 | | |
1200 | 1210 | | |
1201 | | - | |
1202 | | - | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
1203 | 1214 | | |
1204 | 1215 | | |
1205 | 1216 | | |
| |||
0 commit comments