Skip to content

[NFC][Clang] Add setExprs overload to reduce some code duplication #139749

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 28 additions & 40 deletions clang/include/clang/AST/OpenACCClause.h
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,14 @@ class OpenACCClauseWithExprs : public OpenACCClauseWithParams {
Exprs = NewExprs;
}

/// Used only for initialization, the leaf class can initialize this to
/// trailing storage, and initialize the data in the trailing storage as well.
void setExprs(MutableArrayRef<Expr *> NewStorage, ArrayRef<Expr *> Exprs) {
assert(NewStorage.size() == Exprs.size());
llvm::uninitialized_copy(Exprs, NewStorage.begin());
setExprs(NewStorage);
}

/// Gets the entire list of expressions, but leave it to the
/// individual clauses to expose this how they'd like.
llvm::ArrayRef<Expr *> getExprs() const { return Exprs; }
Expand Down Expand Up @@ -578,8 +586,7 @@ class OpenACCNumGangsClause final
ArrayRef<Expr *> IntExprs, SourceLocation EndLoc)
: OpenACCClauseWithExprs(OpenACCClauseKind::NumGangs, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(IntExprs, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(IntExprs.size()));
setExprs(getTrailingObjects<Expr *>(IntExprs.size()), IntExprs);
}

public:
Expand Down Expand Up @@ -607,8 +614,7 @@ class OpenACCTileClause final
ArrayRef<Expr *> SizeExprs, SourceLocation EndLoc)
: OpenACCClauseWithExprs(OpenACCClauseKind::Tile, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(SizeExprs, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(SizeExprs.size()));
setExprs(getTrailingObjects<Expr *>(SizeExprs.size()), SizeExprs);
}

public:
Expand Down Expand Up @@ -845,8 +851,7 @@ class OpenACCPrivateClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Private, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -867,8 +872,7 @@ class OpenACCFirstPrivateClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::FirstPrivate, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -889,8 +893,7 @@ class OpenACCDevicePtrClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::DevicePtr, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -911,8 +914,7 @@ class OpenACCAttachClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Attach, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -933,8 +935,7 @@ class OpenACCDetachClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Detach, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -955,8 +956,7 @@ class OpenACCDeleteClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Delete, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -977,8 +977,7 @@ class OpenACCUseDeviceClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::UseDevice, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -999,8 +998,7 @@ class OpenACCNoCreateClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::NoCreate, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -1021,8 +1019,7 @@ class OpenACCPresentClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Present, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -1042,8 +1039,7 @@ class OpenACCHostClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Host, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -1065,8 +1061,7 @@ class OpenACCDeviceClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Device, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -1093,8 +1088,7 @@ class OpenACCCopyClause final
Spelling == OpenACCClauseKind::PCopy ||
Spelling == OpenACCClauseKind::PresentOrCopy) &&
"Invalid clause kind for copy-clause");
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand Down Expand Up @@ -1127,8 +1121,7 @@ class OpenACCCopyInClause final
Spelling == OpenACCClauseKind::PCopyIn ||
Spelling == OpenACCClauseKind::PresentOrCopyIn) &&
"Invalid clause kind for copyin-clause");
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand Down Expand Up @@ -1160,8 +1153,7 @@ class OpenACCCopyOutClause final
Spelling == OpenACCClauseKind::PCopyOut ||
Spelling == OpenACCClauseKind::PresentOrCopyOut) &&
"Invalid clause kind for copyout-clause");
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand Down Expand Up @@ -1193,8 +1185,7 @@ class OpenACCCreateClause final
Spelling == OpenACCClauseKind::PCreate ||
Spelling == OpenACCClauseKind::PresentOrCreate) &&
"Invalid clause kind for create-clause");
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand Down Expand Up @@ -1223,8 +1214,7 @@ class OpenACCReductionClause final
: OpenACCClauseWithVarList(OpenACCClauseKind::Reduction, BeginLoc,
LParenLoc, EndLoc),
Op(Operator) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -1249,8 +1239,7 @@ class OpenACCLinkClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::Link, BeginLoc, LParenLoc,
EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand All @@ -1273,8 +1262,7 @@ class OpenACCDeviceResidentClause final
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
: OpenACCClauseWithVarList(OpenACCClauseKind::DeviceResident, BeginLoc,
LParenLoc, EndLoc) {
llvm::uninitialized_copy(VarList, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(VarList.size()));
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
}

public:
Expand Down
3 changes: 1 addition & 2 deletions clang/lib/AST/OpenACCClause.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,7 @@ OpenACCGangClause::OpenACCGangClause(SourceLocation BeginLoc,
: OpenACCClauseWithExprs(OpenACCClauseKind::Gang, BeginLoc, LParenLoc,
EndLoc) {
assert(GangKinds.size() == IntExprs.size() && "Mismatch exprs/kind?");
llvm::uninitialized_copy(IntExprs, getTrailingObjects<Expr *>());
setExprs(getTrailingObjects<Expr *>(IntExprs.size()));
setExprs(getTrailingObjects<Expr *>(IntExprs.size()), IntExprs);
llvm::uninitialized_copy(GangKinds, getTrailingObjects<OpenACCGangKind>());
}

Expand Down