summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2013-08-14 16:03:29 +0000
committerAlexey Samsonov <samsonov@google.com>2013-08-14 16:03:29 +0000
commit6ede706d4611643cda28dd18abb9f874b3869951 (patch)
tree4ba624a9ec0a7ee79a5a70de150a6358b71067ca /llvm
parent16b934d624c6202029c5244994915f9965ffd4be (diff)
downloadbcm5719-llvm-6ede706d4611643cda28dd18abb9f874b3869951.tar.gz
bcm5719-llvm-6ede706d4611643cda28dd18abb9f874b3869951.zip
Expose CRC-32 implementation from zlib
llvm-svn: 188380
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Support/Compression.h2
-rw-r--r--llvm/lib/Support/Compression.cpp7
-rw-r--r--llvm/unittests/Support/CompressionTest.cpp6
3 files changed, 15 insertions, 0 deletions
diff --git a/llvm/include/llvm/Support/Compression.h b/llvm/include/llvm/Support/Compression.h
index 9b1142d035d..bef9146d07d 100644
--- a/llvm/include/llvm/Support/Compression.h
+++ b/llvm/include/llvm/Support/Compression.h
@@ -50,6 +50,8 @@ Status uncompress(StringRef InputBuffer,
OwningPtr<MemoryBuffer> &UncompressedBuffer,
size_t UncompressedSize);
+uint32_t crc32(StringRef Buffer);
+
} // End of namespace zlib
} // End of namespace llvm
diff --git a/llvm/lib/Support/Compression.cpp b/llvm/lib/Support/Compression.cpp
index fd8a8743ea1..b5ddb7002ca 100644
--- a/llvm/lib/Support/Compression.cpp
+++ b/llvm/lib/Support/Compression.cpp
@@ -81,6 +81,10 @@ zlib::Status zlib::uncompress(StringRef InputBuffer,
return Res;
}
+uint32_t zlib::crc32(StringRef Buffer) {
+ return ::crc32(0, (const Bytef *)Buffer.data(), Buffer.size());
+}
+
#else
bool zlib::isAvailable() { return false; }
zlib::Status zlib::compress(StringRef InputBuffer,
@@ -93,5 +97,8 @@ zlib::Status zlib::uncompress(StringRef InputBuffer,
size_t UncompressedSize) {
return zlib::StatusUnsupported;
}
+uint32_t zlib::crc32(StringRef Buffer) {
+ llvm_unreachable("zlib::crc32 is unavailable");
+}
#endif
diff --git a/llvm/unittests/Support/CompressionTest.cpp b/llvm/unittests/Support/CompressionTest.cpp
index c8e2cd9f02b..c0a9adadb78 100644
--- a/llvm/unittests/Support/CompressionTest.cpp
+++ b/llvm/unittests/Support/CompressionTest.cpp
@@ -63,6 +63,12 @@ TEST(CompressionTest, Zlib) {
TestZlibCompression(BinaryDataStr, zlib::DefaultCompression);
}
+TEST(CompressionTest, ZlibCRC32) {
+ EXPECT_EQ(
+ 0x414FA339U,
+ zlib::crc32(StringRef("The quick brown fox jumps over the lazy dog")));
+}
+
#endif
}
OpenPOWER on IntegriCloud