Merge lp:~uweigand/gcc-linaro/lp-693425 into lp:gcc-linaro/4.5

Proposed by Ulrich Weigand
Status: Merged
Merged at revision: 99451
Proposed branch: lp:~uweigand/gcc-linaro/lp-693425
Merge into: lp:gcc-linaro/4.5
Diff against target: 52 lines (+20/-3)
3 files modified
ChangeLog.linaro (+11/-0)
gcc/config/spu/spu.c (+7/-1)
gcc/config/spu/spu.md (+2/-2)
To merge this branch: bzr merge lp:~uweigand/gcc-linaro/lp-693425
Reviewer Review Type Date Requested Status
Linaro Toolchain Developers Pending
Review via email: mp+44471@code.launchpad.net

Description of the change

Fix LP #693425.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog.linaro'
2--- ChangeLog.linaro 2010-12-14 14:39:51 +0000
3+++ ChangeLog.linaro 2010-12-22 15:34:03 +0000
4@@ -1,3 +1,14 @@
5+2010-12-22 Ulrich Weigand <uweigand@de.ibm.com>
6+
7+ LP: #693425
8+ Backport from mainline:
9+
10+ gcc/
11+ * config/spu/spu.md ("mov<mode>"): Use nonimmediate_operand
12+ predicate for destination operand.
13+ * config/spu/spu.c (spu_expand_mov): If move destination is an
14+ invalid subreg, perform move in the subreg's inner mode instead.
15+
16 2010-12-14 Andrew Stubbs <ams@codesourcery.com>
17
18 gcc/
19
20=== modified file 'gcc/config/spu/spu.c'
21--- gcc/config/spu/spu.c 2010-08-04 09:53:04 +0000
22+++ gcc/config/spu/spu.c 2010-12-22 15:34:03 +0000
23@@ -4572,7 +4572,13 @@
24 spu_expand_mov (rtx * ops, enum machine_mode mode)
25 {
26 if (GET_CODE (ops[0]) == SUBREG && !valid_subreg (ops[0]))
27- abort ();
28+ {
29+ /* Perform the move in the destination SUBREG's inner mode. */
30+ ops[0] = SUBREG_REG (ops[0]);
31+ mode = GET_MODE (ops[0]);
32+ ops[1] = gen_lowpart_common (mode, ops[1]);
33+ gcc_assert (ops[1]);
34+ }
35
36 if (GET_CODE (ops[1]) == SUBREG && !valid_subreg (ops[1]))
37 {
38
39=== modified file 'gcc/config/spu/spu.md'
40--- gcc/config/spu/spu.md 2009-05-23 01:28:14 +0000
41+++ gcc/config/spu/spu.md 2010-12-22 15:34:03 +0000
42@@ -269,8 +269,8 @@
43 ;; mov
44
45 (define_expand "mov<mode>"
46- [(set (match_operand:ALL 0 "spu_nonimm_operand" "=r,r,r,m")
47- (match_operand:ALL 1 "general_operand" "r,i,m,r"))]
48+ [(set (match_operand:ALL 0 "nonimmediate_operand" "")
49+ (match_operand:ALL 1 "general_operand" ""))]
50 ""
51 {
52 if (spu_expand_mov(operands, <MODE>mode))

Subscribers

People subscribed via source and target branches