diff options
author | Vladimir N. Makarov <vmakarov@cygnus.com> | 1999-01-21 11:20:09 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 1999-01-21 11:20:09 +0000 |
commit | 0003feb203c94e5ed853432b8c8be9079761244e (patch) | |
tree | f114752156844ccab9b23e5e93c21da5cfb7268f /gcc/emit-rtl.c | |
parent | 7fcbfb22d5ed702003945f2b4662ccf30e99a8a3 (diff) | |
download | gcc-0003feb203c94e5ed853432b8c8be9079761244e.zip gcc-0003feb203c94e5ed853432b8c8be9079761244e.tar.gz gcc-0003feb203c94e5ed853432b8c8be9079761244e.tar.bz2 |
varasm.c (output_constant_pool): Use floor_log2 instead of exact_log2 for ASM_OUTPUT_ALIGN.
Thu Jan 21 14:13:31 1999 Vladimir N. Makarov <vmakarov@cygnus.com>
* varasm.c (output_constant_pool): Use floor_log2 instead of
exact_log2 for ASM_OUTPUT_ALIGN.
* stor-layout.c (layout_type): Do machine-dependent extra alignment.
* emit-rtl.c (operand_subword): Handle case when a subword outside
the operand.
* tm.texi (ROUND_TYPE_{SIZE,ALIGN}): More accurate descriptions of
the macros.
From-SVN: r24800
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 4925544..22fdaf6 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1136,12 +1136,16 @@ operand_subword (op, i, validate_address, mode) if (mode == VOIDmode) abort (); - /* If OP is narrower than a word or if we want a word outside OP, fail. */ + /* If OP is narrower than a word, fail. */ if (mode != BLKmode - && (GET_MODE_SIZE (mode) < UNITS_PER_WORD - || (i + 1) * UNITS_PER_WORD > GET_MODE_SIZE (mode))) + && (GET_MODE_SIZE (mode) < UNITS_PER_WORD)) return 0; + /* If we want a word outside OP, return zero. */ + if (mode != BLKmode + && (i + 1) * UNITS_PER_WORD > GET_MODE_SIZE (mode)) + return const0_rtx; + /* If OP is already an integer word, return it. */ if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE_SIZE (mode) == UNITS_PER_WORD) |