diff --git a/CMakeLists.txt b/CMakeLists.txt
index 60e2d44c5591be285b62de3d5113bfb212bc50c9..1113ae1a33c158c2a77a03f70cb7c0888a4909de 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -79,27 +79,6 @@ check_function_exists(memrchr HAVE_MEMRCHR)
 # stack. Find whether or not it's present.
 check_library_exists("" __libc_stack_end "" HAVE_LIBC_STACK_END)
 
-set(HAVE_NON_C99_PTHREAD_H 0)
-if (CMAKE_COMPILER_IS_GNUCC)
-
-    set(CMAKE_REQUIRED_FLAGS "-std=gnu99 -Wall -fexceptions -pthread")
-    check_symbol_exists(__pthread_cleanup_routine pthread.h test1)
-
-    set(HAVE_NON_C99_PTHREAD_H OFF)
-    if (test1)
-        try_compile(HAVE_NON_C99_PTHREAD_H ${CMAKE_BINARY_DIR} 
-            ${CMAKE_SOURCE_DIR}/cmake/pthread-broken-inline-test.c
-            COMPILE_DEFINITIONS "-std=gnu99 -Wall -fexceptions")
-    endif()
-    unset(test1)
-
-    if (HAVE_NON_C99_PTHREAD_H)
-        message(WARNING "The system pthread.h is not compatible with the C99 mode."
-            "A special workaround will be used during compilation."
-            "If it does not work for you, please update system glibc.")
-    endif()
-endif()
-
 #
 # Enable 'make TAGS' target.
 #
diff --git a/cmake/pthread-broken-inline-test.c b/cmake/pthread-broken-inline-test.c
deleted file mode 100644
index df1ab368d132625c80caa41a24330a6c37c82141..0000000000000000000000000000000000000000
--- a/cmake/pthread-broken-inline-test.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <setjmp.h>
-#include <pthread.h>
-
-struct __pthread_cleanup_frame;
-extern __inline void
-__pthread_cleanup_routine(struct __pthread_cleanup_frame *__frame);
-
-int main()
-{
-    return 0;
-}
-
diff --git a/include/tarantool_pthread.h b/include/tarantool_pthread.h
index f4c05b983ae710356746c978f0f0dfc69a1585ca..0540975acd11fae24ff89e46af7d695ad9626fcf 100644
--- a/include/tarantool_pthread.h
+++ b/include/tarantool_pthread.h
@@ -31,27 +31,7 @@
 
 #include "config.h"
 
-#if defined(HAVE_NON_C99_PTHREAD_H)
-/*
- * Old versions of glibc (pre-2006) use "extern __inline" for this function.
- * This definition, of course, does not work properly with C99 mode when
- * multiple compilation units are used.
- *
- * By defining "static inline" prototype we force GCC think that
- * this method is "static" and no global symbols must be produced for it.
- *
- * See http://gcc.gnu.org/ml/gcc-patches/2006-11/msg01030.html
- *     http://gcc.gnu.org/ml/gcc-patches/2008-07/msg02449.html
- */
-struct __pthread_cleanup_frame;
-static inline void
-__pthread_cleanup_routine(struct __pthread_cleanup_frame *__frame);
-
-#define __inline
-#endif /* HAVE_NON_C99_PTHREAD_H */
-
 #include <pthread.h>
-
 #include <util.h>
 #include <say.h>