Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: src/IceOperand.h

Issue 1197223002: Subzero: Use C++11 member initializers where practical. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceLiveness.h ('k') | src/IceRegAlloc.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceOperand.h
diff --git a/src/IceOperand.h b/src/IceOperand.h
index ae6668bb3af0a25cddf75cb04af46de6ba9236e0..9e0ff7dad105b926a29a48e9e417e3d3a3f34589 100644
--- a/src/IceOperand.h
+++ b/src/IceOperand.h
@@ -79,17 +79,16 @@ public:
dump(nullptr, Str);
}
- virtual ~Operand() {}
+ virtual ~Operand() = default;
protected:
- Operand(OperandKind Kind, Type Ty)
- : Ty(Ty), Kind(Kind), NumVars(0), Vars(nullptr) {}
+ Operand(OperandKind Kind, Type Ty) : Ty(Ty), Kind(Kind) {}
const Type Ty;
const OperandKind Kind;
// Vars and NumVars are initialized by the derived class.
- SizeT NumVars;
- Variable **Vars;
+ SizeT NumVars = 0;
+ Variable **Vars = nullptr;
};
template <class StreamType>
@@ -317,7 +316,7 @@ private:
// method that ensures that W+infinity=infinity.
class RegWeight {
public:
- RegWeight() : Weight(0) {}
+ RegWeight() = default;
explicit RegWeight(uint32_t Weight) : Weight(Weight) {}
RegWeight(const RegWeight &) = default;
RegWeight &operator=(const RegWeight &) = default;
@@ -336,7 +335,7 @@ public:
bool isZero() const { return Weight == Zero; }
private:
- uint32_t Weight;
+ uint32_t Weight = 0;
};
Ostream &operator<<(Ostream &Str, const RegWeight &W);
bool operator<(const RegWeight &A, const RegWeight &B);
@@ -351,10 +350,10 @@ bool operator==(const RegWeight &A, const RegWeight &B);
// inside a loop.
class LiveRange {
public:
- LiveRange() : Weight(0) {}
+ LiveRange() = default;
// Special constructor for building a kill set. The advantage is
// that we can reserve the right amount of space in advance.
- explicit LiveRange(const std::vector<InstNumberT> &Kills) : Weight(0) {
+ explicit LiveRange(const std::vector<InstNumberT> &Kills) {
Range.reserve(Kills.size());
for (InstNumberT I : Kills)
addSegment(I, I);
@@ -392,7 +391,7 @@ private:
typedef std::vector<RangeElementType, CfgLocalAllocator<RangeElementType>>
RangeType;
RangeType Range;
- RegWeight Weight;
+ RegWeight Weight = RegWeight(0);
// TrimmedBegin is an optimization for the overlaps() computation.
// Since the linear-scan algorithm always calls it as overlaps(Cur)
// and Cur advances monotonically according to live range start, we
@@ -510,10 +509,7 @@ public:
protected:
Variable(OperandKind K, Type Ty, SizeT Index)
- : Operand(K, Ty), Number(Index), NameIndex(Cfg::IdentifierIndexInvalid),
- IsArgument(false), IsImplicitArgument(false), IgnoreLiveness(false),
- StackOffset(0), RegNum(NoRegister), RegNumTmp(NoRegister), Weight(1),
- LoVar(nullptr), HiVar(nullptr) {
+ : Operand(K, Ty), Number(Index) {
Vars = VarsReal;
Vars[0] = this;
NumVars = 1;
@@ -522,22 +518,22 @@ protected:
// Number is unique across all variables, and is used as a
// (bit)vector index for liveness analysis.
const SizeT Number;
- Cfg::IdentifierIndexType NameIndex;
- bool IsArgument;
- bool IsImplicitArgument;
+ Cfg::IdentifierIndexType NameIndex = Cfg::IdentifierIndexInvalid;
+ bool IsArgument = false;
+ bool IsImplicitArgument = false;
// IgnoreLiveness means that the variable should be ignored when
// constructing and validating live ranges. This is usually
// reserved for the stack pointer.
- bool IgnoreLiveness;
+ bool IgnoreLiveness = false;
// StackOffset is the canonical location on stack (only if
// RegNum==NoRegister || IsArgument).
- int32_t StackOffset;
+ int32_t StackOffset = 0;
// RegNum is the allocated register, or NoRegister if it isn't
// register-allocated.
- int32_t RegNum;
+ int32_t RegNum = NoRegister;
// RegNumTmp is the tentative assignment during register allocation.
- int32_t RegNumTmp;
- RegWeight Weight; // Register allocation priority
+ int32_t RegNumTmp = NoRegister;
+ RegWeight Weight = RegWeight(1); // Register allocation priority
LiveRange Live;
// LoVar and HiVar are needed for lowering from 64 to 32 bits. When
// lowering from I64 to I32 on a 32-bit architecture, we split the
@@ -546,8 +542,8 @@ protected:
// portion. TODO: It's wasteful to penalize all variables on all
// targets this way; use a sparser representation. It's also
// wasteful for a 64-bit target.
- Variable *LoVar;
- Variable *HiVar;
+ Variable *LoVar = nullptr;
+ Variable *HiVar = nullptr;
// VarsReal (and Operand::Vars) are set up such that Vars[0] ==
// this.
Variable *VarsReal[1];
@@ -574,9 +570,7 @@ public:
MDS_MultiDefMultiBlock
};
enum MultiBlockState { MBS_Unknown, MBS_SingleBlock, MBS_MultiBlock };
- VariableTracking()
- : MultiDef(MDS_Unknown), MultiBlock(MBS_Unknown), SingleUseNode(nullptr),
- SingleDefNode(nullptr), FirstOrSingleDefinition(nullptr) {}
+ VariableTracking() = default;
VariableTracking(const VariableTracking &) = default;
MultiDefState getMultiDef() const { return MultiDef; }
MultiBlockState getMultiBlock() const { return MultiBlock; }
@@ -590,14 +584,15 @@ public:
const CfgNode *Node);
private:
- MultiDefState MultiDef;
- MultiBlockState MultiBlock;
- const CfgNode *SingleUseNode;
- const CfgNode *SingleDefNode;
+ MultiDefState MultiDef = MDS_Unknown;
+ MultiBlockState MultiBlock = MBS_Unknown;
+ const CfgNode *SingleUseNode = nullptr;
+ const CfgNode *SingleDefNode = nullptr;
// All definitions of the variable are collected here, in increasing
// order of instruction number.
- InstDefList Definitions; // Only used if Kind==VMK_All
- const Inst *FirstOrSingleDefinition; // == Definitions[0] if Kind==VMK_All
+ InstDefList Definitions; // Only used if Kind==VMK_All
+ const Inst *FirstOrSingleDefinition =
+ nullptr; // Is a copy of Definitions[0] if Kind==VMK_All
};
// VariablesMetadata analyzes and summarizes the metadata for the
« no previous file with comments | « src/IceLiveness.h ('k') | src/IceRegAlloc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698