Professional support for Vxworks cross-compiler
Mike Stump
mrs@windriver.com
Fri Jul 7 16:41:00 GMT 2000
> 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.
More information about the Gcc
mailing list