[OpenMP][libomp] Add OpenBSD, NetBSD and DragonFly stdarg handling (#… · llvm/llvm-project@5707853 (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

Commit 5707853

brad0tstellar

authored and

committed

[OpenMP][libomp] Add OpenBSD, NetBSD and DragonFly stdarg handling (#126182)

Fixes build on OpenBSD/aarch64. ``` FAILED: openmp/runtime/src/CMakeFiles/omp.dir/kmp_runtime.cpp.o /home/brad/tmp/llvm-build/bin/clang++ --target=aarch64-unknown-openbsd7.6 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Domp_EXPORTS -I/home/brad/tmp/llvm-build/runtimes/runtimes-bins/openmp/runtime/src -I/home/brad/tmp/llvm-brad/openmp/runtime/src -I/home/brad/tmp/llvm-brad/openmp/runtime/src/i18n -I/home/brad/tmp/llvm-brad/openmp/runtime/src/include -I/home/brad/tmp/llvm-brad/openmp/runtime/src/thirdparty/ittnotify -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -fcolor-diagnostics -Wcast-qual -Wformat-pedantic -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -fno-semantic-interposition -fdata-sections -O3 -DNDEBUG -std=c++17 -fPIC -D _GNU_SOURCE -D _REENTRANT -U_GLIBCXX_ASSERTIONS -UNDEBUG -fno-exceptions -fno-rtti -Wno-covered-switch-default -Wno-frame-address -Wno-strict-aliasing -Wno-switch -Wno-uninitialized -Wno-return-type-c-linkage -Wno-cast-qual -Wno-int-to-void-pointer-cast -MD -MT openmp/runtime/src/CMakeFiles/omp.dir/kmp_runtime.cpp.o -MF openmp/runtime/src/CMakeFiles/omp.dir/kmp_runtime.cpp.o.d -o openmp/runtime/src/CMakeFiles/omp.dir/kmp_runtime.cpp.o -c /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1449:47: error: value of type 'kmp_va_list' (aka '__builtin_va_list') is not contextually convertible to 'bool' 1449 | return (master_th->th.th_teams_microtask && ap && | ^~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1449:44: error: invalid operands to binary expression ('microtask_t' (aka 'void (*)(int *, int *, ...)') and 'kmp_va_list' (aka '__builtin_va_list')) 1449 | return (master_th->th.th_teams_microtask && ap && | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1457:15: warning: comparison between NULL and non-pointer ('kmp_va_list' (aka '__builtin_va_list') and NULL) [-Wnull-arithmetic] 1457 | return ((ap == NULL && active_level == 0) || | ~~ ^ ~~~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1457:15: error: invalid operands to binary expression ('kmp_va_list' (aka '__builtin_va_list') and 'long') 1457 | return ((ap == NULL && active_level == 0) || | ~~ ^ ~~~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1458:12: error: value of type 'kmp_va_list' (aka '__builtin_va_list') is not contextually convertible to 'bool' 1458 | (ap && teams_level > 0 && teams_level == level)); | ^~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1458:15: error: invalid operands to binary expression ('kmp_va_list' (aka '__builtin_va_list') and 'bool') 1458 | (ap && teams_level > 0 && teams_level == level)); | ~~ ^ ~~~~~~~~~~~~~~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1735:9: error: invalid argument type 'kmp_va_list' (aka '__builtin_va_list') to unary expression 1735 | if (!ap) { | ^~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:2169:66: warning: comparison between NULL and non-pointer ('kmp_va_list' (aka '__builtin_va_list') and NULL) [-Wnull-arithmetic] 2169 | !(microtask == (microtask_t)__kmp_teams_master || ap == NULL)) | ~~ ^ ~~~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:2169:66: error: invalid operands to binary expression ('kmp_va_list' (aka '__builtin_va_list') and 'long') 2169 | !(microtask == (microtask_t)__kmp_teams_master || ap == NULL)) | ~~ ^ ~~~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:2284:9: error: value of type 'kmp_va_list' (aka '__builtin_va_list') is not contextually convertible to 'bool' 2284 | if (ap) { | ^~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:2302:58: error: invalid argument type 'kmp_va_list' (aka '__builtin_va_list') to unary expression 2302 | __kmp_fork_team_threads(root, team, master_th, gtid, !ap); | ^~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:2363:9: error: value of type 'kmp_va_list' (aka '__builtin_va_list') is not contextually convertible to 'bool' 2363 | if (ap) { | ^~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:7803:3: error: no matching function for call to '__kmp_fork_call' 7803 | __kmp_fork_call(loc, gtid, fork_context_intel, team->t.t_argc, | ^~~~~~~~~~~~~~~ /home/brad/tmp/llvm-brad/openmp/runtime/src/kmp_runtime.cpp:1927:5: note: candidate function not viable: no known conversion from 'long' to 'kmp_va_list' (aka '__builtin_va_list') for 7th argument 1927 | int __kmp_fork_call(ident_t *loc, int gtid, | ^ 1928 | enum fork_context_e call_context, // Intel, GNU, ... 1929 | kmp_int32 argc, microtask_t microtask, launch_t invoker, 1930 | kmp_va_list ap) { | ~~~~~~~~~~~~~~ 2 warnings and 11 errors generated. ``` (cherry picked from commit 0b8bd47)

File tree

1 file changed

lines changed

1 file changed

lines changed

Lines changed: 2 additions & 1 deletion

Original file line number Diff line number Diff line change
@@ -219,7 +219,8 @@ typedef kmp_uint32 kmp_uint;
219 219
220 220 // stdarg handling
221 221 #if (KMP_ARCH_ARM | KMP_ARCH_X86_64
222 - (KMP_OS_FREEBSD | KMP_OS_LINUX
222 + (KMP_OS_FREEBSD | KMP_OS_NETBSD
223 + KMP_OS_LINUX | KMP_OS_WASI)
223 224 typedef va_list *kmp_va_list;
224 225 #define kmp_va_deref(ap) (*(ap))
225 226 #define kmp_va_addr_of(ap) (&(ap))