| Index: src/IceInst.h
|
| diff --git a/src/IceInst.h b/src/IceInst.h
|
| index 72422c97b2e7af2ef2b0e8275b253888be0f35fa..e3262c83d8dee23590b63d96981806321ed45bf5 100644
|
| --- a/src/IceInst.h
|
| +++ b/src/IceInst.h
|
| @@ -35,6 +35,7 @@ namespace Ice {
|
| // from InstHighLevel, and low-level (target-specific) ICE
|
| // instructions inherit from InstTarget.
|
| class Inst : public llvm::ilist_node<Inst> {
|
| + Inst() = delete;
|
| Inst(const Inst &) = delete;
|
| Inst &operator=(const Inst &) = delete;
|
|
|
| @@ -44,7 +45,6 @@ public:
|
| Unreachable,
|
| Alloca,
|
| Arithmetic,
|
| - Assign, // not part of LLVM/PNaCl bitcode
|
| Br,
|
| Call,
|
| Cast,
|
| @@ -59,6 +59,7 @@ public:
|
| Select,
|
| Store,
|
| Switch,
|
| + Assign, // not part of LLVM/PNaCl bitcode
|
| BundleLock, // not part of LLVM/PNaCl bitcode
|
| BundleUnlock, // not part of LLVM/PNaCl bitcode
|
| FakeDef, // not part of LLVM/PNaCl bitcode
|
| @@ -207,6 +208,7 @@ protected:
|
| };
|
|
|
| class InstHighLevel : public Inst {
|
| + InstHighLevel() = delete;
|
| InstHighLevel(const InstHighLevel &) = delete;
|
| InstHighLevel &operator=(const InstHighLevel &) = delete;
|
|
|
| @@ -226,6 +228,7 @@ protected:
|
| // and the required alignment in bytes. The alignment must be either
|
| // 0 (no alignment required) or a power of 2.
|
| class InstAlloca : public InstHighLevel {
|
| + InstAlloca() = delete;
|
| InstAlloca(const InstAlloca &) = delete;
|
| InstAlloca &operator=(const InstAlloca &) = delete;
|
|
|
| @@ -250,6 +253,7 @@ private:
|
| // Binary arithmetic instruction. The source operands are captured in
|
| // getSrc(0) and getSrc(1).
|
| class InstArithmetic : public InstHighLevel {
|
| + InstArithmetic() = delete;
|
| InstArithmetic(const InstArithmetic &) = delete;
|
| InstArithmetic &operator=(const InstArithmetic &) = delete;
|
|
|
| @@ -289,6 +293,7 @@ private:
|
| // Inttoptr instruction, or as an intermediate step for lowering a
|
| // Load instruction.
|
| class InstAssign : public InstHighLevel {
|
| + InstAssign() = delete;
|
| InstAssign(const InstAssign &) = delete;
|
| InstAssign &operator=(const InstAssign &) = delete;
|
|
|
| @@ -308,6 +313,7 @@ private:
|
| // Branch instruction. This represents both conditional and
|
| // unconditional branches.
|
| class InstBr : public InstHighLevel {
|
| + InstBr() = delete;
|
| InstBr(const InstBr &) = delete;
|
| InstBr &operator=(const InstBr &) = delete;
|
|
|
| @@ -354,6 +360,7 @@ private:
|
| // Call instruction. The call target is captured as getSrc(0), and
|
| // arg I is captured as getSrc(I+1).
|
| class InstCall : public InstHighLevel {
|
| + InstCall() = delete;
|
| InstCall(const InstCall &) = delete;
|
| InstCall &operator=(const InstCall &) = delete;
|
|
|
| @@ -392,6 +399,7 @@ private:
|
|
|
| // Cast instruction (a.k.a. conversion operation).
|
| class InstCast : public InstHighLevel {
|
| + InstCast() = delete;
|
| InstCast(const InstCast &) = delete;
|
| InstCast &operator=(const InstCast &) = delete;
|
|
|
| @@ -422,6 +430,7 @@ private:
|
|
|
| // ExtractElement instruction.
|
| class InstExtractElement : public InstHighLevel {
|
| + InstExtractElement() = delete;
|
| InstExtractElement(const InstExtractElement &) = delete;
|
| InstExtractElement &operator=(const InstExtractElement &) = delete;
|
|
|
| @@ -446,6 +455,7 @@ private:
|
| // Floating-point comparison instruction. The source operands are
|
| // captured in getSrc(0) and getSrc(1).
|
| class InstFcmp : public InstHighLevel {
|
| + InstFcmp() = delete;
|
| InstFcmp(const InstFcmp &) = delete;
|
| InstFcmp &operator=(const InstFcmp &) = delete;
|
|
|
| @@ -476,6 +486,7 @@ private:
|
| // Integer comparison instruction. The source operands are captured
|
| // in getSrc(0) and getSrc(1).
|
| class InstIcmp : public InstHighLevel {
|
| + InstIcmp() = delete;
|
| InstIcmp(const InstIcmp &) = delete;
|
| InstIcmp &operator=(const InstIcmp &) = delete;
|
|
|
| @@ -505,6 +516,7 @@ private:
|
|
|
| // InsertElement instruction.
|
| class InstInsertElement : public InstHighLevel {
|
| + InstInsertElement() = delete;
|
| InstInsertElement(const InstInsertElement &) = delete;
|
| InstInsertElement &operator=(const InstInsertElement &) = delete;
|
|
|
| @@ -529,6 +541,7 @@ private:
|
| // Call to an intrinsic function. The call target is captured as getSrc(0),
|
| // and arg I is captured as getSrc(I+1).
|
| class InstIntrinsicCall : public InstCall {
|
| + InstIntrinsicCall() = delete;
|
| InstIntrinsicCall(const InstIntrinsicCall &) = delete;
|
| InstIntrinsicCall &operator=(const InstIntrinsicCall &) = delete;
|
|
|
| @@ -557,6 +570,7 @@ private:
|
|
|
| // Load instruction. The source address is captured in getSrc(0).
|
| class InstLoad : public InstHighLevel {
|
| + InstLoad() = delete;
|
| InstLoad(const InstLoad &) = delete;
|
| InstLoad &operator=(const InstLoad &) = delete;
|
|
|
| @@ -579,6 +593,7 @@ private:
|
| // Phi instruction. For incoming edge I, the node is Labels[I] and
|
| // the Phi source operand is getSrc(I).
|
| class InstPhi : public InstHighLevel {
|
| + InstPhi() = delete;
|
| InstPhi(const InstPhi &) = delete;
|
| InstPhi &operator=(const InstPhi &) = delete;
|
|
|
| @@ -613,6 +628,7 @@ private:
|
| // there is no return value (void-type function), then
|
| // getSrcSize()==0 and hasRetValue()==false.
|
| class InstRet : public InstHighLevel {
|
| + InstRet() = delete;
|
| InstRet(const InstRet &) = delete;
|
| InstRet &operator=(const InstRet &) = delete;
|
|
|
| @@ -636,6 +652,7 @@ private:
|
|
|
| // Select instruction. The condition, true, and false operands are captured.
|
| class InstSelect : public InstHighLevel {
|
| + InstSelect() = delete;
|
| InstSelect(const InstSelect &) = delete;
|
| InstSelect &operator=(const InstSelect &) = delete;
|
|
|
| @@ -660,6 +677,7 @@ private:
|
| // Store instruction. The address operand is captured, along with the
|
| // data operand to be stored into the address.
|
| class InstStore : public InstHighLevel {
|
| + InstStore() = delete;
|
| InstStore(const InstStore &) = delete;
|
| InstStore &operator=(const InstStore &) = delete;
|
|
|
| @@ -683,6 +701,7 @@ private:
|
| // Switch instruction. The single source operand is captured as
|
| // getSrc(0).
|
| class InstSwitch : public InstHighLevel {
|
| + InstSwitch() = delete;
|
| InstSwitch(const InstSwitch &) = delete;
|
| InstSwitch &operator=(const InstSwitch &) = delete;
|
|
|
| @@ -727,6 +746,7 @@ private:
|
| // Unreachable instruction. This is a terminator instruction with no
|
| // operands.
|
| class InstUnreachable : public InstHighLevel {
|
| + InstUnreachable() = delete;
|
| InstUnreachable(const InstUnreachable &) = delete;
|
| InstUnreachable &operator=(const InstUnreachable &) = delete;
|
|
|
| @@ -741,13 +761,14 @@ public:
|
| }
|
|
|
| private:
|
| - InstUnreachable(Cfg *Func);
|
| + explicit InstUnreachable(Cfg *Func);
|
| ~InstUnreachable() override {}
|
| };
|
|
|
| // BundleLock instruction. There are no operands. Contains an option
|
| // indicating whether align_to_end is specified.
|
| class InstBundleLock : public InstHighLevel {
|
| + InstBundleLock() = delete;
|
| InstBundleLock(const InstBundleLock &) = delete;
|
| InstBundleLock &operator=(const InstBundleLock &) = delete;
|
|
|
| @@ -773,6 +794,7 @@ private:
|
|
|
| // BundleUnlock instruction. There are no operands.
|
| class InstBundleUnlock : public InstHighLevel {
|
| + InstBundleUnlock() = delete;
|
| InstBundleUnlock(const InstBundleUnlock &) = delete;
|
| InstBundleUnlock &operator=(const InstBundleUnlock &) = delete;
|
|
|
| @@ -805,6 +827,7 @@ private:
|
| // eliminated if its dest operand is unused, and therefore the FakeDef
|
| // dest wouldn't be properly initialized.
|
| class InstFakeDef : public InstHighLevel {
|
| + InstFakeDef() = delete;
|
| InstFakeDef(const InstFakeDef &) = delete;
|
| InstFakeDef &operator=(const InstFakeDef &) = delete;
|
|
|
| @@ -829,6 +852,7 @@ private:
|
| // situations. The FakeUse instruction has no dest, so it can itself
|
| // never be dead-code eliminated.
|
| class InstFakeUse : public InstHighLevel {
|
| + InstFakeUse() = delete;
|
| InstFakeUse(const InstFakeUse &) = delete;
|
| InstFakeUse &operator=(const InstFakeUse &) = delete;
|
|
|
| @@ -857,6 +881,7 @@ private:
|
| // that kills the set of variables, so that if that linked instruction
|
| // gets dead-code eliminated, the FakeKill instruction will as well.
|
| class InstFakeKill : public InstHighLevel {
|
| + InstFakeKill() = delete;
|
| InstFakeKill(const InstFakeKill &) = delete;
|
| InstFakeKill &operator=(const InstFakeKill &) = delete;
|
|
|
| @@ -881,6 +906,7 @@ private:
|
| // The Target instruction is the base class for all target-specific
|
| // instructions.
|
| class InstTarget : public Inst {
|
| + InstTarget() = delete;
|
| InstTarget(const InstTarget &) = delete;
|
| InstTarget &operator=(const InstTarget &) = delete;
|
|
|
|
|