upgrade llvm from 11 to 17
This commit is contained in:
parent
b7d76f0bf7
commit
3d03d6f4df
9
build.sh
9
build.sh
@ -19,6 +19,8 @@ LLD_OPTION=ON
|
||||
ASAN_OPTION=ON
|
||||
STATIC_LINK_LGPL_DEPS_OPTION=ON
|
||||
ENABLE_BOLT_OPTION=OFF
|
||||
CPP_STANDARD_OPTION=11
|
||||
CPP_STANDARD_20_OPTION=OFF
|
||||
|
||||
echo "$0 ${ALL_ARGS[@]}"
|
||||
|
||||
@ -63,6 +65,10 @@ function parse_args
|
||||
elif [[ "$i" == "--make" ]]
|
||||
then
|
||||
NEED_MAKE=make
|
||||
elif [[ "$i" == "-DCPP_STANDARD_20=ON" ]]
|
||||
then
|
||||
CPP_STANDARD_OPTION=20
|
||||
CPP_STANDARD_20_OPTION=ON
|
||||
elif [[ $NEED_MAKE == false ]]
|
||||
then
|
||||
BUILD_ARGS+=("$i")
|
||||
@ -105,6 +111,7 @@ function prepare_build_dir
|
||||
# dep_create
|
||||
function do_init
|
||||
{
|
||||
export CPP_STANDARD=${CPP_STANDARD_OPTION}
|
||||
time1_ms=$(echo $[$(date +%s%N)/1000000])
|
||||
(cd $TOPDIR/deps/init && bash dep_create.sh)
|
||||
if [ $? -ne 0 ]; then
|
||||
@ -130,7 +137,7 @@ function do_build
|
||||
|
||||
TYPE=$1; shift
|
||||
prepare_build_dir $TYPE || return
|
||||
${CMAKE_COMMAND} ${TOPDIR} "$@"
|
||||
${CMAKE_COMMAND} ${TOPDIR} "$@" -DCPP_STANDARD_20=$CPP_STANDARD_20_OPTION
|
||||
if [ $? -ne 0 ]; then
|
||||
echo_err "Failed to generate Makefile"
|
||||
exit 1
|
||||
|
@ -95,6 +95,17 @@ if((ENABLE_BOLT OR (NOT DEFINED ENABLE_BOLT AND ENABLE_BOLT_AUTO)) AND NOT OB_BU
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ob_define(CPP_STANDARD_20 OFF)
|
||||
if(CPP_STANDARD_20)
|
||||
message(STATUS "Using C++20 standard")
|
||||
set(CMAKE_CXX_FLAGS "-std=gnu++20")
|
||||
ob_define(CPP_STANDARD_20 ON)
|
||||
add_definitions(-DCPP_STANDARD_20)
|
||||
else()
|
||||
message(STATUS "Using C++11 standard")
|
||||
set(CMAKE_CXX_FLAGS "-std=gnu++11")
|
||||
endif()
|
||||
|
||||
if(OB_DISABLE_PIE)
|
||||
message(STATUS "build without pie")
|
||||
set(PIE_OPT "")
|
||||
@ -229,6 +240,14 @@ if (OB_USE_CLANG)
|
||||
NO_DEFAULT_PATH)
|
||||
endif()
|
||||
|
||||
if(CPP_STANDARD_20)
|
||||
execute_process(COMMAND ${OB_CC} --version OUTPUT_VARIABLE CLANG_VERSION_STRING)
|
||||
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" CLANG_VERSION ${CLANG_VERSION_STRING})
|
||||
if(CLANG_VERSION VERSION_LESS "17.0.0")
|
||||
message(FATAL_ERROR "Clang version must be at least 17.0.0 if CPP_STANDARD_20 is ON, Please run the cmake process with '-DCPP_STANDARD_20=ON --init'")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (OB_CXX)
|
||||
message(STATUS "Using OB_CXX compiler: ${OB_CXX}")
|
||||
else()
|
||||
@ -253,7 +272,7 @@ if (OB_USE_CLANG)
|
||||
set(REORDER_LINK_OPT "-Wl,--no-rosegment,--build-id=sha1 ${HOTFUNC_OPT}")
|
||||
set(OB_LD_BIN "${DEVTOOLS_DIR}/bin/ld.lld")
|
||||
endif()
|
||||
set(CMAKE_CXX_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${FILE_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG} -std=gnu++11")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${FILE_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG}")
|
||||
set(CMAKE_C_FLAGS "--gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${FILE_PREFIX} ${AUTO_FDO_OPT} ${THIN_LTO_OPT} -fcolor-diagnostics ${REORDER_COMP_OPT} -fmax-type-align=8 ${CMAKE_ASAN_FLAG}")
|
||||
set(CMAKE_CXX_LINK_FLAGS "${LD_OPT} --gcc-toolchain=${GCC9} ${DEBUG_PREFIX} ${FILE_PREFIX} ${AUTO_FDO_OPT}")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${LD_OPT} -Wl,-z,noexecstack ${THIN_LTO_CONCURRENCY_LINK} ${REORDER_LINK_OPT}")
|
||||
|
@ -130,6 +130,7 @@ endfunction()
|
||||
function(ob_lib_add_target target)
|
||||
message(STATUS "ob_lib_add_target ${target}")
|
||||
ob_add_object_target(${target})
|
||||
target_compile_options(${target} INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
target_link_libraries(${target} PUBLIC oblib_base)
|
||||
list(APPEND oblib_object_libraries ${target})
|
||||
set(oblib_object_libraries "${oblib_object_libraries}" CACHE INTERNAL "observer library list")
|
||||
|
3
deps/easy/CMakeLists.txt
vendored
3
deps/easy/CMakeLists.txt
vendored
@ -38,6 +38,9 @@ endif()
|
||||
if (OB_USE_CLANG)
|
||||
set(EASY_CC_WNO -fno-strict-aliasing -Wno-unused-variable -Wno-unused-function -fmax-type-align=8
|
||||
-Wno-tautological-constant-out-of-range-compare -fno-omit-frame-pointer)
|
||||
if(CPP_STANDARD_20)
|
||||
set(EASY_CC_WNO ${EASY_CC_WNO} -Wno-unused-but-set-variable)
|
||||
endif()
|
||||
else()
|
||||
set(EASY_CC_WNO -fno-strict-aliasing -Wno-unused-variable -Wno-implicit-function-declaration
|
||||
-Wno-unused-but-set-variable -Wno-unused-function -fno-omit-frame-pointer)
|
||||
|
19
deps/init/dep_create.sh
vendored
19
deps/init/dep_create.sh
vendored
@ -178,14 +178,15 @@ WORKSACPE_DEPS_DIR="$(cd $(dirname $0); cd ..; pwd)"
|
||||
WORKSPACE_DEPS_3RD=${WORKSACPE_DEPS_DIR}/3rd
|
||||
WORKSAPCE_DEPS_3RD_DONE=${WORKSPACE_DEPS_3RD}/DONE
|
||||
WORKSAPCE_DEPS_3RD_MD5=${WORKSPACE_DEPS_3RD}/${MD5}
|
||||
WORKSAPCE_DEPS_3RD_CPP_STANDARD=${WORKSPACE_DEPS_3RD}/CPP_${CPP_STANDARD}
|
||||
|
||||
# 开始判断本地目录依赖目录是否存在
|
||||
if [ -f ${WORKSAPCE_DEPS_3RD_MD5} ]; then
|
||||
if [ -f ${WORKSAPCE_DEPS_3RD_DONE} ]; then
|
||||
echo_log "${DEP_FILE} has been initialized due to ${WORKSAPCE_DEPS_3RD_MD5} and ${WORKSAPCE_DEPS_3RD_DONE} exists"
|
||||
if [ -f "${WORKSAPCE_DEPS_3RD_DONE}" ] && [ -f "${WORKSAPCE_DEPS_3RD_CPP_STANDARD}" ]; then
|
||||
echo_log "${DEP_FILE} has been initialized due to ${WORKSAPCE_DEPS_3RD_MD5}, ${WORKSAPCE_DEPS_3RD_DONE} and ${WORKSAPCE_DEPS_3RD_CPP_STANDARD} exists"
|
||||
exit 0
|
||||
else
|
||||
echo_log "${DEP_FILE} has been not initialized, due to ${WORKSAPCE_DEPS_3RD_DONE} not exists"
|
||||
echo_log "${DEP_FILE} has been not initialized, due to ${WORKSAPCE_DEPS_3RD_DONE} or ${WORKSAPCE_DEPS_3RD_CPP_STANDARD} not exists"
|
||||
fi
|
||||
else
|
||||
echo_log "${DEP_FILE} has been not initialized, due to ${WORKSAPCE_DEPS_3RD_MD5} not exists"
|
||||
@ -294,6 +295,15 @@ do
|
||||
temp=$(echo "$line" | grep -Eo "target=(\S*)")
|
||||
[[ "$temp" != "" ]] && target_name=${temp#*=}
|
||||
|
||||
if [[ "$pkg" == *"obdevtools-llvm"* ]]; then
|
||||
if [[ "$line" =~ cpp_standard=([0-9]+) ]]; then
|
||||
cpp_standard="${BASH_REMATCH[1]}"
|
||||
if [ "$cpp_standard" -ne "$CPP_STANDARD" ]; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -f "${TARGET_DIR_3RD}/pkg/${pkg}" ]]; then
|
||||
echo_log "find package <${pkg}> in cache"
|
||||
else
|
||||
@ -332,6 +342,7 @@ done
|
||||
if [ ${NEED_SHARE_CACHE} == "OFF" ]; then
|
||||
touch ${WORKSAPCE_DEPS_3RD_MD5}
|
||||
touch ${WORKSAPCE_DEPS_3RD_DONE}
|
||||
touch ${WORKSAPCE_DEPS_3RD_CPP_STANDARD}
|
||||
exit $?
|
||||
fi
|
||||
|
||||
@ -388,6 +399,7 @@ if [ ${LINK_TARGET_DIRECT} == "ON" ]; then
|
||||
fi
|
||||
touch ${WORKSAPCE_DEPS_3RD_MD5}
|
||||
touch ${WORKSAPCE_DEPS_3RD_DONE}
|
||||
touch ${WORKSAPCE_DEPS_3RD_CPP_STANDARD}
|
||||
exit $?
|
||||
fi
|
||||
|
||||
@ -415,3 +427,4 @@ echo_log "link deps ${WORKSPACE_DEPS_3RD} -> ${CACHE_DEPS_DIR_3RD}"
|
||||
# 标记md5和done文件
|
||||
touch ${WORKSAPCE_DEPS_3RD_MD5}
|
||||
touch ${WORKSAPCE_DEPS_3RD_DONE}
|
||||
touch ${WORKSAPCE_DEPS_3RD_CPP_STANDARD}
|
||||
|
3
deps/init/oceanbase.al8.aarch64.deps
vendored
3
deps/init/oceanbase.al8.aarch64.deps
vendored
@ -44,7 +44,8 @@ obdevtools-ccache-3.7.12-52024092621.al8.aarch64.rpm
|
||||
obdevtools-cmake-3.22.1-122024092710.al8.aarch64.rpm
|
||||
obdevtools-flex-2.5.35-42024092621.al8.aarch64.rpm
|
||||
obdevtools-gcc9-9.3.0-152024092711.al8.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-662024092811.al8.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-662024092811.al8.aarch64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.al8.aarch64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-122024093010.al8.aarch64.rpm
|
||||
|
3
deps/init/oceanbase.al8.x86_64.deps
vendored
3
deps/init/oceanbase.al8.x86_64.deps
vendored
@ -47,7 +47,8 @@ obdevtools-ccache-3.7.12-52024092621.al8.x86_64.rpm
|
||||
obdevtools-cmake-3.22.1-122024092710.al8.x86_64.rpm
|
||||
obdevtools-flex-2.5.35-42024092621.al8.x86_64.rpm
|
||||
obdevtools-gcc9-9.3.0-152024092711.al8.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-662024092811.al8.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.x86_64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el8.x86_64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-122024093010.al8.x86_64.rpm
|
||||
|
5
deps/init/oceanbase.el7.aarch64.deps
vendored
5
deps/init/oceanbase.el7.aarch64.deps
vendored
@ -41,10 +41,11 @@ devdeps-fast-float-6.1.3-42024112122.el7.aarch64.rpm
|
||||
obdevtools-binutils-2.30-12022100413.el7.aarch64.rpm
|
||||
obdevtools-bison-2.4.1-12022100413.el7.aarch64.rpm
|
||||
obdevtools-ccache-3.7.12-12022100417.el7.aarch64.rpm
|
||||
obdevtools-cmake-3.22.1-22022100417.el7.aarch64.rpm
|
||||
obdevtools-cmake-3.30.3-52024111819.el7.aarch64.rpm
|
||||
obdevtools-flex-2.5.35-12022100417.el7.aarch64.rpm
|
||||
obdevtools-gcc9-9.3.0-52022092914.el7.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el7.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el7.aarch64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el7.aarch64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-52024052811.el7.aarch64.rpm
|
||||
|
5
deps/init/oceanbase.el7.x86_64.deps
vendored
5
deps/init/oceanbase.el7.x86_64.deps
vendored
@ -45,10 +45,11 @@ devdeps-fast-float-6.1.3-42024112122.el7.x86_64.rpm
|
||||
obdevtools-binutils-2.30-12022100413.el7.x86_64.rpm
|
||||
obdevtools-bison-2.4.1-12022100413.el7.x86_64.rpm
|
||||
obdevtools-ccache-3.7.12-12022100417.el7.x86_64.rpm
|
||||
obdevtools-cmake-3.22.1-22022100417.el7.x86_64.rpm
|
||||
obdevtools-cmake-3.30.3-52024111819.el7.x86_64.rpm
|
||||
obdevtools-flex-2.5.35-12022100417.el7.x86_64.rpm
|
||||
obdevtools-gcc9-9.3.0-52022092914.el7.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el7.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el7.x86_64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el7.x86_64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-52024052811.el7.x86_64.rpm
|
||||
|
5
deps/init/oceanbase.el8.aarch64.deps
vendored
5
deps/init/oceanbase.el8.aarch64.deps
vendored
@ -41,10 +41,11 @@ devdeps-fast-float-6.1.3-42024112122.el8.aarch64.rpm
|
||||
obdevtools-binutils-2.30-12022100413.el8.aarch64.rpm
|
||||
obdevtools-bison-2.4.1-12022100413.el8.aarch64.rpm
|
||||
obdevtools-ccache-3.7.12-12022100417.el8.aarch64.rpm
|
||||
obdevtools-cmake-3.22.1-22022100417.el8.aarch64.rpm
|
||||
obdevtools-cmake-3.30.3-52024111819.el8.aarch64.rpm
|
||||
obdevtools-flex-2.5.35-12022100417.el8.aarch64.rpm
|
||||
obdevtools-gcc9-9.3.0-52022092914.el8.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.aarch64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el8.aarch64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-52024052811.el8.aarch64.rpm
|
||||
|
5
deps/init/oceanbase.el8.x86_64.deps
vendored
5
deps/init/oceanbase.el8.x86_64.deps
vendored
@ -44,10 +44,11 @@ devdeps-fast-float-6.1.3-42024112122.el8.x86_64.rpm
|
||||
obdevtools-binutils-2.30-12022100413.el8.x86_64.rpm
|
||||
obdevtools-bison-2.4.1-12022100413.el8.x86_64.rpm
|
||||
obdevtools-ccache-3.7.12-12022100417.el8.x86_64.rpm
|
||||
obdevtools-cmake-3.22.1-22022100417.el8.x86_64.rpm
|
||||
obdevtools-cmake-3.30.3-52024111819.el8.x86_64.rpm
|
||||
obdevtools-flex-2.5.35-12022100417.el8.x86_64.rpm
|
||||
obdevtools-gcc9-9.3.0-52022092914.el8.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.x86_64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el8.x86_64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-52024052811.el8.x86_64.rpm
|
||||
|
5
deps/init/oceanbase.el9.aarch64.deps
vendored
5
deps/init/oceanbase.el9.aarch64.deps
vendored
@ -47,10 +47,11 @@ devdeps-apr-1.6.5-232023090616.el9.aarch64.rpm target=el9
|
||||
obdevtools-binutils-2.30-12022100413.el8.aarch64.rpm
|
||||
obdevtools-bison-2.4.1-12022100413.el8.aarch64.rpm
|
||||
obdevtools-ccache-3.7.12-12022100417.el8.aarch64.rpm
|
||||
obdevtools-cmake-3.22.1-22022100417.el8.aarch64.rpm
|
||||
obdevtools-cmake-3.30.3-52024111819.el8.aarch64.rpm
|
||||
obdevtools-flex-2.5.35-12022100417.el8.aarch64.rpm
|
||||
obdevtools-gcc9-9.3.0-52022092914.el8.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.aarch64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.aarch64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el8.aarch64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-52024052811.el8.aarch64.rpm
|
||||
|
5
deps/init/oceanbase.el9.x86_64.deps
vendored
5
deps/init/oceanbase.el9.x86_64.deps
vendored
@ -50,10 +50,11 @@ devdeps-apr-1.6.5-232023090616.el9.x86_64.rpm target=el9
|
||||
obdevtools-binutils-2.30-12022100413.el8.x86_64.rpm
|
||||
obdevtools-bison-2.4.1-12022100413.el8.x86_64.rpm
|
||||
obdevtools-ccache-3.7.12-12022100417.el8.x86_64.rpm
|
||||
obdevtools-cmake-3.22.1-22022100417.el8.x86_64.rpm
|
||||
obdevtools-cmake-3.30.3-52024111819.el8.x86_64.rpm
|
||||
obdevtools-flex-2.5.35-12022100417.el8.x86_64.rpm
|
||||
obdevtools-gcc9-9.3.0-52022092914.el8.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.x86_64.rpm
|
||||
obdevtools-llvm-11.0.1-312022092921.el8.x86_64.rpm cpp_standard=11
|
||||
obdevtools-llvm-17.0.3-232024111415.el8.x86_64.rpm cpp_standard=20
|
||||
|
||||
[tools-deps]
|
||||
devdeps-oblogmsg-1.1-52024052811.el8.x86_64.rpm
|
||||
|
20
deps/oblib/src/CMakeLists.txt
vendored
20
deps/oblib/src/CMakeLists.txt
vendored
@ -110,9 +110,7 @@ endif()
|
||||
|
||||
if (OB_USE_CLANG)
|
||||
# The following clang warnings should be fixed later: -Wno-unused-variable -Wno-invalid-offsetof
|
||||
target_compile_options(oblib_base_base_base
|
||||
INTERFACE
|
||||
-fno-strict-aliasing -fno-omit-frame-pointer ${MARCH_CFLAGS} ${MTUNE_CFLAGS}
|
||||
set(OBLIB_COMPILE_DEFINITIONS -fno-strict-aliasing -fno-omit-frame-pointer ${MARCH_CFLAGS} ${MTUNE_CFLAGS}
|
||||
-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_NO_EXCEPTION -DTSI_STATIC_SUM
|
||||
-DOCI_LINK_RUNTIME
|
||||
-Wall -Wextra -Wformat -Werror
|
||||
@ -126,6 +124,18 @@ if (OB_USE_CLANG)
|
||||
-Wno-self-assign -Wno-inconsistent-missing-override -Wno-mismatched-tags -Wno-unused-variable
|
||||
-Wno-invalid-offsetof -Wno-unevaluated-expression -Wno-constant-logical-operand>
|
||||
$<$<COMPILE_LANGUAGE:C>:-Wno-unused-parameter>)
|
||||
if (CPP_STANDARD_20)
|
||||
set(OBLIB_COMPILE_DEFINITIONS ${OBLIB_COMPILE_DEFINITIONS}
|
||||
-Wno-unused-but-set-variable -Wno-null-pointer-subtraction -Wno-compound-token-split-by-macro
|
||||
-Wno-packed-non-pod -Wno-format -Wno-shorten-64-to-32 -Wno-unused-but-set-parameter -Wno-single-bit-bitfield-constant-conversion
|
||||
-Wno-enum-constexpr-conversion -Wno-covered-switch-default
|
||||
-Wno-bitwise-instead-of-logical -Wno-suggest-override -Wno-non-virtual-dtor -Wno-cast-qual
|
||||
-Wno-unused-value -Wno-macro-redefined -Wno-reinterpret-base-class -Wno-register
|
||||
-Wno-implicit-fallthrough -Wno-deprecated-non-prototype
|
||||
-Wno-ambiguous-reversed-operator -Wno-invalid-partial-specialization
|
||||
-Wno-string-concatenation)
|
||||
endif()
|
||||
target_compile_options(oblib_base_base_base INTERFACE ${OBLIB_COMPILE_DEFINITIONS})
|
||||
if (ENABLE_SANITY)
|
||||
target_compile_options(oblib_base_base
|
||||
INTERFACE
|
||||
@ -272,7 +282,9 @@ endif()
|
||||
target_link_libraries(oblib_base_base INTERFACE oblib_base_base_base)
|
||||
|
||||
add_library(oblib_base INTERFACE)
|
||||
target_compile_options(oblib_base INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
if(NOT CPP_STANDARD_20)
|
||||
target_compile_options(oblib_base INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
endif()
|
||||
target_link_libraries(oblib_base INTERFACE oblib_base_base)
|
||||
|
||||
function(oblib_add_library target)
|
||||
|
@ -27,13 +27,6 @@ namespace meta
|
||||
template <typename T>
|
||||
class MetaSerializer
|
||||
{
|
||||
template <typename T2 = T,
|
||||
typename std::enable_if<!OB_TRAIT_SERIALIZEABLE(T2) &&
|
||||
!OB_TRAIT_DEEP_SERIALIZEABLE(T2), bool>::type = true>
|
||||
void requires() {
|
||||
static_assert(!(!OB_TRAIT_SERIALIZEABLE(T2) && !OB_TRAIT_DEEP_SERIALIZEABLE(T2)),
|
||||
"your type is not serializable");
|
||||
}
|
||||
public:
|
||||
MetaSerializer(ObIAllocator &alloc, const T &data)
|
||||
: alloc_(alloc),
|
||||
|
4
deps/oblib/src/lib/CMakeLists.txt
vendored
4
deps/oblib/src/lib/CMakeLists.txt
vendored
@ -436,6 +436,9 @@ if(OB_BUILD_CLOSE_MODULES)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CPP_STANDARD_20)
|
||||
target_compile_options(oblib_lib PUBLIC -D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
endif()
|
||||
target_link_libraries(oblib_lib
|
||||
PUBLIC ob_malloc compress restore
|
||||
${DEP_DIR}/lib/libxml2.a
|
||||
@ -482,7 +485,6 @@ endif()
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
# ATTENTION: add this cpp file as library only if compiled target doesn't need diagnose. like unittest or cdc.
|
||||
add_library(mock_di stat/mock_diagnostic_info.cpp)
|
||||
target_include_directories(mock_di PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/deps/oblib/src)
|
||||
|
@ -162,7 +162,7 @@ public:
|
||||
#endif
|
||||
public:
|
||||
bool force_explict_500_malloc_ = false;
|
||||
bool pl_leaked_times_ = 0;
|
||||
int pl_leaked_times_ = 0;
|
||||
bool force_malloc_for_absent_tenant_ = false;
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(ObMallocAllocator);
|
||||
|
7
deps/oblib/src/lib/compress/CMakeLists.txt
vendored
7
deps/oblib/src/lib/compress/CMakeLists.txt
vendored
@ -23,6 +23,13 @@ oblib_add_library(compress
|
||||
zlib_lite/ob_zlib_lite_compressor.cpp
|
||||
zlib_lite/ob_zlib_lite_compressor.h)
|
||||
|
||||
if (CPP_STANDARD_20)
|
||||
target_compile_options(compress
|
||||
PRIVATE
|
||||
-Wno-deprecated-non-prototype
|
||||
)
|
||||
endif()
|
||||
|
||||
add_subdirectory(zstd)
|
||||
add_subdirectory(zstd_1_3_8)
|
||||
add_subdirectory(lz4)
|
||||
|
@ -22,7 +22,11 @@ add_library(zlib_lite_objs OBJECT
|
||||
add_library(zlib_lite_qpl
|
||||
codec_deflate_qpl.cpp)
|
||||
|
||||
target_compile_options(zlib_lite_objs PRIVATE -fvisibility=hidden)
|
||||
set(ZLIB_LITE_COMPILE_DEFINITIONS -fvisibility=hidden)
|
||||
if (CPP_STANDARD_20)
|
||||
set(ZLIB_LITE_COMPILE_DEFINITIONS ${ZLIB_LITE_COMPILE_DEFINITIONS} -Wno-deprecated-non-prototype)
|
||||
endif()
|
||||
target_compile_options(zlib_lite_objs PRIVATE ${ZLIB_LITE_COMPILE_DEFINITIONS})
|
||||
|
||||
if(${ARCHITECTURE} STREQUAL "x86_64")
|
||||
target_include_directories(zlib_lite_objs PUBLIC "${DEP_DIR}/include/")
|
||||
|
1
deps/oblib/src/lib/restore/CMakeLists.txt
vendored
1
deps/oblib/src/lib/restore/CMakeLists.txt
vendored
@ -1,3 +1,4 @@
|
||||
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
oblib_add_library(restore OBJECT
|
||||
ob_i_storage.h
|
||||
ob_i_storage.cpp
|
||||
|
@ -418,7 +418,7 @@ enum PurgeThrottlingType
|
||||
|
||||
inline const char *purge_throttling_type_2_str(const PurgeThrottlingType type)
|
||||
{
|
||||
#define EXTRACT_PURGE_TYPE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_PURGE_TYPE(type_var) case(type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_PURGE_TYPE(INVALID_PURGE_TYPE);
|
||||
|
@ -90,7 +90,7 @@ enum MetaType {
|
||||
|
||||
inline const char *meta_type_2_str(const MetaType type)
|
||||
{
|
||||
#define EXTRACT_META_TYPE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_META_TYPE(type_var) case(type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_META_TYPE(PREPARE_META);
|
||||
|
@ -37,7 +37,7 @@ enum PushLogType
|
||||
|
||||
inline const char *push_log_type_2_str(const PushLogType type)
|
||||
{
|
||||
#define EXTRACT_PUSH_LOG_TYPE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_PUSH_LOG_TYPE(type_var) case(type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_PUSH_LOG_TYPE(PUSH_LOG);
|
||||
@ -133,7 +133,7 @@ enum FetchLogType
|
||||
|
||||
inline const char *fetch_type_2_str(const FetchLogType type)
|
||||
{
|
||||
#define EXTRACT_FETCH_TYPE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_FETCH_TYPE(type_var) case(type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_FETCH_TYPE(FETCH_LOG_FOLLOWER);
|
||||
|
@ -30,7 +30,7 @@ enum class LogSharedTaskType
|
||||
|
||||
inline const char *shared_type_2_str(const LogSharedTaskType type)
|
||||
{
|
||||
#define EXTRACT_SHARED_TYPE(type_var) ({ case(LogSharedTaskType::type_var): return #type_var; })
|
||||
#define EXTRACT_SHARED_TYPE(type_var) case(LogSharedTaskType::type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_SHARED_TYPE(LogHandleSubmitType);
|
||||
|
@ -69,7 +69,7 @@ enum FetchTriggerType
|
||||
|
||||
inline const char *fetch_trigger_type_2_str(const FetchTriggerType type)
|
||||
{
|
||||
#define EXTRACT_TRIGGER_TYPE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_TRIGGER_TYPE(type_var) case(type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_TRIGGER_TYPE(LOG_LOOP_TH);
|
||||
@ -97,7 +97,7 @@ enum TruncateType
|
||||
|
||||
inline const char *truncate_type_2_str(const TruncateType type)
|
||||
{
|
||||
#define EXTRACT_TRUNCATE_TYPE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_TRUNCATE_TYPE(type_var) case(type_var): return #type_var
|
||||
switch(type)
|
||||
{
|
||||
EXTRACT_TRUNCATE_TYPE(INVALID_TRUNCATE_TYPE);
|
||||
@ -118,7 +118,7 @@ enum FreezeMode
|
||||
|
||||
inline const char *freeze_mode_2_str(const FreezeMode mode)
|
||||
{
|
||||
#define EXTRACT_FREEZE_MODE(type_var) ({ case(type_var): return #type_var; })
|
||||
#define EXTRACT_FREEZE_MODE(type_var) case(type_var): return #type_var
|
||||
switch(mode)
|
||||
{
|
||||
EXTRACT_FREEZE_MODE(PERIOD_FREEZE_MODE);
|
||||
|
@ -20,7 +20,10 @@ message(STATUS "This is SOURCE dir " ${PROJECT_SOURCE_DIR})
|
||||
|
||||
include_directories(${LLVM_INCLUDE_DIRS})
|
||||
add_definitions(${LLVM_DEFINITIONS})
|
||||
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -g -O2 -frtti)
|
||||
if(NOT CPP_STANDARD_20)
|
||||
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
endif()
|
||||
add_definitions(-g -O2 -frtti)
|
||||
|
||||
# Find the libraries that correspond to the LLVM components
|
||||
# that we wish to use
|
||||
|
@ -450,6 +450,12 @@ public:
|
||||
int get_int_value(const ObLLVMType &value, int64_t i, ObLLVMValue &i_value);
|
||||
int get_insert_block(ObLLVMBasicBlock &block);
|
||||
|
||||
#ifdef CPP_STANDARD_20
|
||||
static int64 get_integer_type_id();
|
||||
static int64 get_pointer_type_id();
|
||||
static int64 get_struct_type_id();
|
||||
#endif
|
||||
|
||||
public:
|
||||
core::JitContext *get_jc() { return jc_; }
|
||||
|
||||
|
@ -7,7 +7,9 @@ target_include_directories(objit_base INTERFACE
|
||||
# GLOB all source files according to its suffix.
|
||||
file(GLOB_RECURSE objit_SRC "*.h" "*.cpp" "${CMAKE_CURRENT_SROUCE_DIR}/../include/*.h")
|
||||
|
||||
add_definitions(-std=gnu++14)
|
||||
if(NOT CPP_STANDARD_20)
|
||||
add_definitions(-std=gnu++14)
|
||||
endif()
|
||||
add_library(objit_objects OBJECT ${objit_SRC})
|
||||
target_link_libraries(objit_objects PRIVATE oblib_base_base ob_share objit_base)
|
||||
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include "llvm/ExecutionEngine/RuntimeDyld.h"
|
||||
#include "llvm/ExecutionEngine/Orc/CompileUtils.h"
|
||||
#include "llvm/ExecutionEngine/Orc/IRCompileLayer.h"
|
||||
#include "llvm/ExecutionEngine/Orc/LambdaResolver.h"
|
||||
#include "llvm/IR/DataLayout.h"
|
||||
#include "llvm/IR/Mangler.h"
|
||||
#include "llvm/IR/Verifier.h"
|
||||
@ -43,6 +42,12 @@
|
||||
#include "llvm/Object/ELFObjectFile.h"
|
||||
#include "llvm/ExecutionEngine/SectionMemoryManager.h"
|
||||
|
||||
#ifdef CPP_STANDARD_20
|
||||
#include "llvm/ExecutionEngine/JITSymbol.h"
|
||||
#else
|
||||
#include "llvm/ExecutionEngine/Orc/LambdaResolver.h"
|
||||
#endif
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::orc;
|
||||
using namespace llvm::object;
|
||||
@ -152,7 +157,11 @@ int ObOrcJit::lookup(const std::string &name, ObJITSymbol &symbol)
|
||||
"name", name.c_str(),
|
||||
"msg", msg.c_str());
|
||||
} else {
|
||||
#ifdef CPP_STANDARD_20
|
||||
symbol = JITEvaluatedSymbol(value->getValue(), JITSymbolFlags::Exported);
|
||||
#else
|
||||
symbol = *value;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,7 +197,11 @@ int ObOrcJit::get_function_address(const std::string &name, uint64_t &addr)
|
||||
}
|
||||
|
||||
void ObNotifyLoaded::notifyObjectLoaded(
|
||||
#ifdef CPP_STANDARD_20
|
||||
ObJitEventListener::ObjectKey Key,
|
||||
#else
|
||||
ObVModuleKey Key,
|
||||
#endif
|
||||
const object::ObjectFile &Obj,
|
||||
const RuntimeDyld::LoadedObjectInfo &Info)
|
||||
{
|
||||
@ -249,7 +262,11 @@ int ObOrcJit::set_optimize_level(ObPLOptLevel level)
|
||||
|
||||
if (OB_SUCC(ret) && level == ObPLOptLevel::O0) {
|
||||
auto &tm_builder = ObEngineBuilder.getJITTargetMachineBuilder();
|
||||
#ifdef CPP_STANDARD_20
|
||||
if (!tm_builder.has_value()) {
|
||||
#else
|
||||
if (!tm_builder.hasValue()) {
|
||||
#endif
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("unexpected NULL JITTargetMachineBuilder", K(ret), K(lbt()));
|
||||
} else {
|
||||
|
@ -24,6 +24,10 @@
|
||||
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
|
||||
#include "llvm/ExecutionEngine/JITEventListener.h"
|
||||
#include "llvm/IR/Mangler.h"
|
||||
#ifdef CPP_STANDARD_20
|
||||
#include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
|
||||
#include "llvm/ExecutionEngine/Orc/Shared/ExecutorSymbolDef.h"
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
|
||||
@ -70,16 +74,21 @@ static inline int ob_jit_make_unique(std::unique_ptr<T> &ptr, Args&&... args) {
|
||||
|
||||
namespace core {
|
||||
using namespace llvm;
|
||||
using namespace llvm::orc;
|
||||
|
||||
typedef ::llvm::LLVMContext ObLLVMContext;
|
||||
typedef ::llvm::orc::ExecutionSession ObExecutionSession;
|
||||
typedef ::llvm::orc::SymbolResolver ObSymbolResolver;
|
||||
typedef ::llvm::TargetMachine ObTargetMachine;
|
||||
typedef ::llvm::DataLayout ObDataLayout;
|
||||
typedef ::llvm::orc::VModuleKey ObVModuleKey;
|
||||
typedef ::llvm::JITSymbol ObJITSymbol;
|
||||
typedef ::llvm::orc::JITDylib::DefinitionGenerator ObJitDefinitionGenerator;
|
||||
typedef ::llvm::JITEventListener ObJitEventListener;
|
||||
#ifdef CPP_STANDARD_20
|
||||
typedef ::llvm::orc::DefinitionGenerator ObJitDefinitionGenerator;
|
||||
#else
|
||||
typedef ::llvm::orc::SymbolResolver ObSymbolResolver;
|
||||
typedef ::llvm::orc::VModuleKey ObVModuleKey;
|
||||
typedef ::llvm::orc::JITDylib::DefinitionGenerator ObJitDefinitionGenerator;
|
||||
#endif
|
||||
|
||||
class ObNotifyLoaded: public ObJitEventListener
|
||||
{
|
||||
@ -89,9 +98,16 @@ public:
|
||||
: Allocator(Allocator), DebugBuf(DebugBuf), DebugLen(DebugLen), SoObject(SoObject) {}
|
||||
virtual ~ObNotifyLoaded() {}
|
||||
|
||||
#ifdef CPP_STANDARD_20
|
||||
void notifyObjectLoaded(ObJitEventListener::ObjectKey Key,
|
||||
const object::ObjectFile &Obj,
|
||||
const RuntimeDyld::LoadedObjectInfo &Info) override;
|
||||
#else
|
||||
void notifyObjectLoaded(ObVModuleKey Key,
|
||||
const object::ObjectFile &Obj,
|
||||
const RuntimeDyld::LoadedObjectInfo &Info) override;
|
||||
const object::ObjectFile &Obj,
|
||||
const RuntimeDyld::LoadedObjectInfo &Info) override;
|
||||
#endif
|
||||
|
||||
private:
|
||||
common::ObIAllocator &Allocator;
|
||||
char* &DebugBuf;
|
||||
@ -101,7 +117,12 @@ private:
|
||||
|
||||
class ObJitGlobalSymbolGenerator: public ObJitDefinitionGenerator {
|
||||
public:
|
||||
#ifdef CPP_STANDARD_20
|
||||
Error tryToGenerate(orc::LookupState &LS,
|
||||
orc::LookupKind K,
|
||||
#else
|
||||
Error tryToGenerate(orc::LookupKind K,
|
||||
#endif
|
||||
orc::JITDylib &JD,
|
||||
orc::JITDylibLookupFlags JDLookupFlags,
|
||||
const orc::SymbolLookupSet &LookupSet) override
|
||||
@ -111,7 +132,11 @@ public:
|
||||
|
||||
if (res != symbol_table.end()) {
|
||||
Error err = JD.define(orc::absoluteSymbols(
|
||||
#ifdef CPP_STANDARD_20
|
||||
{{sym.first, ExecutorSymbolDef(ExecutorAddr(res->second), {})}}));
|
||||
#else
|
||||
{{sym.first, JITEvaluatedSymbol(res->second, {})}}));
|
||||
#endif
|
||||
|
||||
if (err) {
|
||||
StringRef name = *sym.first;
|
||||
|
@ -86,8 +86,13 @@ int ObIRObj::set_obj(core::JitContext &jc, const ObIRValuePtr obj, ObObjType typ
|
||||
case ObVarcharType: {
|
||||
ObIRValuePtr len_indices[] = {get_const(jc.get_context(), 32, 0),
|
||||
get_const(jc.get_context(), 32, OBJ_IDX_VAL_LEN)};
|
||||
#ifdef CPP_STANDARD_20
|
||||
ObIRValuePtr str_len_p = jc.get_builder().CreateGEP(ObIRType::getInt64Ty(jc.get_context()), obj, makeArrayRef(len_indices));
|
||||
val_len_ = jc.get_builder().CreateLoad(ObIRType::getInt64Ty(jc.get_context()),str_len_p);
|
||||
#else
|
||||
ObIRValuePtr str_len_p = jc.get_builder().CreateGEP(obj, makeArrayRef(len_indices));
|
||||
val_len_ = jc.get_builder().CreateLoad(str_len_p);
|
||||
#endif
|
||||
//ptr
|
||||
} break;
|
||||
default: {
|
||||
@ -118,11 +123,17 @@ ObIRValuePtr ObIRObj::get_ir_value_element(core::JitContext &jc,
|
||||
ObIRValuePtr ret = NULL;
|
||||
ObIRValuePtr indices[] = {get_const(jc.get_context(), 32, 0),
|
||||
get_const(jc.get_context(), 32, idx)};
|
||||
#ifdef CPP_STANDARD_20
|
||||
ObIRValuePtr value_p = jc.get_builder().CreateGEP(ObIRType::getInt64Ty(jc.get_context()), obj,
|
||||
makeArrayRef(indices),
|
||||
"obj_elem_p");
|
||||
ret = jc.get_builder().CreateLoad(ObIRType::getInt64Ty(jc.get_context()), value_p, "value_elem");
|
||||
#else
|
||||
ObIRValuePtr value_p = jc.get_builder().CreateGEP(obj,
|
||||
makeArrayRef(indices),
|
||||
"obj_elem_p");
|
||||
ret = jc.get_builder().CreateLoad(value_p, "value_elem");
|
||||
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,7 @@ typedef ::llvm::DIExpression ObDIExpression;
|
||||
typedef ::llvm::DebugLoc ObDebugLoc;
|
||||
typedef ::llvm::DIType ObDIType;
|
||||
typedef ::llvm::DISubroutineType ObDISubroutineType;
|
||||
typedef ::llvm::DILocation ObDILocation;
|
||||
|
||||
/*static ObIRType *get_ir_type(ObLLVMContext &ctx,*/
|
||||
//const ::oceanbase::common::ObObjType &type)
|
||||
|
@ -10,9 +10,9 @@
|
||||
* See the Mulan PubL v2 for more details.
|
||||
*/
|
||||
|
||||
#define USING_LOG_PREFIX PL
|
||||
|
||||
//#include "objit/ob_llvm_helper.h"
|
||||
#define USING_LOG_PREFIX PL
|
||||
|
||||
//#include "objit/ob_llvm_helper.h"
|
||||
#include "core/jit_context.h"
|
||||
#include "core/jit_di_context.h"
|
||||
#include "lib/oblog/ob_log_module.h"
|
||||
@ -185,15 +185,21 @@ int ObLLVMDIHelper::insert_declare(ObLLVMValue &storage, ObLLVMDILocalVariable &
|
||||
|| OB_ISNULL(variable.get_v()) || OB_ISNULL(block.get_v())) {
|
||||
ret = OB_NOT_INIT;
|
||||
LOG_WARN("jc or sp or storage or variable or block is NULL", K(ret));
|
||||
} else if (OB_ISNULL(expr = jc_->dbuilder_.createExpression())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to create expression", K(ret));
|
||||
} else if (OB_ISNULL(jc_->dbuilder_.insertDeclare(storage.get_v(), variable.get_v(),
|
||||
expr, ObDebugLoc::get(line, 0, sp),
|
||||
block.get_v()))) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to insert declare", K(ret));
|
||||
}
|
||||
} else if (OB_ISNULL(expr = jc_->dbuilder_.createExpression())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to create expression", K(ret));
|
||||
#ifdef CPP_STANDARD_20
|
||||
} else if (OB_ISNULL(jc_->dbuilder_.insertDeclare(storage.get_v(), variable.get_v(),
|
||||
expr, ObDILocation::get(sp->getContext(), line, 0, sp),
|
||||
block.get_v()))) {
|
||||
#else
|
||||
} else if (OB_ISNULL(jc_->dbuilder_.insertDeclare(storage.get_v(), variable.get_v(),
|
||||
expr, ObDebugLoc::get(line, 0, sp),
|
||||
block.get_v()))) {
|
||||
#endif
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to insert declare", K(ret));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1018,7 +1018,11 @@ int ObLLVMHelper::create_load(const ObString &name, ObLLVMValue &ptr, ObLLVMValu
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("value is NULL", K(name), K(ptr), K(ret));
|
||||
} else {
|
||||
#ifdef CPP_STANDARD_20
|
||||
llvm::Value *value = jc_->get_builder().CreateLoad(ObIRType::getInt64Ty(jc_->get_context()), ptr.get_v(), make_string_ref(name));
|
||||
#else
|
||||
llvm::Value *value = jc_->get_builder().CreateLoad(ptr.get_v(), make_string_ref(name));
|
||||
#endif
|
||||
if (OB_ISNULL(value)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to create load", K(ret));
|
||||
@ -1055,6 +1059,18 @@ int ObLLVMHelper::create_istore(int64_t i, ObLLVMValue &dest)
|
||||
} else if (OB_ISNULL(dest.get_v())) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("value is NULL", K(i), K(dest), K(ret));
|
||||
#ifdef CPP_STANDARD_20
|
||||
} else if (llvm::Type::PointerTyID != dest.get_type_id()
|
||||
|| 0 == dest.get_type().get_num_child()
|
||||
|| 1 != dest.get_type().get_num_child()
|
||||
|| llvm::Type::IntegerTyID != dest.get_type().get_child(0).get_id()) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("dest type is not integer pointer ",
|
||||
K(i),
|
||||
K(dest.get_type_id()),
|
||||
K(dest.get_type().get_num_child()),
|
||||
K(ret));
|
||||
#else
|
||||
} else if (llvm::Type::PointerTyID != dest.get_type_id()
|
||||
|| 1 != dest.get_type().get_num_child()
|
||||
|| llvm::Type::IntegerTyID != dest.get_type().get_child(0).get_id()) {
|
||||
@ -1065,6 +1081,7 @@ int ObLLVMHelper::create_istore(int64_t i, ObLLVMValue &dest)
|
||||
K(dest.get_type().get_num_child()),
|
||||
K(dest.get_type().get_child(0).get_id()),
|
||||
K(ret));
|
||||
#endif
|
||||
} else {
|
||||
ObLLVMValue value;
|
||||
if (OB_FAIL(get_int_value(dest.get_type().get_child(0), i, value))) {
|
||||
@ -1402,7 +1419,11 @@ int ObLLVMHelper::create_gep(const ObString &name, ObLLVMValue &value, ObIArray<
|
||||
} else { /*do nothing*/ }
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
#ifdef CPP_STANDARD_20
|
||||
llvm::Value *elem = jc_->get_builder().CreateGEP(ObIRType::getInt64Ty(jc_->get_context()), value.get_v(), make_array_ref(array), make_string_ref(name));
|
||||
#else
|
||||
llvm::Value *elem = jc_->get_builder().CreateGEP(value.get_v(), make_array_ref(array), make_string_ref(name));
|
||||
#endif
|
||||
if (OB_ISNULL(elem)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to create gep", K(ret));
|
||||
@ -1445,7 +1466,11 @@ int ObLLVMHelper::create_gep(const ObString &name, ObLLVMValue &value, ObLLVMVal
|
||||
} else if (OB_FAIL(array.push_back(idx.get_v()))) {
|
||||
LOG_WARN("push_back error", K(ret));
|
||||
} else {
|
||||
#ifdef CPP_STANDARD_20
|
||||
llvm::Value *elem = jc_->get_builder().CreateGEP(ObIRType::getInt64Ty(jc_->get_context()), value.get_v(), make_array_ref(array), make_string_ref(name));
|
||||
#else
|
||||
llvm::Value *elem = jc_->get_builder().CreateGEP(value.get_v(), make_array_ref(array), make_string_ref(name));
|
||||
#endif
|
||||
if (OB_ISNULL(elem)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to create gep", K(ret));
|
||||
@ -1467,7 +1492,11 @@ int ObLLVMHelper::create_const_gep1_64(const ObString &name, ObLLVMValue &value,
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
LOG_WARN("value is NULL", K(name), K(value), K(idx), K(ret));
|
||||
} else {
|
||||
#ifdef CPP_STANDARD_20
|
||||
llvm::Value *elem = jc_->get_builder().CreateConstGEP1_64(ObIRType::getInt64Ty(jc_->get_context()), value.get_v(), idx, make_string_ref(name));
|
||||
#else
|
||||
llvm::Value *elem = jc_->get_builder().CreateConstGEP1_64(value.get_v(), idx, make_string_ref(name));
|
||||
#endif
|
||||
if (OB_ISNULL(elem)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("failed to create const gep164", K(ret));
|
||||
@ -1680,7 +1709,11 @@ int ObLLVMHelper::set_debug_location(uint32_t line, uint32_t col, ObLLVMDIScope
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("scope is NULL", K(ret));
|
||||
} else {
|
||||
#ifdef CPP_STANDARD_20
|
||||
jc_->get_builder().SetCurrentDebugLocation(ObDILocation::get(scope->get_v()->getContext(), line, col, scope->get_v()));
|
||||
#else
|
||||
jc_->get_builder().SetCurrentDebugLocation(ObDebugLoc::get(line, col, scope->get_v()));
|
||||
#endif
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -2277,5 +2310,22 @@ const ObString& ObLLVMHelper::get_compiled_object()
|
||||
return jit_->get_compiled_object();
|
||||
}
|
||||
|
||||
#ifdef CPP_STANDARD_20
|
||||
int64 ObLLVMHelper::get_integer_type_id()
|
||||
{
|
||||
return ::llvm::Type::IntegerTyID;
|
||||
}
|
||||
|
||||
int64 ObLLVMHelper::get_pointer_type_id()
|
||||
{
|
||||
return ::llvm::Type::PointerTyID;
|
||||
}
|
||||
|
||||
int64 ObLLVMHelper::get_struct_type_id()
|
||||
{
|
||||
return ::llvm::Type::StructTyID;
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace jit
|
||||
} // namespace oceanbase
|
||||
|
@ -32,7 +32,7 @@ typename std::enable_if<std::is_pointer<T>::value, int>::type mtl_new_default(T
|
||||
}
|
||||
|
||||
template<class T>
|
||||
typename std::enable_if<!std::is_pointer<T>::value, int>::type mtl_new_default(T)
|
||||
typename std::enable_if<!std::is_pointer<T>::value, int>::type mtl_new_default(T &m)
|
||||
{
|
||||
return oceanbase::common::OB_SUCCESS;
|
||||
}
|
||||
|
@ -6175,7 +6175,11 @@ int ObPLCodeGenerator::generate_debug(const ObString &name, ObLLVMValue &value)
|
||||
OZ (args.push_back(str));
|
||||
OZ (args.push_back(len));
|
||||
OZ (args.push_back(value));
|
||||
#ifdef CPP_STANDARD_20
|
||||
if (helper_.get_integer_type_id() == value.get_type_id()) {
|
||||
#else
|
||||
if (12 == value.get_type_id()) { //12 is IntegerTyID
|
||||
#endif
|
||||
switch (value.get_type().get_width()) {
|
||||
case 8: {
|
||||
OZ (helper_.create_call(ObString("debug"), get_eh_service().eh_debug_int8_, args));
|
||||
@ -6195,7 +6199,11 @@ int ObPLCodeGenerator::generate_debug(const ObString &name, ObLLVMValue &value)
|
||||
}
|
||||
break;
|
||||
}
|
||||
#ifdef CPP_STANDARD_20
|
||||
} else if (helper_.get_pointer_type_id() == value.get_type_id() && helper_.get_integer_type_id() == value.get_type().get_child(0).get_id()) {
|
||||
#else
|
||||
} else if (14 == value.get_type_id() && 12 == value.get_type().get_child(0).get_id()) { //14 is PointerTyID
|
||||
#endif
|
||||
switch (value.get_type().get_child(0).get_width()) {
|
||||
case 8: {
|
||||
OZ (helper_.create_call(ObString("debug"), get_eh_service().eh_debug_int8ptr_, args));
|
||||
@ -6215,7 +6223,11 @@ int ObPLCodeGenerator::generate_debug(const ObString &name, ObLLVMValue &value)
|
||||
}
|
||||
break;
|
||||
}
|
||||
#ifdef CPP_STANDARD_20
|
||||
} else if (helper_.get_pointer_type_id() == value.get_type_id() && helper_.get_struct_type_id() == value.get_type().get_child(0).get_id()) {
|
||||
#else
|
||||
} else if (14 == value.get_type_id() && 15 == value.get_type().get_child(0).get_id()) { //14 is PointerTyID, 15 is StructTyID
|
||||
#endif
|
||||
ObLLVMType obj_type;
|
||||
ObLLVMType objparam_type;
|
||||
OZ (adt_service_.get_obj(obj_type));
|
||||
|
@ -613,7 +613,7 @@ _Unwind_Reason_Code ObPLEH::eh_personality(int version, _Unwind_Action actions,
|
||||
ObUnwindException *exceptionObject,
|
||||
struct _Unwind_Context *context)
|
||||
{
|
||||
const uint8_t *lsda = static_cast<const uint8_t *>(_Unwind_GetLanguageSpecificData(context));
|
||||
const uint8_t *lsda = reinterpret_cast<const uint8_t *>(_Unwind_GetLanguageSpecificData(context));
|
||||
LOG_DEBUG(">>>>>>>>>>0", K(version), K(actions), K(exceptionClass), K(lsda));
|
||||
return handleLsda(version, lsda, actions, exceptionClass, exceptionObject, context);
|
||||
}
|
||||
|
@ -15,7 +15,11 @@
|
||||
|
||||
#include "ob_pl_stmt.h"
|
||||
|
||||
#ifdef CPP_STANDARD_20
|
||||
#include "lib/clang/17/include/unwind.h"
|
||||
#else
|
||||
#include "lib/clang/11.0.1/include/unwind.h"
|
||||
#endif
|
||||
|
||||
namespace oceanbase
|
||||
{
|
||||
|
@ -18993,7 +18993,7 @@ int ObDDLService::truncate_table_in_trans(const obrpc::ObTruncateTableArg &arg,
|
||||
}
|
||||
|
||||
bool is_truncate_table = false;
|
||||
bool recycle_cnt = 0;
|
||||
int recycle_cnt = 0;
|
||||
for (int64_t i = 0; i < table_schemas.count() && OB_SUCC(ret); i++) {
|
||||
if (0 == i) {
|
||||
is_truncate_table = true; //record create table with opertion type TRUNCATE_TABLE_CREATE
|
||||
|
@ -135,7 +135,7 @@ struct ObDatumTCCmp<ObFloatTC, ObFloatTC> : public ObDefined<>
|
||||
template <ObScale SCALE>
|
||||
struct ObFixedDoubleCmp: public ObDefined<>
|
||||
{
|
||||
constexpr static double LOG_10[] =
|
||||
constexpr static double LOG_10[32] =
|
||||
{
|
||||
1e000, 1e001, 1e002, 1e003, 1e004, 1e005, 1e006, 1e007,
|
||||
1e008, 1e009, 1e010, 1e011, 1e012, 1e013, 1e014, 1e015,
|
||||
|
@ -1490,6 +1490,9 @@ ob_set_subtarget(ob_sql udr
|
||||
udr/ob_udr_utils.cpp
|
||||
)
|
||||
|
||||
if(CPP_STANDARD_20)
|
||||
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
|
||||
endif()
|
||||
ob_add_new_object_target(ob_sql ob_sql)
|
||||
|
||||
ob_set_subtarget(ob_sql_simd common
|
||||
|
Loading…
x
Reference in New Issue
Block a user