<html><body bgcolor="#FFFFFF"><div>If the records are fixed..that helps a lot, & not clear what is ideal actually..the re cords do then offer kind of nice syntax for access..but constants vs variables are split. I'd also prefer seperate variables to give the optimizer a chance to remove unused globals. That seems valuable.. Like, transform to idiomatic C where reasonable & possible...</div><div><br><br> - Jay (briefly/pocket-sized-computer-aka-phone)</div><div><br>On Sep 9, 2012, at 1:07 PM, Jay <<a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><div>The current method stinks for stock debugging. As I understand, globals are combined into structs & the fields all have generated names, & global records are flattened therein.</div><div><br></div><div><br></div><div>It works. But stock debuggers see garbage.</div><div><br><br> - Jay (briefly/pocket-sized-computer-aka-phone)</div><div><br>On Sep 9, 2012, at 12:22 PM, Antony Hosking <<a href="mailto:hosking@cs.purdue.edu"><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a></a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><div>I mis-spoke.  I think LLVM can cope with much the same as we currently have.  Front-end will continue to compute alignments and layouts.  We can assert the front-end’s datalayout by passing it to LLVM explicitly, which will complain if it does not match the actual target.  This is a rather nice feature of LLVM in that it allows us to retain control while having LLVM optimize accordingly.</div><div>
<br><div><div>On Sep 9, 2012, at 11:05 AM, Antony Hosking <<a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu"><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a></a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Yes, agreed, these need to be properly typed too.<div>First step will be to lift the M3CG interface.</div><div>Problem: The compiler needs to control layout so that the run-time system knows where to find things.  This means that we need to assert alignments and layouts produced by the backend are the same as those in the front-end.  LLVM has nice ways to do this.  How will we do it in the C backend?  Does C have sufficient control over alignment?</div><div><br><div><div>On Sep 9, 2012, at 10:53 AM, Jay <<a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu"><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a></a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div bgcolor="#FFFFFF"><div>Btw, can this include "segment"/globals? Can they each be separate named variables? At least some of them?</div><div><br></div><div><br> - Jay (briefly/pocket-sized-computer-aka-phone)</div><div><br>On Sep 9, 2012, at 7:48 AM, Antony Hosking <<a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu"><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a></a>> wrote:<br><br></div><div></div><blockquote type="cite">I’m looking at it...<div><br></div><div>First step is to lift slightly the level of M3CG to use properly typed memory access, instead of untyped address + offset.</div><div>
<br><div><div>On Sep 9, 2012, at 2:32 AM, Dragiša Durić <<a href="mailto:dragisha@m3w.org"></a><a href="mailto:dragisha@m3w.org"></a><a href="mailto:dragisha@m3w.org"><a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a></a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">I hope somebody will take on LLVM :).</div><br class="Apple-interchange-newline"></blockquote></div><br></div></blockquote></div></blockquote></div><br></div></div></blockquote></div><br></div></div></blockquote></div></blockquote></body></html>