This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Ada bootstrap failure on ia64
- To: Andreas Schwab <schwab at suse dot de>
- Subject: Re: Ada bootstrap failure on ia64
- From: David Edelsohn <dje at watson dot ibm dot com>
- Date: Fri, 09 Nov 2001 12:45:54 -0500
- cc: gcc at gcc dot gnu dot org
>>>>> Andreas Schwab writes:
Andreas> I'm trying to bootstrap Ada on ia64 (using a cross compiler from ia32),
Andreas> but I get an ICE in gnat when compiling a-nuflra.adb. The problem is that
Andreas> move_by_pieces_ninsns is called with align = 1, but there is no mode with
Andreas> 1 bit alignment. The function is called by emit_block_move, which iself
Andreas> is called with
Andreas> x = (mem/s:BLK (reg/f:DI 381) [3])
Andreas> y = (mem/s:BLK (reg/f:DI 336 virtual-stack-vars) [3 outs+0 S32 A128])
Andreas> size = (const_int 32 [0x20])
Andreas> and align = 1 comes from MEM_ALIGN (x). Does MEM_ALIGN return the
Andreas> alignment in bits or in bytes?
Alignment now is consistently in bits (or is suppose to be). I
fixed a bug a few months ago in calls.c:store_one_arg() where alignment
incorrectly was divided by BITS_PER_UNIT. This may be another case of an
extraneous divide.
David