[PATCH] D35586: [ProfData] Detect if zlib is available

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 21 14:42:28 PDT 2017


This revision was automatically updated to reflect the committed changes.
Closed by commit rL308789: [ProfData] Detect if zlib is available (authored by dblaikie).

Changed prior to commit:
  https://reviews.llvm.org/D35586?vs=107714&id=107722#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D35586

Files:
  llvm/trunk/include/llvm/ProfileData/InstrProf.h
  llvm/trunk/lib/ProfileData/InstrProf.cpp
  llvm/trunk/test/tools/llvm-profdata/Inputs/compressed.profraw
  llvm/trunk/test/tools/llvm-profdata/nocompress.test


Index: llvm/trunk/include/llvm/ProfileData/InstrProf.h
===================================================================
--- llvm/trunk/include/llvm/ProfileData/InstrProf.h
+++ llvm/trunk/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: llvm/trunk/test/tools/llvm-profdata/nocompress.test
===================================================================
--- llvm/trunk/test/tools/llvm-profdata/nocompress.test
+++ llvm/trunk/test/tools/llvm-profdata/nocompress.test
@@ -0,0 +1,15 @@
+You need a checkout of clang with compiler-rt to generate the
+binary file here.  These shell commands can be used to regenerate
+it.
+$ SRC=path/to/llvm
+$ CFE=$SRC/tools/clang
+$ TESTDIR=$SRC/test/tools/llvm-profdata
+$ CFE_TESTDIR=$CFE/test/Profile
+$ clang -o a.out -fprofile-instr-generate $CFE_TESTDIR/c-general.c
+$ LLVM_PROFILE_FILE=$TESTDIR/Inputs/compressed.profraw ./a.out
+
+RUN: not llvm-profdata show %p/Inputs/compressed.profraw -o %t 2>&1 | FileCheck %s
+
+REQUIRES: nozlib
+
+CHECK: error: {{.*}} Profile uses zlib compression but the profile reader was built without zlib support
Index: llvm/trunk/lib/ProfileData/InstrProf.cpp
===================================================================
--- llvm/trunk/lib/ProfileData/InstrProf.cpp
+++ llvm/trunk/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<InstrProfError>(instrprof_error::zlib_unavailable);
+
       StringRef CompressedNameStrings(reinterpret_cast<const char *>(P),
                                       CompressedSize);
       if (Error E =


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35586.107722.patch
Type: text/x-patch
Size: 2268 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170721/22a783c4/attachment.bin>


More information about the llvm-commits mailing list