[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