diff options
| author | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-12 13:46:19 +0000 |
|---|---|---|
| committer | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-04-12 13:46:19 +0000 |
| commit | 47e9d4ca3c2ebf54903885bc010012c86a7c1dbe (patch) | |
| tree | 1a304e3bd92cff1c86a5112723d83333937b45d7 | |
| parent | 348068568bc849f00e7a21c76c333e206973336a (diff) | |
| download | ppe42-gcc-47e9d4ca3c2ebf54903885bc010012c86a7c1dbe.tar.gz ppe42-gcc-47e9d4ca3c2ebf54903885bc010012c86a7c1dbe.zip | |
* expr.c (emit_group_store): Correct operand order in call to
subreg_lowpart_offset. Always create paradoxical SUBREGs with
a SUBREG_BYTE of zero.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112887 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/expr.c | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96027f892f0..040d8c70e30 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-04-12 Roger Sayle <roger@eyesopen.com> + + * expr.c (emit_group_store): Correct operand order in call to + subreg_lowpart_offset. Always create paradoxical SUBREGs with + a SUBREG_BYTE of zero. + 2006-04-12 Richard Guenther <rguenther@suse.de> * profile.c (compute_branch_probabilities): Remove code diff --git a/gcc/expr.c b/gcc/expr.c index 1f4cbe10151..48e23a98cde 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1940,11 +1940,11 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize) if (start < finish) { inner = GET_MODE (tmps[start]); - bytepos = subreg_lowpart_offset (outer, inner); + bytepos = subreg_lowpart_offset (inner, outer); if (INTVAL (XEXP (XVECEXP (src, 0, start), 1)) == bytepos) { temp = simplify_gen_subreg (outer, tmps[start], - inner, bytepos); + inner, 0); if (temp) { emit_move_insn (dst, temp); @@ -1959,11 +1959,11 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize) && start < finish - 1) { inner = GET_MODE (tmps[finish - 1]); - bytepos = subreg_lowpart_offset (outer, inner); + bytepos = subreg_lowpart_offset (inner, outer); if (INTVAL (XEXP (XVECEXP (src, 0, finish - 1), 1)) == bytepos) { temp = simplify_gen_subreg (outer, tmps[finish - 1], - inner, bytepos); + inner, 0); if (temp) { emit_move_insn (dst, temp); |

