Extend SM_SLOC_BUFFER_BLOB_COMPRESSED to allow zstd, which is much faster
(compression/decompression) than zlib with a similar compression ratio.
An alternative is to add a value beside SM_SLOC_BUFFER_BLOB_COMPRESSED, but
reusing SM_SLOC_BUFFER_BLOB_COMPRESSED slightly simplifies the implementation
and leads to better diagnostics when a slightly older Clang consumes zstd
compressed blob.
Compressing AST takes a small portion of WriteAST, so we can pick a higher
compression level.
Compiling a relatively large .pcm (absl endian) with -fmodules-embed-all-files,
zstd level 9 has comparable performance with zlib-chromium level 6 (default),
but provides smaller output (5809156 => 5796016). Higher zstd levels will make
"Compress AST" notably slower and do not provide significant more size saving.
2.219345 Total ExecuteCompiler 0.746799 Total Frontend 0.736862 Total Source 0.339434 Total ReadAST 0.165452 Total WriteAST 0.043045 Total Compress AST 0.008236 Total ParseClass 0.00633 Total InstantiateClass 0.001887 Total isPotentialConstantExpr 0.001808 Total InstantiateFunction 0.001535 Total EvaluateForOverflow 0.000986 Total EvaluateAsRValue 0.000536 Total EvaluateAsBooleanCondition 0.000308 Total EvaluateAsConstantExpr 0.000156 Total EvaluateAsInt 3.4e-05 Total EvaluateKnownConstInt 8e-06 Total EvaluateAsInitializer 0 Total PerformPendingInstantiations
Worth a comment about this magic number?