Index: include/llvm/ProfileData/InstrProf.h =================================================================== --- include/llvm/ProfileData/InstrProf.h +++ include/llvm/ProfileData/InstrProf.h @@ -295,7 +295,8 @@ value_site_count_mismatch, compress_failed, uncompress_failed, - empty_raw_profile + empty_raw_profile, + zlib_unavailable }; inline std::error_code make_error_code(instrprof_error E) { Index: lib/ProfileData/InstrProf.cpp =================================================================== --- lib/ProfileData/InstrProf.cpp +++ lib/ProfileData/InstrProf.cpp @@ -111,6 +111,8 @@ return "Failed to uncompress data (zlib)"; case instrprof_error::empty_raw_profile: return "Empty raw profile file"; + case instrprof_error::zlib_unavailable: + return "Profile uses zlib compression but the profile reader was built without zlib support"; } llvm_unreachable("A value of instrprof_error has no message."); } @@ -430,6 +432,9 @@ SmallString<128> UncompressedNameStrings; StringRef NameStrings; if (isCompressed) { + if (!llvm::zlib::isAvailable()) + return make_error(instrprof_error::zlib_unavailable); + StringRef CompressedNameStrings(reinterpret_cast(P), CompressedSize); if (Error E = Index: test/tools/llvm-profdata/nocompress.test =================================================================== --- /dev/null +++ test/tools/llvm-profdata/nocompress.test @@ -0,0 +1,5 @@ +RUN: not llvm-profdata show %p/Inputs/compressed.profraw -o %t 2>&1 | FileCheck %s + +REQUIRES: nozlib + +CHECK: error: /Users/chenwj/Projects/llvm/test/tools/llvm-profdata/Inputs/compressed.profraw: Profile uses zlib compression but the profile reader was built without zlib support