<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 16, 2014 at 3:50 PM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Okay, so *now* the original email just came in for me. So perhaps Phab<br>
was just running very (12 hours) behind on this?<br></blockquote><div><br></div><div>It was a retry - I just fixed a problem where phab got dos-attacked by a user registering an invalid email, and then subscribing to basically all initial patches, and phab started to retry the initial messages it wasn't able to send out before.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
~Aaron<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Mon, Jun 16, 2014 at 7:56 AM, Manuel Klimek <<a href="mailto:klimek@google.com">klimek@google.com</a>> wrote:<br>
> On Mon, Jun 16, 2014 at 1:50 PM, Yaron Keren <<a href="mailto:yaron.keren@gmail.com">yaron.keren@gmail.com</a>> wrote:<br>
>><br>
>> Hi Manuel,<br>
>><br>
>> The situation with Phab is somewhat different than the e-mail lists since<br>
>> you can create a revision without CC the lists but you can't post on the<br>
>> lists without mailing it...<br>
><br>
><br>
> You can write emails to people personally without cc'ing the list.<br>
> I can (and have) sent patches to people off-list, when I just wanted to<br>
> throw around an idea that I didn't think was ready for review, or somebody<br>
> else wanted to patch it in. Of course that doesn't count as review...<br>
><br>
>><br>
>> Sending to both lists of course make no sense, I thought about having a CC<br>
>> default of the two lists and the engineer will choose which one (or possibly<br>
>> both) to remove while creating the revision rather having none and the<br>
>> engineer choosing which one to add. This way one can't forget to add the CC<br>
>> list since they are the default.<br>
><br>
><br>
> I still believe that this can be easily addressed with education (but I am<br>
> aware that I might be wrong), the same way I point out to somebody who sends<br>
> me reviews privately via email (yes, that happens, too) to send it to<br>
> cfe-commits.<br>
><br>
>><br>
>><br>
>> Yaron<br>
>><br>
>><br>
>><br>
>><br>
>> 2014-06-16 14:44 GMT+03:00 Manuel Klimek <<a href="mailto:klimek@google.com">klimek@google.com</a>>:<br>
>><br>
>>> On Mon, Jun 16, 2014 at 1:34 PM, Yaron Keren <<a href="mailto:yaron.keren@gmail.com">yaron.keren@gmail.com</a>><br>
>>> wrote:<br>
>>>><br>
>>>> I had seen messages from the mailing list bot telling me as a revision<br>
>>>> owner that the automated e-mail from Phab needs approval since it addressed<br>
>>>> too many e-mails. This may be another possible point of failure. Otherwise,<br>
>>>> I find Phab to be much more orderly way of reviewing than the list.<br>
>>>><br>
>>>> Right now the default in Phab is no CC to the lists. How about making<br>
>>>> the default CC to llvm-commits and/or cfe-commits?<br>
>>><br>
>>><br>
>>> I think using both would be too spammy, and deciding on one would need<br>
>>> somebody to put some implementation effort into it. I think engineers are<br>
>>> generally very capable of adding the right list to CC, much like they are<br>
>>> when sending emails.<br>
>>><br>
>>> Cheers,<br>
>>> /Manuel<br>
>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> 2014-06-16 14:02 GMT+03:00 Timur Iskhodzhanov <<a href="mailto:timurrrr@google.com">timurrrr@google.com</a>>:<br>
>>>>><br>
>>>>> I by no means blame you for pointing that out.  I don't support the<br>
>>>>> exact way it was done though.<br>
>>>>><br>
>>>>> 16 июня 2014 г. 15:00 пользователь "Alp Toker" <<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>><br>
>>>>> написал:<br>
>>>>><br>
>>>>>><br>
>>>>>> On 16/06/2014 13:28, Timur Iskhodzhanov wrote:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> Some of these are good questions for whoever runs Phab (not David<br>
>>>>>>> AFAIK), but for a different discussion (feel free to start a new thread on<br>
>>>>>>> the list).<br>
>>>>>>><br>
>>>>>>> I see nothing wrong David had done intentionally during this review,<br>
>>>>>>> so I'd prefer if you apologize to him for the rant and we get back to work<br>
>>>>>>> (and I'll get back to my sick leave).<br>
>>>>>>><br>
>>>>>><br>
>>>>>> Timur, that's out of order. The developer policy makes it clear the<br>
>>>>>> list is the place for patches. It's also made clear:<br>
>>>>>><br>
>>>>>>   " If someone sends you a patch privately, encourage them to submit<br>
>>>>>> it to the appropriate list first."<br>
>>>>>><br>
>>>>>>   <a href="http://llvm.org/docs/DeveloperPolicy.html" target="_blank">http://llvm.org/docs/DeveloperPolicy.html</a><br>
>>>>>><br>
>>>>>> It's basically not OK that every time the community is excluded from<br>
>>>>>> review, some tool gets blamed and the person pointing it out gets personally<br>
>>>>>> attacked.<br>
>>>>>><br>
>>>>>> The policy makes it clear that responsibility lies with the author. If<br>
>>>>>> I hadn't pointed this out, the code would have just slipped through as<br>
>>>>>> happens quite often, without anyone outside the closed circle getting a say.<br>
>>>>>><br>
>>>>>> How about we focus on fixing that instead of making this about<br>
>>>>>> personalities?<br>
>>>>>><br>
>>>>>> The patch workflow is becoming increasingly dysfunctional with 3.5<br>
>>>>>> just round the corner and I'm concerned, and speaking up about it.<br>
>>>>>><br>
>>>>>> Alp.<br>
>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>>> 16 июня 2014 г. 14:01 пользователь "Alp Toker" <<a href="mailto:alp@nuanti.com">alp@nuanti.com</a><br>
>>>>>>> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>>> написал:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>     On 16/06/2014 12:11, Timur Iskhodzhanov wrote:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>         I'm sorry to see that you've read my email very differently<br>
>>>>>>>         from what I've intended.<br>
>>>>>>>         I think you should calm down a little bit and read the Phab<br>
>>>>>>>         log in our shoes.  I don't think anyone on this thread tried<br>
>>>>>>>         to do anything suspicious on purpose.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>     Okay, let's try to understand how the patch workflow goes in your<br>
>>>>>>>     shoes. I think more transparency about the web-based review<br>
>>>>>>>     workflow is needed.<br>
>>>>>>><br>
>>>>>>>     None of the below is actually clear to people using the mailing<br>
>>>>>>>     list for review, and very often the web-based changes seem fly by<br>
>>>>>>>     in read-only form or on-list reviews get summarily ignored:<br>
>>>>>>><br>
>>>>>>>     How are the CC lists for patches decided? The names don't seem to<br>
>>>>>>>     be derived from the canonical CODE_OWNERS.txt -- are they<br>
>>>>>>>     maintained in SVN or a separate repository?<br>
>>>>>>><br>
>>>>>>>     Is there public access to see who is assigned to what piece of<br>
>>>>>>>     code? How are these decided, and are mailing list reviewers able<br>
>>>>>>>     to join the CC list or is it exclusive to web-based reviewers?<br>
>>>>>>><br>
>>>>>>>     What determines if a patch is in "private pre-review" and<br>
>>>>>>> excluded<br>
>>>>>>>     from public mailing lists? Is there some kind of<br>
>>>>>>> subscription-only<br>
>>>>>>>     mailing list to track such patches, or are they kept in a private<br>
>>>>>>>     database?<br>
>>>>>>><br>
>>>>>>>     Why do arbitrary names show up on the "Reviewers" line when<br>
>>>>>>> review<br>
>>>>>>>     was actually been done by someone on-list?<br>
>>>>>>><br>
>>>>>>>     Why do on-list reviews of web-based patches frequently get<br>
>>>>>>>     ignored? Are the patch authors ignoring something, or is it a bug<br>
>>>>>>>     in the web interface?<br>
>>>>>>><br>
>>>>>>>     Alp.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>         16 июня 2014 г. 13:00 пользователь "Alp Toker"<br>
>>>>>>> <<a href="mailto:alp@nuanti.com">alp@nuanti.com</a><br>
>>>>>>>         <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a><br>
>>>>>>>         <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>>>> написал:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>             On 16/06/2014 11:32, Timur Iskhodzhanov wrote:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                 I think it wasn't hard to see llvm-commits on CC in<br>
>>>>>>>         Phab.  I<br>
>>>>>>>                 can't imagine a single reason for an ADT review to be<br>
>>>>>>>         private<br>
>>>>>>>                 and David responses were perfectly reasonable for me<br>
>>>>>>>         (note I<br>
>>>>>>>                 was one of the reviewers and saw all the mail).<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>             That attitude is part of the problem. I don't think it's<br>
>>>>>>>         OK for<br>
>>>>>>>             the patch to skip the mailing list Just because it seemed<br>
>>>>>>>             reasonable to you and David.<br>
>>>>>>><br>
>>>>>>>             Did you notice there are two duplicate copies of a large<br>
>>>>>>>         chunk of<br>
>>>>>>>             code in the patch, presumably attempting to provide<br>
>>>>>>>         const-correctness?<br>
>>>>>>><br>
>>>>>>>             I guess not, but why exclude others from pointing out<br>
>>>>>>>         flaws and<br>
>>>>>>>             improving quality of review?<br>
>>>>>>><br>
>>>>>>>                 It looks like this time you've trusted the technology<br>
>>>>>>> more<br>
>>>>>>>                 than you've trusted people -- if you ask me, you<br>
>>>>>>>         should have<br>
>>>>>>>                 much stronger arguments before blaming people like<br>
>>>>>>> this.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>             It turns out the technology was right -- as Manuel<br>
>>>>>>> pointed<br>
>>>>>>>         out,<br>
>>>>>>>             the patch was *never sent to the list* and only you guys<br>
>>>>>>>         had the<br>
>>>>>>>             chance to comment.<br>
>>>>>>><br>
>>>>>>>             Alp.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                 16 июня 2014 г. 12:07 пользователь "Alp Toker"<br>
>>>>>>>         <<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>><br>
>>>>>>>                 <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>>><br>
>>>>>>>         <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>><br>
>>>>>>>                 <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>>>>><br>
>>>>>>> написал:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                     On 16/06/2014 10:32, David Blaikie wrote:<br>
>>>>>>><br>
>>>>>>>                         On Mon, Jun 16, 2014 at 12:28 AM, Alp Toker<br>
>>>>>>>                 <<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>><br>
>>>>>>>         <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>>><br>
>>>>>>>                         <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a><br>
>>>>>>> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>><br>
>>>>>>>         <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>>>>> wrote:<br>
>>>>>>><br>
>>>>>>>                             On 16/06/2014 10:01, David Blaikie wrote:<br>
>>>>>>><br>
>>>>>>>                                 The test case looks a bit thin - it<br>
>>>>>>>         doesn't<br>
>>>>>>>                 test the<br>
>>>>>>>                                 return value of<br>
>>>>>>>                                 insert, only tests one of the two<br>
>>>>>>> insert<br>
>>>>>>>                 functions the<br>
>>>>>>>                                 patch<br>
>>>>>>>                                 introduces, and doesn't test positive<br>
>>>>>>>         and negative<br>
>>>>>>>                                 cases of insert<br>
>>>>>>>                                 (pre-existing element and new<br>
>>>>>>> insertion)<br>
>>>>>>><br>
>>>>>>>                                 Does this function have some/all<br>
>>>>>>>         redundancy with<br>
>>>>>>>                                 existing interface?<br>
>>>>>>>                                 (should the other insert-like APIs be<br>
>>>>>>>                 refactored to<br>
>>>>>>>                                 call insert (&<br>
>>>>>>>                                 perhaps eventually removed in favor<br>
>>>>>>> of<br>
>>>>>>>         just using<br>
>>>>>>>                                 insert?))<br>
>>>>>>><br>
>>>>>>>                                 In the other code review you mention<br>
>>>>>>>         StringMap<br>
>>>>>>>                 has an<br>
>>>>>>>                                 insert that<br>
>>>>>>>                                 returns bool? Yet you're not<br>
>>>>>>> modifying<br>
>>>>>>>         that<br>
>>>>>>>                 version<br>
>>>>>>>                                 here? What<br>
>>>>>>>                                 arguments does it take that make it<br>
>>>>>>>         distinct<br>
>>>>>>>                 from the<br>
>>>>>>>                                 two functions<br>
>>>>>>>                                 you're adding?<br>
>>>>>>><br>
>>>>>>>                                 (though don't get me wrong, this<br>
>>>>>>> seems<br>
>>>>>>>         like a good<br>
>>>>>>>                                 change to make)<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                             I'm sorry David, that's not your decision<br>
>>>>>>>         to make.<br>
>>>>>>>                 This is<br>
>>>>>>>                             taking the<br>
>>>>>>>                             private review idea way too far.<br>
>>>>>>><br>
>>>>>>>                             The patch should be posted to<br>
>>>>>>> llvm-commits for<br>
>>>>>>>                 public review.<br>
>>>>>>><br>
>>>>>>>                         I'm not sure what you're referring to, but I<br>
>>>>>>> guess<br>
>>>>>>>                 it's a Phab<br>
>>>>>>>                         bug/mail delivery issue, because I replied to<br>
>>>>>>> the<br>
>>>>>>>                 on-list mail<br>
>>>>>>>                         with an<br>
>>>>>>>                         on-list reply. This is a code review<br>
>>>>>>> occurring on<br>
>>>>>>>                 llvm-commits.<br>
>>>>>>><br>
>>>>>>>                         Perhaps it ended up in your spam filter?<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                     David, could you check your facts instead of<br>
>>>>>>>         firing off<br>
>>>>>>>                 defensive<br>
>>>>>>>                     one-liners?<br>
>>>>>>><br>
>>>>>>>                     The revision is private and there is no public<br>
>>>>>>>         record of<br>
>>>>>>>                 the patch<br>
>>>>>>>                     at all:<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> <a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140616/thread.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20140616/thread.html</a><br>

>>>>>>><br>
>>>>>>>                     Sneaking commits into SVN without inviting public<br>
>>>>>>>         review, and<br>
>>>>>>>                     blaming tools when it gets noticed is so last<br>
>>>>>>> week.<br>
>>>>>>><br>
>>>>>>>                     Alp.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                         - David<br>
>>>>>>><br>
>>>>>>>                             Alp.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                                 On Sun, Jun 15, 2014 at 6:17 PM,<br>
>>>>>>>         Agustín Bergé<br>
>>>>>>>                                 <<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a><br>
>>>>>>>         <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a>><br>
>>>>>>>                 <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a><br>
>>>>>>>         <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a>>> <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a><br>
>>>>>>>         <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a>><br>
>>>>>>>                 <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a><br>
>>>>>>>         <mailto:<a href="mailto:kaballo86@hotmail.com">kaballo86@hotmail.com</a>>>>><br>
>>>>>>>                                 wrote:<br>
>>>>>>><br>
>>>>>>>                                     Hi timurrrr, dblaikie, bkramer,<br>
>>>>>>><br>
>>>>>>>                                     This patch adds to `StringMap`<br>
>>>>>>>         overloads of<br>
>>>>>>>                                     `insert` taking a<br>
>>>>>>>                                     `std::pair<K, V>`, following the<br>
>>>>>>>         standard<br>
>>>>>>>                                     associative container interface.<br>
>>>>>>>                                     This was suggested in<br>
>>>>>>>         <a href="http://reviews.llvm.org/D4130" target="_blank">http://reviews.llvm.org/D4130</a><br>
>>>>>>><br>
>>>>>>>         <a href="http://reviews.llvm.org/D4153" target="_blank">http://reviews.llvm.org/D4153</a><br>
>>>>>>><br>
>>>>>>>                                     Files:<br>
>>>>>>>                                         include/llvm/ADT/StringMap.h<br>
>>>>>>><br>
>>>>>>> unittests/ADT/StringMapTest.cpp<br>
>>>>>>><br>
>>>>>>>                                     Index:<br>
>>>>>>> include/llvm/ADT/StringMap.h<br>
>>>>>>><br>
>>>>>>> ===================================================================<br>
>>>>>>>                                     --- include/llvm/ADT/StringMap.h<br>
>>>>>>>                                     +++ include/llvm/ADT/StringMap.h<br>
>>>>>>>                                     @@ -323,6 +323,51 @@<br>
>>>>>>>                                            return true;<br>
>>>>>>>                                          }<br>
>>>>>>><br>
>>>>>>>                                     +  /// insert - Inserts the<br>
>>>>>>> specified<br>
>>>>>>>                 key/value<br>
>>>>>>>                                     pair into the map if the<br>
>>>>>>>                                     key<br>
>>>>>>>                                     +  /// isn't already in the map.<br>
>>>>>>>         If the key is<br>
>>>>>>>                                     already in the map, it<br>
>>>>>>>                                     returns<br>
>>>>>>>                                     +  // false and doesn't update<br>
>>>>>>> the<br>
>>>>>>>         value.<br>
>>>>>>>                                     +  std::pair<iterator, bool><br>
>>>>>>>         insert(const<br>
>>>>>>>                                     std::pair<StringRef, ValueTy><br>
>>>>>>>                                     &KV) {<br>
>>>>>>>                                     +    unsigned BucketNo =<br>
>>>>>>>                 LookupBucketFor(KV.first);<br>
>>>>>>>                                     +    StringMapEntryBase *&Bucket<br>
>>>>>>> =<br>
>>>>>>>                 TheTable[BucketNo];<br>
>>>>>>>                                     +    if (Bucket && Bucket !=<br>
>>>>>>>                 getTombstoneVal())<br>
>>>>>>>                                     +      return<br>
>>>>>>>                 std::make_pair(iterator(&Bucket, false),<br>
>>>>>>>                                     +  false); //<br>
>>>>>>>                 Already<br>
>>>>>>>                                     exists in map.<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +    MapEntryTy *NewItem =<br>
>>>>>>>                                     MapEntryTy::Create(KV.first,<br>
>>>>>>>         Allocator,<br>
>>>>>>>                                     KV.second);<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +    if (Bucket ==<br>
>>>>>>> getTombstoneVal())<br>
>>>>>>>                                     +      --NumTombstones;<br>
>>>>>>>                                     +    Bucket = NewItem;<br>
>>>>>>>                                     +    ++NumItems;<br>
>>>>>>>                                     +    assert(NumItems +<br>
>>>>>>>         NumTombstones <=<br>
>>>>>>>                 NumBuckets);<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +    RehashTable();<br>
>>>>>>>                                     +    return<br>
>>>>>>>         std::make_pair(iterator(&Bucket,<br>
>>>>>>>                                     false), true);<br>
>>>>>>>                                     +  }<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +  /// insert - Inserts the<br>
>>>>>>> specified<br>
>>>>>>>                 key/value<br>
>>>>>>>                                     pair into the map if the<br>
>>>>>>>                                     key<br>
>>>>>>>                                     +  /// isn't already in the map.<br>
>>>>>>>         If the key is<br>
>>>>>>>                                     already in the map, it<br>
>>>>>>>                                     returns<br>
>>>>>>>                                     +  // false and doesn't update<br>
>>>>>>> the<br>
>>>>>>>         value.<br>
>>>>>>>                                     +  std::pair<iterator, bool><br>
>>>>>>>                                     insert(std::pair<StringRef,<br>
>>>>>>>         ValueTy> &&KV) {<br>
>>>>>>>                                     +    unsigned BucketNo =<br>
>>>>>>>                 LookupBucketFor(KV.first);<br>
>>>>>>>                                     +    StringMapEntryBase *&Bucket<br>
>>>>>>> =<br>
>>>>>>>                 TheTable[BucketNo];<br>
>>>>>>>                                     +    if (Bucket && Bucket !=<br>
>>>>>>>                 getTombstoneVal())<br>
>>>>>>>                                     +      return<br>
>>>>>>>                 std::make_pair(iterator(&Bucket, false),<br>
>>>>>>>                                     +  false); //<br>
>>>>>>>                 Already<br>
>>>>>>>                                     exists in map.<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +    MapEntryTy *NewItem =<br>
>>>>>>>                                     +  MapEntryTy::Create(KV.first,<br>
>>>>>>>                 Allocator,<br>
>>>>>>>                                     std::move(KV.second));<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +    if (Bucket ==<br>
>>>>>>> getTombstoneVal())<br>
>>>>>>>                                     +      --NumTombstones;<br>
>>>>>>>                                     +    Bucket = NewItem;<br>
>>>>>>>                                     +    ++NumItems;<br>
>>>>>>>                                     +    assert(NumItems +<br>
>>>>>>>         NumTombstones <=<br>
>>>>>>>                 NumBuckets);<br>
>>>>>>>                                     +<br>
>>>>>>>                                     +    RehashTable();<br>
>>>>>>>                                     +    return<br>
>>>>>>>         std::make_pair(iterator(&Bucket,<br>
>>>>>>>                                     false), true);<br>
>>>>>>>                                     +  }<br>
>>>>>>>                                     +<br>
>>>>>>>                                          // clear - Empties out the<br>
>>>>>>>         StringMap<br>
>>>>>>>                                          void clear() {<br>
>>>>>>>                                            if (empty()) return;<br>
>>>>>>>                                     Index:<br>
>>>>>>> unittests/ADT/StringMapTest.cpp<br>
>>>>>>><br>
>>>>>>> ===================================================================<br>
>>>>>>>                                     ---<br>
>>>>>>> unittests/ADT/StringMapTest.cpp<br>
>>>>>>>                                     +++<br>
>>>>>>> unittests/ADT/StringMapTest.cpp<br>
>>>>>>>                                     @@ -203,6 +203,13 @@<br>
>>>>>>>                                          assertSingleItemMap();<br>
>>>>>>>                                        }<br>
>>>>>>><br>
>>>>>>>                                     +// Test insert(pair<K, V>)<br>
>>>>>>> method<br>
>>>>>>>                                     +TEST_F(StringMapTest,<br>
>>>>>>>         InsertTestPair) {<br>
>>>>>>>                                     +<br>
>>>>>>>          testMap.insert(std::make_pair(testKeyFirst,<br>
>>>>>>>                                     testValue));<br>
>>>>>>>                                     +  EXPECT_EQ(1u, testMap.size());<br>
>>>>>>>                                     +  EXPECT_EQ(testValue,<br>
>>>>>>>                 testMap[testKeyFirst]);<br>
>>>>>>>                                     +}<br>
>>>>>>>                                     +<br>
>>>>>>>                                        // Create a non-default<br>
>>>>>>>         constructable value<br>
>>>>>>>                                        struct StringMapTestStruct {<br>
>>>>>>>                                          StringMapTestStruct(int i) :<br>
>>>>>>>         i(i) {}<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> _______________________________________________<br>
>>>>>>>                                 llvm-commits mailing list<br>
>>>>>>>         <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a> <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>>><br>
>>>>>>>                 <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>><br>
>>>>>>>                 <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>>>><br>
>>>>>>>         <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                             --<br>
>>>>>>>         <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
>>>>>>>                             the browser experts<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>                     -- <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
>>>>>>>                     the browser experts<br>
>>>>>>><br>
>>>>>>>                     _______________________________________________<br>
>>>>>>>                     llvm-commits mailing list<br>
>>>>>>>         <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a> <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>>><br>
>>>>>>>                 <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>><br>
>>>>>>>                 <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>>>>         <mailto:<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a>>>><br>
>>>>>>>         <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>             -- <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
>>>>>>>             the browser experts<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>     --     <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
>>>>>>>     the browser experts<br>
>>>>>>><br>
>>>>>><br>
>>>>>> --<br>
>>>>>> <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
>>>>>> the browser experts<br>
>>>>>><br>
>>>>><br>
>>>>> _______________________________________________<br>
>>>>> llvm-commits mailing list<br>
>>>>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>>>>><br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> llvm-commits mailing list<br>
>>>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>>>><br>
>>><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
><br>
</div></div></blockquote></div><br></div></div>