This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Professional support for Vxworks cross-compiler


> To: Mike Stump <mrs@windriver.com>
> cc: gcc@gcc.gnu.org
> Date: Fri, 07 Jul 2000 18:30:44 -0400
> From: David Edelsohn <dje@watson.ibm.com>

> I am trying to understand why you need to set SYMBOL_REF_FLAG.  Were
> cases being missed?

Apparently.  (Bearing in mind it isn't my patch, but rather salim's
work.)  It could be the case now that no cases are now missed.  This
case can be easily check by checking for differences in code like:

bar() { }

main() {
       foo();
       bar();
}

shortcall version:

main:
        stwu 1,-16(1)
        mflr 0
        stw 31,12(1)
        stw 0,20(1)
        mr 31,1
        bl foo
        bl bar
.L3:
        lwz 11,0(1)
        lwz 0,4(11)
        mtlr 0
        lwz 31,-4(11)
        mr 1,11
        blr

longcall version:

main:
        stwu 1,-32(1)
        mflr 0
        stw 29,20(1)
        stw 30,24(1)
        stw 31,28(1)
        stw 0,36(1)
        mr 31,1
        lis 9,foo@ha
        la 29,foo@l(9)
        mtlr 29
        blrl
        bl bar
.L3:
        lwz 11,0(1)
        lwz 0,4(11)
        mtlr 0
        lwz 29,-12(11)
        lwz 30,-8(11)
        lwz 31,-4(11)
        mr 1,11
        blr

if I remember the details correctly (not that I necessarily do).
Anyway, if the codegen for something like libstdc++ is the exact same
with or without this bit, then we can remove it as unnecessary now.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]