Merge lp:~ams-codesourcery/gcc-linaro/merge-from-fsf-20110701-4.5 into lp:gcc-linaro/4.5
- merge-from-fsf-20110701-4.5
- Merge into 4.5
Status: | Merged |
---|---|
Merged at revision: | 99520 |
Proposed branch: | lp:~ams-codesourcery/gcc-linaro/merge-from-fsf-20110701-4.5 |
Merge into: | lp:gcc-linaro/4.5 |
Diff against target: |
2701 lines (+982/-759) 46 files modified
ChangeLog (+22/-0) ChangeLog.linaro (+4/-0) Makefile.def (+0/-7) Makefile.in (+0/-469) config/ChangeLog (+6/-0) config/mh-x86-darwin (+2/-0) configure (+14/-34) configure.ac (+14/-34) gcc/ChangeLog (+107/-0) gcc/DATESTAMP (+1/-1) gcc/caller-save.c (+80/-86) gcc/config/i386/sse.md (+12/-2) gcc/config/mips/mips.c (+43/-16) gcc/config/sh/sh.c (+11/-1) gcc/config/sh/sh.md (+23/-7) gcc/config/sparc/sparc-protos.h (+1/-0) gcc/config/sparc/sparc.c (+25/-12) gcc/config/sparc/sparc.h (+2/-1) gcc/config/sparc/sparc.md (+1/-3) gcc/cp/ChangeLog (+14/-0) gcc/cp/class.c (+3/-14) gcc/cp/method.c (+1/-0) gcc/fortran/ChangeLog (+10/-0) gcc/fortran/decl.c (+11/-0) gcc/fortran/gfortran.h (+1/-0) gcc/fortran/interface.c (+57/-65) gcc/reload.c (+9/-0) gcc/reload1.c (+7/-0) gcc/testsuite/ChangeLog (+65/-0) gcc/testsuite/g++.dg/rtti/anon-ns1.C (+15/-0) gcc/testsuite/g++.dg/torture/pr47714.C (+16/-0) gcc/testsuite/gcc.c-torture/compile/pr49238.c (+18/-0) gcc/testsuite/gcc.c-torture/execute/pr49186.c (+15/-0) gcc/testsuite/gcc.dg/pr49307.c (+21/-0) gcc/testsuite/gcc.dg/torture/pr48542.c (+57/-0) gcc/testsuite/gcc.dg/vect/pr49038.c (+42/-0) gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c (+116/-0) gcc/testsuite/gcc.target/mips/reg-var-1.c (+16/-0) gcc/testsuite/gfortran.dg/operator_7.f90 (+27/-0) gcc/testsuite/gnat.dg/opt17.adb (+13/-0) gcc/testsuite/gnat.dg/opt17.ads (+7/-0) gcc/tree-ssa-dom.c (+4/-3) gcc/tree-vect-data-refs.c (+23/-1) gcc/tree-vect-loop-manip.c (+32/-2) gcc/tree-vect-loop.c (+7/-1) gcc/tree-vectorizer.h (+7/-0) |
To merge this branch: | bzr merge lp:~ams-codesourcery/gcc-linaro/merge-from-fsf-20110701-4.5 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Linaro Toolchain Developers | Pending | ||
Review via email: mp+66568@code.launchpad.net |
Commit message
Description of the change
Merge from FSF 4.5 branch.
Linaro Toolchain Builder (cbuild) wrote : | # |
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro+bzr99518:
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
-PASS: gcc.c-torture/
+FAIL: gcc.c-torture/
-PASS: gcc.c-torture/
+UNRESOLVED: gcc.c-torture/
-PASS: gcc.c-torture/
+FAIL: gcc.c-torture/
-PASS: gcc.c-torture/
+UNRESOLVED: gcc.c-torture/
-PASS: gcc.c-torture/
+FAIL: gcc.c-torture/
-PASS: gcc.c-torture/
+UNRESOLVED: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.dg/pr49307.c (test for excess errors)
...and 69 more
The full testsuite results are at:
http://
cbuild-checked: ...
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on x86_64-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro+bzr99518:
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.dg/pr49307.c (test for excess errors)
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
...and 26 more
The full testsuite results are at:
http://
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro+bzr99518:
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.dg/pr49307.c (test for excess errors)
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
+PASS: gcc.dg/
...and 25 more
The full testsuite results are at:
http://
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
The test suite was not checked as the branch point lp:gcc-linaro+bzr99518 has nothing to compare against.
The full testsuite results are at:
http://
cbuild-checked: armv7l-
Preview Diff
1 | === modified file 'ChangeLog' |
2 | --- ChangeLog 2011-04-28 14:08:55 +0000 |
3 | +++ ChangeLog 2011-07-01 09:39:45 +0000 |
4 | @@ -1,3 +1,25 @@ |
5 | +2011-06-27 Hans-Peter Nilsson <hp@axis.com> |
6 | + |
7 | + PR regression/47836 |
8 | + PR bootstrap/23656 |
9 | + PR other/47733 |
10 | + PR bootstrap/49247 |
11 | + PR c/48825 |
12 | + * configure.ac (target_libraries): Remove target-libiberty. |
13 | + Remove all target-specific settings adding target-libiberty to |
14 | + skipdirs and noconfigdirs. Remove checking target_configdirs |
15 | + and removing target-libiberty but keeping target-libgcc if |
16 | + otherwise empty. |
17 | + * Makefile.def (target_modules): Don't add libiberty. |
18 | + (dependencies): Remove all traces of target-libiberty. |
19 | + * configure, Makefile.in: Regenerate. |
20 | + |
21 | +2011-06-19 Jack Howarth <howarth@bromo.med.uc.edu> |
22 | + |
23 | + PR target/49461 |
24 | + * configure.ac: Use mh-x86-darwin. |
25 | + * configure: Regenerate. |
26 | + |
27 | 2011-04-28 Release Manager |
28 | |
29 | * GCC 4.5.3 released. |
30 | |
31 | === modified file 'ChangeLog.linaro' |
32 | --- ChangeLog.linaro 2011-06-14 10:36:23 +0000 |
33 | +++ ChangeLog.linaro 2011-07-01 09:39:45 +0000 |
34 | @@ -1,3 +1,7 @@ |
35 | +2011-07-01 Andrew Stubbs <ams@codesourcery.com> |
36 | + |
37 | + Merge from FSF 4.5 branch r175676 (pre 4.5.4). |
38 | + |
39 | 2011-06-14 Andrew Stubbs <ams@codesourcery.com> |
40 | |
41 | gcc/ |
42 | |
43 | === modified file 'Makefile.def' |
44 | --- Makefile.def 2010-06-10 16:05:59 +0000 |
45 | +++ Makefile.def 2011-07-01 09:39:45 +0000 |
46 | @@ -164,7 +164,6 @@ |
47 | missing=maintainer-clean; }; |
48 | target_modules = { module= winsup; }; |
49 | target_modules = { module= libgloss; no_check=true; }; |
50 | -target_modules = { module= libiberty; }; |
51 | target_modules = { module= gperf; }; |
52 | target_modules = { module= examples; no_check=true; no_install=true; }; |
53 | target_modules = { module= libffi; }; |
54 | @@ -532,7 +531,6 @@ |
55 | dependencies = { module=configure-target-boehm-gc; on=all-target-libstdc++-v3; }; |
56 | dependencies = { module=configure-target-fastjar; on=configure-target-zlib; }; |
57 | dependencies = { module=all-target-fastjar; on=all-target-zlib; }; |
58 | -dependencies = { module=all-target-fastjar; on=all-target-libiberty; }; |
59 | dependencies = { module=configure-target-libjava; on=configure-target-zlib; }; |
60 | dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; }; |
61 | dependencies = { module=configure-target-libjava; on=configure-target-qthreads; }; |
62 | @@ -543,9 +541,7 @@ |
63 | dependencies = { module=all-target-libjava; on=all-target-qthreads; }; |
64 | dependencies = { module=all-target-libjava; on=all-target-libffi; }; |
65 | dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; }; |
66 | -dependencies = { module=all-target-libobjc; on=all-target-libiberty; }; |
67 | dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; |
68 | -dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; }; |
69 | dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; |
70 | // parallel_list.o and parallel_settings.o depend on omp.h, which is |
71 | // generated by the libgomp configure. Unfortunately, due to the use of |
72 | @@ -560,10 +556,7 @@ |
73 | lang_env_dependencies = { module=qthreads; }; |
74 | |
75 | dependencies = { module=all-target-libgloss; on=all-target-newlib; }; |
76 | -dependencies = { module=all-target-winsup; on=all-target-libiberty; }; |
77 | dependencies = { module=all-target-winsup; on=all-target-libtermcap; }; |
78 | -dependencies = { module=configure-target-libiberty; on=all-binutils; }; |
79 | -dependencies = { module=configure-target-libiberty; on=all-ld; }; |
80 | dependencies = { module=configure-target-newlib; on=all-binutils; }; |
81 | dependencies = { module=configure-target-newlib; on=all-ld; }; |
82 | |
83 | |
84 | === modified file 'Makefile.in' |
85 | --- Makefile.in 2010-06-10 16:05:59 +0000 |
86 | +++ Makefile.in 2011-07-01 09:39:45 +0000 |
87 | @@ -930,7 +930,6 @@ |
88 | maybe-configure-target-libtermcap \ |
89 | maybe-configure-target-winsup \ |
90 | maybe-configure-target-libgloss \ |
91 | - maybe-configure-target-libiberty \ |
92 | maybe-configure-target-gperf \ |
93 | maybe-configure-target-examples \ |
94 | maybe-configure-target-libffi \ |
95 | @@ -1112,7 +1111,6 @@ |
96 | all-target: maybe-all-target-libtermcap |
97 | all-target: maybe-all-target-winsup |
98 | all-target: maybe-all-target-libgloss |
99 | -all-target: maybe-all-target-libiberty |
100 | all-target: maybe-all-target-gperf |
101 | all-target: maybe-all-target-examples |
102 | all-target: maybe-all-target-libffi |
103 | @@ -1233,7 +1231,6 @@ |
104 | info-target: maybe-info-target-libtermcap |
105 | info-target: maybe-info-target-winsup |
106 | info-target: maybe-info-target-libgloss |
107 | -info-target: maybe-info-target-libiberty |
108 | info-target: maybe-info-target-gperf |
109 | info-target: maybe-info-target-examples |
110 | info-target: maybe-info-target-libffi |
111 | @@ -1347,7 +1344,6 @@ |
112 | dvi-target: maybe-dvi-target-libtermcap |
113 | dvi-target: maybe-dvi-target-winsup |
114 | dvi-target: maybe-dvi-target-libgloss |
115 | -dvi-target: maybe-dvi-target-libiberty |
116 | dvi-target: maybe-dvi-target-gperf |
117 | dvi-target: maybe-dvi-target-examples |
118 | dvi-target: maybe-dvi-target-libffi |
119 | @@ -1461,7 +1457,6 @@ |
120 | pdf-target: maybe-pdf-target-libtermcap |
121 | pdf-target: maybe-pdf-target-winsup |
122 | pdf-target: maybe-pdf-target-libgloss |
123 | -pdf-target: maybe-pdf-target-libiberty |
124 | pdf-target: maybe-pdf-target-gperf |
125 | pdf-target: maybe-pdf-target-examples |
126 | pdf-target: maybe-pdf-target-libffi |
127 | @@ -1575,7 +1570,6 @@ |
128 | html-target: maybe-html-target-libtermcap |
129 | html-target: maybe-html-target-winsup |
130 | html-target: maybe-html-target-libgloss |
131 | -html-target: maybe-html-target-libiberty |
132 | html-target: maybe-html-target-gperf |
133 | html-target: maybe-html-target-examples |
134 | html-target: maybe-html-target-libffi |
135 | @@ -1689,7 +1683,6 @@ |
136 | TAGS-target: maybe-TAGS-target-libtermcap |
137 | TAGS-target: maybe-TAGS-target-winsup |
138 | TAGS-target: maybe-TAGS-target-libgloss |
139 | -TAGS-target: maybe-TAGS-target-libiberty |
140 | TAGS-target: maybe-TAGS-target-gperf |
141 | TAGS-target: maybe-TAGS-target-examples |
142 | TAGS-target: maybe-TAGS-target-libffi |
143 | @@ -1803,7 +1796,6 @@ |
144 | install-info-target: maybe-install-info-target-libtermcap |
145 | install-info-target: maybe-install-info-target-winsup |
146 | install-info-target: maybe-install-info-target-libgloss |
147 | -install-info-target: maybe-install-info-target-libiberty |
148 | install-info-target: maybe-install-info-target-gperf |
149 | install-info-target: maybe-install-info-target-examples |
150 | install-info-target: maybe-install-info-target-libffi |
151 | @@ -1917,7 +1909,6 @@ |
152 | install-pdf-target: maybe-install-pdf-target-libtermcap |
153 | install-pdf-target: maybe-install-pdf-target-winsup |
154 | install-pdf-target: maybe-install-pdf-target-libgloss |
155 | -install-pdf-target: maybe-install-pdf-target-libiberty |
156 | install-pdf-target: maybe-install-pdf-target-gperf |
157 | install-pdf-target: maybe-install-pdf-target-examples |
158 | install-pdf-target: maybe-install-pdf-target-libffi |
159 | @@ -2031,7 +2022,6 @@ |
160 | install-html-target: maybe-install-html-target-libtermcap |
161 | install-html-target: maybe-install-html-target-winsup |
162 | install-html-target: maybe-install-html-target-libgloss |
163 | -install-html-target: maybe-install-html-target-libiberty |
164 | install-html-target: maybe-install-html-target-gperf |
165 | install-html-target: maybe-install-html-target-examples |
166 | install-html-target: maybe-install-html-target-libffi |
167 | @@ -2145,7 +2135,6 @@ |
168 | installcheck-target: maybe-installcheck-target-libtermcap |
169 | installcheck-target: maybe-installcheck-target-winsup |
170 | installcheck-target: maybe-installcheck-target-libgloss |
171 | -installcheck-target: maybe-installcheck-target-libiberty |
172 | installcheck-target: maybe-installcheck-target-gperf |
173 | installcheck-target: maybe-installcheck-target-examples |
174 | installcheck-target: maybe-installcheck-target-libffi |
175 | @@ -2259,7 +2248,6 @@ |
176 | mostlyclean-target: maybe-mostlyclean-target-libtermcap |
177 | mostlyclean-target: maybe-mostlyclean-target-winsup |
178 | mostlyclean-target: maybe-mostlyclean-target-libgloss |
179 | -mostlyclean-target: maybe-mostlyclean-target-libiberty |
180 | mostlyclean-target: maybe-mostlyclean-target-gperf |
181 | mostlyclean-target: maybe-mostlyclean-target-examples |
182 | mostlyclean-target: maybe-mostlyclean-target-libffi |
183 | @@ -2373,7 +2361,6 @@ |
184 | clean-target: maybe-clean-target-libtermcap |
185 | clean-target: maybe-clean-target-winsup |
186 | clean-target: maybe-clean-target-libgloss |
187 | -clean-target: maybe-clean-target-libiberty |
188 | clean-target: maybe-clean-target-gperf |
189 | clean-target: maybe-clean-target-examples |
190 | clean-target: maybe-clean-target-libffi |
191 | @@ -2487,7 +2474,6 @@ |
192 | distclean-target: maybe-distclean-target-libtermcap |
193 | distclean-target: maybe-distclean-target-winsup |
194 | distclean-target: maybe-distclean-target-libgloss |
195 | -distclean-target: maybe-distclean-target-libiberty |
196 | distclean-target: maybe-distclean-target-gperf |
197 | distclean-target: maybe-distclean-target-examples |
198 | distclean-target: maybe-distclean-target-libffi |
199 | @@ -2601,7 +2587,6 @@ |
200 | maintainer-clean-target: maybe-maintainer-clean-target-libtermcap |
201 | maintainer-clean-target: maybe-maintainer-clean-target-winsup |
202 | maintainer-clean-target: maybe-maintainer-clean-target-libgloss |
203 | -maintainer-clean-target: maybe-maintainer-clean-target-libiberty |
204 | maintainer-clean-target: maybe-maintainer-clean-target-gperf |
205 | maintainer-clean-target: maybe-maintainer-clean-target-examples |
206 | maintainer-clean-target: maybe-maintainer-clean-target-libffi |
207 | @@ -2770,7 +2755,6 @@ |
208 | maybe-check-target-libtermcap \ |
209 | maybe-check-target-winsup \ |
210 | maybe-check-target-libgloss \ |
211 | - maybe-check-target-libiberty \ |
212 | maybe-check-target-gperf \ |
213 | maybe-check-target-examples \ |
214 | maybe-check-target-libffi \ |
215 | @@ -2991,7 +2975,6 @@ |
216 | maybe-install-target-libtermcap \ |
217 | maybe-install-target-winsup \ |
218 | maybe-install-target-libgloss \ |
219 | - maybe-install-target-libiberty \ |
220 | maybe-install-target-gperf \ |
221 | maybe-install-target-examples \ |
222 | maybe-install-target-libffi \ |
223 | @@ -50216,448 +50199,6 @@ |
224 | |
225 | |
226 | |
227 | -.PHONY: configure-target-libiberty maybe-configure-target-libiberty |
228 | -maybe-configure-target-libiberty: |
229 | -@if gcc-bootstrap |
230 | -configure-target-libiberty: stage_current |
231 | -@endif gcc-bootstrap |
232 | -@if target-libiberty |
233 | -maybe-configure-target-libiberty: configure-target-libiberty |
234 | -configure-target-libiberty: |
235 | - @: $(MAKE); $(unstage) |
236 | - @r=`${PWD_COMMAND}`; export r; \ |
237 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
238 | - echo "Checking multilib configuration for libiberty..."; \ |
239 | - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ |
240 | - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \ |
241 | - if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \ |
242 | - if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \ |
243 | - rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \ |
244 | - else \ |
245 | - rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \ |
246 | - mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ |
247 | - fi; \ |
248 | - else \ |
249 | - mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ |
250 | - fi; \ |
251 | - test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \ |
252 | - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ |
253 | - $(NORMAL_TARGET_EXPORTS) \ |
254 | - echo Configuring in $(TARGET_SUBDIR)/libiberty; \ |
255 | - cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \ |
256 | - case $(srcdir) in \ |
257 | - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ |
258 | - *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \ |
259 | - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ |
260 | - esac; \ |
261 | - srcdiroption="--srcdir=$${topdir}/libiberty"; \ |
262 | - libsrcdir="$$s/libiberty"; \ |
263 | - rm -f no-such-file || : ; \ |
264 | - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ |
265 | - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ |
266 | - --target=${target_alias} $${srcdiroption} \ |
267 | - || exit 1 |
268 | -@endif target-libiberty |
269 | - |
270 | - |
271 | - |
272 | - |
273 | - |
274 | -.PHONY: all-target-libiberty maybe-all-target-libiberty |
275 | -maybe-all-target-libiberty: |
276 | -@if gcc-bootstrap |
277 | -all-target-libiberty: stage_current |
278 | -@endif gcc-bootstrap |
279 | -@if target-libiberty |
280 | -TARGET-target-libiberty=all |
281 | -maybe-all-target-libiberty: all-target-libiberty |
282 | -all-target-libiberty: configure-target-libiberty |
283 | - @: $(MAKE); $(unstage) |
284 | - @r=`${PWD_COMMAND}`; export r; \ |
285 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
286 | - $(NORMAL_TARGET_EXPORTS) \ |
287 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
288 | - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ |
289 | - $(TARGET-target-libiberty)) |
290 | -@endif target-libiberty |
291 | - |
292 | - |
293 | - |
294 | - |
295 | - |
296 | -.PHONY: check-target-libiberty maybe-check-target-libiberty |
297 | -maybe-check-target-libiberty: |
298 | -@if target-libiberty |
299 | -maybe-check-target-libiberty: check-target-libiberty |
300 | - |
301 | -check-target-libiberty: |
302 | - @: $(MAKE); $(unstage) |
303 | - @r=`${PWD_COMMAND}`; export r; \ |
304 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
305 | - $(NORMAL_TARGET_EXPORTS) \ |
306 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
307 | - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) |
308 | - |
309 | -@endif target-libiberty |
310 | - |
311 | -.PHONY: install-target-libiberty maybe-install-target-libiberty |
312 | -maybe-install-target-libiberty: |
313 | -@if target-libiberty |
314 | -maybe-install-target-libiberty: install-target-libiberty |
315 | - |
316 | -install-target-libiberty: installdirs |
317 | - @: $(MAKE); $(unstage) |
318 | - @r=`${PWD_COMMAND}`; export r; \ |
319 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
320 | - $(NORMAL_TARGET_EXPORTS) \ |
321 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
322 | - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) |
323 | - |
324 | -@endif target-libiberty |
325 | - |
326 | -# Other targets (info, dvi, pdf, etc.) |
327 | - |
328 | -.PHONY: maybe-info-target-libiberty info-target-libiberty |
329 | -maybe-info-target-libiberty: |
330 | -@if target-libiberty |
331 | -maybe-info-target-libiberty: info-target-libiberty |
332 | - |
333 | -info-target-libiberty: \ |
334 | - configure-target-libiberty |
335 | - @: $(MAKE); $(unstage) |
336 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
337 | - r=`${PWD_COMMAND}`; export r; \ |
338 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
339 | - $(NORMAL_TARGET_EXPORTS) \ |
340 | - echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \ |
341 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
342 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
343 | - done; \ |
344 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
345 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
346 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
347 | - "RANLIB=$${RANLIB}" \ |
348 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
349 | - info) \ |
350 | - || exit 1 |
351 | - |
352 | -@endif target-libiberty |
353 | - |
354 | -.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty |
355 | -maybe-dvi-target-libiberty: |
356 | -@if target-libiberty |
357 | -maybe-dvi-target-libiberty: dvi-target-libiberty |
358 | - |
359 | -dvi-target-libiberty: \ |
360 | - configure-target-libiberty |
361 | - @: $(MAKE); $(unstage) |
362 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
363 | - r=`${PWD_COMMAND}`; export r; \ |
364 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
365 | - $(NORMAL_TARGET_EXPORTS) \ |
366 | - echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \ |
367 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
368 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
369 | - done; \ |
370 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
371 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
372 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
373 | - "RANLIB=$${RANLIB}" \ |
374 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
375 | - dvi) \ |
376 | - || exit 1 |
377 | - |
378 | -@endif target-libiberty |
379 | - |
380 | -.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty |
381 | -maybe-pdf-target-libiberty: |
382 | -@if target-libiberty |
383 | -maybe-pdf-target-libiberty: pdf-target-libiberty |
384 | - |
385 | -pdf-target-libiberty: \ |
386 | - configure-target-libiberty |
387 | - @: $(MAKE); $(unstage) |
388 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
389 | - r=`${PWD_COMMAND}`; export r; \ |
390 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
391 | - $(NORMAL_TARGET_EXPORTS) \ |
392 | - echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \ |
393 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
394 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
395 | - done; \ |
396 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
397 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
398 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
399 | - "RANLIB=$${RANLIB}" \ |
400 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
401 | - pdf) \ |
402 | - || exit 1 |
403 | - |
404 | -@endif target-libiberty |
405 | - |
406 | -.PHONY: maybe-html-target-libiberty html-target-libiberty |
407 | -maybe-html-target-libiberty: |
408 | -@if target-libiberty |
409 | -maybe-html-target-libiberty: html-target-libiberty |
410 | - |
411 | -html-target-libiberty: \ |
412 | - configure-target-libiberty |
413 | - @: $(MAKE); $(unstage) |
414 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
415 | - r=`${PWD_COMMAND}`; export r; \ |
416 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
417 | - $(NORMAL_TARGET_EXPORTS) \ |
418 | - echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \ |
419 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
420 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
421 | - done; \ |
422 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
423 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
424 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
425 | - "RANLIB=$${RANLIB}" \ |
426 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
427 | - html) \ |
428 | - || exit 1 |
429 | - |
430 | -@endif target-libiberty |
431 | - |
432 | -.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty |
433 | -maybe-TAGS-target-libiberty: |
434 | -@if target-libiberty |
435 | -maybe-TAGS-target-libiberty: TAGS-target-libiberty |
436 | - |
437 | -TAGS-target-libiberty: \ |
438 | - configure-target-libiberty |
439 | - @: $(MAKE); $(unstage) |
440 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
441 | - r=`${PWD_COMMAND}`; export r; \ |
442 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
443 | - $(NORMAL_TARGET_EXPORTS) \ |
444 | - echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \ |
445 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
446 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
447 | - done; \ |
448 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
449 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
450 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
451 | - "RANLIB=$${RANLIB}" \ |
452 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
453 | - TAGS) \ |
454 | - || exit 1 |
455 | - |
456 | -@endif target-libiberty |
457 | - |
458 | -.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty |
459 | -maybe-install-info-target-libiberty: |
460 | -@if target-libiberty |
461 | -maybe-install-info-target-libiberty: install-info-target-libiberty |
462 | - |
463 | -install-info-target-libiberty: \ |
464 | - configure-target-libiberty \ |
465 | - info-target-libiberty |
466 | - @: $(MAKE); $(unstage) |
467 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
468 | - r=`${PWD_COMMAND}`; export r; \ |
469 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
470 | - $(NORMAL_TARGET_EXPORTS) \ |
471 | - echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \ |
472 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
473 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
474 | - done; \ |
475 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
476 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
477 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
478 | - "RANLIB=$${RANLIB}" \ |
479 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
480 | - install-info) \ |
481 | - || exit 1 |
482 | - |
483 | -@endif target-libiberty |
484 | - |
485 | -.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty |
486 | -maybe-install-pdf-target-libiberty: |
487 | -@if target-libiberty |
488 | -maybe-install-pdf-target-libiberty: install-pdf-target-libiberty |
489 | - |
490 | -install-pdf-target-libiberty: \ |
491 | - configure-target-libiberty \ |
492 | - pdf-target-libiberty |
493 | - @: $(MAKE); $(unstage) |
494 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
495 | - r=`${PWD_COMMAND}`; export r; \ |
496 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
497 | - $(NORMAL_TARGET_EXPORTS) \ |
498 | - echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \ |
499 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
500 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
501 | - done; \ |
502 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
503 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
504 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
505 | - "RANLIB=$${RANLIB}" \ |
506 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
507 | - install-pdf) \ |
508 | - || exit 1 |
509 | - |
510 | -@endif target-libiberty |
511 | - |
512 | -.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty |
513 | -maybe-install-html-target-libiberty: |
514 | -@if target-libiberty |
515 | -maybe-install-html-target-libiberty: install-html-target-libiberty |
516 | - |
517 | -install-html-target-libiberty: \ |
518 | - configure-target-libiberty \ |
519 | - html-target-libiberty |
520 | - @: $(MAKE); $(unstage) |
521 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
522 | - r=`${PWD_COMMAND}`; export r; \ |
523 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
524 | - $(NORMAL_TARGET_EXPORTS) \ |
525 | - echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \ |
526 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
527 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
528 | - done; \ |
529 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
530 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
531 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
532 | - "RANLIB=$${RANLIB}" \ |
533 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
534 | - install-html) \ |
535 | - || exit 1 |
536 | - |
537 | -@endif target-libiberty |
538 | - |
539 | -.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty |
540 | -maybe-installcheck-target-libiberty: |
541 | -@if target-libiberty |
542 | -maybe-installcheck-target-libiberty: installcheck-target-libiberty |
543 | - |
544 | -installcheck-target-libiberty: \ |
545 | - configure-target-libiberty |
546 | - @: $(MAKE); $(unstage) |
547 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
548 | - r=`${PWD_COMMAND}`; export r; \ |
549 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
550 | - $(NORMAL_TARGET_EXPORTS) \ |
551 | - echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \ |
552 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
553 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
554 | - done; \ |
555 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
556 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
557 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
558 | - "RANLIB=$${RANLIB}" \ |
559 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
560 | - installcheck) \ |
561 | - || exit 1 |
562 | - |
563 | -@endif target-libiberty |
564 | - |
565 | -.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty |
566 | -maybe-mostlyclean-target-libiberty: |
567 | -@if target-libiberty |
568 | -maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty |
569 | - |
570 | -mostlyclean-target-libiberty: |
571 | - @: $(MAKE); $(unstage) |
572 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
573 | - r=`${PWD_COMMAND}`; export r; \ |
574 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
575 | - $(NORMAL_TARGET_EXPORTS) \ |
576 | - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \ |
577 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
578 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
579 | - done; \ |
580 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
581 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
582 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
583 | - "RANLIB=$${RANLIB}" \ |
584 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
585 | - mostlyclean) \ |
586 | - || exit 1 |
587 | - |
588 | -@endif target-libiberty |
589 | - |
590 | -.PHONY: maybe-clean-target-libiberty clean-target-libiberty |
591 | -maybe-clean-target-libiberty: |
592 | -@if target-libiberty |
593 | -maybe-clean-target-libiberty: clean-target-libiberty |
594 | - |
595 | -clean-target-libiberty: |
596 | - @: $(MAKE); $(unstage) |
597 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
598 | - r=`${PWD_COMMAND}`; export r; \ |
599 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
600 | - $(NORMAL_TARGET_EXPORTS) \ |
601 | - echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \ |
602 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
603 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
604 | - done; \ |
605 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
606 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
607 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
608 | - "RANLIB=$${RANLIB}" \ |
609 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
610 | - clean) \ |
611 | - || exit 1 |
612 | - |
613 | -@endif target-libiberty |
614 | - |
615 | -.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty |
616 | -maybe-distclean-target-libiberty: |
617 | -@if target-libiberty |
618 | -maybe-distclean-target-libiberty: distclean-target-libiberty |
619 | - |
620 | -distclean-target-libiberty: |
621 | - @: $(MAKE); $(unstage) |
622 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
623 | - r=`${PWD_COMMAND}`; export r; \ |
624 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
625 | - $(NORMAL_TARGET_EXPORTS) \ |
626 | - echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \ |
627 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
628 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
629 | - done; \ |
630 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
631 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
632 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
633 | - "RANLIB=$${RANLIB}" \ |
634 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
635 | - distclean) \ |
636 | - || exit 1 |
637 | - |
638 | -@endif target-libiberty |
639 | - |
640 | -.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty |
641 | -maybe-maintainer-clean-target-libiberty: |
642 | -@if target-libiberty |
643 | -maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty |
644 | - |
645 | -maintainer-clean-target-libiberty: |
646 | - @: $(MAKE); $(unstage) |
647 | - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ |
648 | - r=`${PWD_COMMAND}`; export r; \ |
649 | - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ |
650 | - $(NORMAL_TARGET_EXPORTS) \ |
651 | - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \ |
652 | - for flag in $(EXTRA_TARGET_FLAGS); do \ |
653 | - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ |
654 | - done; \ |
655 | - (cd $(TARGET_SUBDIR)/libiberty && \ |
656 | - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ |
657 | - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ |
658 | - "RANLIB=$${RANLIB}" \ |
659 | - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ |
660 | - maintainer-clean) \ |
661 | - || exit 1 |
662 | - |
663 | -@endif target-libiberty |
664 | - |
665 | - |
666 | - |
667 | - |
668 | - |
669 | .PHONY: configure-target-gperf maybe-configure-target-gperf |
670 | maybe-configure-target-gperf: |
671 | @if gcc-bootstrap |
672 | @@ -57654,7 +57195,6 @@ |
673 | configure-target-libtermcap: stage_last |
674 | configure-target-winsup: stage_last |
675 | configure-target-libgloss: stage_last |
676 | -configure-target-libiberty: stage_last |
677 | configure-target-gperf: stage_last |
678 | configure-target-examples: stage_last |
679 | configure-target-libffi: stage_last |
680 | @@ -57683,7 +57223,6 @@ |
681 | configure-target-libtermcap: maybe-all-gcc |
682 | configure-target-winsup: maybe-all-gcc |
683 | configure-target-libgloss: maybe-all-gcc |
684 | -configure-target-libiberty: maybe-all-gcc |
685 | configure-target-gperf: maybe-all-gcc |
686 | configure-target-examples: maybe-all-gcc |
687 | configure-target-libffi: maybe-all-gcc |
688 | @@ -58395,7 +57934,6 @@ |
689 | configure-target-boehm-gc: maybe-all-target-libstdc++-v3 |
690 | configure-target-fastjar: maybe-configure-target-zlib |
691 | all-target-fastjar: maybe-all-target-zlib |
692 | -all-target-fastjar: maybe-all-target-libiberty |
693 | configure-target-libjava: maybe-configure-target-zlib |
694 | configure-target-libjava: maybe-configure-target-boehm-gc |
695 | configure-target-libjava: maybe-configure-target-qthreads |
696 | @@ -58406,9 +57944,7 @@ |
697 | all-target-libjava: maybe-all-target-qthreads |
698 | all-target-libjava: maybe-all-target-libffi |
699 | configure-target-libobjc: maybe-configure-target-boehm-gc |
700 | -all-target-libobjc: maybe-all-target-libiberty |
701 | all-target-libobjc: maybe-all-target-boehm-gc |
702 | -all-target-libstdc++-v3: maybe-all-target-libiberty |
703 | configure-target-libstdc++-v3: maybe-configure-target-libgomp |
704 | |
705 | configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp |
706 | @@ -58426,10 +57962,7 @@ |
707 | all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp |
708 | all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp |
709 | all-target-libgloss: maybe-all-target-newlib |
710 | -all-target-winsup: maybe-all-target-libiberty |
711 | all-target-winsup: maybe-all-target-libtermcap |
712 | -configure-target-libiberty: maybe-all-binutils |
713 | -configure-target-libiberty: maybe-all-ld |
714 | configure-target-newlib: maybe-all-binutils |
715 | configure-target-newlib: maybe-all-ld |
716 | |
717 | @@ -58464,7 +57997,6 @@ |
718 | configure-target-libtermcap: maybe-all-target-libgcc |
719 | configure-target-winsup: maybe-all-target-libgcc |
720 | configure-target-libgloss: maybe-all-target-libgcc |
721 | -configure-target-libiberty: maybe-all-target-libgcc |
722 | configure-target-gperf: maybe-all-target-libgcc |
723 | configure-target-examples: maybe-all-target-libgcc |
724 | configure-target-libffi: maybe-all-target-libgcc |
725 | @@ -58495,7 +58027,6 @@ |
726 | configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss |
727 | |
728 | |
729 | - |
730 | configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss |
731 | configure-target-gperf: maybe-all-target-libstdc++-v3 |
732 | |
733 | |
734 | === modified file 'config/ChangeLog' |
735 | --- config/ChangeLog 2011-04-28 14:11:26 +0000 |
736 | +++ config/ChangeLog 2011-07-01 09:39:45 +0000 |
737 | @@ -1,3 +1,9 @@ |
738 | +2011-06-19 Jack Howarth <howarth@bromo.med.uc.edu> |
739 | + |
740 | + PR target/49461 |
741 | + * mh-x86-darwin: Add file and pass -no_pie on BOOT_LDFLAGS for |
742 | + darwin11. |
743 | + |
744 | 2011-04-28 Release Manager |
745 | |
746 | * GCC 4.5.3 released. |
747 | |
748 | === added file 'config/mh-x86-darwin' |
749 | --- config/mh-x86-darwin 1970-01-01 00:00:00 +0000 |
750 | +++ config/mh-x86-darwin 2011-07-01 09:39:45 +0000 |
751 | @@ -0,0 +1,2 @@ |
752 | +# Ensure we don't try and use -pie, as it is incompatible with pch. |
753 | +BOOT_LDFLAGS += `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;` |
754 | |
755 | === modified file 'configure' |
756 | --- configure 2011-01-25 15:49:54 +0000 |
757 | +++ configure 2011-07-01 09:39:45 +0000 |
758 | @@ -2912,9 +2912,8 @@ |
759 | |
760 | # these libraries are built for the target environment, and are built after |
761 | # the host libraries and the host tools (which may be a cross compiler) |
762 | -# |
763 | +# Note that libiberty is not a target library. |
764 | target_libraries="target-libgcc \ |
765 | - target-libiberty \ |
766 | target-libgloss \ |
767 | target-newlib \ |
768 | target-libgomp \ |
769 | @@ -3269,14 +3268,14 @@ |
770 | ;; |
771 | *-*-kaos*) |
772 | # Remove unsupported stuff on all kaOS configurations. |
773 | - skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx" |
774 | + skipdirs="${libgcj} target-libstdc++-v3 target-librx" |
775 | skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" |
776 | skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" |
777 | noconfigdirs="$noconfigdirs target-libgloss" |
778 | ;; |
779 | *-*-netbsd*) |
780 | # Skip some stuff on all NetBSD configurations. |
781 | - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" |
782 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss" |
783 | |
784 | # Skip some stuff that's unsupported on some NetBSD configurations. |
785 | case "${target}" in |
786 | @@ -3288,20 +3287,20 @@ |
787 | esac |
788 | ;; |
789 | *-*-netware*) |
790 | - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap" |
791 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap" |
792 | ;; |
793 | *-*-rtems*) |
794 | noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" |
795 | ;; |
796 | # The tpf target doesn't support gdb yet. |
797 | *-*-tpf*) |
798 | - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl" |
799 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl" |
800 | ;; |
801 | *-*-uclinux*) |
802 | noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" |
803 | ;; |
804 | *-*-vxworks*) |
805 | - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" |
806 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}" |
807 | ;; |
808 | alpha*-dec-osf*) |
809 | # ld works, but does not support shared libraries. |
810 | @@ -3329,7 +3328,7 @@ |
811 | sh*-*-pe|mips*-*-pe|*arm-wince-pe) |
812 | noconfigdirs="$noconfigdirs ${libgcj}" |
813 | noconfigdirs="$noconfigdirs target-examples" |
814 | - noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" |
815 | + noconfigdirs="$noconfigdirs texinfo send-pr" |
816 | noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" |
817 | noconfigdirs="$noconfigdirs expect dejagnu" |
818 | # the C++ libraries don't build on top of CE's C libraries |
819 | @@ -3363,7 +3362,7 @@ |
820 | libgloss_dir=arm |
821 | ;; |
822 | arm*-*-symbianelf*) |
823 | - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" |
824 | + noconfigdirs="$noconfigdirs ${libgcj}" |
825 | libgloss_dir=arm |
826 | ;; |
827 | arm-*-pe*) |
828 | @@ -3382,7 +3381,7 @@ |
829 | noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" |
830 | ;; |
831 | avr-*-*) |
832 | - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" |
833 | + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp" |
834 | ;; |
835 | bfin-*-*) |
836 | unsupported_languages="$unsupported_languages java" |
837 | @@ -3561,7 +3560,7 @@ |
838 | noconfigdirs="$noconfigdirs ${libgcj}" |
839 | ;; |
840 | m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) |
841 | - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" |
842 | + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" |
843 | libgloss_dir=m68hc11 |
844 | ;; |
845 | m68k-*-elf*) |
846 | @@ -3632,7 +3631,6 @@ |
847 | noconfigdirs="$noconfigdirs gprof ${libgcj}" |
848 | ;; |
849 | mips*-sde-elf*) |
850 | - skipdirs="$skipdirs target-libiberty" |
851 | noconfigdirs="$noconfigdirs ${libgcj}" |
852 | if test x$with_newlib = xyes; then |
853 | noconfigdirs="$noconfigdirs gprof" |
854 | @@ -3728,7 +3726,7 @@ |
855 | noconfigdirs="$noconfigdirs ${libgcj}" |
856 | ;; |
857 | ip2k-*-*) |
858 | - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" |
859 | + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" |
860 | ;; |
861 | *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) |
862 | noconfigdirs="$noconfigdirs target-newlib target-libgloss" |
863 | @@ -3917,6 +3915,9 @@ |
864 | tentative_cc="/usr/cygnus/progressive/bin/gcc" |
865 | host_makefile_frag="config/mh-lynxrs6k" |
866 | ;; |
867 | + i[3456789]86-*-darwin* | x86_64-*-darwin*) |
868 | + host_makefile_frag="config/mh-x86-darwin" |
869 | + ;; |
870 | powerpc-*-darwin*) |
871 | host_makefile_frag="config/mh-ppc-darwin" |
872 | ;; |
873 | @@ -6992,27 +6993,6 @@ |
874 | fi |
875 | done |
876 | |
877 | -# Sometimes the tools are distributed with libiberty but with no other |
878 | -# libraries. In that case, we don't want to build target-libiberty. |
879 | -# Don't let libgcc imply libiberty either. |
880 | -if test -n "${target_configdirs}" ; then |
881 | - libgcc= |
882 | - others= |
883 | - for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do |
884 | - if test "$i" = "libgcc"; then |
885 | - libgcc=target-libgcc |
886 | - elif test "$i" != "libiberty" ; then |
887 | - if test -r $srcdir/$i/configure ; then |
888 | - others=yes; |
889 | - break; |
890 | - fi |
891 | - fi |
892 | - done |
893 | - if test -z "${others}" ; then |
894 | - target_configdirs=$libgcc |
895 | - fi |
896 | -fi |
897 | - |
898 | # Quietly strip out all directories which aren't configurable in this tree. |
899 | # This relies on all configurable subdirectories being autoconfiscated, which |
900 | # is now the case. |
901 | |
902 | === modified file 'configure.ac' |
903 | --- configure.ac 2011-01-25 15:49:54 +0000 |
904 | +++ configure.ac 2011-07-01 09:39:45 +0000 |
905 | @@ -185,9 +185,8 @@ |
906 | |
907 | # these libraries are built for the target environment, and are built after |
908 | # the host libraries and the host tools (which may be a cross compiler) |
909 | -# |
910 | +# Note that libiberty is not a target library. |
911 | target_libraries="target-libgcc \ |
912 | - target-libiberty \ |
913 | target-libgloss \ |
914 | target-newlib \ |
915 | target-libgomp \ |
916 | @@ -506,14 +505,14 @@ |
917 | ;; |
918 | *-*-kaos*) |
919 | # Remove unsupported stuff on all kaOS configurations. |
920 | - skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx" |
921 | + skipdirs="${libgcj} target-libstdc++-v3 target-librx" |
922 | skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" |
923 | skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" |
924 | noconfigdirs="$noconfigdirs target-libgloss" |
925 | ;; |
926 | *-*-netbsd*) |
927 | # Skip some stuff on all NetBSD configurations. |
928 | - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" |
929 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss" |
930 | |
931 | # Skip some stuff that's unsupported on some NetBSD configurations. |
932 | case "${target}" in |
933 | @@ -525,20 +524,20 @@ |
934 | esac |
935 | ;; |
936 | *-*-netware*) |
937 | - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap" |
938 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap" |
939 | ;; |
940 | *-*-rtems*) |
941 | noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" |
942 | ;; |
943 | # The tpf target doesn't support gdb yet. |
944 | *-*-tpf*) |
945 | - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl" |
946 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl" |
947 | ;; |
948 | *-*-uclinux*) |
949 | noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" |
950 | ;; |
951 | *-*-vxworks*) |
952 | - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" |
953 | + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}" |
954 | ;; |
955 | alpha*-dec-osf*) |
956 | # ld works, but does not support shared libraries. |
957 | @@ -566,7 +565,7 @@ |
958 | sh*-*-pe|mips*-*-pe|*arm-wince-pe) |
959 | noconfigdirs="$noconfigdirs ${libgcj}" |
960 | noconfigdirs="$noconfigdirs target-examples" |
961 | - noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" |
962 | + noconfigdirs="$noconfigdirs texinfo send-pr" |
963 | noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" |
964 | noconfigdirs="$noconfigdirs expect dejagnu" |
965 | # the C++ libraries don't build on top of CE's C libraries |
966 | @@ -600,7 +599,7 @@ |
967 | libgloss_dir=arm |
968 | ;; |
969 | arm*-*-symbianelf*) |
970 | - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" |
971 | + noconfigdirs="$noconfigdirs ${libgcj}" |
972 | libgloss_dir=arm |
973 | ;; |
974 | arm-*-pe*) |
975 | @@ -619,7 +618,7 @@ |
976 | noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" |
977 | ;; |
978 | avr-*-*) |
979 | - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" |
980 | + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp" |
981 | ;; |
982 | bfin-*-*) |
983 | unsupported_languages="$unsupported_languages java" |
984 | @@ -798,7 +797,7 @@ |
985 | noconfigdirs="$noconfigdirs ${libgcj}" |
986 | ;; |
987 | m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) |
988 | - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" |
989 | + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" |
990 | libgloss_dir=m68hc11 |
991 | ;; |
992 | m68k-*-elf*) |
993 | @@ -869,7 +868,6 @@ |
994 | noconfigdirs="$noconfigdirs gprof ${libgcj}" |
995 | ;; |
996 | mips*-sde-elf*) |
997 | - skipdirs="$skipdirs target-libiberty" |
998 | noconfigdirs="$noconfigdirs ${libgcj}" |
999 | if test x$with_newlib = xyes; then |
1000 | noconfigdirs="$noconfigdirs gprof" |
1001 | @@ -965,7 +963,7 @@ |
1002 | noconfigdirs="$noconfigdirs ${libgcj}" |
1003 | ;; |
1004 | ip2k-*-*) |
1005 | - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" |
1006 | + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" |
1007 | ;; |
1008 | *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) |
1009 | noconfigdirs="$noconfigdirs target-newlib target-libgloss" |
1010 | @@ -1135,6 +1133,9 @@ |
1011 | tentative_cc="/usr/cygnus/progressive/bin/gcc" |
1012 | host_makefile_frag="config/mh-lynxrs6k" |
1013 | ;; |
1014 | + i[[3456789]]86-*-darwin* | x86_64-*-darwin*) |
1015 | + host_makefile_frag="config/mh-x86-darwin" |
1016 | + ;; |
1017 | powerpc-*-darwin*) |
1018 | host_makefile_frag="config/mh-ppc-darwin" |
1019 | ;; |
1020 | @@ -2105,27 +2106,6 @@ |
1021 | fi |
1022 | done |
1023 | |
1024 | -# Sometimes the tools are distributed with libiberty but with no other |
1025 | -# libraries. In that case, we don't want to build target-libiberty. |
1026 | -# Don't let libgcc imply libiberty either. |
1027 | -if test -n "${target_configdirs}" ; then |
1028 | - libgcc= |
1029 | - others= |
1030 | - for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do |
1031 | - if test "$i" = "libgcc"; then |
1032 | - libgcc=target-libgcc |
1033 | - elif test "$i" != "libiberty" ; then |
1034 | - if test -r $srcdir/$i/configure ; then |
1035 | - others=yes; |
1036 | - break; |
1037 | - fi |
1038 | - fi |
1039 | - done |
1040 | - if test -z "${others}" ; then |
1041 | - target_configdirs=$libgcc |
1042 | - fi |
1043 | -fi |
1044 | - |
1045 | # Quietly strip out all directories which aren't configurable in this tree. |
1046 | # This relies on all configurable subdirectories being autoconfiscated, which |
1047 | # is now the case. |
1048 | |
1049 | === modified file 'gcc/ChangeLog' |
1050 | --- gcc/ChangeLog 2011-05-25 13:26:42 +0000 |
1051 | +++ gcc/ChangeLog 2011-07-01 09:39:45 +0000 |
1052 | @@ -1,3 +1,110 @@ |
1053 | +2011-06-28 Eric Botcazou <ebotcazou@adacore.com> |
1054 | + |
1055 | + * tree-ssa-dom.c (initialize_hash_element): Fix oversight. |
1056 | + |
1057 | +2011-06-17 Hans-Peter Nilsson <hp@axis.com> |
1058 | + |
1059 | + Backport from mainline |
1060 | + 2011-06-17 Hans-Peter Nilsson <hp@axis.com> |
1061 | + |
1062 | + PR rtl-optimization/48542 |
1063 | + * reload.c (find_equiv_reg): Stop looking when finding a |
1064 | + setjmp-type call. |
1065 | + * reload1.c (reload_as_needed): Invalidate all reload |
1066 | + registers when crossing a setjmp-type call. |
1067 | + |
1068 | +2011-06-16 Kaz Kojima <kkojima@gcc.gnu.org> |
1069 | + |
1070 | + Backport form main line |
1071 | + 2011-06-09 Kaz Kojima <kkojima@gcc.gnu.org> |
1072 | + |
1073 | + PR target/49307 |
1074 | + * config/sh/sh.md (UNSPEC_CHKADD): New. |
1075 | + (chk_guard_add): New define_insn_and_split. |
1076 | + (symGOT_load): Use chk_guard_add instead of blockage. |
1077 | + |
1078 | +2011-06-11 Uros Bizjak <ubizjak@gmail.com> |
1079 | + |
1080 | + * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register. |
1081 | + (*vec_dupv2df): Rename from vec_dupv2df. |
1082 | + (vec_dupv2df): New expander. |
1083 | + |
1084 | +2011-06-09 Eric Botcazou <ebotcazou@adacore.com> |
1085 | + |
1086 | + * config/sparc/sparc.md (return_internal): Adjust 'length' attribute. |
1087 | + |
1088 | +2011-06-08 Kaz Kojima <kkojima@gcc.gnu.org> |
1089 | + |
1090 | + Backport from mainline |
1091 | + 2011-06-01 Kaz Kojima <kkojima@gcc.gnu.org> |
1092 | + |
1093 | + PR target/49238 |
1094 | + * config/sh/sh.c (expand_cbranchdi4): Use a scratch register if |
1095 | + needed when original operands are used for msw_skip comparison. |
1096 | + |
1097 | +2011-06-05 Eric Botcazou <ebotcazou@adacore.com> |
1098 | + |
1099 | + * config/sparc/sparc.c (output_return): Fix thinko in the output of an |
1100 | + EH return when delayed branches are disabled. |
1101 | + |
1102 | +2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org> |
1103 | + |
1104 | + Backport from mainline |
1105 | + 2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org> |
1106 | + |
1107 | + PR target/49186 |
1108 | + * config/sh/sh.c (expand_cbranchdi4): Set msw_skip when the high |
1109 | + part of the second operand is 0. |
1110 | + |
1111 | +2011-06-04 Ira Rosen <ira.rosen@linaro.org> |
1112 | + |
1113 | + PR tree-optimization/49038 |
1114 | + * tree-vect-loop-manip.c (vect_generate_tmps_on_preheader): |
1115 | + Ensure at least one epilogue iteration if required by data |
1116 | + accesses with gaps. |
1117 | + * tree-vectorizer.h (struct _loop_vec_info): Add new field |
1118 | + to mark loops that require peeling for gaps. |
1119 | + * tree-vect-loop.c (new_loop_vec_info): Initialize new field. |
1120 | + (vect_estimate_min_profitable_iters): Take peeling for gaps into |
1121 | + account. |
1122 | + (vect_transform_loop): Generate epilogue if required by data |
1123 | + access with gaps. |
1124 | + * tree-vect-data-refs.c (vect_analyze_group_access): Mark the |
1125 | + loop as requiring an epilogue if there are gaps in the end of |
1126 | + the strided group. |
1127 | + |
1128 | +2011-05-29 Richard Sandiford <rdsandiford@googlemail.com> |
1129 | + |
1130 | + PR target/43700 |
1131 | + * config/mips/mips.c (mips_cfun_call_saved_reg_p): Handle global |
1132 | + registers. |
1133 | + |
1134 | +2011-05-29 Richard Sandiford <rdsandiford@googlemail.com> |
1135 | + |
1136 | + PR target/43995 |
1137 | + * config/mips/mips.c (mips_pic_call_symbol_from_set): Add a |
1138 | + recurse_p argument. Only follow register copies if it is set, |
1139 | + and prevent mips_find_pic_call_symbol from recursing. |
1140 | + (mips_find_pic_call_symbol): Add a recurse_p argument. |
1141 | + Pass it to mips_pic_call_symbol_from_set. |
1142 | + (mips_annotate_pic_calls): Update accordingly. |
1143 | + |
1144 | +2011-05-26 Eric Botcazou <ebotcazou@adacore.com> |
1145 | + |
1146 | + * config/sparc/sparc-protos.h (sparc_optimization_options): Declare. |
1147 | + * config/sparc/sparc.h (OPTIMIZATION_OPTIONS): Define. |
1148 | + * config/sparc/sparc.c (sparc_optimization_options): New function. |
1149 | + Set flag_ira_share_save_slots to 0. |
1150 | + |
1151 | + Backport from mainline |
1152 | + 2011-01-21 Jeff Law <law@redhat.com> |
1153 | + |
1154 | + PR rtl-optimization/41619 |
1155 | + * caller-save.c (setup_save_areas): Break out code to determine |
1156 | + which hard regs are live across calls by examining the reload chains |
1157 | + so that it is always used. |
1158 | + Eliminate code which checked REG_N_CALLS_CROSSED. |
1159 | + |
1160 | 2011-05-25 Uros Bizjak <ubizjak@gmail.com> |
1161 | |
1162 | PR target/49133 |
1163 | |
1164 | === modified file 'gcc/DATESTAMP' |
1165 | --- gcc/DATESTAMP 2011-05-26 00:18:28 +0000 |
1166 | +++ gcc/DATESTAMP 2011-07-01 09:39:45 +0000 |
1167 | @@ -1,1 +1,1 @@ |
1168 | -20110526 |
1169 | +20110630 |
1170 | |
1171 | === modified file 'gcc/caller-save.c' |
1172 | --- gcc/caller-save.c 2011-03-16 20:19:14 +0000 |
1173 | +++ gcc/caller-save.c 2011-07-01 09:39:45 +0000 |
1174 | @@ -439,101 +439,93 @@ |
1175 | void |
1176 | setup_save_areas (void) |
1177 | { |
1178 | - int i, j, k; |
1179 | - unsigned int r; |
1180 | + int i, j, k, freq; |
1181 | HARD_REG_SET hard_regs_used; |
1182 | - |
1183 | - /* Allocate space in the save area for the largest multi-register |
1184 | - pseudos first, then work backwards to single register |
1185 | - pseudos. */ |
1186 | - |
1187 | - /* Find and record all call-used hard-registers in this function. */ |
1188 | + struct saved_hard_reg *saved_reg; |
1189 | + rtx insn; |
1190 | + struct insn_chain *chain, *next; |
1191 | + unsigned int regno; |
1192 | + HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets; |
1193 | + reg_set_iterator rsi; |
1194 | + |
1195 | CLEAR_HARD_REG_SET (hard_regs_used); |
1196 | - for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) |
1197 | - if (reg_renumber[i] >= 0 && REG_N_CALLS_CROSSED (i) > 0) |
1198 | - { |
1199 | - unsigned int regno = reg_renumber[i]; |
1200 | - unsigned int endregno |
1201 | - = end_hard_regno (GET_MODE (regno_reg_rtx[i]), regno); |
1202 | - for (r = regno; r < endregno; r++) |
1203 | - if (call_used_regs[r]) |
1204 | - SET_HARD_REG_BIT (hard_regs_used, r); |
1205 | - } |
1206 | - |
1207 | + |
1208 | + /* Find every CALL_INSN and record which hard regs are live across the |
1209 | + call into HARD_REG_MAP and HARD_REGS_USED. */ |
1210 | + initiate_saved_hard_regs (); |
1211 | + /* Create hard reg saved regs. */ |
1212 | + for (chain = reload_insn_chain; chain != 0; chain = next) |
1213 | + { |
1214 | + insn = chain->insn; |
1215 | + next = chain->next; |
1216 | + if (!CALL_P (insn) |
1217 | + || find_reg_note (insn, REG_NORETURN, NULL)) |
1218 | + continue; |
1219 | + freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn)); |
1220 | + REG_SET_TO_HARD_REG_SET (hard_regs_to_save, |
1221 | + &chain->live_throughout); |
1222 | + COPY_HARD_REG_SET (used_regs, call_used_reg_set); |
1223 | + |
1224 | + /* Record all registers set in this call insn. These don't |
1225 | + need to be saved. N.B. the call insn might set a subreg |
1226 | + of a multi-hard-reg pseudo; then the pseudo is considered |
1227 | + live during the call, but the subreg that is set |
1228 | + isn't. */ |
1229 | + CLEAR_HARD_REG_SET (this_insn_sets); |
1230 | + note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets); |
1231 | + /* Sibcalls are considered to set the return value. */ |
1232 | + if (SIBLING_CALL_P (insn) && crtl->return_rtx) |
1233 | + mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets); |
1234 | + |
1235 | + AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set); |
1236 | + AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets); |
1237 | + AND_HARD_REG_SET (hard_regs_to_save, used_regs); |
1238 | + for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) |
1239 | + if (TEST_HARD_REG_BIT (hard_regs_to_save, regno)) |
1240 | + { |
1241 | + if (hard_reg_map[regno] != NULL) |
1242 | + hard_reg_map[regno]->call_freq += freq; |
1243 | + else |
1244 | + saved_reg = new_saved_hard_reg (regno, freq); |
1245 | + SET_HARD_REG_BIT (hard_regs_used, regno); |
1246 | + } |
1247 | + /* Look through all live pseudos, mark their hard registers. */ |
1248 | + EXECUTE_IF_SET_IN_REG_SET |
1249 | + (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi) |
1250 | + { |
1251 | + int r = reg_renumber[regno]; |
1252 | + int bound; |
1253 | + |
1254 | + if (r < 0) |
1255 | + continue; |
1256 | + |
1257 | + bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)]; |
1258 | + for (; r < bound; r++) |
1259 | + if (TEST_HARD_REG_BIT (used_regs, r)) |
1260 | + { |
1261 | + if (hard_reg_map[r] != NULL) |
1262 | + hard_reg_map[r]->call_freq += freq; |
1263 | + else |
1264 | + saved_reg = new_saved_hard_reg (r, freq); |
1265 | + SET_HARD_REG_BIT (hard_regs_to_save, r); |
1266 | + SET_HARD_REG_BIT (hard_regs_used, r); |
1267 | + } |
1268 | + } |
1269 | + } |
1270 | + |
1271 | + /* If requested, figure out which hard regs can share save slots. */ |
1272 | if (optimize && flag_ira_share_save_slots) |
1273 | { |
1274 | - rtx insn, slot; |
1275 | - struct insn_chain *chain, *next; |
1276 | + rtx slot; |
1277 | char *saved_reg_conflicts; |
1278 | - unsigned int regno; |
1279 | - int next_k, freq; |
1280 | - struct saved_hard_reg *saved_reg, *saved_reg2, *saved_reg3; |
1281 | + int next_k; |
1282 | + struct saved_hard_reg *saved_reg2, *saved_reg3; |
1283 | int call_saved_regs_num; |
1284 | struct saved_hard_reg *call_saved_regs[FIRST_PSEUDO_REGISTER]; |
1285 | - HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets; |
1286 | - reg_set_iterator rsi; |
1287 | int best_slot_num; |
1288 | int prev_save_slots_num; |
1289 | rtx prev_save_slots[FIRST_PSEUDO_REGISTER]; |
1290 | |
1291 | - initiate_saved_hard_regs (); |
1292 | - /* Create hard reg saved regs. */ |
1293 | - for (chain = reload_insn_chain; chain != 0; chain = next) |
1294 | - { |
1295 | - insn = chain->insn; |
1296 | - next = chain->next; |
1297 | - if (!CALL_P (insn) |
1298 | - || find_reg_note (insn, REG_NORETURN, NULL)) |
1299 | - continue; |
1300 | - freq = REG_FREQ_FROM_BB (BLOCK_FOR_INSN (insn)); |
1301 | - REG_SET_TO_HARD_REG_SET (hard_regs_to_save, |
1302 | - &chain->live_throughout); |
1303 | - COPY_HARD_REG_SET (used_regs, call_used_reg_set); |
1304 | - |
1305 | - /* Record all registers set in this call insn. These don't |
1306 | - need to be saved. N.B. the call insn might set a subreg |
1307 | - of a multi-hard-reg pseudo; then the pseudo is considered |
1308 | - live during the call, but the subreg that is set |
1309 | - isn't. */ |
1310 | - CLEAR_HARD_REG_SET (this_insn_sets); |
1311 | - note_stores (PATTERN (insn), mark_set_regs, &this_insn_sets); |
1312 | - /* Sibcalls are considered to set the return value. */ |
1313 | - if (SIBLING_CALL_P (insn) && crtl->return_rtx) |
1314 | - mark_set_regs (crtl->return_rtx, NULL_RTX, &this_insn_sets); |
1315 | - |
1316 | - AND_COMPL_HARD_REG_SET (used_regs, call_fixed_reg_set); |
1317 | - AND_COMPL_HARD_REG_SET (used_regs, this_insn_sets); |
1318 | - AND_HARD_REG_SET (hard_regs_to_save, used_regs); |
1319 | - for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) |
1320 | - if (TEST_HARD_REG_BIT (hard_regs_to_save, regno)) |
1321 | - { |
1322 | - if (hard_reg_map[regno] != NULL) |
1323 | - hard_reg_map[regno]->call_freq += freq; |
1324 | - else |
1325 | - saved_reg = new_saved_hard_reg (regno, freq); |
1326 | - } |
1327 | - /* Look through all live pseudos, mark their hard registers. */ |
1328 | - EXECUTE_IF_SET_IN_REG_SET |
1329 | - (&chain->live_throughout, FIRST_PSEUDO_REGISTER, regno, rsi) |
1330 | - { |
1331 | - int r = reg_renumber[regno]; |
1332 | - int bound; |
1333 | - |
1334 | - if (r < 0) |
1335 | - continue; |
1336 | - |
1337 | - bound = r + hard_regno_nregs[r][PSEUDO_REGNO_MODE (regno)]; |
1338 | - for (; r < bound; r++) |
1339 | - if (TEST_HARD_REG_BIT (used_regs, r)) |
1340 | - { |
1341 | - if (hard_reg_map[r] != NULL) |
1342 | - hard_reg_map[r]->call_freq += freq; |
1343 | - else |
1344 | - saved_reg = new_saved_hard_reg (r, freq); |
1345 | - SET_HARD_REG_BIT (hard_regs_to_save, r); |
1346 | - } |
1347 | - } |
1348 | - } |
1349 | /* Find saved hard register conflicts. */ |
1350 | saved_reg_conflicts = (char *) xmalloc (saved_regs_num * saved_regs_num); |
1351 | memset (saved_reg_conflicts, 0, saved_regs_num * saved_regs_num); |
1352 | @@ -691,8 +683,10 @@ |
1353 | } |
1354 | else |
1355 | { |
1356 | - /* Now run through all the call-used hard-registers and allocate |
1357 | - space for them in the caller-save area. Try to allocate space |
1358 | + /* We are not sharing slots. |
1359 | + |
1360 | + Run through all the call-used hard-registers and allocate |
1361 | + space for each in the caller-save area. Try to allocate space |
1362 | in a manner which allows multi-register saves/restores to be done. */ |
1363 | |
1364 | for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) |
1365 | |
1366 | === modified file 'gcc/config/i386/sse.md' |
1367 | --- gcc/config/i386/sse.md 2011-05-25 13:26:42 +0000 |
1368 | +++ gcc/config/i386/sse.md 2011-07-01 09:39:45 +0000 |
1369 | @@ -3904,7 +3904,7 @@ |
1370 | "TARGET_SSE" |
1371 | { |
1372 | if (!TARGET_AVX) |
1373 | - operands[1] = force_reg (V4SFmode, operands[1]); |
1374 | + operands[1] = force_reg (SFmode, operands[1]); |
1375 | }) |
1376 | |
1377 | (define_insn "*vec_dupv4sf_avx" |
1378 | @@ -5135,6 +5135,16 @@ |
1379 | (set_attr "length_immediate" "*,*,*,1,*,*") |
1380 | (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")]) |
1381 | |
1382 | +(define_expand "vec_dupv2df" |
1383 | + [(set (match_operand:V2DF 0 "register_operand" "") |
1384 | + (vec_duplicate:V2DF |
1385 | + (match_operand:DF 1 "nonimmediate_operand" "")))] |
1386 | + "TARGET_SSE2" |
1387 | +{ |
1388 | + if (!TARGET_SSE3) |
1389 | + operands[1] = force_reg (DFmode, operands[1]); |
1390 | +}) |
1391 | + |
1392 | (define_insn "*vec_dupv2df_sse3" |
1393 | [(set (match_operand:V2DF 0 "register_operand" "=x") |
1394 | (vec_duplicate:V2DF |
1395 | @@ -5145,7 +5155,7 @@ |
1396 | (set_attr "prefix" "maybe_vex") |
1397 | (set_attr "mode" "DF")]) |
1398 | |
1399 | -(define_insn "vec_dupv2df" |
1400 | +(define_insn "*vec_dupv2df" |
1401 | [(set (match_operand:V2DF 0 "register_operand" "=x") |
1402 | (vec_duplicate:V2DF |
1403 | (match_operand:DF 1 "register_operand" "0")))] |
1404 | |
1405 | === modified file 'gcc/config/mips/mips.c' |
1406 | --- gcc/config/mips/mips.c 2011-02-08 10:51:58 +0000 |
1407 | +++ gcc/config/mips/mips.c 2011-07-01 09:39:45 +0000 |
1408 | @@ -1162,7 +1162,7 @@ |
1409 | } |
1410 | }; |
1411 | |
1412 | |
1413 | -static rtx mips_find_pic_call_symbol (rtx, rtx); |
1414 | +static rtx mips_find_pic_call_symbol (rtx, rtx, bool); |
1415 | |
1416 | |
1417 | /* This hash table keeps track of implicit "mips16" and "nomips16" attributes |
1418 | for -mflip_mips16. It maps decl names onto a boolean mode setting. */ |
1419 | @@ -9007,6 +9007,11 @@ |
1420 | static bool |
1421 | mips_cfun_call_saved_reg_p (unsigned int regno) |
1422 | { |
1423 | + /* If the user makes an ordinarily-call-saved register global, |
1424 | + that register is no longer call-saved. */ |
1425 | + if (global_regs[regno]) |
1426 | + return false; |
1427 | + |
1428 | /* Interrupt handlers need to save extra registers. */ |
1429 | if (cfun->machine->interrupt_handler_p |
1430 | && mips_interrupt_extra_call_saved_reg_p (regno)) |
1431 | @@ -14041,12 +14046,16 @@ |
1432 | } |
1433 | |
1434 | /* REG is set in DEF. See if the definition is one of the ways we load a |
1435 | - register with a symbol address for a mips_use_pic_fn_addr_reg_p call. If |
1436 | - it is return the symbol reference of the function, otherwise return |
1437 | - NULL_RTX. */ |
1438 | + register with a symbol address for a mips_use_pic_fn_addr_reg_p call. |
1439 | + If it is, return the symbol reference of the function, otherwise return |
1440 | + NULL_RTX. |
1441 | + |
1442 | + If RECURSE_P is true, use mips_find_pic_call_symbol to interpret |
1443 | + the values of source registers, otherwise treat such registers as |
1444 | + having an unknown value. */ |
1445 | |
1446 | static rtx |
1447 | -mips_pic_call_symbol_from_set (df_ref def, rtx reg) |
1448 | +mips_pic_call_symbol_from_set (df_ref def, rtx reg, bool recurse_p) |
1449 | { |
1450 | rtx def_insn, set; |
1451 | |
1452 | @@ -14073,21 +14082,39 @@ |
1453 | return symbol; |
1454 | } |
1455 | |
1456 | - /* Follow simple register copies. */ |
1457 | - if (REG_P (src)) |
1458 | - return mips_find_pic_call_symbol (def_insn, src); |
1459 | + /* Follow at most one simple register copy. Such copies are |
1460 | + interesting in cases like: |
1461 | + |
1462 | + for (...) |
1463 | + { |
1464 | + locally_binding_fn (...); |
1465 | + } |
1466 | + |
1467 | + and: |
1468 | + |
1469 | + locally_binding_fn (...); |
1470 | + ... |
1471 | + locally_binding_fn (...); |
1472 | + |
1473 | + where the load of locally_binding_fn can legitimately be |
1474 | + hoisted or shared. However, we do not expect to see complex |
1475 | + chains of copies, so a full worklist solution to the problem |
1476 | + would probably be overkill. */ |
1477 | + if (recurse_p && REG_P (src)) |
1478 | + return mips_find_pic_call_symbol (def_insn, src, false); |
1479 | } |
1480 | |
1481 | return NULL_RTX; |
1482 | } |
1483 | |
1484 | -/* Find the definition of the use of REG in INSN. See if the definition is |
1485 | - one of the ways we load a register with a symbol address for a |
1486 | - mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference of |
1487 | - the function, otherwise return NULL_RTX. */ |
1488 | +/* Find the definition of the use of REG in INSN. See if the definition |
1489 | + is one of the ways we load a register with a symbol address for a |
1490 | + mips_use_pic_fn_addr_reg_p call. If it is return the symbol reference |
1491 | + of the function, otherwise return NULL_RTX. RECURSE_P is as for |
1492 | + mips_pic_call_symbol_from_set. */ |
1493 | |
1494 | static rtx |
1495 | -mips_find_pic_call_symbol (rtx insn, rtx reg) |
1496 | +mips_find_pic_call_symbol (rtx insn, rtx reg, bool recurse_p) |
1497 | { |
1498 | df_ref use; |
1499 | struct df_link *defs; |
1500 | @@ -14099,7 +14126,7 @@ |
1501 | defs = DF_REF_CHAIN (use); |
1502 | if (!defs) |
1503 | return NULL_RTX; |
1504 | - symbol = mips_pic_call_symbol_from_set (defs->ref, reg); |
1505 | + symbol = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p); |
1506 | if (!symbol) |
1507 | return NULL_RTX; |
1508 | |
1509 | @@ -14108,7 +14135,7 @@ |
1510 | { |
1511 | rtx other; |
1512 | |
1513 | - other = mips_pic_call_symbol_from_set (defs->ref, reg); |
1514 | + other = mips_pic_call_symbol_from_set (defs->ref, reg, recurse_p); |
1515 | if (!rtx_equal_p (symbol, other)) |
1516 | return NULL_RTX; |
1517 | } |
1518 | @@ -14179,7 +14206,7 @@ |
1519 | if (!REG_P (reg)) |
1520 | continue; |
1521 | |
1522 | - symbol = mips_find_pic_call_symbol (insn, reg); |
1523 | + symbol = mips_find_pic_call_symbol (insn, reg, true); |
1524 | if (symbol) |
1525 | { |
1526 | mips_annotate_pic_call_expr (call, symbol); |
1527 | |
1528 | === modified file 'gcc/config/sh/sh.c' |
1529 | --- gcc/config/sh/sh.c 2011-02-08 10:51:58 +0000 |
1530 | +++ gcc/config/sh/sh.c 2011-07-01 09:39:45 +0000 |
1531 | @@ -1949,7 +1949,10 @@ |
1532 | else if (op2h != CONST0_RTX (SImode)) |
1533 | msw_taken = LTU; |
1534 | else |
1535 | - break; |
1536 | + { |
1537 | + msw_skip = swap_condition (LTU); |
1538 | + break; |
1539 | + } |
1540 | msw_skip = swap_condition (msw_taken); |
1541 | } |
1542 | break; |
1543 | @@ -2002,6 +2005,13 @@ |
1544 | { |
1545 | operands[1] = op1h; |
1546 | operands[2] = op2h; |
1547 | + if (reload_completed |
1548 | + && ! arith_reg_or_0_operand (op2h, SImode) |
1549 | + && (true_regnum (op1h) || (comparison != EQ && comparison != NE))) |
1550 | + { |
1551 | + emit_move_insn (scratch, operands[2]); |
1552 | + operands[2] = scratch; |
1553 | + } |
1554 | } |
1555 | |
1556 | operands[3] = skip_label = gen_label_rtx (); |
1557 | |
1558 | === modified file 'gcc/config/sh/sh.md' |
1559 | --- gcc/config/sh/sh.md 2009-11-21 22:51:07 +0000 |
1560 | +++ gcc/config/sh/sh.md 2011-07-01 09:39:45 +0000 |
1561 | @@ -149,6 +149,7 @@ |
1562 | (UNSPEC_DIV_INV_TABLE 37) |
1563 | (UNSPEC_ASHIFTRT 35) |
1564 | (UNSPEC_THUNK 36) |
1565 | + (UNSPEC_CHKADD 38) |
1566 | (UNSPEC_SP_SET 40) |
1567 | (UNSPEC_SP_TEST 41) |
1568 | (UNSPEC_MOVUA 42) |
1569 | @@ -8438,6 +8439,22 @@ |
1570 | i++; |
1571 | }") |
1572 | |
1573 | +;; op0 = op1 + r12 but hide it before reload completed. See the comment |
1574 | +;; in symGOT_load expand. |
1575 | + |
1576 | +(define_insn_and_split "chk_guard_add" |
1577 | + [(set (match_operand:SI 0 "register_operand" "=&r") |
1578 | + (unspec:SI [(match_operand:SI 1 "register_operand" "r") |
1579 | + (reg:SI PIC_REG)] |
1580 | + UNSPEC_CHKADD))] |
1581 | + "TARGET_SH1" |
1582 | + "#" |
1583 | + "TARGET_SH1 && reload_completed" |
1584 | + [(set (match_dup 0) (reg:SI PIC_REG)) |
1585 | + (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 1)))] |
1586 | + "" |
1587 | + [(set_attr "type" "arith")]) |
1588 | + |
1589 | (define_expand "sym_label2reg" |
1590 | [(set (match_operand:SI 0 "" "") |
1591 | (const:SI (unspec:SI [(match_operand:SI 1 "" "") |
1592 | @@ -8480,13 +8497,9 @@ |
1593 | else |
1594 | emit_move_insn (operands[2], operands[1]); |
1595 | |
1596 | - emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, |
1597 | - operands[2], |
1598 | - gen_rtx_REG (Pmode, PIC_REG))); |
1599 | - |
1600 | /* When stack protector inserts codes after the result is set to |
1601 | - R0, @(rX, r12) will cause a spill failure for R0. Don't schedule |
1602 | - insns to avoid combining (set A (plus rX r12)) and (set op0 (mem A)) |
1603 | + R0, @(rX, r12) will cause a spill failure for R0. Use a unspec |
1604 | + insn to avoid combining (set A (plus rX r12)) and (set op0 (mem A)) |
1605 | when rX is a GOT address for the guard symbol. Ugly but doesn't |
1606 | matter because this is a rare situation. */ |
1607 | if (!TARGET_SHMEDIA |
1608 | @@ -8496,7 +8509,10 @@ |
1609 | && GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == SYMBOL_REF |
1610 | && strcmp (XSTR (XVECEXP (XEXP (operands[1], 0), 0, 0), 0), |
1611 | \"__stack_chk_guard\") == 0) |
1612 | - emit_insn (gen_blockage ()); |
1613 | + emit_insn (gen_chk_guard_add (operands[3], operands[2])); |
1614 | + else |
1615 | + emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, operands[2], |
1616 | + gen_rtx_REG (Pmode, PIC_REG))); |
1617 | |
1618 | /* N.B. This is not constant for a GOTPLT relocation. */ |
1619 | mem = gen_rtx_MEM (Pmode, operands[3]); |
1620 | |
1621 | === modified file 'gcc/config/sparc/sparc-protos.h' |
1622 | --- gcc/config/sparc/sparc-protos.h 2010-04-02 18:54:46 +0000 |
1623 | +++ gcc/config/sparc/sparc-protos.h 2011-07-01 09:39:45 +0000 |
1624 | @@ -48,6 +48,7 @@ |
1625 | extern int check_pic (int); |
1626 | extern int short_branch (int, int); |
1627 | extern void sparc_profile_hook (int); |
1628 | +extern void sparc_optimization_options (int, int); |
1629 | extern void sparc_override_options (void); |
1630 | extern void sparc_output_scratch_registers (FILE *); |
1631 | |
1632 | |
1633 | === modified file 'gcc/config/sparc/sparc.c' |
1634 | --- gcc/config/sparc/sparc.c 2011-05-21 22:04:35 +0000 |
1635 | +++ gcc/config/sparc/sparc.c 2011-07-01 09:39:45 +0000 |
1636 | @@ -627,6 +627,17 @@ |
1637 | return true; |
1638 | } |
1639 | |
1640 | +/* Specify default optimizations. */ |
1641 | + |
1642 | +void |
1643 | +sparc_optimization_options (int l ATTRIBUTE_UNUSED, int s ATTRIBUTE_UNUSED) |
1644 | +{ |
1645 | + /* Disable save slot sharing for call-clobbered registers by default. |
1646 | + The IRA sharing algorithm works on single registers only and this |
1647 | + pessimizes for double floating-point registers. */ |
1648 | + flag_ira_share_save_slots = 0; |
1649 | +} |
1650 | + |
1651 | /* Validate and override various options, and do some machine dependent |
1652 | initialization. */ |
1653 | |
1654 | @@ -4421,18 +4432,20 @@ |
1655 | machinery occupies the delay slot. */ |
1656 | gcc_assert (! final_sequence); |
1657 | |
1658 | - if (! flag_delayed_branch) |
1659 | - fputs ("\tadd\t%fp, %g1, %fp\n", asm_out_file); |
1660 | - |
1661 | - if (TARGET_V9) |
1662 | - fputs ("\treturn\t%i7+8\n", asm_out_file); |
1663 | - else |
1664 | - fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); |
1665 | - |
1666 | - if (flag_delayed_branch) |
1667 | - fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); |
1668 | - else |
1669 | - fputs ("\t nop\n", asm_out_file); |
1670 | + if (flag_delayed_branch) |
1671 | + { |
1672 | + if (TARGET_V9) |
1673 | + fputs ("\treturn\t%i7+8\n", asm_out_file); |
1674 | + else |
1675 | + fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); |
1676 | + |
1677 | + fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); |
1678 | + } |
1679 | + else |
1680 | + { |
1681 | + fputs ("\trestore\n\tadd\t%sp, %g1, %sp\n", asm_out_file); |
1682 | + fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file); |
1683 | + } |
1684 | } |
1685 | else if (final_sequence) |
1686 | { |
1687 | |
1688 | === modified file 'gcc/config/sparc/sparc.h' |
1689 | --- gcc/config/sparc/sparc.h 2011-02-22 11:38:56 +0000 |
1690 | +++ gcc/config/sparc/sparc.h 2011-07-01 09:39:45 +0000 |
1691 | @@ -501,7 +501,8 @@ |
1692 | #define CAN_DEBUG_WITHOUT_FP |
1693 | |
1694 | /* Option handling. */ |
1695 | - |
1696 | +#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \ |
1697 | + sparc_optimization_options ((LEVEL), (SIZE)) |
1698 | #define OVERRIDE_OPTIONS sparc_override_options () |
1699 | |
1700 | |
1701 | /* Mask of all CPU selection flags. */ |
1702 | |
1703 | === modified file 'gcc/config/sparc/sparc.md' |
1704 | --- gcc/config/sparc/sparc.md 2011-05-21 22:50:20 +0000 |
1705 | +++ gcc/config/sparc/sparc.md 2011-07-01 09:39:45 +0000 |
1706 | @@ -6315,9 +6315,7 @@ |
1707 | (if_then_else (eq_attr "isa" "v9") |
1708 | (const_int 2) |
1709 | (const_int 3)) |
1710 | - (if_then_else (eq_attr "isa" "v9") |
1711 | - (const_int 3) |
1712 | - (const_int 4))) |
1713 | + (const_int 4)) |
1714 | (eq_attr "empty_delay_slot" "true") |
1715 | (if_then_else (eq_attr "delayed_branch" "true") |
1716 | (const_int 2) |
1717 | |
1718 | === modified file 'gcc/cp/ChangeLog' |
1719 | --- gcc/cp/ChangeLog 2011-05-20 18:53:27 +0000 |
1720 | +++ gcc/cp/ChangeLog 2011-07-01 09:39:45 +0000 |
1721 | @@ -1,3 +1,17 @@ |
1722 | +2011-06-23 Jason Merrill <jason@redhat.com> |
1723 | + |
1724 | + PR c++/49440 |
1725 | + * class.c (set_linkage_according_to_type): Hand off to |
1726 | + determine_visibility. |
1727 | + |
1728 | +2011-05-31 Duncan Sands <baldrick@free.fr> |
1729 | + |
1730 | + Backported from 4.6 branch |
1731 | + 2011-03-09 Martin Jambor <mjambor@suse.cz> |
1732 | + |
1733 | + PR tree-optimization/47714 |
1734 | + * method.c (use_thunk): Clear addressable flag of thunk arguments. |
1735 | + |
1736 | 2011-05-20 Jason Merrill <jason@redhat.com> |
1737 | |
1738 | PR c++/48873 |
1739 | |
1740 | === modified file 'gcc/cp/class.c' |
1741 | --- gcc/cp/class.c 2010-07-09 18:50:25 +0000 |
1742 | +++ gcc/cp/class.c 2011-07-01 09:39:45 +0000 |
1743 | @@ -681,21 +681,10 @@ |
1744 | the abstract. */ |
1745 | |
1746 | void |
1747 | -set_linkage_according_to_type (tree type, tree decl) |
1748 | +set_linkage_according_to_type (tree type ATTRIBUTE_UNUSED, tree decl) |
1749 | { |
1750 | - /* If TYPE involves a local class in a function with internal |
1751 | - linkage, then DECL should have internal linkage too. Other local |
1752 | - classes have no linkage -- but if their containing functions |
1753 | - have external linkage, it makes sense for DECL to have external |
1754 | - linkage too. That will allow template definitions to be merged, |
1755 | - for example. */ |
1756 | - if (no_linkage_check (type, /*relaxed_p=*/true)) |
1757 | - { |
1758 | - TREE_PUBLIC (decl) = 0; |
1759 | - DECL_INTERFACE_KNOWN (decl) = 1; |
1760 | - } |
1761 | - else |
1762 | - TREE_PUBLIC (decl) = 1; |
1763 | + TREE_PUBLIC (decl) = 1; |
1764 | + determine_visibility (decl); |
1765 | } |
1766 | |
1767 | /* Create a VAR_DECL for a primary or secondary vtable for CLASS_TYPE. |
1768 | |
1769 | === modified file 'gcc/cp/method.c' |
1770 | --- gcc/cp/method.c 2010-03-20 08:55:32 +0000 |
1771 | +++ gcc/cp/method.c 2011-07-01 09:39:45 +0000 |
1772 | @@ -374,6 +374,7 @@ |
1773 | DECL_CONTEXT (x) = thunk_fndecl; |
1774 | SET_DECL_RTL (x, NULL_RTX); |
1775 | DECL_HAS_VALUE_EXPR_P (x) = 0; |
1776 | + TREE_ADDRESSABLE (x) = 0; |
1777 | t = x; |
1778 | } |
1779 | a = nreverse (t); |
1780 | |
1781 | === modified file 'gcc/fortran/ChangeLog' |
1782 | --- gcc/fortran/ChangeLog 2011-04-28 14:12:20 +0000 |
1783 | +++ gcc/fortran/ChangeLog 2011-07-01 09:39:45 +0000 |
1784 | @@ -1,3 +1,13 @@ |
1785 | +2011-06-02 Thomas Koenig <tkoenig@gcc.gnu.org> |
1786 | + |
1787 | + Backport from trunk |
1788 | + PR fortran/45786 |
1789 | + * interface.c (gfc_equivalent_op): New function. |
1790 | + (gfc_check_interface): Use gfc_equivalent_op instead |
1791 | + of switch statement. |
1792 | + * decl.c (access_attr_decl): Also set access to an |
1793 | + equivalent operator. |
1794 | + |
1795 | 2011-04-28 Release Manager |
1796 | |
1797 | * GCC 4.5.3 released. |
1798 | |
1799 | === modified file 'gcc/fortran/decl.c' |
1800 | --- gcc/fortran/decl.c 2010-03-17 09:53:40 +0000 |
1801 | +++ gcc/fortran/decl.c 2011-07-01 09:39:45 +0000 |
1802 | @@ -6062,8 +6062,19 @@ |
1803 | case INTERFACE_INTRINSIC_OP: |
1804 | if (gfc_current_ns->operator_access[op] == ACCESS_UNKNOWN) |
1805 | { |
1806 | + gfc_intrinsic_op other_op; |
1807 | + |
1808 | gfc_current_ns->operator_access[op] = |
1809 | (st == ST_PUBLIC) ? ACCESS_PUBLIC : ACCESS_PRIVATE; |
1810 | + |
1811 | + /* Handle the case if there is another op with the same |
1812 | + function, for INTRINSIC_EQ vs. INTRINSIC_EQ_OS and so on. */ |
1813 | + other_op = gfc_equivalent_op (op); |
1814 | + |
1815 | + if (other_op != INTRINSIC_NONE) |
1816 | + gfc_current_ns->operator_access[other_op] = |
1817 | + (st == ST_PUBLIC) ? ACCESS_PUBLIC : ACCESS_PRIVATE; |
1818 | + |
1819 | } |
1820 | else |
1821 | { |
1822 | |
1823 | === modified file 'gcc/fortran/gfortran.h' |
1824 | --- gcc/fortran/gfortran.h 2011-01-25 17:01:06 +0000 |
1825 | +++ gcc/fortran/gfortran.h 2011-07-01 09:39:45 +0000 |
1826 | @@ -2718,6 +2718,7 @@ |
1827 | gfc_symtree* gfc_find_sym_in_symtree (gfc_symbol*); |
1828 | bool gfc_arglist_matches_symbol (gfc_actual_arglist**, gfc_symbol*); |
1829 | bool gfc_check_operator_interface (gfc_symbol*, gfc_intrinsic_op, locus); |
1830 | +gfc_intrinsic_op gfc_equivalent_op (gfc_intrinsic_op); |
1831 | |
1832 | /* io.c */ |
1833 | extern gfc_st_label format_asterisk; |
1834 | |
1835 | === modified file 'gcc/fortran/interface.c' |
1836 | --- gcc/fortran/interface.c 2011-02-14 06:38:44 +0000 |
1837 | +++ gcc/fortran/interface.c 2011-07-01 09:39:45 +0000 |
1838 | @@ -1213,6 +1213,54 @@ |
1839 | } |
1840 | } |
1841 | |
1842 | +/* Given an intrinsic op, return an equivalent op if one exists, |
1843 | + or INTRINSIC_NONE otherwise. */ |
1844 | + |
1845 | +gfc_intrinsic_op |
1846 | +gfc_equivalent_op (gfc_intrinsic_op op) |
1847 | +{ |
1848 | + switch(op) |
1849 | + { |
1850 | + case INTRINSIC_EQ: |
1851 | + return INTRINSIC_EQ_OS; |
1852 | + |
1853 | + case INTRINSIC_EQ_OS: |
1854 | + return INTRINSIC_EQ; |
1855 | + |
1856 | + case INTRINSIC_NE: |
1857 | + return INTRINSIC_NE_OS; |
1858 | + |
1859 | + case INTRINSIC_NE_OS: |
1860 | + return INTRINSIC_NE; |
1861 | + |
1862 | + case INTRINSIC_GT: |
1863 | + return INTRINSIC_GT_OS; |
1864 | + |
1865 | + case INTRINSIC_GT_OS: |
1866 | + return INTRINSIC_GT; |
1867 | + |
1868 | + case INTRINSIC_GE: |
1869 | + return INTRINSIC_GE_OS; |
1870 | + |
1871 | + case INTRINSIC_GE_OS: |
1872 | + return INTRINSIC_GE; |
1873 | + |
1874 | + case INTRINSIC_LT: |
1875 | + return INTRINSIC_LT_OS; |
1876 | + |
1877 | + case INTRINSIC_LT_OS: |
1878 | + return INTRINSIC_LT; |
1879 | + |
1880 | + case INTRINSIC_LE: |
1881 | + return INTRINSIC_LE_OS; |
1882 | + |
1883 | + case INTRINSIC_LE_OS: |
1884 | + return INTRINSIC_LE; |
1885 | + |
1886 | + default: |
1887 | + return INTRINSIC_NONE; |
1888 | + } |
1889 | +} |
1890 | |
1891 | /* For the namespace, check generic, user operator and intrinsic |
1892 | operator interfaces for consistency and to remove duplicate |
1893 | @@ -1253,75 +1301,19 @@ |
1894 | |
1895 | for (ns2 = ns; ns2; ns2 = ns2->parent) |
1896 | { |
1897 | + gfc_intrinsic_op other_op; |
1898 | + |
1899 | if (check_interface1 (ns->op[i], ns2->op[i], 0, |
1900 | interface_name, true)) |
1901 | goto done; |
1902 | |
1903 | - switch (i) |
1904 | - { |
1905 | - case INTRINSIC_EQ: |
1906 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_EQ_OS], |
1907 | - 0, interface_name, true)) goto done; |
1908 | - break; |
1909 | - |
1910 | - case INTRINSIC_EQ_OS: |
1911 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_EQ], |
1912 | - 0, interface_name, true)) goto done; |
1913 | - break; |
1914 | - |
1915 | - case INTRINSIC_NE: |
1916 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_NE_OS], |
1917 | - 0, interface_name, true)) goto done; |
1918 | - break; |
1919 | - |
1920 | - case INTRINSIC_NE_OS: |
1921 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_NE], |
1922 | - 0, interface_name, true)) goto done; |
1923 | - break; |
1924 | - |
1925 | - case INTRINSIC_GT: |
1926 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GT_OS], |
1927 | - 0, interface_name, true)) goto done; |
1928 | - break; |
1929 | - |
1930 | - case INTRINSIC_GT_OS: |
1931 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GT], |
1932 | - 0, interface_name, true)) goto done; |
1933 | - break; |
1934 | - |
1935 | - case INTRINSIC_GE: |
1936 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GE_OS], |
1937 | - 0, interface_name, true)) goto done; |
1938 | - break; |
1939 | - |
1940 | - case INTRINSIC_GE_OS: |
1941 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_GE], |
1942 | - 0, interface_name, true)) goto done; |
1943 | - break; |
1944 | - |
1945 | - case INTRINSIC_LT: |
1946 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LT_OS], |
1947 | - 0, interface_name, true)) goto done; |
1948 | - break; |
1949 | - |
1950 | - case INTRINSIC_LT_OS: |
1951 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LT], |
1952 | - 0, interface_name, true)) goto done; |
1953 | - break; |
1954 | - |
1955 | - case INTRINSIC_LE: |
1956 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LE_OS], |
1957 | - 0, interface_name, true)) goto done; |
1958 | - break; |
1959 | - |
1960 | - case INTRINSIC_LE_OS: |
1961 | - if (check_interface1 (ns->op[i], ns2->op[INTRINSIC_LE], |
1962 | - 0, interface_name, true)) goto done; |
1963 | - break; |
1964 | - |
1965 | - default: |
1966 | - break; |
1967 | - } |
1968 | + /* i should be gfc_intrinsic_op, but has to be int with this cast |
1969 | + here for stupid C++ compatibility rules. */ |
1970 | + other_op = gfc_equivalent_op ((gfc_intrinsic_op) i); |
1971 | + if (other_op != INTRINSIC_NONE |
1972 | + && check_interface1 (ns->op[i], ns2->op[other_op], |
1973 | + 0, interface_name, true)) |
1974 | + goto done; |
1975 | } |
1976 | } |
1977 | |
1978 | |
1979 | === modified file 'gcc/reload.c' |
1980 | --- gcc/reload.c 2011-04-20 10:07:36 +0000 |
1981 | +++ gcc/reload.c 2011-07-01 09:39:45 +0000 |
1982 | @@ -6796,6 +6796,15 @@ |
1983 | || num > PARAM_VALUE (PARAM_MAX_RELOAD_SEARCH_INSNS)) |
1984 | return 0; |
1985 | |
1986 | + /* Don't reuse register contents from before a setjmp-type |
1987 | + function call; on the second return (from the longjmp) it |
1988 | + might have been clobbered by a later reuse. It doesn't |
1989 | + seem worthwhile to actually go and see if it is actually |
1990 | + reused even if that information would be readily available; |
1991 | + just don't reuse it across the setjmp call. */ |
1992 | + if (CALL_P (p) && find_reg_note (p, REG_SETJMP, NULL_RTX)) |
1993 | + return 0; |
1994 | + |
1995 | if (NONJUMP_INSN_P (p) |
1996 | /* If we don't want spill regs ... */ |
1997 | && (! (reload_reg_p != 0 |
1998 | |
1999 | === modified file 'gcc/reload1.c' |
2000 | --- gcc/reload1.c 2011-05-04 09:21:34 +0000 |
2001 | +++ gcc/reload1.c 2011-07-01 09:39:45 +0000 |
2002 | @@ -4821,6 +4821,13 @@ |
2003 | { |
2004 | AND_COMPL_HARD_REG_SET (reg_reloaded_valid, call_used_reg_set); |
2005 | AND_COMPL_HARD_REG_SET (reg_reloaded_valid, reg_reloaded_call_part_clobbered); |
2006 | + |
2007 | + /* If this is a call to a setjmp-type function, we must not |
2008 | + reuse any reload reg contents across the call; that will |
2009 | + just be clobbered by other uses of the register in later |
2010 | + code, before the longjmp. */ |
2011 | + if (find_reg_note (insn, REG_SETJMP, NULL_RTX)) |
2012 | + CLEAR_HARD_REG_SET (reg_reloaded_valid); |
2013 | } |
2014 | } |
2015 | |
2016 | |
2017 | === modified file 'gcc/testsuite/ChangeLog' |
2018 | --- gcc/testsuite/ChangeLog 2011-05-25 13:26:42 +0000 |
2019 | +++ gcc/testsuite/ChangeLog 2011-07-01 09:39:45 +0000 |
2020 | @@ -1,3 +1,68 @@ |
2021 | +2011-06-28 Eric Botcazou <ebotcazou@adacore.com> |
2022 | + |
2023 | + * gnat.dg/opt17.ad[sb]: New test. |
2024 | + |
2025 | +2011-06-23 Jason Merrill <jason@redhat.com> |
2026 | + |
2027 | + PR c++/49440 |
2028 | + * g++.dg/rtti/anon-ns1.C: New. |
2029 | + |
2030 | +2011-06-17 Hans-Peter Nilsson <hp@axis.com> |
2031 | + |
2032 | + Backport from mainline |
2033 | + 2011-06-17 Hans-Peter Nilsson <hp@axis.com> |
2034 | + |
2035 | + PR rtl-optimization/48542 |
2036 | + * gcc.dg/torture/pr48542.c: New test. |
2037 | + |
2038 | +2011-06-16 Kaz Kojima <kkojima@gcc.gnu.org> |
2039 | + |
2040 | + Backport form main line |
2041 | + 2011-06-09 Kaz Kojima <kkojima@gcc.gnu.org> |
2042 | + |
2043 | + PR target/49307 |
2044 | + * gcc.dg/pr49307.c: New. |
2045 | + |
2046 | +2011-06-08 Kaz Kojima <kkojima@gcc.gnu.org> |
2047 | + |
2048 | + Backport from mainline |
2049 | + 2011-06-01 Kaz Kojima <kkojima@gcc.gnu.org> |
2050 | + |
2051 | + PR target/49238 |
2052 | + * gcc.c-torture/compile/pr49238.c: New. |
2053 | + |
2054 | +2011-06-05 Kaz Kojima <kkojima@gcc.gnu.org> |
2055 | + |
2056 | + Backport from mainline |
2057 | + 2011-05-30 Kaz Kojima <kkojima@gcc.gnu.org> |
2058 | + |
2059 | + PR target/49186 |
2060 | + * gcc.c-torture/execute/pr49186.c: New. |
2061 | + |
2062 | +2011-06-04 Ira Rosen <ira.rosen@linaro.org> |
2063 | + |
2064 | + PR tree-optimization/49038 |
2065 | + * gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c: New test. |
2066 | + * gcc.dg/vect/pr49038.c: New test. |
2067 | + |
2068 | +2011-06-02 Thomas Koenig <tkoenig@gcc.gnu.org> |
2069 | + |
2070 | + Backport from trunk |
2071 | + PR fortran/45786 |
2072 | + * gfortran.dg/operator_7.f90: New test case. |
2073 | + |
2074 | +2011-05-31 Duncan Sands <baldrick@free.fr> |
2075 | + |
2076 | + Backported from 4.6 branch |
2077 | + 2011-03-09 Martin Jambor <mjambor@suse.cz> |
2078 | + |
2079 | + PR tree-optimization/47714 |
2080 | + * g++.dg/torture/pr47714.C: New test. |
2081 | + |
2082 | +2011-05-29 Richard Sandiford <rdsandiford@googlemail.com> |
2083 | + |
2084 | + * gcc.target/mips/reg-var-1.c: New test. |
2085 | + |
2086 | 2011-05-25 Uros Bizjak <ubizjak@gmail.com> |
2087 | |
2088 | PR target/49133 |
2089 | |
2090 | === added file 'gcc/testsuite/g++.dg/rtti/anon-ns1.C' |
2091 | --- gcc/testsuite/g++.dg/rtti/anon-ns1.C 1970-01-01 00:00:00 +0000 |
2092 | +++ gcc/testsuite/g++.dg/rtti/anon-ns1.C 2011-07-01 09:39:45 +0000 |
2093 | @@ -0,0 +1,15 @@ |
2094 | +// PR c++/49440 |
2095 | +// The typeinfo name for A should start with * so we compare |
2096 | +// it by address rather than contents. |
2097 | + |
2098 | +// { dg-final { scan-assembler "\"\*N\[^\"\]+1AE\"" } } |
2099 | + |
2100 | +namespace |
2101 | +{ |
2102 | + class A { }; |
2103 | +} |
2104 | + |
2105 | +void f() |
2106 | +{ |
2107 | + throw A(); |
2108 | +} |
2109 | |
2110 | === added file 'gcc/testsuite/g++.dg/torture/pr47714.C' |
2111 | --- gcc/testsuite/g++.dg/torture/pr47714.C 1970-01-01 00:00:00 +0000 |
2112 | +++ gcc/testsuite/g++.dg/torture/pr47714.C 2011-07-01 09:39:45 +0000 |
2113 | @@ -0,0 +1,16 @@ |
2114 | +struct A { virtual ~A () {} }; |
2115 | +struct B { virtual ~B () {} }; |
2116 | +struct C { virtual const A *foo (int) const = 0; }; |
2117 | +struct E : public B, public A { }; |
2118 | +struct F : public C |
2119 | +{ |
2120 | + virtual const E *foo (int) const; |
2121 | +}; |
2122 | +void bar (int &); |
2123 | + |
2124 | +const E * |
2125 | +F::foo (int x) const |
2126 | +{ |
2127 | + bar (x); |
2128 | + return __null; |
2129 | +} |
2130 | |
2131 | === added file 'gcc/testsuite/gcc.c-torture/compile/pr49238.c' |
2132 | --- gcc/testsuite/gcc.c-torture/compile/pr49238.c 1970-01-01 00:00:00 +0000 |
2133 | +++ gcc/testsuite/gcc.c-torture/compile/pr49238.c 2011-07-01 09:39:45 +0000 |
2134 | @@ -0,0 +1,18 @@ |
2135 | +/* PR target/49238 */ |
2136 | +extern int bar (void); |
2137 | + |
2138 | +void |
2139 | +foo (unsigned long long a, int b) |
2140 | +{ |
2141 | + int i; |
2142 | + |
2143 | + if (b) |
2144 | + for (a = -12; a >= 10; a = bar ()) |
2145 | + break; |
2146 | + else |
2147 | + return; |
2148 | + |
2149 | + for (i = 0; i < 10; i += 10) |
2150 | + if ((i == bar ()) | (bar () >= a)) |
2151 | + bar (); |
2152 | +} |
2153 | |
2154 | === added file 'gcc/testsuite/gcc.c-torture/execute/pr49186.c' |
2155 | --- gcc/testsuite/gcc.c-torture/execute/pr49186.c 1970-01-01 00:00:00 +0000 |
2156 | +++ gcc/testsuite/gcc.c-torture/execute/pr49186.c 2011-07-01 09:39:45 +0000 |
2157 | @@ -0,0 +1,15 @@ |
2158 | +/* PR target/49186 */ |
2159 | +extern void abort (void); |
2160 | + |
2161 | +int |
2162 | +main () |
2163 | +{ |
2164 | + int x; |
2165 | + unsigned long long uv = 0x1000000001ULL; |
2166 | + |
2167 | + x = (uv < 0x80) ? 1 : ((uv < 0x800) ? 2 : 3); |
2168 | + if (x != 3) |
2169 | + abort (); |
2170 | + |
2171 | + return 0; |
2172 | +} |
2173 | |
2174 | === added file 'gcc/testsuite/gcc.dg/pr49307.c' |
2175 | --- gcc/testsuite/gcc.dg/pr49307.c 1970-01-01 00:00:00 +0000 |
2176 | +++ gcc/testsuite/gcc.dg/pr49307.c 2011-07-01 09:39:45 +0000 |
2177 | @@ -0,0 +1,21 @@ |
2178 | +/* PR target/49307 */ |
2179 | +/* { dg-do compile } */ |
2180 | +/* { dg-options "-O -fpic -fstack-protector" } */ |
2181 | +/* { dg-require-effective-target fpic } */ |
2182 | +/* { dg-require-effective-target fstack_protector } */ |
2183 | + |
2184 | +extern void bar (char **pp, void *vp); |
2185 | +extern void free (void *p); |
2186 | + |
2187 | +int |
2188 | +foo (void) |
2189 | +{ |
2190 | + char *p; |
2191 | + char fext[128]; |
2192 | + |
2193 | + p = fext; |
2194 | + bar (&p, (void *)0); |
2195 | + if (p) |
2196 | + free (p); |
2197 | + return 0; |
2198 | +} |
2199 | |
2200 | === added file 'gcc/testsuite/gcc.dg/torture/pr48542.c' |
2201 | --- gcc/testsuite/gcc.dg/torture/pr48542.c 1970-01-01 00:00:00 +0000 |
2202 | +++ gcc/testsuite/gcc.dg/torture/pr48542.c 2011-07-01 09:39:45 +0000 |
2203 | @@ -0,0 +1,57 @@ |
2204 | +/* { dg-do run } */ |
2205 | +/* The return-address was clobbered. */ |
2206 | +#include <stdlib.h> |
2207 | +#include <setjmp.h> |
2208 | + |
2209 | +jmp_buf env; |
2210 | +extern void sub(void); |
2211 | +extern void sub3(void); |
2212 | +int called; |
2213 | +__attribute__ ((__noinline__)) |
2214 | +int sjtest() |
2215 | +{ |
2216 | + int i; |
2217 | + if (setjmp(env)) |
2218 | + return 99; |
2219 | + |
2220 | + for (i = 0; i < 10; i++) |
2221 | + sub(); |
2222 | + |
2223 | + longjmp(env, 1); |
2224 | +} |
2225 | + |
2226 | +__attribute__ ((__noinline__)) |
2227 | +void sub(void) |
2228 | +{ |
2229 | + called++; |
2230 | +} |
2231 | + |
2232 | +int called3; |
2233 | +__attribute__ ((__noinline__)) |
2234 | +int sjtest3() |
2235 | +{ |
2236 | + int i; |
2237 | + if (setjmp(env)) |
2238 | + return 42; |
2239 | + |
2240 | + for (i = 0; i < 10; i++) |
2241 | + sub3(); |
2242 | + return 0; |
2243 | +} |
2244 | + |
2245 | +__attribute__ ((__noinline__)) |
2246 | +void sub3(void) |
2247 | +{ |
2248 | + called3++; |
2249 | + if (called3 == 10) |
2250 | + longjmp (env, 1); |
2251 | +} |
2252 | + |
2253 | +int main(void) |
2254 | +{ |
2255 | + if (sjtest() != 99 || called != 10) |
2256 | + abort(); |
2257 | + if (sjtest3() != 42 || called3 != 10) |
2258 | + abort(); |
2259 | + exit (0); |
2260 | +} |
2261 | |
2262 | === added file 'gcc/testsuite/gcc.dg/vect/pr49038.c' |
2263 | --- gcc/testsuite/gcc.dg/vect/pr49038.c 1970-01-01 00:00:00 +0000 |
2264 | +++ gcc/testsuite/gcc.dg/vect/pr49038.c 2011-07-01 09:39:45 +0000 |
2265 | @@ -0,0 +1,42 @@ |
2266 | +#include <sys/mman.h> |
2267 | +#include <stdio.h> |
2268 | + |
2269 | +#define COUNT 320 |
2270 | +#define MMAP_SIZE 0x10000 |
2271 | +#define ADDRESS 0x1122000000 |
2272 | +#define TYPE unsigned short |
2273 | + |
2274 | +#ifndef MAP_ANONYMOUS |
2275 | +#define MAP_ANONYMOUS MAP_ANON |
2276 | +#endif |
2277 | + |
2278 | +void __attribute__((noinline)) |
2279 | +foo (TYPE *__restrict a, TYPE *__restrict b) |
2280 | +{ |
2281 | + int n; |
2282 | + |
2283 | + for (n = 0; n < COUNT; n++) |
2284 | + a[n] = b[n * 2]; |
2285 | +} |
2286 | + |
2287 | +int |
2288 | +main (void) |
2289 | +{ |
2290 | + void *x; |
2291 | + size_t b_offset; |
2292 | + |
2293 | + x = mmap ((void *) ADDRESS, MMAP_SIZE, PROT_READ | PROT_WRITE, |
2294 | + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); |
2295 | + if (x == MAP_FAILED) |
2296 | + { |
2297 | + perror ("mmap"); |
2298 | + return 1; |
2299 | + } |
2300 | + |
2301 | + b_offset = MMAP_SIZE - (2 * COUNT - 1) * sizeof (TYPE); |
2302 | + foo ((unsigned short *) x, |
2303 | + (unsigned short *) ((char *) x + b_offset)); |
2304 | + return 0; |
2305 | +} |
2306 | + |
2307 | +/* { dg-final { cleanup-tree-dump "vect" } } */ |
2308 | |
2309 | === added file 'gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c' |
2310 | --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c 1970-01-01 00:00:00 +0000 |
2311 | +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c 2011-07-01 09:39:45 +0000 |
2312 | @@ -0,0 +1,116 @@ |
2313 | +/* { dg-require-effective-target vect_int } */ |
2314 | + |
2315 | +#include <stdarg.h> |
2316 | +#include <stdio.h> |
2317 | +#include "tree-vect.h" |
2318 | + |
2319 | +#define N 160 |
2320 | + |
2321 | +typedef struct { |
2322 | + unsigned char a; |
2323 | + unsigned char b; |
2324 | + unsigned char c; |
2325 | + unsigned char d; |
2326 | + unsigned char e; |
2327 | + unsigned char f; |
2328 | + unsigned char g; |
2329 | + unsigned char h; |
2330 | +} s; |
2331 | + |
2332 | +__attribute__ ((noinline)) int |
2333 | +main1 (s *arr, int n) |
2334 | +{ |
2335 | + int i; |
2336 | + s *ptr = arr; |
2337 | + s res[N]; |
2338 | + unsigned char x; |
2339 | + |
2340 | + for (i = 0; i < N; i++) |
2341 | + { |
2342 | + res[i].a = 0; |
2343 | + res[i].b = 0; |
2344 | + res[i].c = 0; |
2345 | + res[i].d = 0; |
2346 | + res[i].e = 0; |
2347 | + res[i].f = 0; |
2348 | + res[i].g = 0; |
2349 | + res[i].h = 0; |
2350 | + __asm__ volatile (""); |
2351 | + } |
2352 | + |
2353 | + /* Check peeling for gaps for unknown loop bound. */ |
2354 | + for (i = 0; i < n; i++) |
2355 | + { |
2356 | + res[i].c = ptr->b + ptr->c; |
2357 | + x = ptr->c + ptr->f; |
2358 | + res[i].a = x + ptr->b; |
2359 | + res[i].d = ptr->b + ptr->c; |
2360 | + res[i].b = ptr->c; |
2361 | + res[i].f = ptr->f + ptr->e; |
2362 | + res[i].e = ptr->b + ptr->e; |
2363 | + res[i].h = ptr->c; |
2364 | + res[i].g = ptr->b + ptr->c; |
2365 | + ptr++; |
2366 | + } |
2367 | + |
2368 | + /* check results: */ |
2369 | + for (i = 0; i < n; i++) |
2370 | + { |
2371 | + if (res[i].c != arr[i].b + arr[i].c |
2372 | + || res[i].a != arr[i].c + arr[i].f + arr[i].b |
2373 | + || res[i].d != arr[i].b + arr[i].c |
2374 | + || res[i].b != arr[i].c |
2375 | + || res[i].f != arr[i].f + arr[i].e |
2376 | + || res[i].e != arr[i].b + arr[i].e |
2377 | + || res[i].h != arr[i].c |
2378 | + || res[i].g != arr[i].b + arr[i].c) |
2379 | + abort (); |
2380 | + } |
2381 | + |
2382 | + /* Check also that we don't do more iterations than needed. */ |
2383 | + for (i = n; i < N; i++) |
2384 | + { |
2385 | + if (res[i].c == arr[i].b + arr[i].c |
2386 | + || res[i].a == arr[i].c + arr[i].f + arr[i].b |
2387 | + || res[i].d == arr[i].b + arr[i].c |
2388 | + || res[i].b == arr[i].c |
2389 | + || res[i].f == arr[i].f + arr[i].e |
2390 | + || res[i].e == arr[i].b + arr[i].e |
2391 | + || res[i].h == arr[i].c |
2392 | + || res[i].g == arr[i].b + arr[i].c) |
2393 | + abort (); |
2394 | + } |
2395 | + |
2396 | + return 0; |
2397 | +} |
2398 | + |
2399 | + |
2400 | +int main (void) |
2401 | +{ |
2402 | + int i; |
2403 | + s arr[N]; |
2404 | + |
2405 | + check_vect (); |
2406 | + |
2407 | + for (i = 0; i < N; i++) |
2408 | + { |
2409 | + arr[i].a = 5; |
2410 | + arr[i].b = 6; |
2411 | + arr[i].c = 17; |
2412 | + arr[i].d = 3; |
2413 | + arr[i].e = 16; |
2414 | + arr[i].f = 16; |
2415 | + arr[i].g = 3; |
2416 | + arr[i].h = 56; |
2417 | + if (arr[i].a == 178) |
2418 | + abort(); |
2419 | + } |
2420 | + |
2421 | + main1 (arr, N-2); |
2422 | + |
2423 | + return 0; |
2424 | +} |
2425 | + |
2426 | +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */ |
2427 | +/* { dg-final { cleanup-tree-dump "vect" } } */ |
2428 | + |
2429 | |
2430 | === added file 'gcc/testsuite/gcc.target/mips/reg-var-1.c' |
2431 | --- gcc/testsuite/gcc.target/mips/reg-var-1.c 1970-01-01 00:00:00 +0000 |
2432 | +++ gcc/testsuite/gcc.target/mips/reg-var-1.c 2011-07-01 09:39:45 +0000 |
2433 | @@ -0,0 +1,16 @@ |
2434 | +/* { dg-do run } */ |
2435 | +register int g asm ("$18"); |
2436 | + |
2437 | +void __attribute__((noinline)) |
2438 | +test (void) |
2439 | +{ |
2440 | + g = g + 1; |
2441 | +} |
2442 | + |
2443 | +int |
2444 | +main (void) |
2445 | +{ |
2446 | + g = 2; |
2447 | + test (); |
2448 | + return g != 3; |
2449 | +} |
2450 | |
2451 | === added file 'gcc/testsuite/gfortran.dg/operator_7.f90' |
2452 | --- gcc/testsuite/gfortran.dg/operator_7.f90 1970-01-01 00:00:00 +0000 |
2453 | +++ gcc/testsuite/gfortran.dg/operator_7.f90 2011-07-01 09:39:45 +0000 |
2454 | @@ -0,0 +1,27 @@ |
2455 | +! { dg-do compile } |
2456 | +! PR fortran/45786 - operators were not correctly marked as public |
2457 | +! if the alternative form was used. |
2458 | +! Test case contributed by Neil Carlson. |
2459 | +module foo_type |
2460 | + private |
2461 | + public :: foo, operator(==) |
2462 | + type :: foo |
2463 | + integer :: bar |
2464 | + end type |
2465 | + interface operator(.eq.) |
2466 | + module procedure eq_foo |
2467 | + end interface |
2468 | +contains |
2469 | + logical function eq_foo (a, b) |
2470 | + type(foo), intent(in) :: a, b |
2471 | + eq_foo = (a%bar == b%bar) |
2472 | + end function |
2473 | +end module |
2474 | + |
2475 | + subroutine use_it (a, b) |
2476 | + use foo_type |
2477 | + type(foo) :: a, b |
2478 | + print *, a == b |
2479 | +end subroutine |
2480 | + |
2481 | +! { dg-final { cleanup-modules "foo_type" } } |
2482 | |
2483 | === added file 'gcc/testsuite/gnat.dg/opt17.adb' |
2484 | --- gcc/testsuite/gnat.dg/opt17.adb 1970-01-01 00:00:00 +0000 |
2485 | +++ gcc/testsuite/gnat.dg/opt17.adb 2011-07-01 09:39:45 +0000 |
2486 | @@ -0,0 +1,13 @@ |
2487 | +-- { dg-do compile } |
2488 | +-- { dg-options "-O" } |
2489 | + |
2490 | +package body Opt17 is |
2491 | + |
2492 | + function Func return S is |
2493 | + V : String (1 .. 6); |
2494 | + begin |
2495 | + V (1 .. 3) := "ABC"; |
2496 | + return V (1 .. 5); |
2497 | + end; |
2498 | + |
2499 | +end Opt17; |
2500 | |
2501 | === added file 'gcc/testsuite/gnat.dg/opt17.ads' |
2502 | --- gcc/testsuite/gnat.dg/opt17.ads 1970-01-01 00:00:00 +0000 |
2503 | +++ gcc/testsuite/gnat.dg/opt17.ads 2011-07-01 09:39:45 +0000 |
2504 | @@ -0,0 +1,7 @@ |
2505 | +package Opt17 is |
2506 | + |
2507 | + subtype S is String (1 .. 5); |
2508 | + |
2509 | + function Func return S; |
2510 | + |
2511 | +end Opt17; |
2512 | |
2513 | === modified file 'gcc/tree-ssa-dom.c' |
2514 | --- gcc/tree-ssa-dom.c 2010-09-16 09:15:46 +0000 |
2515 | +++ gcc/tree-ssa-dom.c 2011-07-01 09:39:45 +0000 |
2516 | @@ -216,9 +216,10 @@ |
2517 | switch (get_gimple_rhs_class (subcode)) |
2518 | { |
2519 | case GIMPLE_SINGLE_RHS: |
2520 | - expr->kind = EXPR_SINGLE; |
2521 | - expr->ops.single.rhs = gimple_assign_rhs1 (stmt); |
2522 | - break; |
2523 | + expr->kind = EXPR_SINGLE; |
2524 | + expr->type = TREE_TYPE (gimple_assign_lhs (stmt)); |
2525 | + expr->ops.single.rhs = gimple_assign_rhs1 (stmt); |
2526 | + break; |
2527 | case GIMPLE_UNARY_RHS: |
2528 | expr->kind = EXPR_UNARY; |
2529 | expr->type = TREE_TYPE (gimple_assign_lhs (stmt)); |
2530 | |
2531 | === modified file 'gcc/tree-vect-data-refs.c' |
2532 | --- gcc/tree-vect-data-refs.c 2010-04-02 18:54:46 +0000 |
2533 | +++ gcc/tree-vect-data-refs.c 2011-07-01 09:39:45 +0000 |
2534 | @@ -1450,7 +1450,7 @@ |
2535 | loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); |
2536 | bb_vec_info bb_vinfo = STMT_VINFO_BB_VINFO (stmt_info); |
2537 | HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step); |
2538 | - HOST_WIDE_INT stride; |
2539 | + HOST_WIDE_INT stride, last_accessed_element = 1; |
2540 | bool slp_impossible = false; |
2541 | |
2542 | /* For interleaving, STRIDE is STEP counted in elements, i.e., the size of the |
2543 | @@ -1479,6 +1479,16 @@ |
2544 | fprintf (vect_dump, " step "); |
2545 | print_generic_expr (vect_dump, step, TDF_SLIM); |
2546 | } |
2547 | + |
2548 | + if (loop_vinfo) |
2549 | + { |
2550 | + LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true; |
2551 | + |
2552 | + if (vect_print_dump_info (REPORT_DETAILS)) |
2553 | + fprintf (vect_dump, "Data access with gaps requires scalar " |
2554 | + "epilogue loop"); |
2555 | + } |
2556 | + |
2557 | return true; |
2558 | } |
2559 | if (vect_print_dump_info (REPORT_DETAILS)) |
2560 | @@ -1531,6 +1541,7 @@ |
2561 | next = DR_GROUP_NEXT_DR (vinfo_for_stmt (next)); |
2562 | continue; |
2563 | } |
2564 | + |
2565 | prev = next; |
2566 | |
2567 | /* Check that all the accesses have the same STEP. */ |
2568 | @@ -1561,6 +1572,8 @@ |
2569 | gaps += diff - 1; |
2570 | } |
2571 | |
2572 | + last_accessed_element += diff; |
2573 | + |
2574 | /* Store the gap from the previous member of the group. If there is no |
2575 | gap in the access, DR_GROUP_GAP is always 1. */ |
2576 | DR_GROUP_GAP (vinfo_for_stmt (next)) = diff; |
2577 | @@ -1652,6 +1665,15 @@ |
2578 | VEC_safe_push (gimple, heap, BB_VINFO_STRIDED_STORES (bb_vinfo), |
2579 | stmt); |
2580 | } |
2581 | + |
2582 | + /* There is a gap in the end of the group. */ |
2583 | + if (stride - last_accessed_element > 0 && loop_vinfo) |
2584 | + { |
2585 | + LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true; |
2586 | + if (vect_print_dump_info (REPORT_DETAILS)) |
2587 | + fprintf (vect_dump, "Data access with gaps requires scalar " |
2588 | + "epilogue loop"); |
2589 | + } |
2590 | } |
2591 | |
2592 | return true; |
2593 | |
2594 | === modified file 'gcc/tree-vect-loop-manip.c' |
2595 | --- gcc/tree-vect-loop-manip.c 2010-01-19 16:05:57 +0000 |
2596 | +++ gcc/tree-vect-loop-manip.c 2011-07-01 09:39:45 +0000 |
2597 | @@ -1516,7 +1516,7 @@ |
2598 | edge pe; |
2599 | basic_block new_bb; |
2600 | gimple_seq stmts; |
2601 | - tree ni_name; |
2602 | + tree ni_name, ni_minus_gap_name; |
2603 | tree var; |
2604 | tree ratio_name; |
2605 | tree ratio_mult_vf_name; |
2606 | @@ -1533,9 +1533,39 @@ |
2607 | ni_name = vect_build_loop_niters (loop_vinfo, cond_expr_stmt_list); |
2608 | log_vf = build_int_cst (TREE_TYPE (ni), exact_log2 (vf)); |
2609 | |
2610 | + /* If epilogue loop is required because of data accesses with gaps, we |
2611 | + subtract one iteration from the total number of iterations here for |
2612 | + correct calculation of RATIO. */ |
2613 | + if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)) |
2614 | + { |
2615 | + ni_minus_gap_name = fold_build2 (MINUS_EXPR, TREE_TYPE (ni_name), |
2616 | + ni_name, |
2617 | + build_one_cst (TREE_TYPE (ni_name))); |
2618 | + if (!is_gimple_val (ni_minus_gap_name)) |
2619 | + { |
2620 | + var = create_tmp_var (TREE_TYPE (ni), "ni_gap"); |
2621 | + add_referenced_var (var); |
2622 | + |
2623 | + stmts = NULL; |
2624 | + ni_minus_gap_name = force_gimple_operand (ni_minus_gap_name, &stmts, |
2625 | + true, var); |
2626 | + if (cond_expr_stmt_list) |
2627 | + gimple_seq_add_seq (&cond_expr_stmt_list, stmts); |
2628 | + else |
2629 | + { |
2630 | + pe = loop_preheader_edge (loop); |
2631 | + new_bb = gsi_insert_seq_on_edge_immediate (pe, stmts); |
2632 | + gcc_assert (!new_bb); |
2633 | + } |
2634 | + } |
2635 | + } |
2636 | + else |
2637 | + ni_minus_gap_name = ni_name; |
2638 | + |
2639 | /* Create: ratio = ni >> log2(vf) */ |
2640 | |
2641 | - ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_name), ni_name, log_vf); |
2642 | + ratio_name = fold_build2 (RSHIFT_EXPR, TREE_TYPE (ni_minus_gap_name), |
2643 | + ni_minus_gap_name, log_vf); |
2644 | if (!is_gimple_val (ratio_name)) |
2645 | { |
2646 | var = create_tmp_var (TREE_TYPE (ni), "bnd"); |
2647 | |
2648 | === modified file 'gcc/tree-vect-loop.c' |
2649 | --- gcc/tree-vect-loop.c 2011-03-01 17:04:26 +0000 |
2650 | +++ gcc/tree-vect-loop.c 2011-07-01 09:39:45 +0000 |
2651 | @@ -711,6 +711,7 @@ |
2652 | LOOP_VINFO_STRIDED_STORES (res) = VEC_alloc (gimple, heap, 10); |
2653 | LOOP_VINFO_SLP_INSTANCES (res) = VEC_alloc (slp_instance, heap, 10); |
2654 | LOOP_VINFO_SLP_UNROLLING_FACTOR (res) = 1; |
2655 | + LOOP_VINFO_PEELING_FOR_GAPS (res) = false; |
2656 | |
2657 | return res; |
2658 | } |
2659 | @@ -2053,6 +2054,10 @@ |
2660 | peel_iters_prologue = niters < peel_iters_prologue ? |
2661 | niters : peel_iters_prologue; |
2662 | peel_iters_epilogue = (niters - peel_iters_prologue) % vf; |
2663 | + /* If we need to peel for gaps, but no peeling is required, we have |
2664 | + to peel VF iterations. */ |
2665 | + if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) && !peel_iters_epilogue) |
2666 | + peel_iters_epilogue = vf; |
2667 | } |
2668 | } |
2669 | |
2670 | @@ -4212,7 +4217,8 @@ |
2671 | do_peeling_for_loop_bound |
2672 | = (!LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) |
2673 | || (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo) |
2674 | - && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0)); |
2675 | + && LOOP_VINFO_INT_NITERS (loop_vinfo) % vectorization_factor != 0) |
2676 | + || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)); |
2677 | |
2678 | if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo) |
2679 | || LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo)) |
2680 | |
2681 | === modified file 'gcc/tree-vectorizer.h' |
2682 | --- gcc/tree-vectorizer.h 2010-11-02 12:12:56 +0000 |
2683 | +++ gcc/tree-vectorizer.h 2011-07-01 09:39:45 +0000 |
2684 | @@ -242,6 +242,12 @@ |
2685 | /* The unrolling factor needed to SLP the loop. In case of that pure SLP is |
2686 | applied to the loop, i.e., no unrolling is needed, this is 1. */ |
2687 | unsigned slp_unrolling_factor; |
2688 | + |
2689 | + /* When we have strided data accesses with gaps, we may introduce invalid |
2690 | + memory accesses. We peel the last iteration of the loop to prevent |
2691 | + this. */ |
2692 | + bool peeling_for_gaps; |
2693 | + |
2694 | } *loop_vec_info; |
2695 | |
2696 | /* Access Functions. */ |
2697 | @@ -266,6 +272,7 @@ |
2698 | #define LOOP_VINFO_STRIDED_STORES(L) (L)->strided_stores |
2699 | #define LOOP_VINFO_SLP_INSTANCES(L) (L)->slp_instances |
2700 | #define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor |
2701 | +#define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps |
2702 | |
2703 | #define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \ |
2704 | VEC_length (gimple, (L)->may_misalign_stmts) > 0 |
cbuild has taken a snapshot of this branch at r99519 and queued it for build.
The snapshot is available at: ex.seabright. co.nz/snapshots /gcc-linaro- 4.5+bzr99519~ ams-codesourcer y~merge- from-fsf- 20110701- 4.5.tar. xdelta3. xz
http://
and will be built on the following builders:
a9-builder armv5-builder i686 x86_64
You can track the build queue at: ex.seabright. co.nz/helpers/ scheduler
http://
cbuild-snapshot: gcc-linaro- 4.5+bzr99519~ ams-codesourcer y~merge- from-fsf- 20110701- 4.5
cbuild-ancestor: lp:gcc-linaro+bzr99518
cbuild-state: check