[clang] [Analyzer][CFG] Correctly handle rebuilt default arg and default init expression (PR #117437)

via cfe-commits cfe-commits at lists.llvm.org
Sat Nov 23 07:29:07 PST 2024


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 aa2d084f9a68f041a42e4df84e11d769a7be34a6 75b4765da0b4ebb008781b393181c5b080be2578 --extensions h,cpp -- clang/include/clang/AST/ExprCXX.h clang/include/clang/AST/Stmt.h clang/lib/AST/ASTImporter.cpp clang/lib/AST/ExprCXX.cpp clang/lib/AST/ParentMap.cpp clang/lib/Analysis/CFG.cpp clang/lib/Analysis/ReachableCode.cpp clang/lib/Sema/SemaExpr.cpp clang/lib/Sema/TreeTransform.h clang/lib/Serialization/ASTReaderStmt.cpp clang/lib/Serialization/ASTWriterStmt.cpp clang/lib/StaticAnalyzer/Core/ExprEngine.cpp clang/test/Analysis/lifetime-extended-regions.cpp clang/test/SemaCXX/warn-unreachable.cpp
``````````

</details>

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

``````````diff
diff --git a/clang/include/clang/AST/ExprCXX.h b/clang/include/clang/AST/ExprCXX.h
index 99680537a3..b44a1604d0 100644
--- a/clang/include/clang/AST/ExprCXX.h
+++ b/clang/include/clang/AST/ExprCXX.h
@@ -1294,15 +1294,16 @@ class CXXDefaultArgExpr final
     setDependence(computeDependence(this));
   }
 
-  CXXDefaultArgExpr(EmptyShell Empty, bool HasRewrittenInit, bool HasRebuiltInit)
+  CXXDefaultArgExpr(EmptyShell Empty, bool HasRewrittenInit,
+                    bool HasRebuiltInit)
       : Expr(CXXDefaultArgExprClass, Empty) {
     CXXDefaultArgExprBits.HasRewrittenInit = HasRewrittenInit;
     CXXDefaultArgExprBits.HasRebuiltInit = HasRebuiltInit;
   }
 
 public:
-  static CXXDefaultArgExpr *CreateEmpty(const ASTContext &C,
-                                        bool HasRewrittenInit, bool HasRebuiltInit);
+  static CXXDefaultArgExpr *
+  CreateEmpty(const ASTContext &C, bool HasRewrittenInit, bool HasRebuiltInit);
 
   // \p Param is the parameter whose default argument is used by this
   // expression.
@@ -1317,9 +1318,7 @@ public:
     return CXXDefaultArgExprBits.HasRewrittenInit;
   }
 
-  bool hasRebuiltInit() const {
-    return CXXDefaultArgExprBits.HasRebuiltInit;
-  }
+  bool hasRebuiltInit() const { return CXXDefaultArgExprBits.HasRebuiltInit; }
 
   // Retrieve the argument to the function call.
   Expr *getExpr();
@@ -1394,28 +1393,28 @@ class CXXDefaultInitExpr final
                      FieldDecl *Field, QualType Ty, DeclContext *UsedContext,
                      Expr *RewrittenInitExpr, bool HasRebuiltInit);
 
-  CXXDefaultInitExpr(EmptyShell Empty, bool HasRewrittenInit, bool HasRebuiltInit)
+  CXXDefaultInitExpr(EmptyShell Empty, bool HasRewrittenInit,
+                     bool HasRebuiltInit)
       : Expr(CXXDefaultInitExprClass, Empty) {
     CXXDefaultInitExprBits.HasRewrittenInit = HasRewrittenInit;
     CXXDefaultInitExprBits.HasRebuiltInit = HasRebuiltInit;
   }
 
 public:
-  static CXXDefaultInitExpr *CreateEmpty(const ASTContext &C,
-                                         bool HasRewrittenInit, bool HasRebuiltInit);
+  static CXXDefaultInitExpr *
+  CreateEmpty(const ASTContext &C, bool HasRewrittenInit, bool HasRebuiltInit);
   /// \p Field is the non-static data member whose default initializer is used
   /// by this expression.
   static CXXDefaultInitExpr *Create(const ASTContext &Ctx, SourceLocation Loc,
                                     FieldDecl *Field, DeclContext *UsedContext,
-                                    Expr *RewrittenInitExpr, bool HasRebuiltInit);
+                                    Expr *RewrittenInitExpr,
+                                    bool HasRebuiltInit);
 
   bool hasRewrittenInit() const {
     return CXXDefaultInitExprBits.HasRewrittenInit;
   }
 
-  bool hasRebuiltInit() const {
-    return CXXDefaultInitExprBits.HasRebuiltInit;
-  }
+  bool hasRebuiltInit() const { return CXXDefaultInitExprBits.HasRebuiltInit; }
 
   /// Get the field whose initializer will be used.
   FieldDecl *getField() { return Field; }
diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h
index 1b2dbcbaa0..85945d8003 100644
--- a/clang/include/clang/AST/Stmt.h
+++ b/clang/include/clang/AST/Stmt.h
@@ -860,7 +860,8 @@ protected:
     LLVM_PREFERRED_TYPE(bool)
     unsigned HasRewrittenInit : 1;
 
-    /// Whether this CXXDefaultInitExpr fully rebuild its argument and stores a copy.
+    /// Whether this CXXDefaultInitExpr fully rebuild its argument and stores a
+    /// copy.
     LLVM_PREFERRED_TYPE(bool)
     unsigned HasRebuiltInit : 1;
 
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index 6b6507d4b5..fb4951da5a 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -1046,7 +1046,8 @@ Expr *CXXDefaultArgExpr::getAdjustedRewrittenExpr() {
 CXXDefaultInitExpr::CXXDefaultInitExpr(const ASTContext &Ctx,
                                        SourceLocation Loc, FieldDecl *Field,
                                        QualType Ty, DeclContext *UsedContext,
-                                       Expr *RewrittenInitExpr, bool hasRebuiltInit)
+                                       Expr *RewrittenInitExpr,
+                                       bool hasRebuiltInit)
     : Expr(CXXDefaultInitExprClass, Ty.getNonLValueExprType(Ctx),
            Ty->isLValueReferenceType()   ? VK_LValue
            : Ty->isRValueReferenceType() ? VK_XValue
diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp
index 9f0527317e..99598ca092 100644
--- a/clang/lib/Analysis/ReachableCode.cpp
+++ b/clang/lib/Analysis/ReachableCode.cpp
@@ -476,9 +476,7 @@ static bool isDeadStmtIn(const Stmt *DeadStmt, const CFGBlock *Block) {
   struct Checker : DynamicRecursiveASTVisitor {
     const Stmt *DeadStmt;
     bool IsSubStmtOfTargetStmt = false;
-    Checker(const Stmt *S) : DeadStmt(S) {
-      ShouldVisitImplicitCode = true;
-    }
+    Checker(const Stmt *S) : DeadStmt(S) { ShouldVisitImplicitCode = true; }
 
     bool VisitStmt(Stmt *S) override {
       if (S == DeadStmt)
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 100a8ba03c..d1ae0403bb 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -3403,7 +3403,8 @@ public:
   /// require any semantic analysis. Subclasses may override this routine to
   /// provide different behavior.
   ExprResult RebuildCXXDefaultArgExpr(SourceLocation Loc, ParmVarDecl *Param,
-                                      Expr *RewrittenExpr, bool HasRebuiltInit) {
+                                      Expr *RewrittenExpr,
+                                      bool HasRebuiltInit) {
     return CXXDefaultArgExpr::Create(getSema().Context, Loc, Param,
                                      getSema().CurContext, RewrittenExpr,
                                      HasRebuiltInit);
@@ -13765,8 +13766,8 @@ TreeTransform<Derived>::TransformCXXDefaultArgExpr(CXXDefaultArgExpr *E) {
       InitRes.get() == E->getRewrittenExpr())
     return E;
 
-  return getDerived().RebuildCXXDefaultArgExpr(E->getUsedLocation(), Param,
-                                               InitRes.get(), E->hasRebuiltInit());
+  return getDerived().RebuildCXXDefaultArgExpr(
+      E->getUsedLocation(), Param, InitRes.get(), E->hasRebuiltInit());
 }
 
 template<typename Derived>

``````````

</details>


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


More information about the cfe-commits mailing list