[Issue 3793] New: Functions with static arrays as arguments are not inlined

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Feb 11 07:34:58 PST 2010


http://d.puremagic.com/issues/show_bug.cgi?id=3793

           Summary: Functions with static arrays as arguments are not
                    inlined
           Product: D
           Version: 2.041
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: minor
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: eriatarka84 at gmail.com


--- Comment #0 from Clemens <eriatarka84 at gmail.com> 2010-02-11 07:34:57 PST ---
Was just browsing through some front end code and found this bit of code in
canInline() in inline.c:

    /* If any parameters are Tsarray's (which are passed by reference)
     * or out parameters (also passed by reference), don't do inlining.
     */
    if (parameters)
    {
    for (int i = 0; i < parameters->dim; i++)
    {
        VarDeclaration *v = (VarDeclaration *)parameters->data[i];
        if (v->isOut() || v->isRef() || v->type->toBasetype()->ty == Tsarray)
        goto Lno;
    }
    }

The comment, as far as I can see, is obsolete since static arrays are now value
types? Perhaps this restriction can be lifted now? Especially for functions on
small vectors, I would expect inlining to be very beneficial.

Just putting this here to have it not overlooked.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list