<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 27, 2015 at 11:11 AM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">----- Original Message -----<br>
> From: "Duncan P. N. Exon Smith" <<a href="mailto:dexonsmith@apple.com">dexonsmith@apple.com</a>><br>
> To: "Chandler Carruth" <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>><br>
> Cc: "LLVM Developers Mailing List" <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
> Sent: Wednesday, May 27, 2015 12:59:23 PM<br>
> Subject: Re: [LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR<br>
><br>
> > On 2015 May 27, at 10:24, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>><br>
> > wrote:<br>
> ><br>
> >> On Wed, May 27, 2015 at 8:15 AM Chris Lattner <<a href="mailto:clattner@apple.com">clattner@apple.com</a>><br>
> >> wrote:<br>
> >>> On May 26, 2015, at 11:20 PM, Quentin Colombet<br>
> >>> <<a href="mailto:qcolombet@apple.com">qcolombet@apple.com</a>> wrote:<br>
> >>><br>
> >>> +1.<br>
> >>><br>
> >>> Could those two be subdirectories of one “Machine-Related-Stuff”<br>
> >>> directory?<br>
> >>> E.g.,<br>
> >>> MachineStuff/IR<br>
> >>> MachineStuff/CodeGen<br>
> >>><br>
> >>> Where MachineStuff is something meaningful :).<br>
> >>><br>
> >>> That way, they keep a logic bound, more formal than the naming<br>
> >>> convention.<br>
> >><br>
> >> Something like?<br>
> >><br>
> >> lib/Machine/IR<br>
> >> lib/Machine/Passes<br>
> >><br>
> >> Unless there will be many subdirectories, it seems slightly better<br>
> >> to flatten out the layer.<br>
> ><br>
> > I strongly prefer breaking it out into subdirectories. There are a<br>
> > bunch of reasons:<br>
> ><br>
> > 1) It will grow.<br>
> > 2) Without it, we cannot have separate libraries, which will lose<br>
> > some options for shrinking the size of libraries.<br>
> > 3) Without separate libraries we can't as easily enforce the<br>
> > layering separations between these things. For example, making<br>
> > this split will be *extremely* hard currently because there is a<br>
> > lot of inappropriate dependencies that will block splitting things<br>
> > out.<br>
> ><br>
> > However, "IR" and "Passes" cover only two of the things in CodeGen.<br>
> > There is also the implementation of a lot of common infrastructure<br>
> > used by targets' code generators.<br>
> ><br>
> > My initial suggestion would be to just sink CodeGen into<br>
> > Machine/CodeGen, add the .../IR and .../Passes directories, and<br>
> > then start extracting things from CodeGen into the two more narrow<br>
> > directories. I think there is likely some stuff that should<br>
> > continue to live in a "code generator" infrastructure directory as<br>
> > it is neither part of the machine IR, nor is it part of any<br>
> > particular pass.<br>
> ><br>
> > My suggested layering would be:<br>
> ><br>
> > Passes depend on IR, CodeGen depends on both Passes and IR. The<br>
> > idea is that anything passes require should be embedded into the<br>
> > IR.<br>
> ><br>
><br>
> (Oops, missed this until after I sent my own response.<br>
><br>
> One thing I'd add to this from my email is that I think<br>
> lib/Machine/IR is likely to get confused with lib/IR for the same<br>
> reasons that lib/CodeGen is confusing between LLVM and Clang.  IMO<br>
> lib/Machine/MIR is "safer".)<br>
<br>
</div></div>+1 -- Please only use IR to refer to LLVM IR. We should use some different abbreviation for any other IR we have in the backend.<br></blockquote><div><br></div><div>Also, "MIR" is also widely used in the literature and compiler textbooks to refer to what we call "IR", so "MIR" is confusing anyway.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
><br>
> > However, this won't currently work. There are things that seem to<br>
> > be parallel but independent of the machine IR and are used by any<br>
> > machine passes. There are also things that clearly use the machine<br>
> > passes. Currently, I'm not sure how to cleanly divide this library<br>
> > up without really significant refactoring of every part of the<br>
> > code generator.<br>
> ><br>
> > While I would like to see this happen, is it really a good idea to<br>
> > put this in the critical path of getting MIR serialized and<br>
> > deserialized?<br>
><br>
> Not if it's as hard as you're saying.  My impression was that Alex<br>
> was able to move the IR stuff he needed into a separately library<br>
> pretty trivially (based on the P.O.C. patch he posted), but if it's<br>
> not trivial he should just move on.<br>
><br>
> >> Also, if we’re getting crazy here, CodeGen in clang should be<br>
> >> renamed to IRGen, AsmPrinter should be renamed to MCGen, and<br>
> >> SelectionDAG should be replaced ;-)<br>
> ><br>
> > I'm happy to actually do the CodeGen -> IRGen rename. I actually<br>
> > built the change but didn't submit it because of the concerns of<br>
> > some out-of-tree users of Clang. I still have all the perl scripts<br>
> > and such I used sitting around.<br>
><br>
> I'm a really big fan of this.<br>
<br>
</span>+1 -- Me too.<br>
<br>
 -Hal<br>
<span class="im HOEnZb"><br>
 If you supply the perl scripts<br>
> somehow (attached to a PR that you reference in the commit?) then<br>
> out-of-tree users shouldn't have a problem.  Unless I'm missing<br>
> something?<br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
><br>
<br>
</span><span class="HOEnZb"><font color="#888888">--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br></div></div>