Bug #906
The _Atomic_word and __exchange_and_add issue on FreeBSD LLVM/Clang compiler
Status: | Approved | Start date: | 10/15/2014 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | Miroslav Fidler | % Done: | 0% | |
Category: | Core | Spent time: | - | |
Target version: | - |
Description
The FreeBSD LLVM/Clang compiler (for example, 3.3 version on FreeBSD 10) complains about undefined _Atomic_word type and __exchange_and_add function inside of uppsrc/Core/Mt.h file. Also, there is no bits/atomic.h or ext/atomic.h files inside of include directories to resolve this.
I propose to use __sync_fetch_and_add function instead of __exchange_and_add and int type instead of _Atomic_word in case of using FreeBSD LLVM/Clang compiler. I generalised this to PLATFORM_BSD and __clang__ defines, but it could be related to other platforms without mentioned type and function.
History
#1 Updated by Sender Ghost almost 10 years ago
- File deleted (
patch-uppsrc_Core_Mt.h)
#2 Updated by Sender Ghost almost 10 years ago
- File uppsrc_Core_Mt.h.diff added
#3 Updated by Sender Ghost almost 10 years ago
The mentioned error message, when building TheIDE on GUI MT package configuraion:
In file included from ide/UppWspc.cpp:1: In file included from ide/ide.h:4: In file included from ./ide/Common/Common.h:4: In file included from ./ide/Core/Core.h:4: In file included from ./Esc/Esc.h:4: In file included from ./Core/Core.h:272: ./Core/Mt.h:281:9: error: unknown type name '_Atomic_word' typedef _Atomic_word Atomic; ^ ./Core/Mt.h:283:73: error: expected namespace name inline int AtomicXAdd(volatile Atomic& t, int incr) { using namespace __gnu_cxx; return __exchange_and_add(&t... ^ ./Core/Mt.h:283:91: error: use of undeclared identifier '__exchange_and_add' inline int AtomicXAdd(volatile Atomic& t, int incr) { using namespace __gnu_cxx; return __exchange_and_add(&t...
#4 Updated by Miroslav Fidler almost 10 years ago
Thanks, applied.
#5 Updated by Miroslav Fidler almost 10 years ago
- Status changed from Patch ready to Approved