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

Commitee48591

Browse files
committed
jit: Use opaque pointers in all supported LLVM versions.
LLVM's opaque pointer change began in LLVM 14, but remained optionaluntil LLVM 16. When commit37d5bab added opaque pointer support, wedidn't turn it on for LLVM 14 and 15 yet because we didn't want to riskweird bitcode incompatibility problems in released branches ofPostgreSQL. (That might have been overly cautious, I don't know.)Now that PostgreSQL 18 has dropped support for LLVM versions < 14, andsince it hasn't been released yet and no extensions or bitcode have beenbuilt against it in the wild yet, we can be more aggressive. We can ripout the support code and build system clutter that made opaque pointeruse optional.Author: Thomas Munro <thomas.munro@gmail.com>Reviewed-by: Peter Eisentraut <peter@eisentraut.org>Discussions:https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com
1 parent972c2cd commitee48591

File tree

5 files changed

+0
-124
lines changed

5 files changed

+0
-124
lines changed

‎configure

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

72837283

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

‎configure.ac

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

634-
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, BITCODE_CFLAGS,[-Xclang -no-opaque-pointers])
635-
PGAC_PROG_VARCXX_VARFLAGS_OPT(CLANGXX, BITCODE_CXXFLAGS,[-Xclang -no-opaque-pointers])
636-
637634
NOT_THE_CFLAGS=""
638635
PGAC_PROG_VARCC_VARFLAGS_OPT(CLANG, NOT_THE_CFLAGS,[-Wunused-command-line-argument])
639636
if test -n "$NOT_THE_CFLAGS"; then

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -840,19 +840,6 @@ llvm_session_initialize(void)
840840
llvm_llvm_context_reuse_count=0;
841841
}
842842

843-
/*
844-
* When targeting LLVM 15, turn off opaque pointers for the context we
845-
* build our code in. We don't need to do so for other contexts (e.g.
846-
* llvm_ts_context). Once the IR is generated, it carries the necessary
847-
* information.
848-
*
849-
* For 16 and above, opaque pointers must be used, and we have special
850-
* code for that.
851-
*/
852-
#ifLLVM_VERSION_MAJOR==15
853-
LLVMContextSetOpaquePointers(LLVMGetGlobalContext(), false);
854-
#endif
855-
856843
/*
857844
* Synchronize types early, as that also includes inferring the target
858845
* triple.

‎src/backend/jit/llvm/meson.build

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,6 @@ endif
6060

6161
# XXX: Need to determine proper version of the function cflags for clang
6262
bitcode_cflags= ['-fno-strict-aliasing','-fwrapv']
63-
if llvm.version().version_compare('=15.0')
64-
bitcode_cflags+= ['-Xclang','-no-opaque-pointers']
65-
endif
6663
bitcode_cflags+=get_option('c_args')
6764
bitcode_cflags+= cppflags
6865

‎src/include/jit/llvmjit_emit.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,41 +107,25 @@ l_pbool_const(bool i)
107107
staticinlineLLVMValueRef
108108
l_struct_gep(LLVMBuilderRefb,LLVMTypeReft,LLVMValueRefv,int32idx,constchar*name)
109109
{
110-
#ifLLVM_VERSION_MAJOR<16
111-
returnLLVMBuildStructGEP(b,v,idx,"");
112-
#else
113110
returnLLVMBuildStructGEP2(b,t,v,idx,"");
114-
#endif
115111
}
116112

117113
staticinlineLLVMValueRef
118114
l_gep(LLVMBuilderRefb,LLVMTypeReft,LLVMValueRefv,LLVMValueRef*indices,int32nindices,constchar*name)
119115
{
120-
#ifLLVM_VERSION_MAJOR<16
121-
returnLLVMBuildGEP(b,v,indices,nindices,name);
122-
#else
123116
returnLLVMBuildGEP2(b,t,v,indices,nindices,name);
124-
#endif
125117
}
126118

127119
staticinlineLLVMValueRef
128120
l_load(LLVMBuilderRefb,LLVMTypeReft,LLVMValueRefv,constchar*name)
129121
{
130-
#ifLLVM_VERSION_MAJOR<16
131-
returnLLVMBuildLoad(b,v,name);
132-
#else
133122
returnLLVMBuildLoad2(b,t,v,name);
134-
#endif
135123
}
136124

137125
staticinlineLLVMValueRef
138126
l_call(LLVMBuilderRefb,LLVMTypeReft,LLVMValueReffn,LLVMValueRef*args,int32nargs,constchar*name)
139127
{
140-
#ifLLVM_VERSION_MAJOR<16
141-
returnLLVMBuildCall(b,fn,args,nargs,name);
142-
#else
143128
returnLLVMBuildCall2(b,t,fn,args,nargs,name);
144-
#endif
145129
}
146130

147131
/*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp