This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
MIPS Wrong-code regression.
- From: David Daney <ddaney at avtrex dot com>
- To: Richard Sandiford <richard at codesourcery dot com>
- Cc: GCC <gcc at gcc dot gnu dot org>, Java GCJ Mailing List <java at gcc dot gnu dot org>
- Date: Tue, 30 Jan 2007 22:40:56 -0800
- Subject: MIPS Wrong-code regression.
Richard,
Sometime between 1/7 and 1/16 on the trunk I started getting wrong code
on a bunch of java testcases under mipsel-linux.
It looks related to (but not necessarily caused by) this patch:
http://gcc.gnu.org/ml/gcc-patches/2006-03/msg01346.html
For example if we examine the assembler output of the PR9577.java
testcase, we see:
.
.
.
$LBB2:
lw $2,40($fp)
sw $2,24($fp)
lw $2,24($fp)
move $4,$2
.option pic0
jal _ZN4java4lang6ObjectC1Ev
nop
.option pic2
lw $28,16($fp)
$LBE2:
move $sp,$fp
lw $31,36($sp)
lw $fp,32($sp)
addiu $sp,$sp,40
j $31
nop
The call to _ZN4java4lang6ObjectC1Ev is being generated as non-pic, even
though that symbol is defined in libgcj.so. The assembler and linker
conspire to jump to address 0x00000000 for this call.
It looks like the logic that decides if a symbol is external to the
compilation unit is faulty.
Any ideas about where it might have gone wrong?
I will try to look into it more tomorrow.
Thanks,
David Daney