<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hi all:<br>Jay, are you considering Clang as target?<br>Thanks in advance<br><br>--- El <b>lun, 10/9/12, Jay K <i><jay.krell@cornell.edu></i></b> escribió:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>De: Jay K <jay.krell@cornell.edu><br>Asunto: Re: [M3devel] "C-generating backend progress report, that nobody asked for" :)<br>Para: "Tony" <hosking@cs.purdue.edu><br>CC: "m3devel" <m3devel@elegosoft.com><br>Fecha: lunes, 10 de septiembre, 2012 00:47<br><br><div id="yiv475619684">

<style><!--
#yiv475619684 .yiv475619684hmmessage P
{
margin:0px;
padding:0px;}
#yiv475619684 body.yiv475619684hmmessage
{
font-size:12pt;
font-family:Calibri;}
--></style><div><div dir="ltr">Please, no.<br><br>Stock gdb and stock Visual C++ and stock cdb/ntsd/windbg ought to work well with Modula-3.<br>I expect they will pretty good pretty soon, and we should try to make them even better maybe...<br>by making globals visible in a reasonable fashion.<br><br><br>m3gdb isn't supported on Darwin and HP-UX (no stabs), at least.<br>If the gcc backend becomes obsolete and deleted...m3gdb would be the last of the<br>forked always-going-stale never-merging GPL stuff... i.e. another ripe target...<br><br><br><br> - Jay<br><br><div><div id="yiv475619684SkyDrivePlaceholder"></div><hr id="yiv475619684stopSpelling">Subject: Re: [M3devel] "C-generating backend progress report, that nobody asked for" :)<br>From: hosking@cs.purdue.edu<br>Date: Sun, 9 Sep 2012 20:54:12 -0400<br>CC: dragisha@m3w.org; m3devel@elegosoft.com<br>To: jay.krell@cornell.edu<br><br>Stock debuggers are designed for C.  They generally will not be
 able to grok M3.  Better to use M3 run-time type information as per m3gdb.  See <a rel="nofollow" target="_blank" href="http://dx.doi.org/10.1145/143103.143112">10.1145/143103.143112</a>.<div><br><div>
<br><div><div>On Sep 9, 2012, at 4:07 PM, Jay <<a rel="nofollow" ymailto="mailto:jay.krell@cornell.edu" target="_blank" href="/mc/compose?to=jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:</div><br class="yiv475619684ecxApple-interchange-newline"><blockquote><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 rel="nofollow" ymailto="mailto:hosking@cs.purdue.edu" target="_blank" href="/mc/compose?to=hosking@cs.purdue.edu">hosking@cs.purdue.edu</a>> wrote:<br><br></div><div></div><blockquote><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 rel="nofollow" ymailto="mailto:hosking@cs.purdue.edu" target="_blank" href="/mc/compose?to=hosking@cs.purdue.edu"></a><a rel="nofollow" ymailto="mailto:hosking@cs.purdue.edu" target="_blank" href="/mc/compose?to=hosking@cs.purdue.edu">hosking@cs.purdue.edu</a>> wrote:</div><br class="yiv475619684ecxApple-interchange-newline"><blockquote><div style="">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
 rel="nofollow" ymailto="mailto:jay.krell@cornell.edu" target="_blank" href="/mc/compose?to=jay.krell@cornell.edu"></a><a rel="nofollow" ymailto="mailto:jay.krell@cornell.edu" target="_blank" href="/mc/compose?to=jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:</div><br class="yiv475619684ecxApple-interchange-newline"><blockquote><div><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 rel="nofollow" ymailto="mailto:hosking@cs.purdue.edu" target="_blank" href="/mc/compose?to=hosking@cs.purdue.edu"></a><a rel="nofollow" ymailto="mailto:hosking@cs.purdue.edu" target="_blank" href="/mc/compose?to=hosking@cs.purdue.edu">hosking@cs.purdue.edu</a>> wrote:<br><br></div><div></div><blockquote>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 rel="nofollow" ymailto="mailto:dragisha@m3w.org" target="_blank" href="/mc/compose?to=dragisha@m3w.org"></a><a rel="nofollow" ymailto="mailto:dragisha@m3w.org" target="_blank" href="/mc/compose?to=dragisha@m3w.org"></a><a rel="nofollow" ymailto="mailto:dragisha@m3w.org" target="_blank" href="/mc/compose?to=dragisha@m3w.org">dragisha@m3w.org</a>> wrote:</div><br class="yiv475619684ecxApple-interchange-newline"><blockquote><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-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">I hope somebody will take on LLVM :).</div><br
 class="yiv475619684ecxApple-interchange-newline"></blockquote></div><br></div></blockquote></div></blockquote></div><br></div></div></blockquote></div><br></div></blockquote></div></blockquote></div><br></div></div></div>                                     </div></div>
</div></blockquote></td></tr></table>