<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, Nov 17, 2015 at 10:14 AM Richard Smith <<a href="mailto:richard@metafoo.co.uk">richard@metafoo.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">LOn Nov 17, 2015 12:49 AM, "Manuel Klimek" <<a href="mailto:klimek@google.com" target="_blank">klimek@google.com</a>> wrote:<br>
> Richard, this is still optional, right? (the AST matchers need to control visitation)</p>
<p dir="ltr">This doesn't change RAV semantics at all (or if it does, it's a bug). If any of the extension points are overridden in the derived class, data recursion is automatically disabled for that case.</p></blockquote><div><br></div><div>Ah, cool, sg. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p dir="ltr">> On Tue, Nov 17, 2015 at 2:26 AM Argyrios Kyrtzidis via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br>
>><br>
>> W00t! That’s awesome Richard!<br>
>><br>
>>> On Nov 16, 2015, at 5:10 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>> wrote:<br>
>>><br>
>>> Attached patch makes RAV fully data-recursive when visiting statements, except in cases where the derived class could tell the difference (when it falls back to a normal recursive walk). The queue representation is slightly less compact than before: instead of storing a child iterator, we now store a list of all children. This allows us to handle any Stmt subclass that we can traverse, not just those ones that finish by traversing all their children in the usual order.<br>
>>><br>
>>> Thoughts?<br>
>>><br>
>>> On Mon, Nov 16, 2015 at 2:28 PM, Craig, Ben via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br>
>>>><br>
>>>> I'm fine with this approach.  How about I leave the file in place, but replace the contents with a "using DataRecursiveASTVisitor = RecursiveASTVisitor;" and see what breaks?  That way I won't need to go through a large retrofit.<br>
>>>><br>
>>>><br>
>>>> On 11/16/2015 3:28 PM, Richard Smith wrote:<br>
>>>>><br>
>>>>> Rather than trying to maintain the horrible duplication between DataRecursiveASTVisitor and RecursiveASTVisitor, can we just delete DataRecursiveASTVisitor? RecursiveASTVisitor is data-recursive too these days (and has a smarter implementation than DataRecursiveASTVisitor's from what I can see), but doesn't yet apply data recursion in so many cases.<br>
>>>>><br>
>>>>> On Mon, Nov 16, 2015 at 1:07 PM, Argyrios Kyrtzidis <<a href="mailto:akyrtzi@gmail.com" target="_blank">akyrtzi@gmail.com</a>> wrote:<br>
>>>>>><br>
>>>>>> LGTM.<br>
>>>>>><br>
>>>>>> > On Nov 16, 2015, at 12:32 PM, Ben Craig <<a href="mailto:ben.craig@codeaurora.org" target="_blank">ben.craig@codeaurora.org</a>> wrote:<br>
>>>>>> ><br>
>>>>>> > bcraig added a comment.<br>
>>>>>> ><br>
>>>>>> > Ping.  Note that the test is basically a copy / paste job, and the new code in DataRecursiveASTVisitor.h is a very direct translation from the 'regular' RecursiveASTVisitor.h.<br>
>>>>>> ><br>
>>>>>> ><br>
>>>>>> > <a href="http://reviews.llvm.org/D14506" target="_blank">http://reviews.llvm.org/D14506</a><br>
>>>>>> ><br>
>>>>>> ><br>
>>>>>> ><br>
>>>>>><br>
>>>>><br>
>>>><br>
>>>> -- <br>
>>>> Employee of Qualcomm Innovation Center, Inc.<br>
>>>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> cfe-commits mailing list<br>
>>>> <a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
>>>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
>>>><br>
>>><br>
>>> <make-rav-fully-data-recursive.diff><br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</p>
</blockquote></div></div>