Recommit r243824: -Wdeprecated-clean: Fix cases of violating the rule of 5 in ways...
[oota-llvm.git] / lib / AsmParser / LLParser.h
index 0990e090b7c20d4733f2e4c9d8806b73f744a8f4..acbf6f9e5b821db26a329f7e9c7de86c52fc9ab8 100644 (file)
@@ -55,22 +55,24 @@ namespace llvm {
       t_InlineAsm,                // Value in FTy/StrVal/StrVal2/UIntVal.
       t_ConstantStruct,           // Value in ConstantStructElts.
       t_PackedConstantStruct      // Value in ConstantStructElts.
-    } Kind;
+    } Kind = t_LocalID;
 
     LLLexer::LocTy Loc;
     unsigned UIntVal;
     FunctionType *FTy;
     std::string StrVal, StrVal2;
     APSInt APSIntVal;
-    APFloat APFloatVal;
+    APFloat APFloatVal{0.0};
     Constant *ConstantVal;
-    Constant **ConstantStructElts;
-
-    ValID() : Kind(t_LocalID), APFloatVal(0.0) {}
-    ~ValID() {
-      if (Kind == t_ConstantStruct || Kind == t_PackedConstantStruct)
-        delete [] ConstantStructElts;
-    }
+    std::unique_ptr<Constant *[]> ConstantStructElts;
+
+    ValID() = default;
+    ValID(ValID &&RHS)
+        : Kind(RHS.Kind), Loc(RHS.Loc), UIntVal(RHS.UIntVal), FTy(RHS.FTy),
+          StrVal(std::move(RHS.StrVal)), StrVal2(std::move(RHS.StrVal2)),
+          APSIntVal(std::move(RHS.APSIntVal)),
+          APFloatVal(std::move(RHS.APFloatVal)), ConstantVal(RHS.ConstantVal),
+          ConstantStructElts(std::move(RHS.ConstantStructElts)) {}
 
     bool operator<(const ValID &RHS) const {
       if (Kind == t_LocalID || Kind == t_GlobalID)