aboutsummaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorVladimir N. Makarov <vmakarov@cygnus.com>1999-01-21 11:20:09 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>1999-01-21 11:20:09 +0000
commit0003feb203c94e5ed853432b8c8be9079761244e (patch)
treef114752156844ccab9b23e5e93c21da5cfb7268f /gcc/emit-rtl.c
parent7fcbfb22d5ed702003945f2b4662ccf30e99a8a3 (diff)
downloadgcc-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.c10
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)