[clang] [libcxx] [Clang] Add __builtin_invoke and use it in libc++ (PR #116709)

Nikolas Klauser via cfe-commits cfe-commits at lists.llvm.org
Tue May 20 08:00:36 PDT 2025


================
@@ -5406,6 +5408,103 @@ ExprResult Sema::ConvertVectorExpr(Expr *E, TypeSourceInfo *TInfo,
                                    RParenLoc, CurFPFeatureOverrides());
 }
 
+ExprResult Sema::BuiltinInvoke(CallExpr *TheCall) {
+  SourceLocation Loc = TheCall->getBeginLoc();
+  auto Args = MutableArrayRef(TheCall->getArgs(), TheCall->getNumArgs());
+  assert(llvm::none_of(Args,
+                       [](Expr *Arg) { return Arg->isTypeDependent(); }));
+
+  if (Args.size() == 0) {
----------------
philnik777 wrote:

AFAICT `checkArgCountAtLeast` actually prints "expected x, have y". IMO the "at least" here is quite important, since the number of required arguments changes depending on the first argument. I guess I could introduce a new helper; not sure that this is the patch to do it though. I've replaced the 5440 one.

https://github.com/llvm/llvm-project/pull/116709


More information about the cfe-commits mailing list