<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><div>I propose the following:</div><div><br></div><div><br></div><div> - A flag to m3front indicating if the backend "knows" what a jmpbuf is.</div><div><br></div><div> - extend M3CG.Type = { int8, uint8, ... addr ... struct }</div><div><span style="font-size: 12pt; ">   by adding a jmpbuf element</span></div><div><br></div><div><br></div><div> - if the backend "knows" what a jmpbuf is, then, vs. the current code,</div><div>   the frontend shall just declare a jmpbuf per try, leaving the backend</div><div>   to size it, and w/o using the upcoming alloca approach.</div><div>   </div><div><br></div><div> - if the backend does not "know" what a jmpbuf is, then, well, there</div><div>   is the current approach of making a sized struct, or my approach</div><div>   that is almost working where we use alloca. The frontend</div><div>   will not output cgtype.jmpbuf unless the backend "knows" what it is.</div><div><br></div><div><br></div><div>   ok?</div><div><br></div><div><br></div><div>The information as to the backend's knowledge of a jmpbuf shall be</div><div>yet another internal m3front flag, like what guides nested function</div><div>output order.</div><div><br></div><div><br></div><div>I was going to propose something slightly different, like</div><div>m3front always use this new jmpbuf type, and existing backends</div><div>can just change it "back" to struct. The problem with that approach..</div><div>it works easily with the current code, but does not address</div><div>my upcoming alloca(sizeof_jmpbuf) change.</div><div><br></div><div><br></div><div>In this way, what the C backend will do is:</div><div> #include <setjmp.h> </div><div> jmp_buf buf1; </div><div> jmp_buf buf2; </div><div> etc.</div><div><br></div><div><br></div><div>leaving the size of the jmpbuf completely absent in the generated code,</div><div>and allocating in the slightly more efficient way than alloca.</div><div><br></div><div><br></div><div>Exception handling is special, so accomodating this seems reasonable.</div><div><br></div><div><br></div><div>Yes, it might be temporary, replaced by libunwind stuff.</div><div><br></div><div><br></div><div>Thank you,</div><div> - Jay</div>                                      </div></body>
</html>