<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Jun 27, 2013, at 3:22 PM, Dan Gohman <<a href="mailto:dan433584@gmail.com">dan433584@gmail.com</a>> wrote:</div><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>This is an interesting point. I tend to think of CodeGen as being an analysis of LLVM IR, and while it can diverge somewhat, the ways in which it diverges are usually constrained in some ways, and that leveraging information already available in LLVM IR was practical. However, In a world where CodeGen is doing things like restructuring loops, this seems less practical.<br></div></div></div></div></div></blockquote><div><br></div>The work that we did last summer was assuming that IR is always available, but there’s nothing fundamental in the approach that requires that.  It just reflects the way code-gen works right now.</div><div><br><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Bob, I look forward to seeing the patches you have.</div></div></div></div></div></blockquote><br></div><div dir="auto">I’ve attached four patches that should be good enough to give you a rough idea.  These were developed together with Bin Zeng during his internship at Apple last summer, but we couldn’t commit them at the time because yamlio wasn’t done.  I haven’t had a chance to update these since last summer, so I doubt if they build or even apply cleanly now.</div><div dir="auto"><br></div><div dir="auto">The first 3 patches just set up the basic support for using yaml files, along with wiring up the -stop-after llc command-line option to control which passes are run.  See my earlier comments about that for more details.</div><div dir="auto"><br></div><div dir="auto">The 4th patch adds the machine-level IR just using the existing “print” method.  You can look at the output but there’s no support in that patch for reading it back in.  Bin went on to implement a parser to handle that format, but I haven’t included his patches for that part because I’m not convinced that’s the right way to go.  We certainly want the machine instructions to be readable but a little more structure would be good.</div><div dir="auto"></div></body></html>