[llvm] r203563 - Remove copy ctors that did the same thing as the default one.

Benjamin Kramer benny.kra at gmail.com
Tue Mar 11 10:14:40 PDT 2014


On 11.03.2014, at 17:35, David Blaikie <dblaikie at gmail.com> wrote:

> On Tue, Mar 11, 2014 at 7:27 AM, Rafael EspĂ­ndola
> <rafael.espindola at gmail.com> wrote:
>> Would it be possible to have a warning for this?
> 
> I'd love there to be a warning for this, personally.
> 
> Benjamin - how did you find all these instances? Any particular
> tool/technique/approach?

Grepping for all copy ctors and manually looked at those with an empty body. If we want to implement a warning for this eventually looking for bodyless copy ctors with an initializer for every member is probably the right approach.

- Ben
> 
>> 
>> On 11 March 2014 07:32, Benjamin Kramer <benny.kra at googlemail.com> wrote:
>>> Author: d0k
>>> Date: Tue Mar 11 06:32:49 2014
>>> New Revision: 203563
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=203563&view=rev
>>> Log:
>>> Remove copy ctors that did the same thing as the default one.
>>> 
>>> The code added nothing but potentially disabled move semantics and made
>>> types non-trivially copyable.
>>> 
>>> Modified:
>>>    llvm/trunk/include/llvm/ADT/EquivalenceClasses.h
>>>    llvm/trunk/include/llvm/ADT/STLExtras.h
>>>    llvm/trunk/include/llvm/ADT/SparseMultiSet.h
>>>    llvm/trunk/include/llvm/Analysis/Interval.h
>>>    llvm/trunk/include/llvm/IR/Attributes.h
>>>    llvm/trunk/include/llvm/IR/InlineAsm.h
>>>    llvm/trunk/include/llvm/IR/Metadata.h
>>>    llvm/trunk/include/llvm/Object/RelocVisitor.h
>>>    llvm/trunk/include/llvm/Support/TargetRegistry.h
>>>    llvm/trunk/include/llvm/Target/TargetLowering.h
>>>    llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
>>>    llvm/trunk/lib/IR/InlineAsm.cpp
>>>    llvm/trunk/utils/TableGen/CodeGenRegisters.h
>>> 
>>> Modified: llvm/trunk/include/llvm/ADT/EquivalenceClasses.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/EquivalenceClasses.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/ADT/EquivalenceClasses.h (original)
>>> +++ llvm/trunk/include/llvm/ADT/EquivalenceClasses.h Tue Mar 11 06:32:49 2014
>>> @@ -249,7 +249,6 @@ public:
>>> 
>>>     explicit member_iterator() {}
>>>     explicit member_iterator(const ECValue *N) : Node(N) {}
>>> -    member_iterator(const member_iterator &I) : Node(I.Node) {}
>>> 
>>>     reference operator*() const {
>>>       assert(Node != 0 && "Dereferencing end()!");
>>> 
>>> Modified: llvm/trunk/include/llvm/ADT/STLExtras.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/STLExtras.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/ADT/STLExtras.h (original)
>>> +++ llvm/trunk/include/llvm/ADT/STLExtras.h Tue Mar 11 06:32:49 2014
>>> @@ -97,8 +97,6 @@ public:
>>> 
>>>   inline explicit mapped_iterator(const RootIt &I, UnaryFunc F)
>>>     : current(I), Fn(F) {}
>>> -  inline mapped_iterator(const mapped_iterator &It)
>>> -    : current(It.current), Fn(It.Fn) {}
>>> 
>>>   inline value_type operator*() const {   // All this work to do this
>>>     return Fn(*current);         // little change
>>> 
>>> Modified: llvm/trunk/include/llvm/ADT/SparseMultiSet.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SparseMultiSet.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/ADT/SparseMultiSet.h (original)
>>> +++ llvm/trunk/include/llvm/ADT/SparseMultiSet.h Tue Mar 11 06:32:49 2014
>>> @@ -245,16 +245,6 @@ public:
>>>     typedef typename super::pointer pointer;
>>>     typedef typename super::reference reference;
>>> 
>>> -    iterator_base(const iterator_base &RHS)
>>> -      : SMS(RHS.SMS), Idx(RHS.Idx), SparseIdx(RHS.SparseIdx) { }
>>> -
>>> -    const iterator_base &operator=(const iterator_base &RHS) {
>>> -      SMS = RHS.SMS;
>>> -      Idx = RHS.Idx;
>>> -      SparseIdx = RHS.SparseIdx;
>>> -      return *this;
>>> -    }
>>> -
>>>     reference operator*() const {
>>>       assert(isKeyed() && SMS->sparseIndex(SMS->Dense[Idx].Data) == SparseIdx &&
>>>              "Dereferencing iterator of invalid key or index");
>>> 
>>> Modified: llvm/trunk/include/llvm/Analysis/Interval.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/Interval.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/Analysis/Interval.h (original)
>>> +++ llvm/trunk/include/llvm/Analysis/Interval.h Tue Mar 11 06:32:49 2014
>>> @@ -48,9 +48,6 @@ public:
>>>     Nodes.push_back(Header);
>>>   }
>>> 
>>> -  inline Interval(const Interval &I) // copy ctor
>>> -    : HeaderNode(I.HeaderNode), Nodes(I.Nodes), Successors(I.Successors) {}
>>> -
>>>   inline BasicBlock *getHeaderNode() const { return HeaderNode; }
>>> 
>>>   /// Nodes - The basic blocks in this interval.
>>> 
>>> Modified: llvm/trunk/include/llvm/IR/Attributes.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Attributes.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/IR/Attributes.h (original)
>>> +++ llvm/trunk/include/llvm/IR/Attributes.h Tue Mar 11 06:32:49 2014
>>> @@ -403,10 +403,6 @@ public:
>>>     addAttribute(A);
>>>   }
>>>   AttrBuilder(AttributeSet AS, unsigned Idx);
>>> -  AttrBuilder(const AttrBuilder &B)
>>> -    : Attrs(B.Attrs),
>>> -      TargetDepAttrs(B.TargetDepAttrs.begin(), B.TargetDepAttrs.end()),
>>> -      Alignment(B.Alignment), StackAlignment(B.StackAlignment) {}
>>> 
>>>   void clear();
>>> 
>>> 
>>> Modified: llvm/trunk/include/llvm/IR/InlineAsm.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/InlineAsm.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/IR/InlineAsm.h (original)
>>> +++ llvm/trunk/include/llvm/IR/InlineAsm.h Tue Mar 11 06:32:49 2014
>>> @@ -164,9 +164,6 @@ public:
>>>     ///Default constructor.
>>>     ConstraintInfo();
>>> 
>>> -    /// Copy constructor.
>>> -    ConstraintInfo(const ConstraintInfo &other);
>>> -
>>>     /// Parse - Analyze the specified string (e.g. "=*&{eax}") and fill in the
>>>     /// fields in this structure.  If the constraint string is not understood,
>>>     /// return true, otherwise return false.
>>> 
>>> Modified: llvm/trunk/include/llvm/IR/Metadata.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Metadata.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/IR/Metadata.h (original)
>>> +++ llvm/trunk/include/llvm/IR/Metadata.h Tue Mar 11 06:32:49 2014
>>> @@ -219,7 +219,6 @@ class NamedMDNode : public ilist_node<Na
>>> 
>>>   public:
>>>     op_iterator_impl() : Node(0), Idx(0) { }
>>> -    op_iterator_impl(const op_iterator_impl &o) : Node(o.Node), Idx(o.Idx) { }
>>> 
>>>     bool operator==(const op_iterator_impl &o) const { return Idx == o.Idx; }
>>>     bool operator!=(const op_iterator_impl &o) const { return Idx != o.Idx; }
>>> @@ -242,11 +241,6 @@ class NamedMDNode : public ilist_node<Na
>>>       return tmp;
>>>     }
>>> 
>>> -    op_iterator_impl &operator=(const op_iterator_impl &o) {
>>> -      Node = o.Node;
>>> -      Idx = o.Idx;
>>> -      return *this;
>>> -    }
>>>     T1 operator*() const { return Node->getOperand(Idx); }
>>>   };
>>> 
>>> 
>>> Modified: llvm/trunk/include/llvm/Object/RelocVisitor.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/RelocVisitor.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/Object/RelocVisitor.h (original)
>>> +++ llvm/trunk/include/llvm/Object/RelocVisitor.h Tue Mar 11 06:32:49 2014
>>> @@ -33,7 +33,6 @@ struct RelocToApply {
>>>   // The width of the value; how many bytes to touch when applying the
>>>   // relocation.
>>>   char Width;
>>> -  RelocToApply(const RelocToApply &In) : Value(In.Value), Width(In.Width) {}
>>>   RelocToApply(int64_t Value, char Width) : Value(Value), Width(Width) {}
>>>   RelocToApply() : Value(0), Width(0) {}
>>> };
>>> 
>>> Modified: llvm/trunk/include/llvm/Support/TargetRegistry.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/TargetRegistry.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/Support/TargetRegistry.h (original)
>>> +++ llvm/trunk/include/llvm/Support/TargetRegistry.h Tue Mar 11 06:32:49 2014
>>> @@ -486,7 +486,6 @@ namespace llvm {
>>>       explicit iterator(Target *T) : Current(T) {}
>>>       friend struct TargetRegistry;
>>>     public:
>>> -      iterator(const iterator &I) : Current(I.Current) {}
>>>       iterator() : Current(0) {}
>>> 
>>>       bool operator==(const iterator &x) const {
>>> 
>>> Modified: llvm/trunk/include/llvm/Target/TargetLowering.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/Target/TargetLowering.h (original)
>>> +++ llvm/trunk/include/llvm/Target/TargetLowering.h Tue Mar 11 06:32:49 2014
>>> @@ -2254,15 +2254,6 @@ public:
>>>     /// operand it matches.
>>>     unsigned getMatchedOperand() const;
>>> 
>>> -    /// Copy constructor for copying from an AsmOperandInfo.
>>> -    AsmOperandInfo(const AsmOperandInfo &info)
>>> -      : InlineAsm::ConstraintInfo(info),
>>> -        ConstraintCode(info.ConstraintCode),
>>> -        ConstraintType(info.ConstraintType),
>>> -        CallOperandVal(info.CallOperandVal),
>>> -        ConstraintVT(info.ConstraintVT) {
>>> -    }
>>> -
>>>     /// Copy constructor for copying from a ConstraintInfo.
>>>     AsmOperandInfo(const InlineAsm::ConstraintInfo &info)
>>>       : InlineAsm::ConstraintInfo(info),
>>> 
>>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp (original)
>>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Tue Mar 11 06:32:49 2014
>>> @@ -1539,7 +1539,6 @@ template<class SF>
>>> struct reverse_sort : public queue_sort {
>>>   SF &SortFunc;
>>>   reverse_sort(SF &sf) : SortFunc(sf) {}
>>> -  reverse_sort(const reverse_sort &RHS) : SortFunc(RHS.SortFunc) {}
>>> 
>>>   bool operator()(SUnit* left, SUnit* right) const {
>>>     // reverse left/right rather than simply !SortFunc(left, right)
>>> @@ -1559,7 +1558,6 @@ struct bu_ls_rr_sort : public queue_sort
>>> 
>>>   RegReductionPQBase *SPQ;
>>>   bu_ls_rr_sort(RegReductionPQBase *spq) : SPQ(spq) {}
>>> -  bu_ls_rr_sort(const bu_ls_rr_sort &RHS) : SPQ(RHS.SPQ) {}
>>> 
>>>   bool operator()(SUnit* left, SUnit* right) const;
>>> };
>>> @@ -1574,8 +1572,6 @@ struct src_ls_rr_sort : public queue_sor
>>>   RegReductionPQBase *SPQ;
>>>   src_ls_rr_sort(RegReductionPQBase *spq)
>>>     : SPQ(spq) {}
>>> -  src_ls_rr_sort(const src_ls_rr_sort &RHS)
>>> -    : SPQ(RHS.SPQ) {}
>>> 
>>>   bool operator()(SUnit* left, SUnit* right) const;
>>> };
>>> @@ -1590,8 +1586,6 @@ struct hybrid_ls_rr_sort : public queue_
>>>   RegReductionPQBase *SPQ;
>>>   hybrid_ls_rr_sort(RegReductionPQBase *spq)
>>>     : SPQ(spq) {}
>>> -  hybrid_ls_rr_sort(const hybrid_ls_rr_sort &RHS)
>>> -    : SPQ(RHS.SPQ) {}
>>> 
>>>   bool isReady(SUnit *SU, unsigned CurCycle) const;
>>> 
>>> @@ -1609,8 +1603,6 @@ struct ilp_ls_rr_sort : public queue_sor
>>>   RegReductionPQBase *SPQ;
>>>   ilp_ls_rr_sort(RegReductionPQBase *spq)
>>>     : SPQ(spq) {}
>>> -  ilp_ls_rr_sort(const ilp_ls_rr_sort &RHS)
>>> -    : SPQ(RHS.SPQ) {}
>>> 
>>>   bool isReady(SUnit *SU, unsigned CurCycle) const;
>>> 
>>> 
>>> Modified: llvm/trunk/lib/IR/InlineAsm.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/InlineAsm.cpp?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/IR/InlineAsm.cpp (original)
>>> +++ llvm/trunk/lib/IR/InlineAsm.cpp Tue Mar 11 06:32:49 2014
>>> @@ -64,16 +64,6 @@ InlineAsm::ConstraintInfo::ConstraintInf
>>>   currentAlternativeIndex(0) {
>>> }
>>> 
>>> -/// Copy constructor.
>>> -InlineAsm::ConstraintInfo::ConstraintInfo(const ConstraintInfo &other) :
>>> -  Type(other.Type), isEarlyClobber(other.isEarlyClobber),
>>> -  MatchingInput(other.MatchingInput), isCommutative(other.isCommutative),
>>> -  isIndirect(other.isIndirect), Codes(other.Codes),
>>> -  isMultipleAlternative(other.isMultipleAlternative),
>>> -  multipleAlternatives(other.multipleAlternatives),
>>> -  currentAlternativeIndex(other.currentAlternativeIndex) {
>>> -}
>>> -
>>> /// Parse - Analyze the specified string (e.g. "==&{eax}") and fill in the
>>> /// fields in this structure.  If the constraint string is not understood,
>>> /// return true, otherwise return false.
>>> 
>>> Modified: llvm/trunk/utils/TableGen/CodeGenRegisters.h
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenRegisters.h?rev=203563&r1=203562&r2=203563&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/utils/TableGen/CodeGenRegisters.h (original)
>>> +++ llvm/trunk/utils/TableGen/CodeGenRegisters.h Tue Mar 11 06:32:49 2014
>>> @@ -374,11 +374,6 @@ namespace llvm {
>>>       unsigned SpillSize;
>>>       unsigned SpillAlignment;
>>> 
>>> -      Key(const Key &O)
>>> -        : Members(O.Members),
>>> -          SpillSize(O.SpillSize),
>>> -          SpillAlignment(O.SpillAlignment) {}
>>> -
>>>       Key(const CodeGenRegister::Set *M, unsigned S = 0, unsigned A = 0)
>>>         : Members(M), SpillSize(S), SpillAlignment(A) {}
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list