Current GDC experience and questions

Iain Buclaw ibuclaw at ubuntu.com
Fri Mar 8 10:38:43 PST 2013


On 8 March 2013 18:19, Artur Skawina <art.08.09 at gmail.com> wrote:

> On 03/08/13 18:54, Iain Buclaw wrote:
> > Also not needed:
> > - aligned:  because D has align() for that.
>
> D's align wasn't nearly enough last time i looked. (There were changes to
> it since, but as I can't upgrade, haven't looked at the details)
>
> > - gnu_inline, artificial:  because D has no inline keyword, nor has need
> for one.
>
> always_inline is needed, the heuristics are not always enough. Of course it
> should map to just "inline".
>
>
inline and always_inline are two subtly different beasts.  But altogether I
don't think either make any guarantees of an inline occuring (although
always_inline is a little more relaxed about it all).

Some things are marked as always_inline anyway by gdc:  struct/class
methods, lambdas and delegate literals.  Though it is probably known that
this only worked within the module being compiled.  Cross-module inlining
is not there yet.



>
> > - pure, const:  Although D has pure keyword that does not necessarily
> follow same as C semantics, I don't think the inclusion of these are
> beneficial at all.
>
> "const" may not be needed. "pure" is useful /exactly/ because of the D
> semantics.
>
>
Infact, strongly pure functions (where all parameters are immutable) are
indeed marked as C "pure" by gdc if the functions are also nothrow.
Whether this might cause some bad behaviour I'm yet to run into or find a
case of...




> > - optimise, target:  I'm sure the guy who implemented these meant well,
> but I fail to see the point as to why you'd want such an attribute.
>
> They are useful. And it reminds me that last time i looked, GDC handled
> "target", "tune"
> etc wrongly:
> http://forum.dlang.org/post/mailman.1.1325716211.16222.digitalmars-d@puremagic.com
>
>
And I'd rather not want to spend time fixing it.  The code that handles
these attributes are a bit bulky, and require a bit of questionable copying
from the c-family frontend.


Regards
-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/d.gnu/attachments/20130308/7f21561d/attachment.html>


More information about the D.gnu mailing list