<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 8 April 2013 17:55, John Colvin <span dir="ltr"><<a href="mailto:john.loughran.colvin@gmail.com" target="_blank">john.loughran.colvin@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Monday, 8 April 2013 at 15:29:13 UTC, Iain Buclaw wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
On 8 April 2013 15:49, John Colvin <<a href="mailto:john.loughran.colvin@gmail.com" target="_blank">john.loughran.colvin@gmail.<u></u>com</a>> wrote:<br>
<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
On Monday, 8 April 2013 at 00:13:29 UTC, Iain Buclaw wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If only that logic held water...<br>
<br>
GDC actually provided the implementation of iasm to LDC.  Reasons why it<br>
was yanked out.<br>
- one big ugly x86 special case.<br>
<br>
</blockquote>
<br>
Fair enough, although I see no reason why Ds iasm shouldn't be extended to<br>
support other architectures in the future.<br>
<br>
<br>
 - depended on backend headers poisoned for use in the frontend.<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
</blockquote>
<br>
when you say poisoned, I presume you mean by the license?<br>
<br>
<br></div>
>From system.h<br>
</blockquote><div class="im">
---<br>
/* Front ends should never have to include middle-end headers.  Enforce<br>
   this by poisoning the header double-include protection defines.  */<br>
#ifdef IN_GCC_FRONTEND<br>
#pragma GCC poison GCC_RTL_H GCC_EXCEPT_H GCC_EXPR_H<br>
#endif<br>
---<br>
<br>
The implementation of IASM required access to rtl.h and expr.h - which is<br>
able to give you information about stack layout, etc.<br>
<br>
<br>
<br>
<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><div class="im">
 - frontend should not know or care about what arch it is targeting.<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
</blockquote>
<br>
what about all the other arch specific version statements? e.g.<br>
version(ARM)<br>
<br>
<br>
</div></blockquote><div class="im">
They are handled in the backend via a macro: TARGET_CPU_D_BUILTINS,<br>
TARGET_OS_D_BUILTINS.<br>
<br>
If defined, these provide the frontend all version conditions without the<br>
frontend having a large portion of code #ifdef'ing all over the place.<br>
<br>
<br>
<br>
<br>
</div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 - most iasm in druntime/phobos rely on dmd's non-standard calling<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
convention.<br>
- it has been argued in the past that gdc should not define<br>
D_InlineAsm_X86 if it does not follow dmd's ABI.<br>
<br>
</blockquote>
<br>
Is it a feasible idea to automatically convert dmds inline asm to gcc's<br>
extended inline asm?<br>
<br>
<br>
</blockquote></div><div class="im">
This is what it did.  However as stated about it depended on poisoned<br>
backend headers in order to get the correct information.<br>
<br>
<br>
<br>
Regards<br>
</div></blockquote>
<br>
<br>
So, overall, it's not gonna happen unless dmd changes its implementation of inline asm?<br>
</blockquote></div><br><br></div><div class="gmail_extra">Pretty much.  Though given that what you have changed is in rt folders, I think the intent is that each compiler maintains its own, so it wouldn't be difficult just to re-implement using extended assembler.<br>
</div><div class="gmail_extra"><br>-- <br>Iain Buclaw<br><br>*(p < e ? p++ : p) = (c & 0x0f) + '0';
</div></div>