diff options
author | Jan Hubicka <jh@suse.cz> | 2003-04-19 14:57:36 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-04-19 12:57:36 +0000 |
commit | 070154442e8c3011007ae6f5e8f7dc87f90719d2 (patch) | |
tree | 7528a625fdf4ebac3efe2a35ac63b4ccf463908b /gcc | |
parent | bced6edfc6c487a9cf671f08417be163904d8def (diff) | |
download | gcc-070154442e8c3011007ae6f5e8f7dc87f90719d2.zip gcc-070154442e8c3011007ae6f5e8f7dc87f90719d2.tar.gz gcc-070154442e8c3011007ae6f5e8f7dc87f90719d2.tar.bz2 |
rtlanal.c (subreg_offset_representable_p): Fix call of subreg_lowpart.
* rtlanal.c (subreg_offset_representable_p): Fix call of
subreg_lowpart.
From-SVN: r65817
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/rtlanal.c | 13 |
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a987d56..176f4b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat Apr 19 14:56:17 CEST 2003 Jan Hubicka <jh@suse.cz> + + * rtlanal.c (subreg_offset_representable_p): Fix call of + subreg_lowpart. + 2003-04-19 Neil Booth <neil@daikokuya.co.uk> * cpphash.h (struct cpp_reader): New member warned_dollar. diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 80fff63..b0c76cc 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -3432,8 +3432,10 @@ subreg_offset_representable_p (xregno, xmode, offset, ymode) redesigned. */ if (GET_MODE_SIZE (xmode) % GET_MODE_SIZE (ymode) || GET_MODE_SIZE (ymode) % nregs_ymode - || mode_for_size (GET_MODE_SIZE (ymode) / nregs_ymode, - MODE_INT, 0) == VOIDmode + || (GET_MODE_BITSIZE (mode_for_size (GET_MODE_BITSIZE (xmode) + / nregs_xmode, + MODE_INT, 0)) + != GET_MODE_BITSIZE (xmode) / nregs_xmode) || nregs_xmode % nregs_ymode) abort (); #endif @@ -3441,9 +3443,10 @@ subreg_offset_representable_p (xregno, xmode, offset, ymode) /* The XMODE value can be seen as an vector of NREGS_XMODE values. The subreg must represent an lowpart of given field. Compute what field it is. */ - offset -= subreg_lowpart_offset (mode_for_size (GET_MODE_SIZE (ymode) - / nregs_ymode, - MODE_INT, 0), xmode); + offset -= subreg_lowpart_offset (ymode, + mode_for_size (GET_MODE_BITSIZE (xmode) + / nregs_xmode, + MODE_INT, 0)); /* size of ymode must not be greater than the size of xmode. */ mode_multiple = GET_MODE_SIZE (xmode) / GET_MODE_SIZE (ymode); |