Skip to content

kmp_lock.cpp doesn't compile with clang-cl #48683

@zmodem

Description

@zmodem
Bugzilla Link 49339
Resolution FIXED
Resolved on Mar 05, 2021 09:31
Version unspecified
OS Linux
Blocks #48246
CC @jpeyton52
Fixed by commit(s) e83380f 99350dc

Extended Description

This reproduces both with the current 12.x branch and main branch (as of abbdb56)

Building the openmp runtime with clang-cl fails as below (i was doing a 32-bit build but I'm not sure that matters):

[2212/5188] Building CXX object projects\openmp\runtime\src\CMakeFiles\omp.dir\kmp_lock.cpp.obj
FAILED: projects/openmp/runtime/src/CMakeFiles/omp.dir/kmp_lock.cpp.obj
C:\src\llvm_package_1200-rc2\build32_stage0\bin\clang-cl.exe /nologo -TP -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Domp_EXPORTS -Iprojects\openmp\runtime\src -IC:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src -Iinclude -IC:\src\llvm_package_1200-rc2\llvm-project\llvm\include -IC:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\i18n -IC:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\include -IC:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\thirdparty\ittnotify /DWIN32 /D_WINDOWS /Zc:inline /Zc:__cplusplus /Zc:strictStrings /Oi /Zc:rvalueCast /Brepro /bigobj /W4 -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion /Gw -Wcast-qual -Wformat-pedantic -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic /MT /O2 /Ob2 -D _CRT_SECURE_NO_WARNINGS -D _CRT_SECURE_NO_DEPRECATE -D _WINDOWS -D _WINNT -D _WIN32_WINNT=0x0501 -D _USRDLL -UNDEBUG -std:c++14 -Wno-covered-switch-default -Wno-frame-address -Wno-strict-aliasing -Wno-switch -Wno-uninitialized /GS /EHsc -mrtm /arch:SSE2 -msse2 /showIncludes /Foprojects\openmp\runtime\src\CMakeFiles\omp.dir\kmp_lock.cpp.obj /Fdprojects\openmp\runtime\src\CMakeFiles\omp.dir\ -c C:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\kmp_lock.cpp
C:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\kmp_lock.cpp(1721,9): warning: '_XABORT_CODE' macro redefined [-Wmacro-redefined]
#define _XABORT_CODE(x) ((unsigned char)(((x) >> 24) & 0xFF))
^
C:\src\llvm_package_1200-rc2\build32_stage0\lib\clang\12.0.0\include\rtmintrin.h(24,9): note: previous definition is here
#define _XABORT_CODE(x) (((x) >> 24) & 0xFF)
^
C:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\kmp_lock.cpp(1733,21): error: functions that differ only in their return type cannot be overloaded
static __inline int _xbegin() {
~~~ ^
C:\src\llvm_package_1200-rc2\build32_stage0\lib\clang\12.0.0\include\rtmintrin.h(30,1): note: previous definition is here
_xbegin(void)
^
C:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\kmp_lock.cpp(1781,22): error: redefinition of '_xend'
static __inline void _xend() {
^
C:\src\llvm_package_1200-rc2\build32_stage0\lib\clang\12.0.0\include\rtmintrin.h(36,1): note: previous definition is here
_xend(void)
^
C:\src\llvm_package_1200-rc2\llvm-project\openmp\runtime\src\kmp_lock.cpp(1798,9): warning: '_xabort' macro redefined [-Wmacro-redefined]
#define _xabort(ARG) _asm _emit 0xc6 _asm _emit 0xf8 _asm _emit ARG
^
C:\src\llvm_package_1200-rc2\build32_stage0\lib\clang\12.0.0\include\rtmintrin.h(41,9): note: previous definition is here
#define _xabort(imm) __builtin_ia32_xabort((imm))
^
2 warnings and 2 errors generated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillaopenmp

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions