Hana =?utf-8?q?Dusíková?= <[email protected]>,
Hana =?utf-8?q?Dusíková?= <[email protected]>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/[email protected]>
================
@@ -1744,97 +1744,97 @@ def SyncSwapN : Builtin, SyncBuiltinsTemplate {
// C11 _Atomic operations for <stdatomic.h>.
def C11AtomicInit : AtomicBuiltin {
let Spellings = ["__c11_atomic_init"];
- let Attributes = [CustomTypeChecking];
+ let Attributes = [CustomTypeChecking, Constexpr];
let Prototype = "void(...)";
}
def C11AtomicLoad : AtomicBuiltin {
let Spellings = ["__c11_atomic_load"];
- let Attributes = [CustomTypeChecking];
+ let Attributes = [CustomTypeChecking, Constexpr];
----------------
AaronBallman wrote:
I'm worried about changing the C11 atomic builtins for a C++26 feature; I think
there are more changes needed as a result. For example, changing this to be
constexpr means we now run the risk of accepting this code in C:
https://godbolt.org/z/hc3oqYx6b
We likely are missing test coverage for this kind of thing in C, so I would
recommend 1) add test coverage to this PR and if it breaks as a result of these
changes, then 2) I would probably add some `getLangOpts().CPlusPlus` checks in
the constant expression evaluator. We could invent new tablegen to say "this is
constexpr only in C++", but it's not clear to me whether there will be enough
builtins that need such functionality or not, but that's another (cleaner, but
a heavier lift for a new contributor) option.
Hmm, but I just remembered that `__has_constexpr_builtin`
(https://clang.llvm.org/docs/LanguageExtensions.html#has-constexpr-builtin) is
a thing, so we may need that tablegen solution after all because otherwise we
change the behavior here in confusing ways: https://godbolt.org/z/qGY575MGr
FWIW, here's an example of some recent changes to tablegen that you could model
your changes after: https://github.com/llvm/llvm-project/pull/91894/files
https://github.com/llvm/llvm-project/pull/98756
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits