Current GDC experience and questions

Artur Skawina art.08.09 at gmail.com
Fri Mar 8 10:07:55 PST 2013


On 03/08/13 16:18, Iain Buclaw wrote:
> On 8 March 2013 14:36, Artur Skawina <art.08.09 at gmail.com <mailto:art.08.09 at gmail.com>> wrote:
> 
>     On 03/08/13 13:40, jerro wrote:
>     >> I tried modifying some trivial sources, which were using only
>     >> 'pragma(attribute, noinline)', but couldn't get them to work; the compiler keeps
>     >> complaining, 'cc1d: error: unknown attribute noinline'.
>     >> Is 'import gcc.attribute; @attribute("noinline") void f() {}' supposed to work?
>     >
>     > It isn't. When the syntax was changed to @attribute, all the gcc attributes were disabled. If I understood correctly, the reason was that those were only meant for internal GDC use. AFAIK, noinline was removed even before that.
>     >
>     > Iain did say something about adding supported attributes one by one as they are needed. So I guess you need to talk to him about adding noinline.
> 
>     I need them all. If D is to be an alternative to C/C++ it must support everything
>     that's already available for those languages.
> 
> 
> Yet not all attributes that GCC offers actually make sense to have in D.  We certainly need to have a review of each one and discuss what is most important to have.  Also defining our own unique attributes along the way.  :o)

A missing attribute is a blocker. For example I've since tried to get my program
to build using the gcc47 branch, just to see how much performance is lost w/o LTO.
Only to see pages of "'flatten|always_inline|noinline' attribute directive ignored"
warnings... The resulting binary is *three times slower* and 50% larger than one
built with the old compiler (caused mostly by the lack of inlining, the LTO impact
should be much smaller). So I can't really upgrade.


>     In the specific case i tested with i need @flatten to get decent performance, and
>     @noinline to have compile times measured in minutes and not hours (literally, as
>     @flatten can otherwise result in practically infinite recursive inlining).
> 
>     artur
> 
> 
> 
> Raise a bug report to get those added so no one forgets.

Done. I should have probably also mentioned "always_inline", which isn't as critical,
but still very useful.

artur


More information about the D.gnu mailing list