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

Commitcf94cb5

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 parent9f49b15 commitcf94cb5

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
@@ -7060,6 +7060,95 @@ if test x"$pgac_cv_prog_CLANGXX_cxxflags__fexcess_precision_standard" = x"yes";
70607060
fi
70617061

70627062

7063+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Xclang -no-opaque-pointers, for BITCODE_CFLAGS" >&5
7064+
$as_echo_n "checking whether ${CLANG} supports -Xclang -no-opaque-pointers, for BITCODE_CFLAGS... " >&6; }
7065+
if ${pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers+:} false; then :
7066+
$as_echo_n "(cached) " >&6
7067+
else
7068+
pgac_save_CFLAGS=$CFLAGS
7069+
pgac_save_CC=$CC
7070+
CC=${CLANG}
7071+
CFLAGS="${BITCODE_CFLAGS} -Xclang -no-opaque-pointers"
7072+
ac_save_c_werror_flag=$ac_c_werror_flag
7073+
ac_c_werror_flag=yes
7074+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7075+
/* end confdefs.h. */
7076+
7077+
int
7078+
main ()
7079+
{
7080+
7081+
;
7082+
return 0;
7083+
}
7084+
_ACEOF
7085+
if ac_fn_c_try_compile "$LINENO"; then :
7086+
pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers=yes
7087+
else
7088+
pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers=no
7089+
fi
7090+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7091+
ac_c_werror_flag=$ac_save_c_werror_flag
7092+
CFLAGS="$pgac_save_CFLAGS"
7093+
CC="$pgac_save_CC"
7094+
fi
7095+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" >&5
7096+
$as_echo "$pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" >&6; }
7097+
if test x"$pgac_cv_prog_CLANG_cflags__Xclang__no_opaque_pointers" = x"yes"; then
7098+
BITCODE_CFLAGS="${BITCODE_CFLAGS} -Xclang -no-opaque-pointers"
7099+
fi
7100+
7101+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANGXX} supports -Xclang -no-opaque-pointers, for BITCODE_CXXFLAGS" >&5
7102+
$as_echo_n "checking whether ${CLANGXX} supports -Xclang -no-opaque-pointers, for BITCODE_CXXFLAGS... " >&6; }
7103+
if ${pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers+:} false; then :
7104+
$as_echo_n "(cached) " >&6
7105+
else
7106+
pgac_save_CXXFLAGS=$CXXFLAGS
7107+
pgac_save_CXX=$CXX
7108+
CXX=${CLANGXX}
7109+
CXXFLAGS="${BITCODE_CXXFLAGS} -Xclang -no-opaque-pointers"
7110+
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
7111+
ac_cxx_werror_flag=yes
7112+
ac_ext=cpp
7113+
ac_cpp='$CXXCPP $CPPFLAGS'
7114+
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7115+
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7116+
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
7117+
7118+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7119+
/* end confdefs.h. */
7120+
7121+
int
7122+
main ()
7123+
{
7124+
7125+
;
7126+
return 0;
7127+
}
7128+
_ACEOF
7129+
if ac_fn_cxx_try_compile "$LINENO"; then :
7130+
pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers=yes
7131+
else
7132+
pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers=no
7133+
fi
7134+
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7135+
ac_ext=c
7136+
ac_cpp='$CPP $CPPFLAGS'
7137+
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7138+
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7139+
ac_compiler_gnu=$ac_cv_c_compiler_gnu
7140+
7141+
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
7142+
CXXFLAGS="$pgac_save_CXXFLAGS"
7143+
CXX="$pgac_save_CXX"
7144+
fi
7145+
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" >&5
7146+
$as_echo "$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" >&6; }
7147+
if test x"$pgac_cv_prog_CLANGXX_cxxflags__Xclang__no_opaque_pointers" = x"yes"; then
7148+
BITCODE_CXXFLAGS="${BITCODE_CXXFLAGS} -Xclang -no-opaque-pointers"
7149+
fi
7150+
7151+
70637152
NOT_THE_CFLAGS=""
70647153
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CLANG} supports -Wunused-command-line-argument, for NOT_THE_CFLAGS" >&5
70657154
$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
@@ -590,6 +590,9 @@ if test "$with_llvm" = yes ; then
590590
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS, [-fexcess-precision=standard])
591591
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS, [-fexcess-precision=standard])
592592

593+
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS, [-Xclang -no-opaque-pointers])
594+
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS, [-Xclang -no-opaque-pointers])
595+
593596
NOT_THE_CFLAGS=""
594597
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS, [-Wunused-command-line-argument])
595598
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
@@ -757,6 +757,16 @@ llvm_session_initialize(void)
757757
LLVMInitializeNativeAsmPrinter();
758758
LLVMInitializeNativeAsmParser();
759759

760+
/*
761+
* When targeting an LLVM version with opaque pointers enabled by
762+
* default, turn them off for the context we build our code in. We don't
763+
* need to do so for other contexts (e.g. llvm_ts_context). Once the IR is
764+
* generated, it carries the necessary information.
765+
*/
766+
#ifLLVM_VERSION_MAJOR>14
767+
LLVMContextSetOpaquePointers(LLVMGetGlobalContext(), false);
768+
#endif
769+
760770
/*
761771
* Synchronize types early, as that also includes inferring the target
762772
* triple.
@@ -1091,7 +1101,11 @@ llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx,
10911101
LLVMOrcJITDylibRefJD,LLVMOrcJITDylibLookupFlagsJDLookupFlags,
10921102
LLVMOrcCLookupSetLookupSet,size_tLookupSetSize)
10931103
{
1104+
#ifLLVM_VERSION_MAJOR>14
1105+
LLVMOrcCSymbolMapPairssymbols=palloc0(sizeof(LLVMOrcCSymbolMapPair)*LookupSetSize);
1106+
#else
10941107
LLVMOrcCSymbolMapPairssymbols=palloc0(sizeof(LLVMJITCSymbolMapPair)*LookupSetSize);
1108+
#endif
10951109
LLVMErrorReferror;
10961110
LLVMOrcMaterializationUnitRefmu;
10971111

@@ -1209,7 +1223,11 @@ llvm_create_jit_instance(LLVMTargetMachineRef tm)
12091223
* Symbol resolution support for "special" functions, e.g. a call into an
12101224
* SQL callable function.
12111225
*/
1226+
#ifLLVM_VERSION_MAJOR>14
1227+
ref_gen=LLVMOrcCreateCustomCAPIDefinitionGenerator(llvm_resolve_symbols,NULL,NULL);
1228+
#else
12121229
ref_gen=LLVMOrcCreateCustomCAPIDefinitionGenerator(llvm_resolve_symbols,NULL);
1230+
#endif
12131231
LLVMOrcJITDylibAddGenerator(LLVMOrcLLJITGetMainJITDylib(lljit),ref_gen);
12141232

12151233
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