Did this fix the bitfield problem too?  I didn’t fix that one.<br><div class="gmail_quote"><div dir="ltr">On Fri, Nov 16, 2018 at 11:56 AM Davide Italiano <<a href="mailto:davide@freebsd.org">davide@freebsd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I saw you partially fixed this.<br>
<br>
I addressed the remaining problem in:<br>
Davides-Mac-Pro:lldb davide$ git llvm push<br>
Pushing 1 commit:<br>
  b6fd30d9119 [Cocoa] Prefer llvm::SignExtend64. Pointed out by zturner.<br>
Sending        lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp<br>
Transmitting file data .done<br>
Committing transaction...<br>
Committed revision 347087.<br>
Committed b6fd30d9119 to svn.<br>
<br>
<br>
--<br>
Davide<br>
On Fri, Nov 16, 2018 at 10:09 AM Davide Italiano <<a href="mailto:davide@freebsd.org" target="_blank">davide@freebsd.org</a>> wrote:<br>
><br>
> Sorry Zach, I was sick for the past few days. I'll look into this one now.<br>
><br>
> --<br>
> Davide<br>
> On Wed, Nov 14, 2018 at 9:16 AM Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
> ><br>
> ><br>
> ><br>
> > On Tue, Nov 13, 2018 at 11:46 AM Davide Italiano via lldb-commits <<a href="mailto:lldb-commits@lists.llvm.org" target="_blank">lldb-commits@lists.llvm.org</a>> wrote:<br>
> >><br>
> >> Author: davide<br>
> >> Date: Tue Nov 13 11:43:43 2018<br>
> >> New Revision: 346783<br>
> >><br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=346783&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=346783&view=rev</a><br>
> >> Log:<br>
> >> [Cocoa] Implement formatter for the new NSDate representation.<br>
> >><br>
> >> <rdar://problem/46002786><br>
> >><br>
> >> Modified:<br>
> >>     lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp<br>
> >><br>
> >> Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp?rev=346783&r1=346782&r2=346783&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp?rev=346783&r1=346782&r2=346783&view=diff</a><br>
> >> ==============================================================================<br>
> >> --- lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp (original)<br>
> >> +++ lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp Tue Nov 13 11:43:43 2018<br>
> >> @@ -742,6 +742,60 @@ bool lldb_private::formatters::NSURLSumm<br>
> >>    return false;<br>
> >>  }<br>
> >><br>
> >> +/// Bias value for tagged pointer exponents.<br>
> >> +/// Recommended values:<br>
> >> +/// 0x3e3: encodes all dates between distantPast and distantFuture<br>
> >> +///   except for the range within about 1e-28 second of the reference date.<br>
> >> +/// 0x3ef: encodes all dates for a few million years beyond distantPast and<br>
> >> +///   distantFuture, except within about 1e-25 second of the reference date.<br>
> >> +const int TAGGED_DATE_EXPONENT_BIAS = 0x3ef;<br>
> >> +<br>
> >> +typedef union {<br>
> >> +  struct {<br>
> >> +    uint64_t fraction:52;  // unsigned<br>
> >> +    uint64_t exponent:11;  // signed<br>
> >> +    uint64_t sign:1;<br>
> >> +  };<br>
> >> +  uint64_t i;<br>
> >> +  double d;<br>
> >> +} DoubleBits;<br>
> >> +typedef union {<br>
> >> +  struct {<br>
> >> +    uint64_t fraction:52;  // unsigned<br>
> >> +    uint64_t exponent:7;   // signed<br>
> >> +    uint64_t sign:1;<br>
> >> +    uint64_t unused:4;  // placeholder for pointer tag bits<br>
> >> +  };<br>
> ><br>
> > MSVC gives:<br>
> ><br>
> > warning C4201: nonstandard extension used: nameless struct/union<br>
> ><br>
> >><br>
> >> +  uint64_t i;<br>
> >> +} TaggedDoubleBits;<br>
> >> +<br>
> >> +static uint64_t decodeExponent(uint64_t exp) {<br>
> >> +  int64_t exp7 = exp;<br>
> >> +  // Tagged exponent field is 7-bit signed. Sign-extend the value to 64 bits<br>
> >> +  // before performing arithmetic.<br>
> >> +  int64_t exp11 = ((exp7 << 57) >> 57) + TAGGED_DATE_EXPONENT_BIAS;<br>
> >> +  return exp11;<br>
> >> +}<br>
> ><br>
> > this should probably be:<br>
> ><br>
> > return llvm::SignExtend64<7>(exp) + TAGGED_DATE_EXPONENT_BIAS;<br>
> ><br>
> >><br>
> >> +<br>
> >> +static uint64_t decodeTaggedTimeInterval(uint64_t encodedTimeInterval) {<br>
> >> +  if (encodedTimeInterval == 0)<br>
> >> +    return 0.0;<br>
> >> +  if (encodedTimeInterval == std::numeric_limits<uint64_t>::max())<br>
> >> +    return -0.0;<br>
> >> +<br>
> >> +  TaggedDoubleBits encodedBits = { .i = encodedTimeInterval };<br>
> ><br>
> > Designated initializers are C++20 which are not allowed in LLVM.<br>
><br>
><br>
><br>
> --<br>
> Davide<br>
><br>
> "There are no solved problems; there are only problems that are more<br>
> or less solved" -- Henri Poincare<br>
<br>
<br>
<br>
-- <br>
Davide<br>
<br>
"There are no solved problems; there are only problems that are more<br>
or less solved" -- Henri Poincare<br>
</blockquote></div>