[PATCH] D23466: ADT: Remove UB in ilist (and use a circular linked list)

Duncan P. N. Exon Smith via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 14 16:42:54 PDT 2016


> On 2016-Aug-13, at 16:37, Mehdi Amini <mehdi.amini at apple.com> wrote:
> 
> 
>> On Aug 13, 2016, at 2:54 PM, Duncan P. N. Exon Smith via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>> 
>> 
>>> On 2016-Aug-12, at 17:31, Duncan P. N. Exon Smith via llvm-commits <llvm-commits at lists.llvm.org> wrote:
>>> 
>>>> 
>>>> ================
>>>> Comment at: include/llvm/ADT/ilist.h:324
>>>> @@ -424,7 +323,3 @@
>>>> 
>>>> -  iplist() : Head(this->provideInitialHead()) {}
>>>> -  ~iplist() {
>>>> -    if (!Head) return;
>>>> -    clear();
>>>> -    Traits::destroySentinel(getTail());
>>>> -  }
>>>> +  iplist() = default;
>>>> +  ~iplist() { clear(); }
>>>> ----------------
>>>> Could be removed?
>>> 
>>> Certainly the destructor needs to stay.  I'll remove the default constructor if it still compiles (but I'm always wary about what will or will not compile on MSVC...)
>> 
>> BTW, this didn't compile without `iplist() = default`.
> 
> Interesting, what was the reason?

Specifically:

/Users/dexonsmith/data/llvm/working/include/llvm/ADT/ilist.h:599:3: error: constructor for 'llvm::ilist<llvm::yaml::Token>' must explicitly initialize the base class 'iplist<llvm::yaml::Token>' which does not have a default constructor
  ilist() {}
  ^
/Users/dexonsmith/data/llvm/working/lib/Support/YAMLParser.cpp:751:10: note: in instantiation of member function 'llvm::ilist<llvm::yaml::Token>::ilist' requested here
Scanner::Scanner(StringRef Input, SourceMgr &sm, bool ShowColors)
         ^
/Users/dexonsmith/data/llvm/working/include/llvm/ADT/ilist.h:284:7: note: 'llvm::iplist<llvm::yaml::Token, llvm::ilist_traits<llvm::yaml::Token> >' declared here
class iplist : public Traits, ilist_node_access {
      ^
1 error generated.

I assume this is because of:

iplist(const iplist &) = delete;



>> Mehdi
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160814/887d8316/attachment.html>


More information about the llvm-commits mailing list