summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2019-05-23 09:22:43 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2019-05-23 09:22:43 +0000
commit39192043bbfca8d4fe8562e2a2105012edaff8c3 (patch)
tree98a871f294d71c35dd3ca92bd06f8f274b35416f
parent50434e8df0a32f3f1f7d8de2ef995d3509c33036 (diff)
downloadbcm5719-llvm-39192043bbfca8d4fe8562e2a2105012edaff8c3.tar.gz
bcm5719-llvm-39192043bbfca8d4fe8562e2a2105012edaff8c3.zip
Delete default constructors, copy constructors, move constructors, copy assignment, move assignment operators on Expr, Stmt and Decl
Reviewers: ilya-biryukov, rsmith Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D62187 llvm-svn: 361468
-rw-r--r--clang/include/clang/AST/DeclBase.h7
-rw-r--r--clang/include/clang/AST/Expr.h7
-rw-r--r--clang/include/clang/AST/Stmt.h11
-rw-r--r--clang/lib/CodeGen/CGBuiltin.cpp19
4 files changed, 28 insertions, 16 deletions
diff --git a/clang/include/clang/AST/DeclBase.h b/clang/include/clang/AST/DeclBase.h
index 674e0f4a59b..cebf2973c8c 100644
--- a/clang/include/clang/AST/DeclBase.h
+++ b/clang/include/clang/AST/DeclBase.h
@@ -368,6 +368,13 @@ private:
return ModuleOwnershipKind::Unowned;
}
+public:
+ Decl() = delete;
+ Decl(const Decl&) = delete;
+ Decl(Decl &&) = delete;
+ Decl &operator=(const Decl&) = delete;
+ Decl &operator=(Decl&&) = delete;
+
protected:
Decl(Kind DK, DeclContext *DC, SourceLocation L)
: NextInContextAndBits(nullptr, getModuleOwnershipKindForChildOf(DC)),
diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h
index 143eaae37b2..96cb8e8f1a8 100644
--- a/clang/include/clang/AST/Expr.h
+++ b/clang/include/clang/AST/Expr.h
@@ -108,6 +108,13 @@ struct SubobjectAdjustment {
class Expr : public ValueStmt {
QualType TR;
+public:
+ Expr() = delete;
+ Expr(const Expr&) = delete;
+ Expr(Expr &&) = delete;
+ Expr &operator=(const Expr&) = delete;
+ Expr &operator=(Expr&&) = delete;
+
protected:
Expr(StmtClass SC, QualType T, ExprValueKind VK, ExprObjectKind OK,
bool TD, bool VD, bool ID, bool ContainsUnexpandedParameterPack)
diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h
index a6ab1851fef..8834a60cd6c 100644
--- a/clang/include/clang/AST/Stmt.h
+++ b/clang/include/clang/AST/Stmt.h
@@ -1040,6 +1040,12 @@ protected:
explicit Stmt(StmtClass SC, EmptyShell) : Stmt(SC) {}
public:
+ Stmt() = delete;
+ Stmt(const Stmt &) = delete;
+ Stmt(Stmt &&) = delete;
+ Stmt &operator=(const Stmt &) = delete;
+ Stmt &operator=(Stmt &&) = delete;
+
Stmt(StmtClass SC) {
static_assert(sizeof(*this) <= 8,
"changing bitfields changed sizeof(Stmt)");
@@ -1054,11 +1060,6 @@ public:
return static_cast<StmtClass>(StmtBits.sClass);
}
- Stmt(const Stmt &) = delete;
- Stmt(Stmt &&) = delete;
- Stmt &operator=(const Stmt &) = delete;
- Stmt &operator=(Stmt &&) = delete;
-
const char *getStmtClassName() const;
bool isOMPStructuredBlock() const { return StmtBits.IsOMPStructuredBlock; }
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 34537d3f3ef..d59e0fc960b 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -1134,9 +1134,10 @@ llvm::Function *CodeGenFunction::generateBuiltinOSLogHelperFunction(
return F;
llvm::SmallVector<QualType, 4> ArgTys;
- llvm::SmallVector<ImplicitParamDecl, 4> Params;
- Params.emplace_back(Ctx, nullptr, SourceLocation(), &Ctx.Idents.get("buffer"),
- Ctx.VoidPtrTy, ImplicitParamDecl::Other);
+ FunctionArgList Args;
+ Args.push_back(ImplicitParamDecl::Create(
+ Ctx, nullptr, SourceLocation(), &Ctx.Idents.get("buffer"), Ctx.VoidPtrTy,
+ ImplicitParamDecl::Other));
ArgTys.emplace_back(Ctx.VoidPtrTy);
for (unsigned int I = 0, E = Layout.Items.size(); I < E; ++I) {
@@ -1145,17 +1146,13 @@ llvm::Function *CodeGenFunction::generateBuiltinOSLogHelperFunction(
continue;
QualType ArgTy = getOSLogArgType(Ctx, Size);
- Params.emplace_back(
+ Args.push_back(ImplicitParamDecl::Create(
Ctx, nullptr, SourceLocation(),
&Ctx.Idents.get(std::string("arg") + llvm::to_string(I)), ArgTy,
- ImplicitParamDecl::Other);
+ ImplicitParamDecl::Other));
ArgTys.emplace_back(ArgTy);
}
- FunctionArgList Args;
- for (auto &P : Params)
- Args.push_back(&P);
-
QualType ReturnTy = Ctx.VoidTy;
QualType FuncionTy = Ctx.getFunctionType(ReturnTy, ArgTys, {});
@@ -1188,7 +1185,7 @@ llvm::Function *CodeGenFunction::generateBuiltinOSLogHelperFunction(
auto AL = ApplyDebugLocation::CreateArtificial(*this);
CharUnits Offset;
- Address BufAddr(Builder.CreateLoad(GetAddrOfLocalVar(&Params[0]), "buf"),
+ Address BufAddr(Builder.CreateLoad(GetAddrOfLocalVar(Args[0]), "buf"),
BufferAlignment);
Builder.CreateStore(Builder.getInt8(Layout.getSummaryByte()),
Builder.CreateConstByteGEP(BufAddr, Offset++, "summary"));
@@ -1208,7 +1205,7 @@ llvm::Function *CodeGenFunction::generateBuiltinOSLogHelperFunction(
if (!Size.getQuantity())
continue;
- Address Arg = GetAddrOfLocalVar(&Params[I]);
+ Address Arg = GetAddrOfLocalVar(Args[I]);
Address Addr = Builder.CreateConstByteGEP(BufAddr, Offset, "argData");
Addr = Builder.CreateBitCast(Addr, Arg.getPointer()->getType(),
"argDataCast");
OpenPOWER on IntegriCloud