[llvm] r243824 - -Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11
Yaron Keren
yaron.keren at gmail.com
Sat Aug 1 12:23:53 PDT 2015
Hi,
ValID move contructor may be causing a compilation failure:
http://lab.llvm.org:8011/builders/clang-x86-win2008-selfhost/builds/2195/steps/build%20stage%202/logs/stdio
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\lib\AsmParser/LLParser.h(70,5)
: note: copy constructor is implicitly deleted because 'ValID' has a
user-declared move constructor
ValID(ValID &&RHS)
^
Yaron
2015-08-01 8:10 GMT+03:00 David Blaikie <dblaikie at gmail.com>:
> Author: dblaikie
> Date: Sat Aug 1 00:10:40 2015
> New Revision: 243824
>
> URL: http://llvm.org/viewvc/llvm-project?rev=243824&view=rev
> Log:
> -Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are
> deprecated in C++11
>
> Modified:
> llvm/trunk/lib/AsmParser/LLParser.cpp
> llvm/trunk/lib/AsmParser/LLParser.h
>
> Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=243824&r1=243823&r2=243824&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
> +++ llvm/trunk/lib/AsmParser/LLParser.cpp Sat Aug 1 00:10:40 2015
> @@ -13,6 +13,7 @@
>
> #include "LLParser.h"
> #include "llvm/ADT/SmallPtrSet.h"
> +#include "llvm/ADT/STLExtras.h"
> #include "llvm/AsmParser/SlotMapping.h"
> #include "llvm/IR/AutoUpgrade.h"
> #include "llvm/IR/CallingConv.h"
> @@ -2441,9 +2442,10 @@ bool LLParser::ParseValID(ValID &ID, Per
> ParseToken(lltok::rbrace, "expected end of struct constant"))
> return true;
>
> - ID.ConstantStructElts = new Constant*[Elts.size()];
> + ID.ConstantStructElts = make_unique<Constant *[]>(Elts.size());
> ID.UIntVal = Elts.size();
> - memcpy(ID.ConstantStructElts, Elts.data(),
> Elts.size()*sizeof(Elts[0]));
> + memcpy(ID.ConstantStructElts.get(), Elts.data(),
> + Elts.size() * sizeof(Elts[0]));
> ID.Kind = ValID::t_ConstantStruct;
> return false;
> }
> @@ -2462,8 +2464,9 @@ bool LLParser::ParseValID(ValID &ID, Per
> return true;
>
> if (isPackedStruct) {
> - ID.ConstantStructElts = new Constant*[Elts.size()];
> - memcpy(ID.ConstantStructElts, Elts.data(),
> Elts.size()*sizeof(Elts[0]));
> + ID.ConstantStructElts = make_unique<Constant *[]>(Elts.size());
> + memcpy(ID.ConstantStructElts.get(), Elts.data(),
> + Elts.size() * sizeof(Elts[0]));
> ID.UIntVal = Elts.size();
> ID.Kind = ValID::t_PackedConstantStruct;
> return false;
> @@ -4067,8 +4070,8 @@ bool LLParser::ConvertValIDToValue(Type
> return Error(ID.Loc, "element " + Twine(i) +
> " of struct initializer doesn't match struct element
> type");
>
> - V = ConstantStruct::get(ST, makeArrayRef(ID.ConstantStructElts,
> - ID.UIntVal));
> + V = ConstantStruct::get(
> + ST, makeArrayRef(ID.ConstantStructElts.get(), ID.UIntVal));
> } else
> return Error(ID.Loc, "constant expression type mismatch");
> return false;
>
> Modified: llvm/trunk/lib/AsmParser/LLParser.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.h?rev=243824&r1=243823&r2=243824&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/AsmParser/LLParser.h (original)
> +++ llvm/trunk/lib/AsmParser/LLParser.h Sat Aug 1 00:10:40 2015
> @@ -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;
> + std::unique_ptr<Constant *[]> ConstantStructElts;
>
> - ValID() : Kind(t_LocalID), APFloatVal(0.0) {}
> - ~ValID() {
> - if (Kind == t_ConstantStruct || Kind == t_PackedConstantStruct)
> - delete [] 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)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150801/3303a747/attachment.html>
More information about the llvm-commits
mailing list