Article View: gnu.gcc.bug
Article #2222shot in the sparc
From: Michael Tiemann
Date: Thu, 02 Feb 1989 16:57
Date: Thu, 02 Feb 1989 16:57
80 lines
2710 bytes
2710 bytes
Date: Thu, 02 Feb 89 03:40:52 -0800
From: "Douglas C. Schmidt" <sources%crimee.ics.uci.edu@paris.ics.uci.edu>
Michael,
This is really off the wall, and probably a waste of time, but some
code generated with gcc 1.33 is getting a segmentation fault on the
sparc. I'm fairly certain it's the compiler, since cc has no problems
with it, and the system I'm compiling is very portable and has been
around for a long time (it's a C version of Knuth's Tex program
generated with a Web-to-C converter).
The debugger claims the program fails on the following line:
curval = curval * radix + d ;
where the variables are:
long curval;
char radix;
char d;
Here's the relevant output from gcc
sethi %hi(_radix),%g1
ldsb [%g1+%lo(_radix)],%o0
sethi %hi(_curval),%g1
ld [%g1+%lo(_curval)],%o3
call .mul,2
mov %o3,%o1
mov %o0,%o2
sll %l1,0x18,%o0
sra %o0,0x18,%o0
add %o2,%o0,%o0
st %o0,[%g1+%lo(_curval)]
And here's the output from cc (which doesn't seg fault)
sethi %hi(_radix),%o1
ldsb [%o1+%lo(_radix)],%o1
sethi %hi(_curval),%o0
ld [%o0+%lo(_curval)],%o0
call .mul,2
nop
mov %i4,%l1
add %o0,%l1,%l2
sethi %hi(_curval),%l3
st %l2,[%l3+%lo(_curval)]
If this is too much of a pain, just ignore it. I don't know sparc
well enough to figure out what's going wrong, so if you can figure it
out from this skimpy sample that's fine, otherwise, we'll just have to
wait....
Doug
p.s. No options were used for the compilation, in particular -meager
was *not* applied.
This problem is very easily fixed:
Change the function `output_mul_insn' to include somewhere, a call to
CC_STATUS_INIT:
char *
output_mul_insn (operands, unsignedp)
rtx *operands;
int unsignedp;
{
int lucky1 = ((unsigned)REGNO (operands[1]) - 8) <= 1;
int lucky2 = ((unsigned)REGNO (operands[2]) - 8) <= 1;
CC_STATUS_INIT; /* this forgotten in virgin 1.33. */
if (lucky1)
if (lucky2)
output_asm_insn ("call .mul,2\n\tnop", operands);
Michael
Technical Details
Message-ID:
<8902021657.AA01816@yahi.Stanford.EDU>Path:
arc1-ca.pugleaf.net!utzoo!telly!attcan!dptcdc!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!YAHI.STANFORD.EDU!mdtReferences:
<2185.602422852@crimee.ics.uci.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!telly!attcan!dptcdc!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!YAHI.STANFORD.EDU!mdt From: mdt@YAHI.STANFORD.EDU (Michael Tiemann) Newsgroups: gnu.gcc.bug Subject: shot in the sparc Message-ID: <8902021657.AA01816@yahi.Stanford.EDU> Date: 2 Feb 89 16:57:59 GMT References: <2185.602422852@crimee.ics.uci.edu> Sender: daemon@tut.cis.ohio-state.edu Reply-To: tiemann@lurch.stanford.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 80