Author: Chris Copeland Date: 2024-07-24T08:53:39-04:00 New Revision: 4bb3a1e16f3a854d05bc0b8c5b6f8f78effb1d93
URL: https://github.com/llvm/llvm-project/commit/4bb3a1e16f3a854d05bc0b8c5b6f8f78effb1d93 DIFF: https://github.com/llvm/llvm-project/commit/4bb3a1e16f3a854d05bc0b8c5b6f8f78effb1d93.diff LOG: [clang] Define `ATOMIC_FLAG_INIT` correctly for C++. (#97534) Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/Headers/stdatomic.h clang/test/Headers/stdatomic.c Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 88f4d09308e8e..f52514a7aa3a2 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -133,6 +133,9 @@ Improvements to Coverage Mapping Bug Fixes in This Version ------------------------- +- Fixed the definition of ``ATOMIC_FLAG_INIT`` in ``<stdatomic.h>`` so it can + be used in C++. + Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/Headers/stdatomic.h b/clang/lib/Headers/stdatomic.h index 2027055f38796..1991351f9e9ef 100644 --- a/clang/lib/Headers/stdatomic.h +++ b/clang/lib/Headers/stdatomic.h @@ -172,7 +172,11 @@ typedef _Atomic(uintmax_t) atomic_uintmax_t; typedef struct atomic_flag { atomic_bool _Value; } atomic_flag; +#ifdef __cplusplus +#define ATOMIC_FLAG_INIT {false} +#else #define ATOMIC_FLAG_INIT { 0 } +#endif /* These should be provided by the libc implementation. */ #ifdef __cplusplus diff --git a/clang/test/Headers/stdatomic.c b/clang/test/Headers/stdatomic.c index 3643fd4245b31..9afd531a9ed9b 100644 --- a/clang/test/Headers/stdatomic.c +++ b/clang/test/Headers/stdatomic.c @@ -1,5 +1,8 @@ // RUN: %clang_cc1 -std=c11 -E %s | FileCheck %s // RUN: %clang_cc1 -std=c11 -fms-compatibility -E %s | FileCheck %s +// RUN: %clang_cc1 -std=c11 %s -verify +// RUN: %clang_cc1 -x c++ -std=c++11 %s -verify +// expected-no-diagnostics #include <stdatomic.h> int bool_lock_free = ATOMIC_BOOL_LOCK_FREE; @@ -31,3 +34,5 @@ int llong_lock_free = ATOMIC_LLONG_LOCK_FREE; int pointer_lock_free = ATOMIC_POINTER_LOCK_FREE; // CHECK: pointer_lock_free = {{ *[012] *;}} + +atomic_flag f = ATOMIC_FLAG_INIT; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits