This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH:
- To: gcc-patches at gcc dot gnu dot org
- Subject: PATCH:
- From: Lars Brinkhoff <lars at nocrew dot org>
- Date: 25 Apr 2001 10:19:35 +0200
- Organization: nocrew
get_mode_alignment() in stor-layout.c forces the alignment, in bits,
to a power of two. That works fine on 8/16/32-bit machines, but not
on, say, a 36-bit machine. This patch makes the alignment be a power
of two in storage units, which makes no difference at all on machines
where the size, in bits, of a storage unit is a power of two.
Bootstrapped on powerpc-unknown-linux-gnu and checked without regressions.
2001-04-25 Lars Brinkhoff <lars@nocrew.org>
* stor-layout.c (get_mode_alignment): remove the restriction
that machine mode sizes must be powers of two.
Index: stor-layout.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/stor-layout.c,v
retrieving revision 1.96
diff -c -3 -p -r1.96 stor-layout.c
*** stor-layout.c 2001/03/23 16:59:56 1.96
--- stor-layout.c 2001/04/25 07:49:49
*************** unsigned int
*** 1844,1855 ****
get_mode_alignment (mode)
enum machine_mode mode;
{
! unsigned int alignment = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT;
/* Extract the LSB of the size. */
alignment = alignment & -alignment;
! alignment = MIN (BIGGEST_ALIGNMENT, MAX (1, alignment));
return alignment;
}
--- 1844,1855 ----
get_mode_alignment (mode)
enum machine_mode mode;
{
! unsigned int alignment = GET_MODE_UNIT_SIZE (mode);
/* Extract the LSB of the size. */
alignment = alignment & -alignment;
! alignment = MIN (BIGGEST_ALIGNMENT, MAX (1, alignment * BITS_PER_UNIT));
return alignment;
}