diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-07 19:14:02 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-07 19:14:02 +0000 |
commit | 02256d9b1510e97700ff89593a468ab336118a4e (patch) | |
tree | 001232e238f771969576c56eb45c370bca7b23a8 /gcc/expmed.c | |
parent | 11d2465fb0b48073b16bcba459e9e185b2b3b1da (diff) | |
download | gcc-02256d9b1510e97700ff89593a468ab336118a4e.tar.gz |
* expmed.c (extract_bit_field): Do not use insv/extv/extzv patterns
if the bitsize is zero.
* doc/md.texi (Standard Pattern Names): Document it.
* config/ia64/ia64.c (ia64_pass_by_reference): Delete.
(TARGET_PASS_BY_REFERENCE): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106605 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index 19d972d2ad3..00172a355d6 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -608,8 +608,8 @@ store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, if (HAVE_insv && GET_MODE (value) != BLKmode && !(bitsize == 1 && GET_CODE (value) == CONST_INT) - /* Ensure insv's size is wide enough for this field. */ - && (GET_MODE_BITSIZE (op_mode) >= bitsize) + && bitsize > 0 + && GET_MODE_BITSIZE (op_mode) >= bitsize && ! ((REG_P (op0) || GET_CODE (op0) == SUBREG) && (bitsize + bitpos > GET_MODE_BITSIZE (op_mode)))) { @@ -1356,7 +1356,8 @@ extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, if (unsignedp) { if (HAVE_extzv - && (GET_MODE_BITSIZE (extzv_mode) >= bitsize) + && bitsize > 0 + && GET_MODE_BITSIZE (extzv_mode) >= bitsize && ! ((REG_P (op0) || GET_CODE (op0) == SUBREG) && (bitsize + bitpos > GET_MODE_BITSIZE (extzv_mode)))) { @@ -1488,7 +1489,8 @@ extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize, else { if (HAVE_extv - && (GET_MODE_BITSIZE (extv_mode) >= bitsize) + && bitsize > 0 + && GET_MODE_BITSIZE (extv_mode) >= bitsize && ! ((REG_P (op0) || GET_CODE (op0) == SUBREG) && (bitsize + bitpos > GET_MODE_BITSIZE (extv_mode)))) { |