<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 25 March 2013 18:36, Johannes Pfau <span dir="ltr"><<a href="mailto:nospam@example.com" target="_blank">nospam@example.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In runnable/test42.d test7290 checks if a scope delegate is really<br>
allocated on the stack. To verify this it obtains the EBP pointer and<br>
compares that to the delegates .ptr.<br>
<br>
The problem is that as soon as we enable optimization gcc no<br>
longer adjusts the EBP pointer when calling the helper functions and<br>
the test fails...<br>
<br>
This test seems to be very fragile in general so what should we do<br>
about this?<br>
<br>
<br>
BTW: I introduced a small typo in test7290 when porting to GCC asm:<br>
The test in the main test7290 function should check "assert(dg.ptr <=<br>
p);", not "assert(p < dg.ptr);"<br>
</blockquote></div><br><br></div><div class="gmail_extra">1. Revert your typo.<br><br></div><div class="gmail_extra">2. Raise with a thread in dmd-internals about it. -O2 in GDC triggers -fomit-frame-pointer. I'm 90% certain that Walter will say that any function with assembly inside requires that a frame pointer must always be present (except in naked function), but that is absolute rubbish. For x86_64 (at least), the ABI encourages the absence of a frame pointer.<br clear="all">
</div><div class="gmail_extra"><br><br>Regards<br>-- <br>Iain Buclaw<br><br>*(p < e ? p++ : p) = (c & 0x0f) + '0';
</div></div>