[lldb-dev] clang::VersionTuple

Jim Ingham via lldb-dev lldb-dev at lists.llvm.org
Fri Jun 15 11:54:49 PDT 2018



> On Jun 15, 2018, at 3:44 AM, Pavel Labath via lldb-dev <lldb-dev at lists.llvm.org> wrote:
> 
> Hello again,
> 
> Just a quick update on the state of this.
> 
> I've managed to move VersionTuple from clang to llvm. I've also
> created <https://reviews.llvm.org/D47889> to switch over our version
> handling to that class.
> 
> Could I interest anyone in taking a quick look at the patch?


Somehow I can’t log into Phabricator from home so I can’t comment right now, but I took a look.  

In some of your changes in the SB files you do:

  if (PlatformSP platform_sp = GetSP())
    version = platform_sp->GetOSVersion();

I don’t like putting initializers in if statements like this because I always have to think twice about whether you meant “==“.  Moreover, all of the surrounding code does it differently:

  PlatformSP platform_sp = GetSP()
  if (platform_sp)
    version = platform_sp->GetOSVersion();

so switching to the other form in a couple of places only kinda forces the double-take.  But that’s a little nit.

Given that clang::VersionTuple::tryParse does what the hand-parsing in place (which I’m assuming it does or you wouldn’t have used it) this looks fine and a nice cleanup to me.

Jim


> 
> pl
> 
> On Wed, 9 May 2018 at 08:49, Pavel Labath <labath at google.com> wrote:
>> 
>> Thank you all for the feedback. I'll get on with this when I find some
>> spare time. I will send a patch which will show the final look of the code,
>> before I start moving VersionTuple into llvm.
>> 
>> cheers,
>> pl
>> On Tue, 8 May 2018 at 19:46, Frédéric Riss via lldb-dev <
>> lldb-dev at lists.llvm.org> wrote:
>> 
>> 
>> 
>>> On May 8, 2018, at 11:37 AM, Greg Clayton <clayborg at gmail.com> wrote:
>> 
>>> I was referring to the Swift and Apple internal branches. They tend to
>> lock down against older llvm and clang repositories so when we put changes
>> in llvm or clang that are required for LLDB, it makes merging a bit tougher
>> in those cases. Again, I am not affected by this, just trying to watch out
>> for you guys.
>> 
>> 
>>> I understand and I appreciate it, I was just worried that I’m missing
>> something obvious. We branch LLDB at the same time as LLVM so that’s not
>> actually an issue. Of course, it might cause merge conflicts or make it
>> harder to cherry-pick patches, but that's just living downstream.
>> 
>>> Fred
>> 
>>> Greg
>> 
>> 
>>> On May 8, 2018, at 11:35 AM, Greg Clayton <clayborg at gmail.com> wrote:
>> 
>>> I'm good if Apple is good.
>> 
>>> On May 8, 2018, at 11:31 AM, Frédéric Riss <friss at apple.com> wrote:
>> 
>> 
>> 
>>> On May 8, 2018, at 10:04 AM, Greg Clayton via lldb-dev <
>> lldb-dev at lists.llvm.org> wrote:
>> 
>> 
>> 
>>> On May 8, 2018, at 9:47 AM, Zachary Turner <zturner at google.com> wrote:
>> 
>>> We don’t want the lowest levels of lldb to depend on clang. If this is
>> useful we should move it from clang to llvm and use llvm::VersionTuple
>> 
>> 
>>> I agree, though this move will cause merging issues for many that have
>> repositories that link against older llvm/clang. Doesn't affect me anymore,
>> but Apple will be affected.
>> 
>> 
>>> I’m not sure I understand what issues you’re referring to, we don’t link
>> new LLDBs to old clangs (and even if we did, it wouldn’t be something the
>> that drives community decisions).
>> 
>>> Fred
>> 
>>> Greg
>> 
>>> On Tue, May 8, 2018 at 9:26 AM Greg Clayton via lldb-dev <
>> lldb-dev at lists.llvm.org> wrote:
>> 
>>>> No issues from me.
>> 
>>>>> On May 8, 2018, at 9:11 AM, Pavel Labath via lldb-dev <
>> lldb-dev at lists.llvm.org> wrote:
>>>>> 
>>>>> While moving Args around, I noticed that we have a bunch of
>>>>> functions/classes that pass/store version numbers as a triplet of
>> integers
>>>>> (e.g. Platform::GetOSVersion). I got halfway into creating a wrapper
>> class
>>>>> for that when I noticed clang::VersionTuple, which is pretty much what
>> I
>>>>> wanted out of the box.
>>>>> 
>>>>> Now there are small differences between this class, and what we have
>> now:
>>>>> it has an extra fourth "build" field, and it uses only 31 bits to
>> represent
>>>>> the values. None of these seem to matter (particularly as we are
>>>>> converting our representation into this struct in some places) that
>> much,
>>>>> but before I go through the trouble of pulling this class into llvm
>>>>> (although technically possible, it seems wrong to pull a clang
>> dependency
>>>>> at such a low level), I wanted to make sure we are able to use it.
>>>>> 
>>>>> Do you see any reason why we could not replace our version triplets
>> with
>>>>> clang::VersionTuple ?
>>>>> 
>>>>> cheers,
>>>>> pl
>>>>> _______________________________________________
>>>>> lldb-dev mailing list
>>>>> lldb-dev at lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>> 
>>>> _______________________________________________
>>>> lldb-dev mailing list
>>>> lldb-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>> 
>> 
>>> _______________________________________________
>>> lldb-dev mailing list
>>> lldb-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>> 
>> 
>> 
>> 
>>> _______________________________________________
>>> lldb-dev mailing list
>>> lldb-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev



More information about the lldb-dev mailing list