diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2003-01-26 09:02:55 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2003-01-26 09:02:55 +0000 |
commit | 187515f56ae5f7e672771ee07b5a6f9b387739ab (patch) | |
tree | 1097a5d5da2e27530730d4af660b61faa604c164 /gcc/stor-layout.c | |
parent | 6ebd2ef4423713984ac1b4fc42adce7114e75646 (diff) | |
download | gcc-187515f56ae5f7e672771ee07b5a6f9b387739ab.zip gcc-187515f56ae5f7e672771ee07b5a6f9b387739ab.tar.gz gcc-187515f56ae5f7e672771ee07b5a6f9b387739ab.tar.bz2 |
rtl.c (get_mode_alignment): Moved to...
* rtl.c (get_mode_alignment): Moved to...
* stor-layout.c: ... here.
From-SVN: r61824
Diffstat (limited to 'gcc/stor-layout.c')
-rw-r--r-- | gcc/stor-layout.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 5e37593..4a55b66 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -305,6 +305,29 @@ int_mode_for_mode (mode) return mode; } +/* Return the alignment of MODE. This will be bounded by 1 and + BIGGEST_ALIGNMENT. */ + +unsigned int +get_mode_alignment (mode) + enum machine_mode mode; +{ + unsigned int alignment; + + if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT + || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT) + alignment = GET_MODE_UNIT_SIZE (mode); + else + alignment = GET_MODE_SIZE (mode); + + /* Extract the LSB of the size. */ + alignment = alignment & -alignment; + alignment *= BITS_PER_UNIT; + + alignment = MIN (BIGGEST_ALIGNMENT, MAX (1, alignment)); + return alignment; +} + /* Return the value of VALUE, rounded up to a multiple of DIVISOR. This can only be applied to objects of a sizetype. */ |