16#include "llvm/Config/config.h"
32 case compression::Format::Zlib:
35 return "LLVM was not built with LLVM_ENABLE_ZLIB or did not find zlib at "
37 case compression::Format::Zstd:
40 return "LLVM was not built with LLVM_ENABLE_ZSTD or did not find zstd at "
49 case compression::Format::Zlib:
52 case compression::Format::Zstd:
59 uint8_t *Output,
size_t UncompressedSize) {
61 case compression::Format::Zlib:
63 case compression::Format::Zstd:
71 size_t UncompressedSize) {
73 case compression::Format::Zlib:
75 case compression::Format::Zstd:
83 size_t UncompressedSize) {
89static StringRef convertZlibCodeToString(
int Code) {
92 return "zlib error: Z_MEM_ERROR";
94 return "zlib error: Z_BUF_ERROR";
96 return "zlib error: Z_STREAM_ERROR";
98 return "zlib error: Z_DATA_ERROR";
109 unsigned long CompressedSize = ::compressBound(Input.
size());
111 int Res = ::compress2((Bytef *)CompressedBuffer.
data(), &CompressedSize,
112 (
const Bytef *)Input.
data(), Input.
size(), Level);
113 if (Res == Z_MEM_ERROR)
119 if (CompressedSize < CompressedBuffer.
size())
120 CompressedBuffer.
truncate(CompressedSize);
124 size_t &UncompressedSize) {
125 int Res = ::uncompress((Bytef *)Output, (uLongf *)&UncompressedSize,
126 (
const Bytef *)Input.
data(), Input.
size());
130 return Res ? make_error<StringError>(convertZlibCodeToString(Res),
137 size_t UncompressedSize) {
140 if (UncompressedSize < Output.
size())
152 size_t &UncompressedSize) {
157 size_t UncompressedSize) {
171 ZSTD_CCtx *Cctx = ZSTD_createCCtx();
175 if (ZSTD_isError(ZSTD_CCtx_setParameter(
176 Cctx, ZSTD_c_enableLongDistanceMatching, EnableLdm ? 1 : 0))) {
182 ZSTD_CCtx_setParameter(Cctx, ZSTD_c_compressionLevel, Level))) {
187 unsigned long CompressedBufferSize = ZSTD_compressBound(Input.
size());
190 size_t const CompressedSize =
191 ZSTD_compress2(Cctx, CompressedBuffer.
data(), CompressedBufferSize,
196 if (ZSTD_isError(CompressedSize))
200 if (CompressedSize < CompressedBuffer.
size())
201 CompressedBuffer.
truncate(CompressedSize);
205 size_t &UncompressedSize) {
206 const size_t Res = ::ZSTD_decompress(
207 Output, UncompressedSize, (
const uint8_t *)Input.
data(), Input.
size());
208 UncompressedSize = Res;
212 return ZSTD_isError(Res) ? make_error<StringError>(ZSTD_getErrorName(Res),
219 size_t UncompressedSize) {
222 if (UncompressedSize < Output.
size())
235 size_t &UncompressedSize) {
240 size_t UncompressedSize) {
#define __msan_unpoison(p, size)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
size_t size() const
size - Get the array size.
Lightweight error class with error context and mandatory checking.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void resize_for_overwrite(size_type N)
Like resize, but T is POD, the new values won't be initialized.
void truncate(size_type N)
Like resize, but requires that N is less than size().
pointer data()
Return a pointer to the vector's buffer, even if empty().
StringRef - Represent a constant reference to a string, i.e.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
void compress(ArrayRef< uint8_t > Input, SmallVectorImpl< uint8_t > &CompressedBuffer, int Level=DefaultCompression)
Error decompress(ArrayRef< uint8_t > Input, uint8_t *Output, size_t &UncompressedSize)
Error decompress(ArrayRef< uint8_t > Input, uint8_t *Output, size_t &UncompressedSize)
void compress(ArrayRef< uint8_t > Input, SmallVectorImpl< uint8_t > &CompressedBuffer, int Level=DefaultCompression, bool EnableLdm=false)
const char * getReasonIfUnsupported(Format F)
Error decompress(DebugCompressionType T, ArrayRef< uint8_t > Input, uint8_t *Output, size_t UncompressedSize)
Format formatFor(DebugCompressionType Type)
void compress(Params P, ArrayRef< uint8_t > Input, SmallVectorImpl< uint8_t > &Output)
This is an optimization pass for GlobalISel generic memory operations.
std::error_code inconvertibleErrorCode()
The value returned by this function can be returned from convertToErrorCode for Error values where no...
void report_bad_alloc_error(const char *Reason, bool GenCrashDiag=true)
Reports a bad alloc error, calling any user defined bad alloc error handler.