This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
word alignment for non fp/sp register pointers for SPARClet port
- From: "Nitin Gupta" <ngupta at GlobespanVirata dot com>
- To: <gcc at gcc dot gnu dot org>
- Date: Wed, 27 Aug 2003 20:31:50 +0530
- Subject: word alignment for non fp/sp register pointers for SPARClet port
Hi,
I'm trying to make sparc port of GCC to
assume that if an address which is not offseted
from FP or SP is not more then 32 bit aligned.
I know that this is not inline with SPARC (hence SPARClet)
ABI, but our malloc and all of system is based on old
SPARC ABI. Till now we were using egcs 1.1 which is based
on old sparclet ABI. Now since we are migrating to GCC 3.2
and latter GCC 3.3 we are facing this problem. Since it
is not possible to change the whole system s/w so soon,
I'm trying to fix GCC as per old ABI.
I hacked mem_min_alignment(sparc.c) to return 0 if the
align > 4 & reg is nither HARD_FRAME_POINTER_REGNUM
nor STACK_POINTER_REGNUM. Also I modified mem_ok_for_ldd_peep
likewise.
Though the problem does get solved, however I get following error
when building newlib
/home/ngupta/WorkArea/src/newlib/libc/stdlib/strtod.c: In function
`_strtod_r':
/home/ngupta/WorkArea/src/newlib/libc/stdlib/strtod.c:712: insn does not
satisfy its constraints:
(insn 3352 3260 1136 (set (reg:DF 12 %o4)
(mem/u:DF (plus:SI (reg/f:SI 8 %o0 [327])
(reg:SI 9 %o1 [330])) [6 __mprec_tinytens S8 A64])) 91
{*movdf_no_e_insn_sp32} (nil)
(nil))
/home/ngupta/WorkArea/src/newlib/libc/stdlib/strtod.c:712: Internal compiler
error in reload_cse_simplify_operands, at reload1.c:8369
I know I have to make a few more changes, but I have no idea where!
I have been strugling with GCC code for quite sometime now. Please
help me to figure out the error.
Thanks and Best Regards,
Nitin