diff --git a/CMakeLists.txt b/CMakeLists.txt index dfb2ddf..b3ad224 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.20) include(cmake/color.cmake) -set(BLT_VERSION 0.17.21) +set(BLT_VERSION 0.17.22) set(BLT_TEST_VERSION 0.0.1) set(BLT_TARGET BLT) diff --git a/include/blt/std/utility.h b/include/blt/std/utility.h index 501ad95..749a2cc 100644 --- a/include/blt/std/utility.h +++ b/include/blt/std/utility.h @@ -94,8 +94,17 @@ namespace blt #if defined(__GNUC__) || defined(__llvm__) #define BLT_ATTRIB_NO_INLINE __attribute__ ((noinline)) - #define BLT_ATTRIB_CONST __attribute__((const)) - #define BLT_ATTRIB_PURE __attribute__((pure)) + /** + * means that the return value is solely a function of the arguments, + * and if any of the arguments are pointers, then the pointers must not be dereferenced. + */ + #define BLT_ATTRIB_NO_SIDE_EFFECTS __attribute__((const)) + /** + * the function has no side effects and the value returned depends on the arguments and the state of global variables. + * Therefore it is safe for the optimizer to elide some calls to it, if the arguments are the same, + * and the caller did not do anything to change the state of the globals in between the calls. + */ + #define BLT_ATTRIB_GLOBAL_READ_ONLY __attribute__((pure)) #else #if defined(_MSC_VER) && !defined(__INTEL_COMPILER) #define BLT_ATTRIB_NO_INLINE __declspec(noinline) diff --git a/libraries/parallel-hashmap b/libraries/parallel-hashmap index d88c5e1..e5b892b 160000 --- a/libraries/parallel-hashmap +++ b/libraries/parallel-hashmap @@ -1 +1 @@ -Subproject commit d88c5e15079047777b418132ece5879e7c9aaa2b +Subproject commit e5b892baed478513adcb6425773cae1eda033057