<div dir="ltr"><div style>Thanks!  Committing with 80col issues fixed.</div><div><br></div>On Tue, May 28, 2013 at 9:47 AM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br>
<div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> +    // RD is reusing the vbptr of a non-virtual base.  Find it and continue.<br>

> +    const CXXRecordDecl *FirstNVBaseWithVBases = 0;<br>
> +    for (CXXRecordDecl::base_class_const_iterator I = RD->bases_begin(),<br>
> +         E = RD->bases_end(); I != E; ++I) {<br>
> +      const CXXRecordDecl *Base = I->getType()->getAsCXXRecordDecl();<br>
> +      if (!I->isVirtual() && Base->getNumVBases() > 0) {<br>
> +        FirstNVBaseWithVBases = Base;<br>
<br>
Instead of manually breaking, it might be more clear to make<br>
FirstNVBaseWithVBases part of the for loop test itself.<br></blockquote><div><br></div><div style>I actually don't like that because it makes the for loop something other than the standard C++ iterator idiom.  IMO most readers will gloss over it and assume the exit condition is just 'I != E'.</div>
</div></div></div>