erichkeane marked 5 inline comments as done.
erichkeane added a comment.

Thanks for the review!  I'll get this updated in the morning.  I DO have a 
question on your suggestion for the ToVisit/Visited example, so if you could 
explain a little better, I'd be grateful.



================
Comment at: clang/lib/Sema/SemaTemplateDeduction.cpp:1281
+             "Base class that isn't a record?");
+      ToVisit.push_back(Base.getType()->getAs<RecordType>());
+    }
----------------
rsmith wrote:
> It would be better to add the class to `Visited` here rather than in the loop 
> below -- that is, only add each class to `ToVisit` once rather than only 
> processing each class once. That would put a tighter upper bound on the size 
> of `ToVisit`.
I'm perhaps missing something here... Can you clarify your suggestion a bit 
more?  If we add it to 'Visited' here, it will never get visited in the 
while-loop below, right?  


================
Comment at: clang/lib/Sema/SemaTemplateDeduction.cpp:1329-1331
+      Sema::TemplateDeductionResult BaseResult = DeduceTemplateArguments(
+          S, TemplateParams, SpecParam, QualType(NextT, 0), CurMatch.BaseInfo,
+          CurMatch.Deduction);
----------------
rsmith wrote:
> This deduction step seems unnecessary to me (whether deduction succeeds or 
> not here has no impact on the result of the algorithm).
> 
> Instead, you could perform the `erase_if` call below unconditionally. In 
> order for that to be efficient, it'd make sense to also convert `Matches` 
> into a hash map from (canonical) `CXXRecordDecl*` to `BaseMatch`.
Ah, yes, thats a really good observation!  I'll do that.


================
Comment at: clang/lib/Sema/SemaTemplateDeduction.cpp:1351-1353
+  Info.Param = Matches[0].BaseInfo.Param;
+  Info.FirstArg = Matches[0].BaseInfo.FirstArg;
+  Info.SecondArg = Matches[0].BaseInfo.SecondArg;
----------------
rsmith wrote:
> These fields are used to determine how to diagnose a deduction failure, and 
> don't mean anything if deduction succeeds. I think this (and the tracking of 
> `BaseInfo` above) is all dead code (and the corresponding code was similarly 
> dead prior to this change).
I see, so all tracking of BaseInfo isn't useful?  That will simplify the code 
quite a bit then, since BaseInfo accounts for nearly all the code in BaseMatch 
(both the move operations, and the constructor only exist because of it).  
BaseMatch becomes essentially a pair otherwise. I think I can actually remove 
BaseMatch entirely as a result, and change the Matches to a map from 
RecordType* to the SmallVector of Deduction state.


================
Comment at: clang/test/CXX/drs/dr23xx.cpp:118
+#if __cplusplus >= 201103L
+namespace dr2303 {
+template <typename... T>
----------------
rsmith wrote:
> erichkeane wrote:
> > rsmith wrote:
> > > This should include a comment that `make_cxx_dr_status` can parse, such 
> > > as `// dr2303: 11` to indicate support in Clang 11 onwards.
> > Our current clang-version is 12.0.0, so 12 is correct here, right?
> > 
> > I've not been able to get make_cxx_dr_status work unfortunately. It seems 
> > to generate a blank version of the file (well, it HAS html, but none of the 
> > content).
> > 
> > I used the cwg_index.html from here: 
> > http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_index.html
> > 
> > 
> Oh, right, version 11 already forked. How time flies =) Yes, 12 is correct.
> 
> The current list is built from revision 101m of the core issues list. You'll 
> need to grab that from the WG21 wiki; there hasn't been a public release of 
> the core issues list in over 2 years.  (Though it looks like you got this 
> working anyway?)
Yep, I figured that out with help from @aaron.ballman on IRC :)  I downloaded 
101m from the wiki.


================
Comment at: clang/www/cxx_dr_status.html:1507
     <td>Destructor lookup</td>
-    <td class="unreleased" align="center">Clang 11</td>
+    <td class="full" align="center">Clang 11</td>
   </tr>
----------------
rsmith wrote:
> Please commit the update from "unreleased" to "full" for Clang 11 changes 
> separately.
Will do!  I'll do that as review-after-commit, then rebase this on top of it.  
Thanks!


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D84048/new/

https://reviews.llvm.org/D84048



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to