Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitaf64846

Browse files
committed
Track LLVM 15 changes.
Perhttps://llvm.org/docs/OpaquePointers.html, support for non-opaquepointers still exists and we can request that on our context. We haveuntil LLVM 16 to move to opaque pointers, a much larger change.Back-patch to 11, where LLVM support arrived.Author: Thomas Munro <thomas.munro@gmail.com>Author: Andres Freund <andres@anarazel.de>Discussion:https://postgr.es/m/CAMHz58Sf_xncdyqsekoVsNeKcruKootLtVH6cYXVhhUR1oKPCg%40mail.gmail.com
1 parent5d2a47a commitaf64846

File tree

3 files changed

+110
-0
lines changed

3 files changed

+110
-0
lines changed

‎configure

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7274,6 +7274,95 @@ if test x"$pgac_cv_prog_CLANGXX_cxxflags__fexcess_precision_standard" = x"yes";
72747274
fi
72757275

72767276

7277+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Xclang -no-opaque-pointers, for BITCODE_CFLAGS" >&5
7278+
$as_echo_n "checking whether ${CLANG} supports -Xclang -no-opaque-pointers, for BITCODE_CFLAGS... " >&6; }
7279+
if ${pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers+:} false; then :
7280+
$as_echo_n "(cached) " >&6
7281+
else
7282+
pgac_save_CFLAGS=$CFLAGS
7283+
pgac_save_CC=$CC
7284+
CC=${CLANG}
7285+
CFLAGS="${BITCODE_CFLAGS} -Xclang -no-opaque-pointers"
7286+
ac_save_c_werror_flag=$ac_c_werror_flag
7287+
ac_c_werror_flag=yes
7288+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7289+
/* end confdefs.h. */
7290+
7291+
int
7292+
main ()
7293+
{
7294+
7295+
;
7296+
return 0;
7297+
}
7298+
_ACEOF
7299+
if ac_fn_c_try_compile "$LINENO"; then :
7300+
pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers=yes
7301+
else
7302+
pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers=no
7303+
fi
7304+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7305+
ac_c_werror_flag=$ac_save_c_werror_flag
7306+
CFLAGS="$pgac_save_CFLAGS"
7307+
CC="$pgac_save_CC"
7308+
fi
7309+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" >&5
7310+
$as_echo "$pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" >&6; }
7311+
if test x"$pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" = x"yes"; then
7312+
BITCODE_CFLAGS="${BITCODE_CFLAGS} -Xclang -no-opaque-pointers"
7313+
fi
7314+
7315+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANGXX} supports -Xclang -no-opaque-pointers, for BITCODE_CXXFLAGS" >&5
7316+
$as_echo_n "checking whether ${CLANGXX} supports -Xclang -no-opaque-pointers, for BITCODE_CXXFLAGS... " >&6; }
7317+
if ${pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers+:} false; then :
7318+
$as_echo_n "(cached) " >&6
7319+
else
7320+
pgac_save_CXXFLAGS=$CXXFLAGS
7321+
pgac_save_CXX=$CXX
7322+
CXX=${CLANGXX}
7323+
CXXFLAGS="${BITCODE_CXXFLAGS} -Xclang -no-opaque-pointers"
7324+
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
7325+
ac_cxx_werror_flag=yes
7326+
ac_ext=cpp
7327+
ac_cpp='$CXXCPP $CPPFLAGS'
7328+
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7329+
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7330+
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
7331+
7332+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7333+
/* end confdefs.h. */
7334+
7335+
int
7336+
main ()
7337+
{
7338+
7339+
;
7340+
return 0;
7341+
}
7342+
_ACEOF
7343+
if ac_fn_cxx_try_compile "$LINENO"; then :
7344+
pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers=yes
7345+
else
7346+
pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers=no
7347+
fi
7348+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7349+
ac_ext=c
7350+
ac_cpp='$CPP $CPPFLAGS'
7351+
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7352+
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7353+
ac_compiler_gnu=$ac_cv_c_compiler_gnu
7354+
7355+
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
7356+
CXXFLAGS="$pgac_save_CXXFLAGS"
7357+
CXX="$pgac_save_CXX"
7358+
fi
7359+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" >&5
7360+
$as_echo "$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" >&6; }
7361+
if test x"$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" = x"yes"; then
7362+
BITCODE_CXXFLAGS="${BITCODE_CXXFLAGS} -Xclang -no-opaque-pointers"
7363+
fi
7364+
7365+
72777366
NOT_THE_CFLAGS=""
72787367
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS" >&5
72797368
$as_echo_n "checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS... " >&6; }

‎configure.ac

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,9 @@ if test "$with_llvm" = yes ; then
603603
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS,[-fexcess-precision=standard])
604604
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS,[-fexcess-precision=standard])
605605

606+
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS,[-Xclang -no-opaque-pointers])
607+
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS,[-Xclang -no-opaque-pointers])
608+
606609
NOT_THE_CFLAGS=""
607610
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS,[-Wunused-command-line-argument])
608611
if test -n "$NOT_THE_CFLAGS"; then

‎src/backend/jit/llvm/llvmjit.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,16 @@ llvm_session_initialize(void)
798798
LLVMInitializeNativeAsmPrinter();
799799
LLVMInitializeNativeAsmParser();
800800

801+
/*
802+
* When targeting an LLVM version with opaque pointers enabled by
803+
* default, turn them off for the context we build our code in. We don't
804+
* need to do so for other contexts (e.g. llvm_ts_context). Once the IR is
805+
* generated, it carries the necessary information.
806+
*/
807+
#ifLLVM_VERSION_MAJOR>14
808+
LLVMContextSetOpaquePointers(LLVMGetGlobalContext(), false);
809+
#endif
810+
801811
/*
802812
* Synchronize types early, as that also includes inferring the target
803813
* triple.
@@ -1112,7 +1122,11 @@ llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx,
11121122
LLVMOrcJITDylibRefJD,LLVMOrcJITDylibLookupFlagsJDLookupFlags,
11131123
LLVMOrcCLookupSetLookupSet,size_tLookupSetSize)
11141124
{
1125+
#ifLLVM_VERSION_MAJOR>14
1126+
LLVMOrcCSymbolMapPairssymbols=palloc0(sizeof(LLVMOrcCSymbolMapPair)*LookupSetSize);
1127+
#else
11151128
LLVMOrcCSymbolMapPairssymbols=palloc0(sizeof(LLVMJITCSymbolMapPair)*LookupSetSize);
1129+
#endif
11161130
LLVMErrorReferror;
11171131
LLVMOrcMaterializationUnitRefmu;
11181132

@@ -1230,7 +1244,11 @@ llvm_create_jit_instance(LLVMTargetMachineRef tm)
12301244
* Symbol resolution support for "special" functions, e.g. a call into an
12311245
* SQL callable function.
12321246
*/
1247+
#ifLLVM_VERSION_MAJOR>14
1248+
ref_gen=LLVMOrcCreateCustomCAPIDefinitionGenerator(llvm_resolve_symbols,NULL,NULL);
1249+
#else
12331250
ref_gen=LLVMOrcCreateCustomCAPIDefinitionGenerator(llvm_resolve_symbols,NULL);
1251+
#endif
12341252
LLVMOrcJITDylibAddGenerator(LLVMOrcLLJITGetMainJITDylib(lljit),ref_gen);
12351253

12361254
returnlljit;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp