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