aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
authorArtem Pianykh <artem.pyanykh@gmail.com>2025-01-24 11:42:44 +0000
committerGitHub <noreply@github.com>2025-01-24 11:42:44 +0000
commit5ce349589a4adcc18f5807551bf4b78091746aa8 (patch)
tree27fef4746d932261720a75c745cb6716450e0528 /llvm/lib/Transforms/Utils/InlineFunction.cpp
parent4831fa8632f6ab89fe2c14b8e7ec09500e43c099 (diff)
downloadllvm-5ce349589a4adcc18f5807551bf4b78091746aa8.zip
llvm-5ce349589a4adcc18f5807551bf4b78091746aa8.tar.gz
llvm-5ce349589a4adcc18f5807551bf4b78091746aa8.tar.bz2
[Coro] Prebuild a module-level debug info set and share it between all coroutine clones (#118628)
Summary: CoroCloner, by calling into CloneFunctionInto, does a lot of repeated work priming DIFinder and building a list of common module-level debug info metadata. For programs compiled with full debug info this can get very expensive. This diff builds the data once and shares it between all clones. Anecdata for a sample cpp source file compiled with full debug info: | | Baseline | IdentityMD set | Prebuilt CommonDI (cur.) | |-----------------|----------|----------------|--------------------------| | CoroSplitPass | 306ms | 221ms | 68ms | | CoroCloner | 101ms | 72ms | 0.5ms | | CollectCommonDI | - | - | 63ms | | Speed up | 1x | 1.4x | 4.5x | Note that CollectCommonDebugInfo happens once *per coroutine* rather than per clone. Test Plan: ninja check-llvm-unit ninja check-llvm Compiled a sample internal source file, checked time trace output for scope timings.
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
0 files changed, 0 insertions, 0 deletions