From 0c716d435abe65250100c2caea0e5126ac4e14bd Mon Sep 17 00:00:00 2001 From: "Georgi D. Sotirov" Date: Wed, 5 May 2021 14:16:46 +0300 Subject: [PATCH] Add inline with SNAPPY_ATTRIBUTE_ALWAYS_INLINE Add inline with SNAPPY_ATTRIBUTE_ALWAYS_INLINE on AdvanceToNextTag to fix the following compilation errors and a warning with GCC: [ 2%] Building CXX object CMakeFiles/snappy.dir/snappy.cc.o /usr/bin/c++ -DHAVE_CONFIG_H -Dsnappy_EXPORTS -I/tmp/snappy-1.1.9/build -I/tmp/snappy-1.1.9 -O3 -march=i586 -mtune=i686 -Wall -Wextra -fno-exceptions -fno-rtti -O3 -DNDEBUG -fPIC -std=c++11 -o CMakeFiles/snappy.dir/snappy.cc.o -c /tmp/snappy-1.1.9/snappy.cc /tmp/snappy-1.1.9/snappy.cc:1017:8: warning: always_inline function might not be inlinable [-Wattributes] size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { ^ /tmp/snappy-1.1.9/snappy.cc: In function 'std::pair snappy::DecompressBranchless(const uint8_t*, const uint8_t*, ptrdiff_t, T, ptrdiff_t) [with T = char*; uint8_t = unsigned char; ptrdiff_t = int]': /tmp/snappy-1.1.9/snappy.cc:1017:8: error: inlining failed in call to always_inline 'size_t snappy::AdvanceToNextTag(const uint8_t**, size_t*)': function body can be overwritten at link time /tmp/snappy-1.1.9/snappy.cc:1097:53: error: called from here size_t tag_type = AdvanceToNextTag(&ip, &tag); ^ /tmp/snappy-1.1.9/snappy.cc:1017:8: error: inlining failed in call to always_inline 'size_t snappy::AdvanceToNextTag(const uint8_t**, size_t*)': function body can be overwritten at link time size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { ^ /tmp/snappy-1.1.9/snappy.cc:1097:53: error: called from here size_t tag_type = AdvanceToNextTag(&ip, &tag); ^ /tmp/snappy-1.1.9/snappy.cc:1017:8: error: inlining failed in call to always_inline 'size_t snappy::AdvanceToNextTag(const uint8_t**, size_t*)': function body can be overwritten at link time size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { ^ /tmp/snappy-1.1.9/snappy.cc:1097:53: error: called from here size_t tag_type = AdvanceToNextTag(&ip, &tag); ^ CMakeFiles/snappy.dir/build.make:137: recipe for target 'CMakeFiles/snappy.dir/snappy.cc.o' failed Just like with other functions using SNAPPY_ATTRIBUTE_ALWAYS_INLINE macro (i.e. __attribute__((always_inline)) ) it is necessary to use C++ inline specifier. --- snappy.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snappy.cc b/snappy.cc index 79dc0e8..51157be 100644 --- a/snappy.cc +++ b/snappy.cc @@ -1014,7 +1014,7 @@ void MemMove(ptrdiff_t dst, const void* src, size_t size) { } SNAPPY_ATTRIBUTE_ALWAYS_INLINE -size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { +inline size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) { const uint8_t*& ip = *ip_p; // This section is crucial for the throughput of the decompression loop. // The latency of an iteration is fundamentally constrained by the ss='ctrl'>
authorLudovic Courtès <ludo@gnu.org>2021-10-14 14:54:49 +0200
committerLudovic Courtès <ludo@gnu.org>2021-10-14 15:44:51 +0200
commit689d529e744bf745d64636dc57aea5189607172d (patch)
treeac985313825718d3b5f59f0343ea27f870efeab9 /tests
parentf9a506aa6a5aaeb2c06c97d5b663d01d2103db69 (diff)
downloadguix-689d529e744bf745d64636dc57aea5189607172d.tar.gz
guix-689d529e744bf745d64636dc57aea5189607172d.zip
download: Add missing autoload.
This is a followup to 6d02a994f911a75e3a223a22c05c2939cdfed2b5, which left '%verify-swh-certificate?' unbound. * guix/build/download.scm: Autoload for '%verify-swh-certificate'.
Diffstat (limited to 'tests')
0 files changed, 0 insertions, 0 deletions