[clang] [Clang][CodeGen] Fix crash when compiling naked lambdas (PR #165524)

via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 29 01:34:47 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp -- clang/test/CodeGenCXX/naked-lambda.cpp clang/lib/CodeGen/CodeGenFunction.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
index 11e9e708f..668a5c000 100644
--- a/clang/lib/CodeGen/CodeGenFunction.cpp
+++ b/clang/lib/CodeGen/CodeGenFunction.cpp
@@ -1272,7 +1272,7 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
     }
   }
 
-    EmitFunctionProlog(*CurFnInfo, CurFn, Args);
+  EmitFunctionProlog(*CurFnInfo, CurFn, Args);
 
   if (const CXXMethodDecl *MD = dyn_cast_if_present<CXXMethodDecl>(D);
       MD && !MD->isStatic()) {
@@ -1291,12 +1291,12 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
         MD->getParent()->getCaptureFields(LambdaCaptureFields,
                                           LambdaThisCaptureField);
         if (LambdaThisCaptureField) {
-          // If the lambda captures the object referred to by '*this' - either by
-          // value or by reference, make sure CXXThisValue points to the correct
-          // object.
+          // If the lambda captures the object referred to by '*this' - either
+          // by value or by reference, make sure CXXThisValue points to the
+          // correct object.
 
-          // Get the lvalue for the field (which is a copy of the enclosing object
-          // or contains the address of the enclosing object).
+          // Get the lvalue for the field (which is a copy of the enclosing
+          // object or contains the address of the enclosing object).
           LValue ThisFieldLValue =
               EmitLValueForLambdaField(LambdaThisCaptureField);
           if (!LambdaThisCaptureField->getType()->isPointerType()) {
@@ -1304,17 +1304,18 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,
             // address. Sign this pointer.
             CXXThisValue = ThisFieldLValue.getPointer(*this);
           } else {
-            // Load the lvalue pointed to by the field, since '*this' was captured
-            // by reference.
-            CXXThisValue =
-                EmitLoadOfLValue(ThisFieldLValue, SourceLocation()).getScalarVal();
+            // Load the lvalue pointed to by the field, since '*this' was
+            // captured by reference.
+            CXXThisValue = EmitLoadOfLValue(ThisFieldLValue, SourceLocation())
+                               .getScalarVal();
           }
         }
 
         for (auto *FD : MD->getParent()->fields()) {
           if (FD->hasCapturedVLAType()) {
-            auto *ExprArg = EmitLoadOfLValue(EmitLValueForLambdaField(FD),
-                                             SourceLocation()).getScalarVal();
+            auto *ExprArg =
+                EmitLoadOfLValue(EmitLValueForLambdaField(FD), SourceLocation())
+                    .getScalarVal();
             auto VAT = FD->getCapturedVLAType();
             VLASizeMap[VAT->getSizeExpr()] = ExprArg;
           }

``````````

</details>


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


More information about the cfe-commits mailing list