diff options
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch')
-rw-r--r-- | meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch new file mode 100644 index 0000000000..5e8383a7d9 --- /dev/null +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch | |||
@@ -0,0 +1,65 @@ | |||
1 | 2010-12-21 Chung-Lin Tang <cltang@codesourcery.com> | ||
2 | |||
3 | Issue #10201 | ||
4 | |||
5 | Backport from mainline: | ||
6 | |||
7 | 2010-12-16 Chung-Lin Tang <cltang@codesourcery.com> | ||
8 | |||
9 | PR target/46883 | ||
10 | gcc/ | ||
11 | * config/arm/arm.md | ||
12 | (zero_extendhisi2 for register input splitter): Change | ||
13 | "register_operand" to "s_register_operand". | ||
14 | (zero_extendqisi2 for register input splitter): Same. | ||
15 | |||
16 | gcc/testsuite/ | ||
17 | * gcc.target/arm/pr46883.c: New testcase. | ||
18 | |||
19 | === modified file 'gcc/config/arm/arm.md' | ||
20 | --- old/gcc/config/arm/arm.md 2011-01-05 11:42:19 +0000 | ||
21 | +++ new/gcc/config/arm/arm.md 2011-01-05 11:52:16 +0000 | ||
22 | @@ -4114,8 +4114,8 @@ | ||
23 | }) | ||
24 | |||
25 | (define_split | ||
26 | - [(set (match_operand:SI 0 "register_operand" "") | ||
27 | - (zero_extend:SI (match_operand:HI 1 "register_operand" "")))] | ||
28 | + [(set (match_operand:SI 0 "s_register_operand" "") | ||
29 | + (zero_extend:SI (match_operand:HI 1 "s_register_operand" "")))] | ||
30 | "!TARGET_THUMB2 && !arm_arch6" | ||
31 | [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16))) | ||
32 | (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))] | ||
33 | @@ -4234,8 +4234,8 @@ | ||
34 | }) | ||
35 | |||
36 | (define_split | ||
37 | - [(set (match_operand:SI 0 "register_operand" "") | ||
38 | - (zero_extend:SI (match_operand:QI 1 "register_operand" "")))] | ||
39 | + [(set (match_operand:SI 0 "s_register_operand" "") | ||
40 | + (zero_extend:SI (match_operand:QI 1 "s_register_operand" "")))] | ||
41 | "!arm_arch6" | ||
42 | [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 24))) | ||
43 | (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 24)))] | ||
44 | |||
45 | === added file 'gcc/testsuite/gcc.target/arm/pr46883.c' | ||
46 | --- old/gcc/testsuite/gcc.target/arm/pr46883.c 1970-01-01 00:00:00 +0000 | ||
47 | +++ new/gcc/testsuite/gcc.target/arm/pr46883.c 2011-01-05 11:52:16 +0000 | ||
48 | @@ -0,0 +1,16 @@ | ||
49 | +/* { dg-do compile } */ | ||
50 | +/* { dg-options "-O1 -march=armv5te" } */ | ||
51 | + | ||
52 | +void bar (unsigned char *q, unsigned short *data16s, int len) | ||
53 | +{ | ||
54 | + int i; | ||
55 | + | ||
56 | + for (i = 0; i < len; i++) | ||
57 | + { | ||
58 | + q[2 * i] = | ||
59 | + (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF)) & 0xFF; | ||
60 | + q[2 * i + 1] = | ||
61 | + ((unsigned short) | ||
62 | + (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF))) >> 8; | ||
63 | + } | ||
64 | +} | ||
65 | |||