Hana =?utf-8?q?Dusíková?= <hani...@hanicka.net>,
Hana =?utf-8?q?Dusíková?= <hani...@hanicka.net>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/98...@github.com>


================
@@ -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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to