1 |
lu_zero 10/07/31 16:34:04 |
2 |
|
3 |
Modified: README.history |
4 |
Added: 94_all_sh-pr42481.patch 95_all_sh-pr43744.patch |
5 |
Log: |
6 |
Add patches to address bug #327191 |
7 |
|
8 |
Revision Changes Path |
9 |
1.2 src/patchsets/gcc/4.4.4/gentoo/README.history |
10 |
|
11 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/README.history?rev=1.2&view=markup |
12 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/README.history?rev=1.2&content-type=text/plain |
13 |
diff : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/README.history?r1=1.1&r2=1.2 |
14 |
|
15 |
Index: README.history |
16 |
=================================================================== |
17 |
RCS file: /var/cvsroot/gentoo/src/patchsets/gcc/4.4.4/gentoo/README.history,v |
18 |
retrieving revision 1.1 |
19 |
retrieving revision 1.2 |
20 |
diff -u -r1.1 -r1.2 |
21 |
--- README.history 10 Jun 2010 05:26:50 -0000 1.1 |
22 |
+++ README.history 31 Jul 2010 16:34:03 -0000 1.2 |
23 |
@@ -1,3 +1,6 @@ |
24 |
+2 31.07.2010 |
25 |
+ + 95_all_sh-pr43744.patch |
26 |
+ + 94_all_sh-pr42481.patch |
27 |
1 10.06.2010 |
28 |
+ 00_all_gcc-4.1-alpha-mieee-default.patch |
29 |
+ 00_all_gcc-trampolinewarn.patch |
30 |
|
31 |
|
32 |
|
33 |
1.1 src/patchsets/gcc/4.4.4/gentoo/94_all_sh-pr42481.patch |
34 |
|
35 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/94_all_sh-pr42481.patch?rev=1.1&view=markup |
36 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/94_all_sh-pr42481.patch?rev=1.1&content-type=text/plain |
37 |
|
38 |
Index: 94_all_sh-pr42481.patch |
39 |
=================================================================== |
40 |
--- branches/gcc-4_4-branch/gcc/config/sh/sh.c 2009/05/24 22:18:47 147837 |
41 |
+++ branches/gcc-4_4-branch/gcc/config/sh/sh.c 2010/01/26 07:21:57 156230 |
42 |
@@ -4061,6 +4061,13 @@ |
43 |
&& ! TARGET_SMALLCODE) |
44 |
new_align = 4; |
45 |
|
46 |
+ /* There is a possibility that a bf is transformed into a bf/s by the |
47 |
+ delay slot scheduler. */ |
48 |
+ if (JUMP_P (from) && !JUMP_TABLE_DATA_P (from) |
49 |
+ && get_attr_type (from) == TYPE_CBRANCH |
50 |
+ && GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (from)))) != SEQUENCE) |
51 |
+ inc += 2; |
52 |
+ |
53 |
if (found_si) |
54 |
{ |
55 |
count_si += inc; |
56 |
@@ -8721,9 +8728,7 @@ |
57 |
&& GET_CODE (PATTERN (insn)) != USE |
58 |
&& GET_CODE (PATTERN (insn)) != CLOBBER) |
59 |
|| GET_CODE (insn) == CALL_INSN |
60 |
- || (GET_CODE (insn) == JUMP_INSN |
61 |
- && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC |
62 |
- && GET_CODE (PATTERN (insn)) != ADDR_VEC)) |
63 |
+ || (JUMP_P (insn) && !JUMP_TABLE_DATA_P (insn))) |
64 |
&& GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (insn)))) != SEQUENCE |
65 |
&& get_attr_needs_delay_slot (insn) == NEEDS_DELAY_SLOT_YES) |
66 |
return 2; |
67 |
@@ -8731,9 +8736,7 @@ |
68 |
/* SH2e has a bug that prevents the use of annulled branches, so if |
69 |
the delay slot is not filled, we'll have to put a NOP in it. */ |
70 |
if (sh_cpu == CPU_SH2E |
71 |
- && GET_CODE (insn) == JUMP_INSN |
72 |
- && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC |
73 |
- && GET_CODE (PATTERN (insn)) != ADDR_VEC |
74 |
+ && JUMP_P (insn) && !JUMP_TABLE_DATA_P (insn) |
75 |
&& get_attr_type (insn) == TYPE_CBRANCH |
76 |
&& GET_CODE (PATTERN (NEXT_INSN (PREV_INSN (insn)))) != SEQUENCE) |
77 |
return 2; |
78 |
|
79 |
|
80 |
1.1 src/patchsets/gcc/4.4.4/gentoo/95_all_sh-pr43744.patch |
81 |
|
82 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/95_all_sh-pr43744.patch?rev=1.1&view=markup |
83 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.4.4/gentoo/95_all_sh-pr43744.patch?rev=1.1&content-type=text/plain |
84 |
|
85 |
Index: 95_all_sh-pr43744.patch |
86 |
=================================================================== |
87 |
--- branches/gcc-4_4-branch/gcc/config/sh/sh.c 2010/03/23 23:04:39 157683 |
88 |
+++ branches/gcc-4_4-branch/gcc/config/sh/sh.c 2010/05/05 22:27:57 159088 |
89 |
@@ -3884,6 +3884,7 @@ |
90 |
int si_limit; |
91 |
int hi_limit; |
92 |
rtx orig = from; |
93 |
+ rtx last_symoff = NULL_RTX; |
94 |
|
95 |
/* For HImode: range is 510, add 4 because pc counts from address of |
96 |
second instruction after this one, subtract 2 for the jump instruction |
97 |
@@ -4015,6 +4016,16 @@ |
98 |
{ |
99 |
switch (untangle_mova (&num_mova, &mova, from)) |
100 |
{ |
101 |
+ case 1: |
102 |
+ if (flag_pic) |
103 |
+ { |
104 |
+ rtx src = SET_SRC (PATTERN (from)); |
105 |
+ if (GET_CODE (src) == CONST |
106 |
+ && GET_CODE (XEXP (src, 0)) == UNSPEC |
107 |
+ && XINT (XEXP (src, 0), 1) == UNSPEC_SYMOFF) |
108 |
+ last_symoff = from; |
109 |
+ } |
110 |
+ break; |
111 |
case 0: return find_barrier (0, 0, mova); |
112 |
case 2: |
113 |
{ |
114 |
@@ -4120,6 +4131,12 @@ |
115 |
so we'll make one. */ |
116 |
rtx label = gen_label_rtx (); |
117 |
|
118 |
+ /* Don't emit a constant table in the middle of insns for |
119 |
+ casesi_worker_2. This is a bit overkill but is enough |
120 |
+ because casesi_worker_2 wouldn't appear so frequently. */ |
121 |
+ if (last_symoff) |
122 |
+ from = last_symoff; |
123 |
+ |
124 |
/* If we exceeded the range, then we must back up over the last |
125 |
instruction we looked at. Otherwise, we just need to undo the |
126 |
NEXT_INSN at the end of the loop. */ |