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

Commitaa34bc4

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 parent44efd34 commitaa34bc4

File tree

4 files changed

+111
-0
lines changed

4 files changed

+111
-0
lines changed

‎configure

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

69606960

6961+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Xclang -no-opaque-pointers, for BITCODE_CFLAGS" >&5
6962+
$as_echo_n "checking whether ${CLANG} supports -Xclang -no-opaque-pointers, for BITCODE_CFLAGS... " >&6; }
6963+
if ${pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers+:} false; then :
6964+
$as_echo_n "(cached) " >&6
6965+
else
6966+
pgac_save_CFLAGS=$CFLAGS
6967+
pgac_save_CC=$CC
6968+
CC=${CLANG}
6969+
CFLAGS="${BITCODE_CFLAGS} -Xclang -no-opaque-pointers"
6970+
ac_save_c_werror_flag=$ac_c_werror_flag
6971+
ac_c_werror_flag=yes
6972+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6973+
/* end confdefs.h. */
6974+
6975+
int
6976+
main ()
6977+
{
6978+
6979+
;
6980+
return 0;
6981+
}
6982+
_ACEOF
6983+
if ac_fn_c_try_compile "$LINENO"; then :
6984+
pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers=yes
6985+
else
6986+
pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers=no
6987+
fi
6988+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6989+
ac_c_werror_flag=$ac_save_c_werror_flag
6990+
CFLAGS="$pgac_save_CFLAGS"
6991+
CC="$pgac_save_CC"
6992+
fi
6993+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" >&5
6994+
$as_echo "$pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" >&6; }
6995+
if test x"$pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" = x"yes"; then
6996+
BITCODE_CFLAGS="${BITCODE_CFLAGS} -Xclang -no-opaque-pointers"
6997+
fi
6998+
6999+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANGXX} supports -Xclang -no-opaque-pointers, for BITCODE_CXXFLAGS" >&5
7000+
$as_echo_n "checking whether ${CLANGXX} supports -Xclang -no-opaque-pointers, for BITCODE_CXXFLAGS... " >&6; }
7001+
if ${pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers+:} false; then :
7002+
$as_echo_n "(cached) " >&6
7003+
else
7004+
pgac_save_CXXFLAGS=$CXXFLAGS
7005+
pgac_save_CXX=$CXX
7006+
CXX=${CLANGXX}
7007+
CXXFLAGS="${BITCODE_CXXFLAGS} -Xclang -no-opaque-pointers"
7008+
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
7009+
ac_cxx_werror_flag=yes
7010+
ac_ext=cpp
7011+
ac_cpp='$CXXCPP $CPPFLAGS'
7012+
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7013+
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7014+
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
7015+
7016+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7017+
/* end confdefs.h. */
7018+
7019+
int
7020+
main ()
7021+
{
7022+
7023+
;
7024+
return 0;
7025+
}
7026+
_ACEOF
7027+
if ac_fn_cxx_try_compile "$LINENO"; then :
7028+
pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers=yes
7029+
else
7030+
pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers=no
7031+
fi
7032+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7033+
ac_ext=c
7034+
ac_cpp='$CPP $CPPFLAGS'
7035+
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7036+
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7037+
ac_compiler_gnu=$ac_cv_c_compiler_gnu
7038+
7039+
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
7040+
CXXFLAGS="$pgac_save_CXXFLAGS"
7041+
CXX="$pgac_save_CXX"
7042+
fi
7043+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" >&5
7044+
$as_echo "$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" >&6; }
7045+
if test x"$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" = x"yes"; then
7046+
BITCODE_CXXFLAGS="${BITCODE_CXXFLAGS} -Xclang -no-opaque-pointers"
7047+
fi
7048+
7049+
69617050
NOT_THE_CFLAGS=""
69627051
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS" >&5
69637052
$as_echo_n "checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS... " >&6; }

‎configure.in

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

587+
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS, [-Xclang -no-opaque-pointers])
588+
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS, [-Xclang -no-opaque-pointers])
589+
587590
NOT_THE_CFLAGS=""
588591
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wunused-command-line-argument])
589592
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
@@ -763,6 +763,16 @@ llvm_session_initialize(void)
763763
LLVMInitializeNativeAsmPrinter();
764764
LLVMInitializeNativeAsmParser();
765765

766+
/*
767+
* When targeting an LLVM version with opaque pointers enabled by
768+
* default, turn them off for the context we build our code in. We don't
769+
* need to do so for other contexts (e.g. llvm_ts_context). Once the IR is
770+
* generated, it carries the necessary information.
771+
*/
772+
#ifLLVM_VERSION_MAJOR>14
773+
LLVMContextSetOpaquePointers(LLVMGetGlobalContext(), false);
774+
#endif
775+
766776
/*
767777
* Synchronize types early, as that also includes inferring the target
768778
* triple.
@@ -1114,7 +1124,11 @@ llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx,
11141124
LLVMOrcJITDylibRefJD,LLVMOrcJITDylibLookupFlagsJDLookupFlags,
11151125
LLVMOrcCLookupSetLookupSet,size_tLookupSetSize)
11161126
{
1127+
#ifLLVM_VERSION_MAJOR>14
1128+
LLVMOrcCSymbolMapPairssymbols=palloc0(sizeof(LLVMOrcCSymbolMapPair)*LookupSetSize);
1129+
#else
11171130
LLVMOrcCSymbolMapPairssymbols=palloc0(sizeof(LLVMJITCSymbolMapPair)*LookupSetSize);
1131+
#endif
11181132
LLVMErrorReferror;
11191133
LLVMOrcMaterializationUnitRefmu;
11201134

@@ -1232,7 +1246,11 @@ llvm_create_jit_instance(LLVMTargetMachineRef tm)
12321246
* Symbol resolution support for "special" functions, e.g. a call into an
12331247
* SQL callable function.
12341248
*/
1249+
#ifLLVM_VERSION_MAJOR>14
1250+
ref_gen=LLVMOrcCreateCustomCAPIDefinitionGenerator(llvm_resolve_symbols,NULL,NULL);
1251+
#else
12351252
ref_gen=LLVMOrcCreateCustomCAPIDefinitionGenerator(llvm_resolve_symbols,NULL);
1253+
#endif
12361254
LLVMOrcJITDylibAddGenerator(LLVMOrcLLJITGetMainJITDylib(lljit),ref_gen);
12371255

12381256
returnlljit;

‎src/backend/jit/llvm/llvmjit_inline.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ extern "C"
6262
#include<llvm/IR/ModuleSummaryIndex.h>
6363
#include<llvm/Linker/IRMover.h>
6464
#include<llvm/Support/ManagedStatic.h>
65+
#include<llvm/Support/MemoryBuffer.h>
6566

6667

6768
/*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp