<div dir="ltr">Hi Alex, Sanjoy,<div><br></div><div>exposing the internal IRBuilder to users of SCEVExpander violates information hiding, and encourages the tight coupling that makes code bases such as Polly so hard to maintain. SCEVExpander::expandCodeFor returns a Value that (if it's an instruction) can be used to update the insert point of the client's IRBuilder. Is that not enough? </div><div><br></div><div>No hidden state, no hidden state transitions, so it's locally clear to a reader how the IRBuilder moves.</div><div><br></div><div>Cheers,</div><div>Philip</div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-04-29 20:50 GMT+02:00 Sanjoy Das via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Alexandre,<br>
<br>
Sorry I missed this -- I was on vacation when you sent this.<br>
<br>
SCEVExpander already has an IRBuilder in it but AFAICT it isn't<br>
exposed as a public interface.  I'd be fine if you wanted to expose a<br>
public `GetIRBuilder()` accessor that let a SCEVExpander client use<br>
the same IRBuilder as SCEVExpander.<br>
<br>
-- Sanjoy<br>
<div><div class="h5"><br>
On Fri, Apr 6, 2018 at 10:55 AM, Alexandre Isoard via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
> Hello,<br>
><br>
> I use SCEVExpander and IRBuilder to generate some code and I frequently<br>
> end-up breaking dominance because the SCEVExpander insertion point and the<br>
> IRBuilder insertion point do not advance in synchrony.<br>
><br>
> Ideally, I could build a SCEVExpander based on an existing IRBuilder (so<br>
> that they move each other). Or even better, SCEVExpander inherit from<br>
> IRBuilder and basically extend it with SCEV expander capabilities (then I<br>
> don't need to use a separate IRBuilder).<br>
><br>
> Or maybe I am using them wrong? What is the intended way to use those?<br>
><br>
> --<br>
> Alexandre Isoard<br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
><br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>