This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Professional support for Vxworks cross-compiler
- To: dje at watson dot ibm dot com
- Subject: Re: Professional support for Vxworks cross-compiler
- From: Mike Stump <mrs at windriver dot com>
- Date: Fri, 7 Jul 2000 16:41:29 -0700 (PDT)
- Cc: gcc at gcc dot gnu dot org
> 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.