[lkml]   [1998]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: -mregparm=3
    I've used -mregparm=1 for a fairly complex C++ program (a video game,
    approx. 300kloc), including extended `asm' statements, virtual functions
    and so on and didn't have any problems. I hit a number of other
    compiler bugs, which I fixed or got someone to fix, but nothing from

    I did some tests and found 1 was the value that produced the smallest
    code. This makes sense with C++ as the same `this' pointer is passed to
    a lot of functions called.

    I did find that with -mrtd as well, `__attribute__ ((regparm (0),
    cdecl))' to get traditional function calls ignored all but the last
    attribute (whichever way around I wrote them), so I couldn't use that
    and call system libraries. So I didn't.

    I never timed the differences, just looked at the code and decided which
    looked best. -mregparm=1 was a clear winner in some cases because both
    the pushing and popping of stack arguments were eliminated around many
    function calls. > 1 caused too much register pressure in the caller,
    making the code larger. The code I was examining may have been unusual:
    critical functions tended to be inlines with many parameters, with most
    parameters constant folding, or simply being stored in a structure,
    followed by a call to an out of line function with fewer parameters,
    often only the `this' pointer.

    -- Jamie

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to

     \ /
      Last update: 2005-03-22 13:43    [W:0.050 / U:4.032 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site