]> git.pld-linux.org Git - packages/gcc.git/blame - gcc-branch.diff
- update
[packages/gcc.git] / gcc-branch.diff
CommitLineData
7700e675
AM
1Index: configure
2===================================================================
c1bcd8d3
AM
3--- configure (.../tags/gcc_4_6_1_release) (wersja 176160)
4+++ configure (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
5@@ -2705,9 +2705,8 @@
6
7 # these libraries are built for the target environment, and are built after
8 # the host libraries and the host tools (which may be a cross compiler)
9-#
10+# Note that libiberty is not a target library.
11 target_libraries="target-libgcc \
12- target-libiberty \
13 target-libgloss \
14 target-newlib \
15 target-libgomp \
16@@ -3149,14 +3148,14 @@
17 ;;
18 *-*-kaos*)
19 # Remove unsupported stuff on all kaOS configurations.
20- skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx"
21+ skipdirs="${libgcj} target-libstdc++-v3 target-librx"
22 skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf"
23 skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib"
24 noconfigdirs="$noconfigdirs target-libgloss"
25 ;;
26 *-*-netbsd*)
27 # Skip some stuff on all NetBSD configurations.
28- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss"
29+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
30
31 # Skip some stuff that's unsupported on some NetBSD configurations.
32 case "${target}" in
33@@ -3168,21 +3167,20 @@
34 esac
35 ;;
36 *-*-netware*)
37- noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap"
38+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap"
39 ;;
40 *-*-rtems*)
41- skipdirs="${skipdirs} target-libiberty"
42 noconfigdirs="$noconfigdirs target-libgloss ${libgcj}"
43 ;;
44 # The tpf target doesn't support gdb yet.
45 *-*-tpf*)
46- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
47+ noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl"
48 ;;
49 *-*-uclinux*)
50 noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
51 ;;
52 *-*-vxworks*)
53- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}"
54+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}"
55 ;;
56 alpha*-dec-osf*)
57 # ld works, but does not support shared libraries.
58@@ -3210,7 +3208,7 @@
59 sh*-*-pe|mips*-*-pe|*arm-wince-pe)
60 noconfigdirs="$noconfigdirs ${libgcj}"
61 noconfigdirs="$noconfigdirs target-examples"
62- noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr"
63+ noconfigdirs="$noconfigdirs texinfo send-pr"
64 noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
65 noconfigdirs="$noconfigdirs expect dejagnu"
66 # the C++ libraries don't build on top of CE's C libraries
67@@ -3244,7 +3242,7 @@
68 libgloss_dir=arm
69 ;;
70 arm*-*-symbianelf*)
71- noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
72+ noconfigdirs="$noconfigdirs ${libgcj}"
73 libgloss_dir=arm
74 ;;
75 arm-*-pe*)
76@@ -3263,7 +3261,7 @@
77 noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}"
78 ;;
79 avr-*-*)
80- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp"
81+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp"
82 ;;
83 bfin-*-*)
84 unsupported_languages="$unsupported_languages java"
85@@ -3442,7 +3440,7 @@
86 noconfigdirs="$noconfigdirs ${libgcj}"
87 ;;
88 m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
89- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
90+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
91 libgloss_dir=m68hc11
92 ;;
93 m68k-*-elf*)
94@@ -3472,9 +3470,6 @@
95 mt-*-*)
96 noconfigdirs="$noconfigdirs sim"
97 ;;
98- picochip-*-*)
99- noconfigdirs="$noconfigdirs target-libiberty"
100- ;;
101 powerpc-*-aix*)
102 # copied from rs6000-*-* entry
103 noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}"
104@@ -3516,7 +3511,6 @@
105 noconfigdirs="$noconfigdirs gprof target-libssp ${libgcj}"
106 ;;
107 mips*-sde-elf*)
108- skipdirs="$skipdirs target-libiberty"
109 noconfigdirs="$noconfigdirs ${libgcj}"
110 if test x$with_newlib = xyes; then
111 noconfigdirs="$noconfigdirs gprof"
112@@ -3606,7 +3600,7 @@
113 noconfigdirs="$noconfigdirs ${libgcj}"
114 ;;
115 ip2k-*-*)
116- noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}"
117+ noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}"
118 ;;
119 *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
120 noconfigdirs="$noconfigdirs target-newlib target-libgloss"
121@@ -6585,27 +6579,6 @@
122 fi
123 done
124
125-# Sometimes the tools are distributed with libiberty but with no other
126-# libraries. In that case, we don't want to build target-libiberty.
127-# Don't let libgcc imply libiberty either.
128-if test -n "${target_configdirs}" ; then
129- libgcc=
130- others=
131- for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
132- if test "$i" = "libgcc"; then
133- libgcc=target-libgcc
134- elif test "$i" != "libiberty" ; then
135- if test -r $srcdir/$i/configure ; then
136- others=yes;
137- break;
138- fi
139- fi
140- done
141- if test -z "${others}" ; then
142- target_configdirs=$libgcc
143- fi
144-fi
145-
146 # Quietly strip out all directories which aren't configurable in this tree.
147 # This relies on all configurable subdirectories being autoconfiscated, which
148 # is now the case.
149Index: Makefile.in
150===================================================================
c1bcd8d3
AM
151--- Makefile.in (.../tags/gcc_4_6_1_release) (wersja 176160)
152+++ Makefile.in (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
153@@ -966,7 +966,6 @@
154 maybe-configure-target-libtermcap \
155 maybe-configure-target-winsup \
156 maybe-configure-target-libgloss \
157- maybe-configure-target-libiberty \
158 maybe-configure-target-gperf \
159 maybe-configure-target-examples \
160 maybe-configure-target-libffi \
161@@ -1150,7 +1149,6 @@
162 all-target: maybe-all-target-libtermcap
163 all-target: maybe-all-target-winsup
164 all-target: maybe-all-target-libgloss
165-all-target: maybe-all-target-libiberty
166 all-target: maybe-all-target-gperf
167 all-target: maybe-all-target-examples
168 all-target: maybe-all-target-libffi
169@@ -1273,7 +1271,6 @@
170 info-target: maybe-info-target-libtermcap
171 info-target: maybe-info-target-winsup
172 info-target: maybe-info-target-libgloss
173-info-target: maybe-info-target-libiberty
174 info-target: maybe-info-target-gperf
175 info-target: maybe-info-target-examples
176 info-target: maybe-info-target-libffi
177@@ -1389,7 +1386,6 @@
178 dvi-target: maybe-dvi-target-libtermcap
179 dvi-target: maybe-dvi-target-winsup
180 dvi-target: maybe-dvi-target-libgloss
181-dvi-target: maybe-dvi-target-libiberty
182 dvi-target: maybe-dvi-target-gperf
183 dvi-target: maybe-dvi-target-examples
184 dvi-target: maybe-dvi-target-libffi
185@@ -1505,7 +1501,6 @@
186 pdf-target: maybe-pdf-target-libtermcap
187 pdf-target: maybe-pdf-target-winsup
188 pdf-target: maybe-pdf-target-libgloss
189-pdf-target: maybe-pdf-target-libiberty
190 pdf-target: maybe-pdf-target-gperf
191 pdf-target: maybe-pdf-target-examples
192 pdf-target: maybe-pdf-target-libffi
193@@ -1621,7 +1616,6 @@
194 html-target: maybe-html-target-libtermcap
195 html-target: maybe-html-target-winsup
196 html-target: maybe-html-target-libgloss
197-html-target: maybe-html-target-libiberty
198 html-target: maybe-html-target-gperf
199 html-target: maybe-html-target-examples
200 html-target: maybe-html-target-libffi
201@@ -1737,7 +1731,6 @@
202 TAGS-target: maybe-TAGS-target-libtermcap
203 TAGS-target: maybe-TAGS-target-winsup
204 TAGS-target: maybe-TAGS-target-libgloss
205-TAGS-target: maybe-TAGS-target-libiberty
206 TAGS-target: maybe-TAGS-target-gperf
207 TAGS-target: maybe-TAGS-target-examples
208 TAGS-target: maybe-TAGS-target-libffi
209@@ -1853,7 +1846,6 @@
210 install-info-target: maybe-install-info-target-libtermcap
211 install-info-target: maybe-install-info-target-winsup
212 install-info-target: maybe-install-info-target-libgloss
213-install-info-target: maybe-install-info-target-libiberty
214 install-info-target: maybe-install-info-target-gperf
215 install-info-target: maybe-install-info-target-examples
216 install-info-target: maybe-install-info-target-libffi
217@@ -1969,7 +1961,6 @@
218 install-pdf-target: maybe-install-pdf-target-libtermcap
219 install-pdf-target: maybe-install-pdf-target-winsup
220 install-pdf-target: maybe-install-pdf-target-libgloss
221-install-pdf-target: maybe-install-pdf-target-libiberty
222 install-pdf-target: maybe-install-pdf-target-gperf
223 install-pdf-target: maybe-install-pdf-target-examples
224 install-pdf-target: maybe-install-pdf-target-libffi
225@@ -2085,7 +2076,6 @@
226 install-html-target: maybe-install-html-target-libtermcap
227 install-html-target: maybe-install-html-target-winsup
228 install-html-target: maybe-install-html-target-libgloss
229-install-html-target: maybe-install-html-target-libiberty
230 install-html-target: maybe-install-html-target-gperf
231 install-html-target: maybe-install-html-target-examples
232 install-html-target: maybe-install-html-target-libffi
233@@ -2201,7 +2191,6 @@
234 installcheck-target: maybe-installcheck-target-libtermcap
235 installcheck-target: maybe-installcheck-target-winsup
236 installcheck-target: maybe-installcheck-target-libgloss
237-installcheck-target: maybe-installcheck-target-libiberty
238 installcheck-target: maybe-installcheck-target-gperf
239 installcheck-target: maybe-installcheck-target-examples
240 installcheck-target: maybe-installcheck-target-libffi
241@@ -2317,7 +2306,6 @@
242 mostlyclean-target: maybe-mostlyclean-target-libtermcap
243 mostlyclean-target: maybe-mostlyclean-target-winsup
244 mostlyclean-target: maybe-mostlyclean-target-libgloss
245-mostlyclean-target: maybe-mostlyclean-target-libiberty
246 mostlyclean-target: maybe-mostlyclean-target-gperf
247 mostlyclean-target: maybe-mostlyclean-target-examples
248 mostlyclean-target: maybe-mostlyclean-target-libffi
249@@ -2433,7 +2421,6 @@
250 clean-target: maybe-clean-target-libtermcap
251 clean-target: maybe-clean-target-winsup
252 clean-target: maybe-clean-target-libgloss
253-clean-target: maybe-clean-target-libiberty
254 clean-target: maybe-clean-target-gperf
255 clean-target: maybe-clean-target-examples
256 clean-target: maybe-clean-target-libffi
257@@ -2549,7 +2536,6 @@
258 distclean-target: maybe-distclean-target-libtermcap
259 distclean-target: maybe-distclean-target-winsup
260 distclean-target: maybe-distclean-target-libgloss
261-distclean-target: maybe-distclean-target-libiberty
262 distclean-target: maybe-distclean-target-gperf
263 distclean-target: maybe-distclean-target-examples
264 distclean-target: maybe-distclean-target-libffi
265@@ -2665,7 +2651,6 @@
266 maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
267 maintainer-clean-target: maybe-maintainer-clean-target-winsup
268 maintainer-clean-target: maybe-maintainer-clean-target-libgloss
269-maintainer-clean-target: maybe-maintainer-clean-target-libiberty
270 maintainer-clean-target: maybe-maintainer-clean-target-gperf
271 maintainer-clean-target: maybe-maintainer-clean-target-examples
272 maintainer-clean-target: maybe-maintainer-clean-target-libffi
273@@ -2836,7 +2821,6 @@
274 maybe-check-target-libtermcap \
275 maybe-check-target-winsup \
276 maybe-check-target-libgloss \
277- maybe-check-target-libiberty \
278 maybe-check-target-gperf \
279 maybe-check-target-examples \
280 maybe-check-target-libffi \
281@@ -3059,7 +3043,6 @@
282 maybe-install-target-libtermcap \
283 maybe-install-target-winsup \
284 maybe-install-target-libgloss \
285- maybe-install-target-libiberty \
286 maybe-install-target-gperf \
287 maybe-install-target-examples \
288 maybe-install-target-libffi \
289@@ -3194,7 +3177,6 @@
290 maybe-install-strip-target-libtermcap \
291 maybe-install-strip-target-winsup \
292 maybe-install-strip-target-libgloss \
293- maybe-install-strip-target-libiberty \
294 maybe-install-strip-target-gperf \
295 maybe-install-strip-target-examples \
296 maybe-install-strip-target-libffi \
297@@ -52579,463 +52561,6 @@
298
299
300
301-.PHONY: configure-target-libiberty maybe-configure-target-libiberty
302-maybe-configure-target-libiberty:
303-@if gcc-bootstrap
304-configure-target-libiberty: stage_current
305-@endif gcc-bootstrap
306-@if target-libiberty
307-maybe-configure-target-libiberty: configure-target-libiberty
308-configure-target-libiberty:
309- @: $(MAKE); $(unstage)
310- @r=`${PWD_COMMAND}`; export r; \
311- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
312- echo "Checking multilib configuration for libiberty..."; \
313- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
314- $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \
315- if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \
316- if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \
317- rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \
318- else \
319- rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \
320- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
321- fi; \
322- else \
323- mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
324- fi; \
325- test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \
326- $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
327- $(NORMAL_TARGET_EXPORTS) \
328- echo Configuring in $(TARGET_SUBDIR)/libiberty; \
329- cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \
330- case $(srcdir) in \
331- /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
332- *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \
333- sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
334- esac; \
335- srcdiroption="--srcdir=$${topdir}/libiberty"; \
336- libsrcdir="$$s/libiberty"; \
337- rm -f no-such-file || : ; \
338- CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
339- $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
340- --target=${target_alias} $${srcdiroption} \
341- || exit 1
342-@endif target-libiberty
343-
344-
345-
346-
347-
348-.PHONY: all-target-libiberty maybe-all-target-libiberty
349-maybe-all-target-libiberty:
350-@if gcc-bootstrap
351-all-target-libiberty: stage_current
352-@endif gcc-bootstrap
353-@if target-libiberty
354-TARGET-target-libiberty=all
355-maybe-all-target-libiberty: all-target-libiberty
356-all-target-libiberty: configure-target-libiberty
357- @: $(MAKE); $(unstage)
358- @r=`${PWD_COMMAND}`; export r; \
359- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
360- $(NORMAL_TARGET_EXPORTS) \
361- (cd $(TARGET_SUBDIR)/libiberty && \
362- $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \
363- $(TARGET-target-libiberty))
364-@endif target-libiberty
365-
366-
367-
368-
369-
370-.PHONY: check-target-libiberty maybe-check-target-libiberty
371-maybe-check-target-libiberty:
372-@if target-libiberty
373-maybe-check-target-libiberty: check-target-libiberty
374-
375-check-target-libiberty:
376- @: $(MAKE); $(unstage)
377- @r=`${PWD_COMMAND}`; export r; \
378- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
379- $(NORMAL_TARGET_EXPORTS) \
380- (cd $(TARGET_SUBDIR)/libiberty && \
381- $(MAKE) $(TARGET_FLAGS_TO_PASS) check)
382-
383-@endif target-libiberty
384-
385-.PHONY: install-target-libiberty maybe-install-target-libiberty
386-maybe-install-target-libiberty:
387-@if target-libiberty
388-maybe-install-target-libiberty: install-target-libiberty
389-
390-install-target-libiberty: installdirs
391- @: $(MAKE); $(unstage)
392- @r=`${PWD_COMMAND}`; export r; \
393- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
394- $(NORMAL_TARGET_EXPORTS) \
395- (cd $(TARGET_SUBDIR)/libiberty && \
396- $(MAKE) $(TARGET_FLAGS_TO_PASS) install)
397-
398-@endif target-libiberty
399-
400-.PHONY: install-strip-target-libiberty maybe-install-strip-target-libiberty
401-maybe-install-strip-target-libiberty:
402-@if target-libiberty
403-maybe-install-strip-target-libiberty: install-strip-target-libiberty
404-
405-install-strip-target-libiberty: installdirs
406- @: $(MAKE); $(unstage)
407- @r=`${PWD_COMMAND}`; export r; \
408- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
409- $(NORMAL_TARGET_EXPORTS) \
410- (cd $(TARGET_SUBDIR)/libiberty && \
411- $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip)
412-
413-@endif target-libiberty
414-
415-# Other targets (info, dvi, pdf, etc.)
416-
417-.PHONY: maybe-info-target-libiberty info-target-libiberty
418-maybe-info-target-libiberty:
419-@if target-libiberty
420-maybe-info-target-libiberty: info-target-libiberty
421-
422-info-target-libiberty: \
423- configure-target-libiberty
424- @: $(MAKE); $(unstage)
425- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
426- r=`${PWD_COMMAND}`; export r; \
427- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
428- $(NORMAL_TARGET_EXPORTS) \
429- echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \
430- for flag in $(EXTRA_TARGET_FLAGS); do \
431- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
432- done; \
433- (cd $(TARGET_SUBDIR)/libiberty && \
434- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
435- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
436- "RANLIB=$${RANLIB}" \
437- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
438- info) \
439- || exit 1
440-
441-@endif target-libiberty
442-
443-.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty
444-maybe-dvi-target-libiberty:
445-@if target-libiberty
446-maybe-dvi-target-libiberty: dvi-target-libiberty
447-
448-dvi-target-libiberty: \
449- configure-target-libiberty
450- @: $(MAKE); $(unstage)
451- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
452- r=`${PWD_COMMAND}`; export r; \
453- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
454- $(NORMAL_TARGET_EXPORTS) \
455- echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \
456- for flag in $(EXTRA_TARGET_FLAGS); do \
457- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
458- done; \
459- (cd $(TARGET_SUBDIR)/libiberty && \
460- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
461- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
462- "RANLIB=$${RANLIB}" \
463- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
464- dvi) \
465- || exit 1
466-
467-@endif target-libiberty
468-
469-.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty
470-maybe-pdf-target-libiberty:
471-@if target-libiberty
472-maybe-pdf-target-libiberty: pdf-target-libiberty
473-
474-pdf-target-libiberty: \
475- configure-target-libiberty
476- @: $(MAKE); $(unstage)
477- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
478- r=`${PWD_COMMAND}`; export r; \
479- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
480- $(NORMAL_TARGET_EXPORTS) \
481- echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \
482- for flag in $(EXTRA_TARGET_FLAGS); do \
483- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
484- done; \
485- (cd $(TARGET_SUBDIR)/libiberty && \
486- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
487- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
488- "RANLIB=$${RANLIB}" \
489- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
490- pdf) \
491- || exit 1
492-
493-@endif target-libiberty
494-
495-.PHONY: maybe-html-target-libiberty html-target-libiberty
496-maybe-html-target-libiberty:
497-@if target-libiberty
498-maybe-html-target-libiberty: html-target-libiberty
499-
500-html-target-libiberty: \
501- configure-target-libiberty
502- @: $(MAKE); $(unstage)
503- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
504- r=`${PWD_COMMAND}`; export r; \
505- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
506- $(NORMAL_TARGET_EXPORTS) \
507- echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \
508- for flag in $(EXTRA_TARGET_FLAGS); do \
509- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
510- done; \
511- (cd $(TARGET_SUBDIR)/libiberty && \
512- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
513- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
514- "RANLIB=$${RANLIB}" \
515- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
516- html) \
517- || exit 1
518-
519-@endif target-libiberty
520-
521-.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty
522-maybe-TAGS-target-libiberty:
523-@if target-libiberty
524-maybe-TAGS-target-libiberty: TAGS-target-libiberty
525-
526-TAGS-target-libiberty: \
527- configure-target-libiberty
528- @: $(MAKE); $(unstage)
529- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
530- r=`${PWD_COMMAND}`; export r; \
531- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
532- $(NORMAL_TARGET_EXPORTS) \
533- echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \
534- for flag in $(EXTRA_TARGET_FLAGS); do \
535- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
536- done; \
537- (cd $(TARGET_SUBDIR)/libiberty && \
538- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
539- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
540- "RANLIB=$${RANLIB}" \
541- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
542- TAGS) \
543- || exit 1
544-
545-@endif target-libiberty
546-
547-.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty
548-maybe-install-info-target-libiberty:
549-@if target-libiberty
550-maybe-install-info-target-libiberty: install-info-target-libiberty
551-
552-install-info-target-libiberty: \
553- configure-target-libiberty \
554- info-target-libiberty
555- @: $(MAKE); $(unstage)
556- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
557- r=`${PWD_COMMAND}`; export r; \
558- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
559- $(NORMAL_TARGET_EXPORTS) \
560- echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \
561- for flag in $(EXTRA_TARGET_FLAGS); do \
562- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
563- done; \
564- (cd $(TARGET_SUBDIR)/libiberty && \
565- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
566- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
567- "RANLIB=$${RANLIB}" \
568- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
569- install-info) \
570- || exit 1
571-
572-@endif target-libiberty
573-
574-.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty
575-maybe-install-pdf-target-libiberty:
576-@if target-libiberty
577-maybe-install-pdf-target-libiberty: install-pdf-target-libiberty
578-
579-install-pdf-target-libiberty: \
580- configure-target-libiberty \
581- pdf-target-libiberty
582- @: $(MAKE); $(unstage)
583- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
584- r=`${PWD_COMMAND}`; export r; \
585- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
586- $(NORMAL_TARGET_EXPORTS) \
587- echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \
588- for flag in $(EXTRA_TARGET_FLAGS); do \
589- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
590- done; \
591- (cd $(TARGET_SUBDIR)/libiberty && \
592- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
593- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
594- "RANLIB=$${RANLIB}" \
595- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
596- install-pdf) \
597- || exit 1
598-
599-@endif target-libiberty
600-
601-.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty
602-maybe-install-html-target-libiberty:
603-@if target-libiberty
604-maybe-install-html-target-libiberty: install-html-target-libiberty
605-
606-install-html-target-libiberty: \
607- configure-target-libiberty \
608- html-target-libiberty
609- @: $(MAKE); $(unstage)
610- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
611- r=`${PWD_COMMAND}`; export r; \
612- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
613- $(NORMAL_TARGET_EXPORTS) \
614- echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \
615- for flag in $(EXTRA_TARGET_FLAGS); do \
616- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
617- done; \
618- (cd $(TARGET_SUBDIR)/libiberty && \
619- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
620- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
621- "RANLIB=$${RANLIB}" \
622- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
623- install-html) \
624- || exit 1
625-
626-@endif target-libiberty
627-
628-.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty
629-maybe-installcheck-target-libiberty:
630-@if target-libiberty
631-maybe-installcheck-target-libiberty: installcheck-target-libiberty
632-
633-installcheck-target-libiberty: \
634- configure-target-libiberty
635- @: $(MAKE); $(unstage)
636- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
637- r=`${PWD_COMMAND}`; export r; \
638- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
639- $(NORMAL_TARGET_EXPORTS) \
640- echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \
641- for flag in $(EXTRA_TARGET_FLAGS); do \
642- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
643- done; \
644- (cd $(TARGET_SUBDIR)/libiberty && \
645- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
646- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
647- "RANLIB=$${RANLIB}" \
648- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
649- installcheck) \
650- || exit 1
651-
652-@endif target-libiberty
653-
654-.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty
655-maybe-mostlyclean-target-libiberty:
656-@if target-libiberty
657-maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty
658-
659-mostlyclean-target-libiberty:
660- @: $(MAKE); $(unstage)
661- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
662- r=`${PWD_COMMAND}`; export r; \
663- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
664- $(NORMAL_TARGET_EXPORTS) \
665- echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \
666- for flag in $(EXTRA_TARGET_FLAGS); do \
667- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
668- done; \
669- (cd $(TARGET_SUBDIR)/libiberty && \
670- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
671- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
672- "RANLIB=$${RANLIB}" \
673- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
674- mostlyclean) \
675- || exit 1
676-
677-@endif target-libiberty
678-
679-.PHONY: maybe-clean-target-libiberty clean-target-libiberty
680-maybe-clean-target-libiberty:
681-@if target-libiberty
682-maybe-clean-target-libiberty: clean-target-libiberty
683-
684-clean-target-libiberty:
685- @: $(MAKE); $(unstage)
686- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
687- r=`${PWD_COMMAND}`; export r; \
688- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
689- $(NORMAL_TARGET_EXPORTS) \
690- echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \
691- for flag in $(EXTRA_TARGET_FLAGS); do \
692- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
693- done; \
694- (cd $(TARGET_SUBDIR)/libiberty && \
695- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
696- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
697- "RANLIB=$${RANLIB}" \
698- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
699- clean) \
700- || exit 1
701-
702-@endif target-libiberty
703-
704-.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty
705-maybe-distclean-target-libiberty:
706-@if target-libiberty
707-maybe-distclean-target-libiberty: distclean-target-libiberty
708-
709-distclean-target-libiberty:
710- @: $(MAKE); $(unstage)
711- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
712- r=`${PWD_COMMAND}`; export r; \
713- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
714- $(NORMAL_TARGET_EXPORTS) \
715- echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \
716- for flag in $(EXTRA_TARGET_FLAGS); do \
717- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
718- done; \
719- (cd $(TARGET_SUBDIR)/libiberty && \
720- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
721- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
722- "RANLIB=$${RANLIB}" \
723- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
724- distclean) \
725- || exit 1
726-
727-@endif target-libiberty
728-
729-.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty
730-maybe-maintainer-clean-target-libiberty:
731-@if target-libiberty
732-maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty
733-
734-maintainer-clean-target-libiberty:
735- @: $(MAKE); $(unstage)
736- @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
737- r=`${PWD_COMMAND}`; export r; \
738- s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
739- $(NORMAL_TARGET_EXPORTS) \
740- echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \
741- for flag in $(EXTRA_TARGET_FLAGS); do \
742- eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
743- done; \
744- (cd $(TARGET_SUBDIR)/libiberty && \
745- $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
746- "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
747- "RANLIB=$${RANLIB}" \
748- "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
749- maintainer-clean) \
750- || exit 1
751-
752-@endif target-libiberty
753-
754-
755-
756-
757-
758 .PHONY: configure-target-gperf maybe-configure-target-gperf
759 maybe-configure-target-gperf:
760 @if gcc-bootstrap
761@@ -60187,7 +59712,6 @@
762 configure-target-libtermcap: stage_last
763 configure-target-winsup: stage_last
764 configure-target-libgloss: stage_last
765-configure-target-libiberty: stage_last
766 configure-target-gperf: stage_last
767 configure-target-examples: stage_last
768 configure-target-libffi: stage_last
769@@ -60218,7 +59742,6 @@
770 configure-target-libtermcap: maybe-all-gcc
771 configure-target-winsup: maybe-all-gcc
772 configure-target-libgloss: maybe-all-gcc
773-configure-target-libiberty: maybe-all-gcc
774 configure-target-gperf: maybe-all-gcc
775 configure-target-examples: maybe-all-gcc
776 configure-target-libffi: maybe-all-gcc
777@@ -60987,7 +60510,6 @@
778 configure-target-boehm-gc: maybe-all-target-libstdc++-v3
779 configure-target-fastjar: maybe-configure-target-zlib
780 all-target-fastjar: maybe-all-target-zlib
781-all-target-fastjar: maybe-all-target-libiberty
782 configure-target-libgo: maybe-configure-target-libffi
783 configure-target-libgo: maybe-all-target-libstdc++-v3
784 all-target-libgo: maybe-all-target-libffi
785@@ -61001,9 +60523,7 @@
786 all-target-libjava: maybe-all-target-qthreads
787 all-target-libjava: maybe-all-target-libffi
788 configure-target-libobjc: maybe-configure-target-boehm-gc
789-all-target-libobjc: maybe-all-target-libiberty
790 all-target-libobjc: maybe-all-target-boehm-gc
791-all-target-libstdc++-v3: maybe-all-target-libiberty
792 configure-target-libstdc++-v3: maybe-configure-target-libgomp
793
794 configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
795@@ -61021,10 +60541,7 @@
796 all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
797 all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
798 all-target-libgloss: maybe-all-target-newlib
799-all-target-winsup: maybe-all-target-libiberty
800 all-target-winsup: maybe-all-target-libtermcap
801-configure-target-libiberty: maybe-all-binutils
802-configure-target-libiberty: maybe-all-ld
803 configure-target-newlib: maybe-all-binutils
804 configure-target-newlib: maybe-all-ld
805 configure-target-libgfortran: maybe-all-target-libquadmath
806@@ -61062,7 +60579,6 @@
807 configure-target-libtermcap: maybe-all-target-libgcc
808 configure-target-winsup: maybe-all-target-libgcc
809 configure-target-libgloss: maybe-all-target-libgcc
810-configure-target-libiberty: maybe-all-target-libgcc
811 configure-target-gperf: maybe-all-target-libgcc
812 configure-target-examples: maybe-all-target-libgcc
813 configure-target-libffi: maybe-all-target-libgcc
814@@ -61097,7 +60613,6 @@
815 configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss
816
817
818-
819 configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss
820 configure-target-gperf: maybe-all-target-libstdc++-v3
821
822Index: gcc/doc/invoke.texi
823===================================================================
c1bcd8d3
AM
824--- gcc/doc/invoke.texi (.../tags/gcc_4_6_1_release) (wersja 176160)
825+++ gcc/doc/invoke.texi (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
826@@ -611,7 +611,8 @@
827 -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol
828 -mcmodel=@var{code-model} -mabi=@var{name} @gol
829 -m32 -m64 -mlarge-data-threshold=@var{num} @gol
830--msse2avx -mfentry -m8bit-idiv}
831+-msse2avx -mfentry -m8bit-idiv @gol
832+-mavx256-split-unaligned-load -mavx256-split-unaligned-store}
833
834 @emph{i386 and x86-64 Windows Options}
835 @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll
836@@ -12769,6 +12770,12 @@
837 to 255, 8bit unsigned integer divide will be used instead of
838 32bit/64bit integer divide.
839
840+@item -mavx256-split-unaligned-load
841+@item -mavx256-split-unaligned-store
842+@opindex avx256-split-unaligned-load
843+@opindex avx256-split-unaligned-store
844+Split 32-byte AVX unaligned load and store.
845+
846 @end table
847
848 These @samp{-m} switches are supported in addition to the above
849Index: gcc/DATESTAMP
850===================================================================
c1bcd8d3
AM
851--- gcc/DATESTAMP (.../tags/gcc_4_6_1_release) (wersja 176160)
852+++ gcc/DATESTAMP (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
853@@ -1 +1 @@
854-20110627
c1bcd8d3 855+20110711
cd666b14 856Index: gcc/reorg.c
5052c277 857===================================================================
c1bcd8d3
AM
858--- gcc/reorg.c (.../tags/gcc_4_6_1_release) (wersja 176160)
859+++ gcc/reorg.c (.../branches/gcc-4_6-branch) (wersja 176160)
cd666b14
AM
860@@ -2152,7 +2152,7 @@
861 /* This must be an INSN or CALL_INSN. */
862 pat = PATTERN (trial);
5052c277 863
cd666b14
AM
864- /* USE and CLOBBER at this level was just for flow; ignore it. */
865+ /* Stand-alone USE and CLOBBER are just for flow. */
866 if (GET_CODE (pat) == USE || GET_CODE (pat) == CLOBBER)
867 continue;
5052c277 868
cd666b14
AM
869@@ -2271,15 +2271,12 @@
870 }
5052c277 871
cd666b14
AM
872 if (target == 0)
873- for (trial = next_nonnote_insn (insn); trial; trial = next_trial)
874+ for (trial = next_nonnote_insn (insn); !stop_search_p (trial, 1);
875+ trial = next_trial)
876 {
877 next_trial = next_nonnote_insn (trial);
5052c277 878
cd666b14
AM
879- if (LABEL_P (trial)
880- || BARRIER_P (trial))
881- break;
882-
883- /* We must have an INSN, JUMP_INSN, or CALL_INSN. */
884+ /* This must be an INSN or CALL_INSN. */
885 pat = PATTERN (trial);
5052c277 886
cd666b14
AM
887 /* Stand-alone USE and CLOBBER are just for flow. */
888@@ -2293,7 +2290,7 @@
889 else
890 trial_delay = trial;
5052c277 891
cd666b14
AM
892- /* Stop our search when seeing an unconditional jump. */
893+ /* Stop our search when seeing a jump. */
894 if (JUMP_P (trial_delay))
895 break;
5052c277 896
cd666b14 897Index: gcc/DEV-PHASE
5052c277 898===================================================================
c1bcd8d3
AM
899--- gcc/DEV-PHASE (.../tags/gcc_4_6_1_release) (wersja 176160)
900+++ gcc/DEV-PHASE (.../branches/gcc-4_6-branch) (wersja 176160)
cd666b14
AM
901@@ -0,0 +1 @@
902+prerelease
903Index: gcc/ChangeLog
ef2100e1 904===================================================================
c1bcd8d3
AM
905--- gcc/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 176160)
906+++ gcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 176160)
907@@ -1,3 +1,282 @@
908+2011-07-11 Georg-Johann Lay <avr@gjlay.de>
909+
910+ PR target/39633
911+ Backport from mainline r176141
912+ 2011-07-11 Georg-Johann Lay
913+ * config/avr/avr.c (notice_update_cc): For ashiftrt:QI, only
914+ offsets 1..5 set cc0 in a usable way.
915+
916+2011-07-08 Jakub Jelinek <jakub@redhat.com>
917+
918+ PR target/49621
919+ * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Use
920+ CONST0_RTX (dest_mode) instead of const0_rtx as second operand
921+ of NE.
922+ * config/rs6000/vector.md (vector_select_<mode>,
923+ vector_select_<mode>_uns): Change second operand of NE to
924+ CONST0_RTX (<MODE>mode) instead of const0_rtx.
925+ * config/rs6000/altivec.md (*altivec_vsel<mode>,
926+ *altivec_vsel<mode>_uns): Expect second operand of NE to be
927+ zero_constant of the corresponding vector mode.
928+ * config/rs6000/vsx.md (*vsx_xxsel<mode>, *vsx_xxsel<mode>_uns):
929+ Likewise.
930+
931+2011-07-08 Georg-Johann Lay <avr@gjlay.de>
932+
933+ PR target/46779
934+ Backport from mainline SVN 176053.
935+ 2011-07-08 Georg-Johann Lay <avr@gjlay.de>
936+ * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
937+ In particular, allow 8-bit values in r28 and r29.
938+ (avr_hard_regno_scratch_ok): Disallow any register that might be
939+ part of the frame pointer.
940+ (avr_hard_regno_rename_ok): Same.
941+ (avr_legitimate_address_p): Don't allow SUBREGs.
942+
943+2011-07-07 Eric Botcazou <ebotcazou@adacore.com>
944+
945+ PR target/49660
946+ * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add
947+ MASK_V8PLUS, remove commented out flag and reorder.
948+
949+ Backport from mainline
950+ 2011-06-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
951+
952+ * config/sparc/sol2-64.h (TARGET_DEFAULT): Remove.
953+ (TARGET_64BIT_DEFAULT): Define.
954+ * config.gcc (sparc*-*-solaris2*): Move sparc/sol2-64.h to front
955+ of tm_file.
956+ * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Define.
957+
958+2011-07-07 Jakub Jelinek <jakub@redhat.com>
959+
960+ PR c/49644
961+ * c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
962+ one non-complex and one complex argument, call c_save_expr on both
963+ operands.
964+
965+ PR debug/49522
966+ * df-problems.c (dead_debug_reset): Remove dead_debug_uses
967+ referencing debug insns that have been reset.
968+ (dead_debug_insert_before): Don't assert reg is non-NULL,
969+ instead return immediately if it is NULL.
970+
971+ PR middle-end/49640
972+ * gimplify.c (gimplify_compound_lval): For last 2 ARRAY_*REF
973+ operands and last COMPONENT_REF operand call gimplify_expr on it
974+ if non-NULL.
975+
7700e675
AM
976+2011-07-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
977+
978+ Backport from mainline.
979+ 2011-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
980+
981+ PR target/49335
982+ * config/arm/predicates.md (add_operator): New.
983+ * config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage
984+ in Thumb2.
985+
986+2011-07-05 Jakub Jelinek <jakub@redhat.com>
987+
988+ PR tree-optimization/49618
989+ * tree-eh.c (tree_could_trap_p) <case FUNCTION_DECL, case VAR_DECL>:
990+ For DECL_WEAK decls return true.
991+
992+2011-07-04 Jakub Jelinek <jakub@redhat.com>
993+
994+ PR rtl-optimization/49619
995+ * combine.c (combine_simplify_rtx): In PLUS -> IOR simplification
996+ pass VOIDmode as op0_mode to recursive call.
997+
998+ PR rtl-optimization/49472
999+ * simplify-rtx.c (simplify_unary_operation_1) <case NEG>: When
1000+ negating MULT, negate the second operand instead of first.
1001+ (simplify_binary_operation_1) <case MULT>: If one operand is
1002+ a NEG and the other is MULT, don't attempt to optimize by
1003+ negation of the MULT operand if it only moves the NEG operation
1004+ around.
1005+
1006+ Backported from mainline
1007+ 2011-06-06 Jakub Jelinek <jakub@redhat.com>
1008+
1009+ PR debug/49262
1010+ * dwarf2out.c (native_encode_initializer): Decrement count in each
1011+ iteration.
1012+
1013+2011-07-04 Georg-Johann Lay <avr@gjlay.de>
1014+
1015+ Backport from mainline
1016+ 2011-07-04 Georg-Johann Lay <avr@gjlay.de>
1017+
1018+ PR target/44643
1019+ * config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY
1020+ instead of TREE_READONLY.
1021+
1022+2011-07-04 Richard Guenther <rguenther@suse.de>
1023+
1024+ PR tree-optimization/49615
1025+ * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Fix
1026+ basic-block index check.
1027+
1028+2011-06-30 Eric Botcazou <ebotcazou@adacore.com>
1029+
1030+ PR tree-optimization/49572
1031+ * tree-ssa-dom.c (initialize_hash_element) <GIMPLE_SINGLE_RHS>: Use the
1032+ type of the RHS instead of that of the LHS for the expression type.
1033+
1034+2011-06-30 Georg-Johann Lay <avr@gjlay.de>
1035+
1036+ Backport from mainline
1037+ PR target/34734
1038+ (avr_section_type_flags): For data in ".progmem.data", remove
1039+ section flag SECTION_WRITE.
1040+
1041+2011-06-30 Georg-Johann Lay <avr@gjlay.de>
1042+
1043+ Backport from mainline
1044+ PR target/34734
1045+ * config/avr/avr.c (avr_handle_progmem_attribute): Move warning
1046+ about uninitialized data attributed 'progmem' from here...
1047+ (avr_encode_section_info): ...to this new function.
1048+ (TARGET_ENCODE_SECTION_INFO): New define.
1049+
1050+2011-06-29 Changpeng Fang <changpeng.fang@amd.com>
1051+
1052+ Backport from mainline
1053+ 2011-06-29 Changpeng Fang <changpeng.fang@amd.com>
1054+
1055+ * config/i386/i386.opt (mprefer-avx128): Redefine the flag as a Mask
1056+ option.
1057+ * config/i386/i386.h (ix86_tune_indices): Add X86_TUNE_AVX128_OPTIMAL
1058+ entry.
1059+ (TARGET_AVX128_OPTIMAL): New definition.
1060+ * config/i386/i386.c (initial_ix86_tune_features): Initialize
1061+ X86_TUNE_AVX128_OPTIMAL entry.
1062+ (ix86_option_override_internal): Enable the generation
1063+ of the 128-bit instructions when TARGET_AVX128_OPTIMAL is set.
1064+ (ix86_preferred_simd_mode): Use TARGET_PREFER_AVX128.
1065+ (ix86_autovectorize_vector_sizes): Use TARGET_PREFER_AVX128.
1066+
1067+2011-06-29 Harsha Jagasia <harsha.jagasia@amd.com>
1068+
1069+ Backport from mainline
1070+ 2011-05-31 Alexandre Oliva <aoliva@redhat.com>
1071+
1072+ * config/i386/i386.c (ix86_rtx_costs): Drop NEG from sub for FMA.
1073+ * config/i386/sse.md: Add n to negated FMA pattern names.
1074+
1075+2011-06-29 Eric Botcazou <ebotcazou@adacore.com>
1076+
1077+ PR tree-optimization/49539
1078+ * tree-ssa-forwprop.c (can_propagate_from): Check for abnormal SSA
1079+ names by means of stmt_references_abnormal_ssa_name.
1080+ (associate_plusminus): Call can_propagate_from before propagating
1081+ from definition statements.
1082+
1083+2011-06-29 Martin Jambor <mjambor@suse.cz>
1084+
1085+ Backport from mainline
1086+ 2011-06-24 Martin Jambor <mjambor@suse.cz>
1087+
1088+ PR tree-optimizations/49516
1089+ * tree-sra.c (sra_modify_assign): Choose the safe path for
1090+ aggregate copies if we also did scalar replacements.
1091+
1092+2011-06-28 Changpeng Fang <changpeng.fang@amd.com>
1093+
1094+ Backport from mainline
1095+ 2011-06-20 Changpeng Fang <changpeng.fang@amd.com>
1096+
1097+ PR target/49089
1098+ * config/i386/i386.c (avx256_split_unaligned_load): New definition.
1099+ (avx256_split_unaligned_store): New definition.
1100+ (ix86_option_override_internal): Enable avx256 unaligned load/store
1101+ splitting only when avx256_split_unaligned_load/store is set.
1102+
1103+2011-06-28 Changpeng Fang <changpeng.fang@amd.com>
1104+
1105+ Backport from mainline
1106+ 2011-03-28 H.J. Lu <hongjiu.lu@intel.com>
1107+
1108+ * config/i386/i386.c (flag_opts): Fix a typo in
1109+ -mavx256-split-unaligned-store.
1110+
1111+2011-06-28 Changpeng Fang <changpeng.fang@amd.com>
1112+
1113+ Backport from mainline
1114+ 2011-03-27 H.J. Lu <hongjiu.lu@intel.com>
1115+
1116+ * config/i386/sse.md (*avx_mov<mode>_internal): Don't assert
1117+ unaligned 256bit load/store.
1118+ (*avx_movu<ssemodesuffix><avxmodesuffix>): Likewise.
1119+ (*avx_movdqu<avxmodesuffix>): Likewise.
1120+
1121+2011-06-28 Changpeng Fang <changpeng.fang@amd.com>
1122+
1123+ Backport from mainline
1124+ 2011-03-27 H.J. Lu <hongjiu.lu@intel.com>
1125+
1126+ * config/i386/i386.c (flag_opts): Add -mavx256-split-unaligned-load
1127+ and -mavx256-split-unaligned-store.
1128+ (ix86_option_override_internal): Split 32-byte AVX unaligned
1129+ load/store by default.
1130+ (ix86_avx256_split_vector_move_misalign): New.
1131+ (ix86_expand_vector_move_misalign): Use it.
1132+
1133+ * config/i386/i386.opt: Add -mavx256-split-unaligned-load and
1134+ -mavx256-split-unaligned-store.
1135+
1136+ * config/i386/sse.md (*avx_mov<mode>_internal): Verify unaligned
1137+ 256bit load/store. Generate unaligned store on misaligned memory
1138+ operand.
1139+ (*avx_movu<ssemodesuffix><avxmodesuffix>): Verify unaligned
1140+ 256bit load/store.
1141+ (*avx_movdqu<avxmodesuffix>): Likewise.
1142+
1143+ * doc/invoke.texi: Document -mavx256-split-unaligned-load and
1144+ -mavx256-split-unaligned-store.
1145+
1146+2011-06-28 Eric Botcazou <ebotcazou@adacore.com>
1147+
1148+ * tree-ssa-dom.c (initialize_hash_element): Fix oversight.
1149+
1150+2011-06-28 Andrey Belevantsev <abel@ispras.ru>
1151+
1152+ Backport from mainline
1153+ 2011-05-25 Andrey Belevantsev <abel@ispras.ru>
1154+
1155+ PR rtl-optimization/49014
1156+ * config/i386/athlon.md (athlon_ssecomi): Change type to ssecomi.
1157+
1158+2011-06-28 Alexander Monakov <amonakov@ispras.ru>
1159+
1160+ Backport from mainline
1161+ 2011-04-08 Alexander Monakov <amonakov@ispras.ru>
1162+
1163+ PR target/48273
1164+ * cfgloop.h (loop_has_exit_edges): New helper.
1165+ * sel-sched-ir.c (init_global_and_expr_for_insn): Make CALLs
1166+ non-clonable.
1167+ * sel-sched.c (sel_setup_region_sched_flags): Don't pipeline loops
1168+ that have no exit edges.
1169+
1170+2011-06-28 Iain Sandoe <iains@gcc.gnu.org>
1171+
1172+ PR target/47997
1173+ * config/darwin.c (darwin_mergeable_string_section): Place string
1174+ constants in '.cstring' rather than '.const' when CF/NSStrings are
1175+ active.
1176+
cd666b14 1177+2011-06-27 Eric Botcazou <ebotcazou@adacore.com>
5052c277 1178+
cd666b14
AM
1179+ * reorg.c (fill_simple_delay_slots): Use stop_search_p to stop the
1180+ forward scan as well.
1fc08f06 1181+
cd666b14 1182+2011-06-27 Jakub Jelinek <jakub@redhat.com>
1fc08f06 1183+
cd666b14
AM
1184+ * BASE-VER: Set to 4.6.2.
1185+ * DEV-PHASE: Set to prerelease.
1fc08f06 1186+
cd666b14 1187 2011-06-27 Release Manager
5052c277 1188
cd666b14 1189 * GCC 4.6.1 released.
7700e675 1190Index: gcc/testsuite/gcc.target/arm/scd42-3.c
5052c277 1191===================================================================
c1bcd8d3
AM
1192--- gcc/testsuite/gcc.target/arm/scd42-3.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1193+++ gcc/testsuite/gcc.target/arm/scd42-3.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1194@@ -1,6 +1,7 @@
1195 /* Verify that ldr is preferred on XScale for loading a 3 or 4 byte constant. */
1196 /* { dg-do compile } */
1197-/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "" } } */
1198+/* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-march=*" } { "-march=xscale" } } */
1199+/* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */
1200 /* { dg-options "-mcpu=xscale -O" } */
5052c277 1201
7700e675
AM
1202 unsigned load4(void) __attribute__ ((naked));
1203Index: gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
5052c277 1204===================================================================
c1bcd8d3
AM
1205--- gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1206+++ gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1207@@ -1,7 +1,7 @@
1208 /* { dg-do compile } */
1209-/* { dg-require-effective-target arm_neon_fp16_ok } */
1210+/* { dg-require-effective-target arm_fp16_ok } */
1211 /* { dg-options "-mfp16-format=ieee" } */
1212-/* { dg-add-options arm_neon_fp16 } */
1213+/* { dg-add-options arm_fp16 } */
1fc08f06 1214
7700e675 1215 /* Test generation of VFP __fp16 instructions. */
58a8cf84 1216
7700e675
AM
1217Index: gcc/testsuite/gcc.target/arm/pr42879.c
1218===================================================================
c1bcd8d3
AM
1219--- gcc/testsuite/gcc.target/arm/pr42879.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1220+++ gcc/testsuite/gcc.target/arm/pr42879.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1221@@ -1,4 +1,5 @@
1222-/* { dg-options "-march=armv7-a -mthumb -Os" } */
1223+/* { dg-require-effective-target arm_thumb2_ok } */
1224+/* { dg-options "-mthumb -Os" } */
1225 /* { dg-final { scan-assembler "lsls" } } */
5052c277 1226
7700e675
AM
1227 struct A
1228Index: gcc/testsuite/gcc.target/arm/ctz.c
1229===================================================================
c1bcd8d3
AM
1230--- gcc/testsuite/gcc.target/arm/ctz.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1231+++ gcc/testsuite/gcc.target/arm/ctz.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1232@@ -1,6 +1,6 @@
1233 /* { dg-do compile } */
1234-/* { dg-require-effective-target arm32 } */
1235-/* { dg-options "-O2 -march=armv6t2" } */
1236+/* { dg-require-effective-target arm_thumb2_ok } */
1237+/* { dg-options "-O2" } */
5052c277 1238
7700e675
AM
1239 unsigned int functest(unsigned int x)
1240 {
1241Index: gcc/testsuite/gcc.target/arm/thumb-bitfld1.c
1242===================================================================
c1bcd8d3
AM
1243--- gcc/testsuite/gcc.target/arm/thumb-bitfld1.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1244+++ gcc/testsuite/gcc.target/arm/thumb-bitfld1.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1245@@ -1,5 +1,6 @@
1246 /* { dg-do compile } */
1247-/* { dg-options "-O1 -mthumb -march=armv5t" } */
1248+/* { dg-require-effective-target arm_thumb1_ok } */
1249+/* { dg-options "-O1 -mthumb" } */
5052c277 1250
7700e675
AM
1251 struct foo
1252 {
1253Index: gcc/testsuite/gcc.target/arm/stack-corruption.c
1254===================================================================
c1bcd8d3
AM
1255--- gcc/testsuite/gcc.target/arm/stack-corruption.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1256+++ gcc/testsuite/gcc.target/arm/stack-corruption.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1257@@ -1,4 +1,5 @@
1258 /* { dg-do compile } */
1259+/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
1260 /* { dg-options "-O -mthumb -fno-omit-frame-pointer" } */
5052c277 1261
7700e675
AM
1262 int main() {
1263Index: gcc/testsuite/gcc.target/arm/pr40482.c
1264===================================================================
c1bcd8d3
AM
1265--- gcc/testsuite/gcc.target/arm/pr40482.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1266+++ gcc/testsuite/gcc.target/arm/pr40482.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1267@@ -1,3 +1,4 @@
1268+/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
1269 /* { dg-options "-mthumb -Os" } */
1270 /* { dg-final { scan-assembler-not "ldr" } } */
5052c277 1271
7700e675
AM
1272Index: gcc/testsuite/gcc.target/arm/pr45701-3.c
1273===================================================================
c1bcd8d3
AM
1274--- gcc/testsuite/gcc.target/arm/pr45701-3.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1275+++ gcc/testsuite/gcc.target/arm/pr45701-3.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1276@@ -1,5 +1,6 @@
1277 /* { dg-do compile } */
1278-/* { dg-options "-march=armv7-a -mthumb -Os" } */
1279+/* { dg-require-effective-target arm_thumb2_ok } */
1280+/* { dg-options "-mthumb -Os" } */
1281 /* { dg-final { scan-assembler "push\t.*r8" } } */
1282 /* { dg-final { scan-assembler-not "push\t*r3" } } */
5052c277 1283
7700e675
AM
1284Index: gcc/testsuite/gcc.target/arm/20031108-1.c
1285===================================================================
c1bcd8d3
AM
1286--- gcc/testsuite/gcc.target/arm/20031108-1.c (.../tags/gcc_4_6_1_release) (wersja 176160)
1287+++ gcc/testsuite/gcc.target/arm/20031108-1.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1288@@ -1,5 +1,6 @@
1289 /* PR optimization/10467 */
1290 /* { dg-do compile } */
1291+/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
1292 /* { dg-options "-O2 -mthumb" } */
5052c277 1293
7700e675 1294 typedef enum {Ident_1} Enumeration;
c1bcd8d3
AM
1295Index: gcc/testsuite/gcc.target/powerpc/altivec-34.c
1296===================================================================
1297--- gcc/testsuite/gcc.target/powerpc/altivec-34.c (.../tags/gcc_4_6_1_release) (wersja 0)
1298+++ gcc/testsuite/gcc.target/powerpc/altivec-34.c (.../branches/gcc-4_6-branch) (wersja 176160)
1299@@ -0,0 +1,24 @@
1300+/* PR target/49621 */
1301+/* { dg-do compile } */
1302+/* { dg-options "-O2 -maltivec" } */
1303+
1304+#include <altivec.h>
1305+
1306+int
1307+foo (void)
1308+{
1309+ vector unsigned a, b, c;
1310+ unsigned k = 1;
1311+
1312+ a = (vector unsigned) { 0, 0, 0, 1 };
1313+ b = c = (vector unsigned) { 0, 0, 0, 0 };
1314+
1315+ a = vec_add (a, vec_splats (k));
1316+ b = vec_add (b, a);
1317+ c = vec_sel (c, a, b);
1318+
1319+ if (vec_any_eq (b, c))
1320+ return 1;
1321+
1322+ return 0;
1323+}
7700e675
AM
1324Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
1325===================================================================
1326--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1327+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1328@@ -0,0 +1,19 @@
1329+/* { dg-do compile } */
1330+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
1331+
1332+#define N 1024
1333+
1334+float a[N], b[N+3], c[N];
1335+
1336+void
1337+avx_test (void)
1338+{
1339+ int i;
1340+
1341+ for (i = 0; i < N; i++)
1342+ c[i] = a[i] * b[i+3];
1343+}
1344+
1345+/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */
1346+/* { dg-final { scan-assembler "\\*avx_movups/1" } } */
1347+/* { dg-final { scan-assembler "vinsertf128" } } */
1348Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
1349===================================================================
1350--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1351+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1352@@ -0,0 +1,19 @@
1353+/* { dg-do compile } */
1354+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
1355+
1356+#define N 1024
1357+
1358+double a[N], b[N+3], c[N];
1359+
1360+void
1361+avx_test (void)
1362+{
1363+ int i;
1364+
1365+ for (i = 0; i < N; i++)
1366+ c[i] = a[i] * b[i+3];
1367+}
1368+
1369+/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */
1370+/* { dg-final { scan-assembler "\\*avx_movupd/1" } } */
1371+/* { dg-final { scan-assembler "vinsertf128" } } */
1372Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
1373===================================================================
1374--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1375+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1376@@ -0,0 +1,43 @@
1377+/* { dg-do run } */
1378+/* { dg-require-effective-target avx } */
1379+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
1380+
1381+#include "avx-check.h"
1382+
1383+#define N 8
1384+
1385+float a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35,
1386+ 546.46, 46.79, 82.78, 82.7, 9.4 };
1387+float b[N];
1388+float c[N];
1389+
1390+void
1391+foo (void)
1392+{
1393+ int i;
1394+
1395+ for (i = 0; i < N; i++)
1396+ b[i] = a[i+3] * 2;
1397+}
1398+
1399+__attribute__ ((noinline))
1400+float
1401+bar (float x)
1402+{
1403+ return x * 2;
1404+}
1405+
1406+void
1407+avx_test (void)
1408+{
1409+ int i;
1410+
1411+ foo ();
1412+
1413+ for (i = 0; i < N; i++)
1414+ c[i] = bar (a[i+3]);
1415+
1416+ for (i = 0; i < N; i++)
1417+ if (b[i] != c[i])
1418+ abort ();
1419+}
1420Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
1421===================================================================
1422--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1423+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1424@@ -0,0 +1,22 @@
1425+/* { dg-do compile } */
1426+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
1427+
1428+#define N 1024
1429+
1430+float a[N], b[N+3], c[N], d[N];
1431+
1432+void
1433+avx_test (void)
1434+{
1435+ int i;
1436+
1437+ for (i = 0; i < N; i++)
1438+ b[i+3] = a[i] * 10.0;
1439+
1440+ for (i = 0; i < N; i++)
1441+ d[i] = c[i] * 20.0;
1442+}
1443+
1444+/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */
1445+/* { dg-final { scan-assembler "movups.*\\*avx_movv4sf_internal/3" } } */
1446+/* { dg-final { scan-assembler "vextractf128" } } */
1447Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
1448===================================================================
1449--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1450+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1451@@ -0,0 +1,60 @@
1452+/* { dg-do run } */
1453+/* { dg-require-effective-target avx } */
1454+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
1455+
1456+#include "avx-check.h"
1457+
1458+#define N 128
1459+
1460+char **ep;
1461+char **fp;
1462+char **mp;
1463+char **lp;
1464+
1465+__attribute__ ((noinline))
1466+void
1467+foo (void)
1468+{
1469+ mp = (char **) malloc (N);
1470+ lp = (char **) malloc (N);
1471+ ep = (char **) malloc (N);
1472+ fp = (char **) malloc (N);
1473+}
1474+
1475+void
1476+avx_test (void)
1477+{
1478+ int i;
1479+ char **ap, **bp, **cp, **dp;
1480+ char *str = "STR";
1481+
1482+ foo ();
1483+
1484+ cp = mp;
1485+ dp = lp;
1486+
1487+ for (i = N; i >= 0; i--)
1488+ {
1489+ *cp++ = str;
1490+ *dp++ = str;
1491+ }
1492+
1493+ ap = ep;
1494+ bp = fp;
1495+ cp = mp;
1496+ dp = lp;
1497+
1498+ for (i = N; i >= 0; i--)
1499+ {
1500+ *ap++ = *cp++;
1501+ *bp++ = *dp++;
1502+ }
1503+
1504+ for (i = N; i >= 0; i--)
1505+ {
1506+ if (strcmp (*--ap, "STR") != 0)
1507+ abort ();
1508+ if (strcmp (*--bp, "STR") != 0)
1509+ abort ();
1510+ }
1511+}
1512Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
1513===================================================================
1514--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1515+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1516@@ -0,0 +1,22 @@
1517+/* { dg-do compile } */
1518+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
1519+
1520+#define N 1024
1521+
1522+double a[N], b[N+3], c[N], d[N];
1523+
1524+void
1525+avx_test (void)
1526+{
1527+ int i;
1528+
1529+ for (i = 0; i < N; i++)
1530+ b[i+3] = a[i] * 10.0;
1531+
1532+ for (i = 0; i < N; i++)
1533+ d[i] = c[i] * 20.0;
1534+}
1535+
1536+/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */
1537+/* { dg-final { scan-assembler "movupd.*\\*avx_movv2df_internal/3" } } */
1538+/* { dg-final { scan-assembler "vextractf128" } } */
1539Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
1540===================================================================
1541--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1542+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1543@@ -0,0 +1,42 @@
1544+/* { dg-do run } */
1545+/* { dg-require-effective-target avx } */
1546+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
1547+
1548+#include "avx-check.h"
1549+
1550+#define N 8
1551+
1552+float a[N] = { 24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4 };
1553+float b[N+3];
1554+float c[N+3];
1555+
1556+void
1557+foo (void)
1558+{
1559+ int i;
1560+
1561+ for (i = 0; i < N; i++)
1562+ b[i+3] = a[i] * 2;
1563+}
1564+
1565+__attribute__ ((noinline))
1566+float
1567+bar (float x)
1568+{
1569+ return x * 2;
1570+}
1571+
1572+void
1573+avx_test (void)
1574+{
1575+ int i;
1576+
1577+ foo ();
1578+
1579+ for (i = 0; i < N; i++)
1580+ c[i+3] = bar (a[i]);
1581+
1582+ for (i = 0; i < N; i++)
1583+ if (b[i+3] != c[i+3])
1584+ abort ();
1585+}
1586Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
1587===================================================================
1588--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1589+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1590@@ -0,0 +1,45 @@
1591+/* { dg-do run } */
1592+/* { dg-require-effective-target avx } */
1593+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
1594+
1595+#include "avx-check.h"
1596+
1597+#define N 128
1598+
1599+char **ep;
1600+char **fp;
1601+
1602+__attribute__ ((noinline))
1603+void
1604+foo (void)
1605+{
1606+ ep = (char **) malloc (N);
1607+ fp = (char **) malloc (N);
1608+}
1609+
1610+void
1611+avx_test (void)
1612+{
1613+ int i;
1614+ char **ap, **bp;
1615+ char *str = "STR";
1616+
1617+ foo ();
1618+
1619+ ap = ep;
1620+ bp = fp;
1621+
1622+ for (i = N; i >= 0; i--)
1623+ {
1624+ *ap++ = str;
1625+ *bp++ = str;
1626+ }
1627+
1628+ for (i = N; i >= 0; i--)
1629+ {
1630+ if (strcmp (*--ap, "STR") != 0)
1631+ abort ();
1632+ if (strcmp (*--bp, "STR") != 0)
1633+ abort ();
1634+ }
1635+}
1636Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
1637===================================================================
1638--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1639+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1640@@ -0,0 +1,29 @@
1641+/* { dg-do compile } */
1642+/* { dg-require-effective-target lp64 } */
1643+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
1644+
1645+#define N 1024
1646+
1647+char **ep;
1648+char **fp;
1649+
1650+void
1651+avx_test (void)
1652+{
1653+ int i;
1654+ char **ap;
1655+ char **bp;
1656+ char **cp;
1657+
1658+ ap = ep;
1659+ bp = fp;
1660+ for (i = 128; i >= 0; i--)
1661+ {
1662+ *ap++ = *cp++;
1663+ *bp++ = 0;
1664+ }
1665+}
1666+
1667+/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */
1668+/* { dg-final { scan-assembler "\\*avx_movdqu/1" } } */
1669+/* { dg-final { scan-assembler "vinsertf128" } } */
1670Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
1671===================================================================
1672--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1673+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1674@@ -0,0 +1,19 @@
1675+/* { dg-do compile } */
1676+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */
1677+
1678+#define N 1024
1679+
1680+float a[N], b[N+3];
1681+
1682+void
1683+avx_test (void)
1684+{
1685+ int i;
1686+
1687+ for (i = 0; i < N; i++)
1688+ b[i] = a[i+3] * 2;
1689+}
1690+
1691+/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */
1692+/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */
1693+/* { dg-final { scan-assembler-not "vinsertf128" } } */
1694Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
1695===================================================================
1696--- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1697+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1698@@ -0,0 +1,42 @@
1699+/* { dg-do run } */
1700+/* { dg-require-effective-target avx } */
1701+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */
1702+
1703+#include "avx-check.h"
1704+
1705+#define N 4
1706+
1707+double a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35, 546.46 };
1708+double b[N];
1709+double c[N];
1710+
1711+void
1712+foo (void)
1713+{
1714+ int i;
1715+
1716+ for (i = 0; i < N; i++)
1717+ b[i] = a[i+3] * 2;
1718+}
1719+
1720+__attribute__ ((noinline))
1721+double
1722+bar (double x)
1723+{
1724+ return x * 2;
1725+}
1726+
1727+void
1728+avx_test (void)
1729+{
1730+ int i;
1731+
1732+ foo ();
1733+
1734+ for (i = 0; i < N; i++)
1735+ c[i] = bar (a[i+3]);
1736+
1737+ for (i = 0; i < N; i++)
1738+ if (b[i] != c[i])
1739+ abort ();
1740+}
1741Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
1742===================================================================
1743--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1744+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1745@@ -0,0 +1,29 @@
1746+/* { dg-do compile } */
1747+/* { dg-require-effective-target lp64 } */
1748+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
1749+
1750+#define N 1024
1751+
1752+char **ep;
1753+char **fp;
1754+
1755+void
1756+avx_test (void)
1757+{
1758+ int i;
1759+ char **ap;
1760+ char **bp;
1761+ char **cp;
1762+
1763+ ap = ep;
1764+ bp = fp;
1765+ for (i = 128; i >= 0; i--)
1766+ {
1767+ *ap++ = *cp++;
1768+ *bp++ = 0;
1769+ }
1770+}
1771+
1772+/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */
1773+/* { dg-final { scan-assembler "movdqu.*\\*avx_movv16qi_internal/3" } } */
1774+/* { dg-final { scan-assembler "vextractf128" } } */
1775Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
1776===================================================================
1777--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1778+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1779@@ -0,0 +1,20 @@
1780+/* { dg-do compile } */
1781+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */
1782+
1783+#define N 1024
1784+
1785+float a[N], b[N+3], c[N];
1786+
1787+void
1788+avx_test (void)
1789+{
1790+ int i;
1791+
1792+ for (i = 0; i < N; i++)
1793+ b[i+3] = a[i] * c[i];
1794+}
1795+
1796+/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */
1797+/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */
1798+/* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */
1799+/* { dg-final { scan-assembler-not "vextractf128" } } */
1800Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
1801===================================================================
1802--- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 1803+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1804@@ -0,0 +1,42 @@
1805+/* { dg-do run } */
1806+/* { dg-require-effective-target avx } */
1807+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
1808+
1809+#include "avx-check.h"
1810+
1811+#define N 4
1812+
1813+double a[N] = { 24.43, 68.346, 43.35, 546.46 };
1814+double b[N+3];
1815+double c[N+3];
1816+
1817+void
1818+foo (void)
1819+{
1820+ int i;
1821+
1822+ for (i = 0; i < N; i++)
1823+ b[i+3] = a[i] * 2;
1824+}
1825+
1826+__attribute__ ((noinline))
1827+double
1828+bar (double x)
1829+{
1830+ return x * 2;
1831+}
1832+
1833+void
1834+avx_test (void)
1835+{
1836+ int i;
1837+
1838+ foo ();
1839+
1840+ for (i = 0; i < N; i++)
1841+ c[i+3] = bar (a[i]);
1842+
1843+ for (i = 0; i < N; i++)
1844+ if (b[i+3] != c[i+3])
1845+ abort ();
1846+}
c1bcd8d3
AM
1847Index: gcc/testsuite/gcc.target/sparc/cas64.c
1848===================================================================
1849--- gcc/testsuite/gcc.target/sparc/cas64.c (.../tags/gcc_4_6_1_release) (wersja 0)
1850+++ gcc/testsuite/gcc.target/sparc/cas64.c (.../branches/gcc-4_6-branch) (wersja 176160)
1851@@ -0,0 +1,15 @@
1852+/* PR target/49660 */
1853+
1854+/* { dg-do compile { target sparc*-*-solaris2.* } } */
1855+
1856+#include <stdint.h>
1857+
1858+extern int64_t *val, old, new;
1859+
1860+int
1861+cas64 (void)
1862+{
1863+ return __sync_bool_compare_and_swap (val, old, new);
1864+}
1865+
1866+/* { dg-final { scan-assembler-not "compare_and_swap_8" } } */
7700e675
AM
1867Index: gcc/testsuite/lib/scanasm.exp
1868===================================================================
c1bcd8d3
AM
1869--- gcc/testsuite/lib/scanasm.exp (.../tags/gcc_4_6_1_release) (wersja 176160)
1870+++ gcc/testsuite/lib/scanasm.exp (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1871@@ -50,16 +50,22 @@
1872 }
1873 }
1874
1875+ set pattern [lindex $orig_args 0]
1876+ set printable_pattern [make_pattern_printable $pattern]
1877+
1878 if { [is_remote host] } {
1879 remote_upload host "$output_file"
1880 }
1881+ set files [glob -nocomplain $output_file]
1882+ if { $files == "" } {
1883+ verbose -log "$testcase: output file does not exist"
1884+ unresolved "$testcase $name $printable_pattern"
1885+ return
1886+ }
1887 set fd [open $output_file r]
1888 set text [read $fd]
1889 close $fd
1890
1891- set pattern [lindex $orig_args 0]
1892- set printable_pattern [make_pattern_printable $pattern]
1893-
1894 set match [regexp -- $pattern $text]
1895 if { $match == $positive } {
1896 pass "$testcase $name $printable_pattern"
1897@@ -202,15 +208,23 @@
1898 upvar 2 name testcase
1899 set testcase [lindex $testcase 0]
1900
1901+ set pattern [lindex $args 0]
1902+ set pp_pattern [make_pattern_printable $pattern]
1903+
1904 # This must match the rule in gcc-dg.exp.
1905 set output_file "[file rootname [file tail $testcase]].s"
1906
1907+ set files [glob -nocomplain $output_file]
1908+ if { $files == "" } {
1909+ verbose -log "$testcase: output file does not exist"
1910+ unresolved "$testcase scan-assembler-times $pp_pattern [lindex $args 1]"
1911+ return
1912+ }
1913+
1914 set fd [open $output_file r]
1915 set text [read $fd]
1916 close $fd
1917
1918- set pattern [lindex $args 0]
1919- set pp_pattern [make_pattern_printable $pattern]
1920 if { [llength [regexp -inline -all -- $pattern $text]] == [lindex $args 1]} {
1921 pass "$testcase scan-assembler-times $pp_pattern [lindex $args 1]"
1922 } else {
1923@@ -253,13 +267,20 @@
1924
1925 upvar 2 name testcase
1926 set testcase [lindex $testcase 0]
1927+ set pattern [lindex $args 0]
1928+ set pp_pattern [make_pattern_printable $pattern]
1929 set output_file "[file rootname [file tail $testcase]].s"
1930
1931+ set files [glob -nocomplain $output_file]
1932+ if { $files == "" } {
1933+ verbose -log "$testcase: output file does not exist"
1934+ unresolved "$testcase scan-assembler-dem $pp_pattern"
1935+ return
1936+ }
1937+
1938 set output [remote_exec host "$cxxfilt" "" "$output_file"]
1939 set text [lindex $output 1]
1940
1941- set pattern [lindex $args 0]
1942- set pp_pattern [make_pattern_printable $pattern]
1943 if [regexp -- $pattern $text] {
1944 pass "$testcase scan-assembler-dem $pp_pattern"
1945 } else {
1946@@ -301,13 +322,20 @@
1947
1948 upvar 2 name testcase
1949 set testcase [lindex $testcase 0]
1950+ set pattern [lindex $args 0]
1951+ set pp_pattern [make_pattern_printable $pattern]
1952 set output_file "[file rootname [file tail $testcase]].s"
1953
1954+ set files [glob -nocomplain $output_file]
1955+ if { $files == "" } {
1956+ verbose -log "$testcase: output file does not exist"
1957+ unresolved "$testcase scan-assembler-dem-not $pp_pattern"
1958+ return
1959+ }
1960+
1961 set output [remote_exec host "$cxxfilt" "" "$output_file"]
1962 set text [lindex $output 1]
1963
1964- set pattern [lindex $args 0]
1965- set pp_pattern [make_pattern_printable $pattern]
1966 if ![regexp -- $pattern $text] {
1967 pass "$testcase scan-assembler-dem-not $pp_pattern"
1968 } else {
1969Index: gcc/testsuite/lib/scandump.exp
1970===================================================================
c1bcd8d3
AM
1971--- gcc/testsuite/lib/scandump.exp (.../tags/gcc_4_6_1_release) (wersja 176160)
1972+++ gcc/testsuite/lib/scandump.exp (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
1973@@ -55,7 +55,8 @@
1974 set src [file tail [lindex $testcase 0]]
1975 set output_file "[glob -nocomplain $src.[lindex $args 2]]"
1976 if { $output_file == "" } {
1977- fail "$testname: dump file does not exist"
1978+ verbose -log "$testcase: dump file does not exist"
1979+ unresolved "$testname"
1980 return
1981 }
1982
1983@@ -97,7 +98,8 @@
1984 set src [file tail [lindex $testcase 0]]
1985 set output_file "[glob -nocomplain $src.[lindex $args 3]]"
1986 if { $output_file == "" } {
1987- fail "$testname: dump file does not exist"
1988+ verbose -log "$testcase: dump file does not exist"
1989+ unresolved "$testname"
1990 return
1991 }
1992
1993@@ -139,7 +141,8 @@
1994 set src [file tail [lindex $testcase 0]]
1995 set output_file "[glob -nocomplain $src.[lindex $args 2]]"
1996 if { $output_file == "" } {
1997- fail "$testname: dump file does not exist"
1998+ verbose -log "$testcase: dump file does not exist"
1999+ unresolved "$testname"
2000 return
2001 }
2002
2003@@ -190,7 +193,8 @@
2004 set src [file tail [lindex $testcase 0]]
2005 set output_file "[glob -nocomplain $src.[lindex $args 2]]"
2006 if { $output_file == "" } {
2007- fail "$testname: dump file does not exist"
2008+ verbose -log "$testcase: dump file does not exist"
2009+ unresolved "$testname"
2010 return
2011 }
2012
2013@@ -241,7 +245,8 @@
2014 set src [file tail [lindex $testcase 0]]
2015 set output_file "[glob -nocomplain $src.[lindex $args 2]]"
2016 if { $output_file == "" } {
2017- fail "$testname: dump file does not exist"
2018+ verbose -log "$testcase: dump file does not exist"
2019+ unresolved "$testname"
2020 return
2021 }
2022
2023Index: gcc/testsuite/lib/target-supports-dg.exp
2024===================================================================
c1bcd8d3
AM
2025--- gcc/testsuite/lib/target-supports-dg.exp (.../tags/gcc_4_6_1_release) (wersja 176160)
2026+++ gcc/testsuite/lib/target-supports-dg.exp (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2027@@ -172,6 +172,12 @@
2028 if { [llength $args] < 1 || [llength $args] > 2 } {
2029 error "syntax error, need a single effective-target keyword with optional selector"
2030 }
2031+
2032+ # Don't bother if we're already skipping the test.
2033+ upvar dg-do-what dg-do-what
2034+ if { [lindex ${dg-do-what} 1] == "N" } {
2035+ return
2036+ }
2037
2038 # Evaluate selector if present.
2039 if { [llength $args] == 2 } {
2040@@ -182,7 +188,6 @@
2041 }
2042
2043 if { ![is-effective-target [lindex $args 0]] } {
2044- upvar dg-do-what dg-do-what
2045 set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
2046 }
2047 }
2048Index: gcc/testsuite/lib/target-supports.exp
2049===================================================================
c1bcd8d3
AM
2050--- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_6_1_release) (wersja 176160)
2051+++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2052@@ -1932,45 +1932,53 @@
2053 # or -mfloat-abi=hard, but if one is already specified by the
2054 # multilib, use it.
2055
2056-proc add_options_for_arm_neon_fp16 { flags } {
2057- if { ! [check_effective_target_arm_neon_fp16_ok] } {
2058+proc add_options_for_arm_fp16 { flags } {
2059+ if { ! [check_effective_target_arm_fp16_ok] } {
2060 return "$flags"
2061 }
2062- global et_arm_neon_fp16_flags
2063- return "$flags $et_arm_neon_fp16_flags"
2064+ global et_arm_fp16_flags
2065+ return "$flags $et_arm_fp16_flags"
2066 }
2067
2068-# Return 1 if this is an ARM target supporting -mfpu=neon-fp16
2069-# -mfloat-abi=softfp or equivalent options. Skip multilibs that are
2070-# incompatible with these options. Also set et_arm_neon_flags to the
2071-# best options to add.
2072+# Return 1 if this is an ARM target that can support a VFP fp16 variant.
2073+# Skip multilibs that are incompatible with these options and set
2074+# et_arm_fp16_flags to the best options to add.
2075
2076-proc check_effective_target_arm_neon_fp16_ok_nocache { } {
2077- global et_arm_neon_fp16_flags
2078- set et_arm_neon_fp16_flags ""
2079- if { [check_effective_target_arm32] } {
2080- if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "-mfpu=neon-fp16*" } ]] {
2081- return 0
2082- }
2083- # Always add -mfpu=neon-fp16, since there is no preprocessor
2084- # macro for FP16 support.
2085- foreach flags {"-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp"} {
2086- if { [check_no_compiler_messages_nocache arm_neon_fp16_ok object {
2087- #include "arm_neon.h"
2088- int dummy;
2089- } "$flags"] } {
2090- set et_arm_neon_fp16_flags $flags
2091- return 1
2092- }
2093- }
2094+proc check_effective_target_arm_fp16_ok_nocache { } {
2095+ global et_arm_fp16_flags
2096+ set et_arm_fp16_flags ""
2097+ if { ! [check_effective_target_arm32] } {
2098+ return 0;
2099 }
2100+ if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "-mfpu=*fp16*" "-mfpu=*fpv[4-9]*" "-mfpu=*fpv[1-9][0-9]*" } ]] {
2101+ # Multilib flags would override -mfpu.
2102+ return 0
2103+ }
2104+ if [check-flags [list "" { *-*-* } { "-mfloat-abi=soft" } { "" } ]] {
2105+ # Must generate floating-point instructions.
2106+ return 0
2107+ }
2108+ if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
2109+ # The existing -mfpu value is OK; use it, but add softfp.
2110+ set et_arm_fp16_flags "-mfloat-abi=softfp"
2111+ return 1;
2112+ }
2113+ # Add -mfpu for a VFP fp16 variant since there is no preprocessor
2114+ # macro to check for this support.
2115+ set flags "-mfpu=vfpv4 -mfloat-abi=softfp"
2116+ if { [check_no_compiler_messages_nocache arm_fp16_ok assembly {
2117+ int dummy;
2118+ } "$flags"] } {
2119+ set et_arm_fp16_flags "$flags"
2120+ return 1
2121+ }
2122
2123 return 0
2124 }
2125
2126-proc check_effective_target_arm_neon_fp16_ok { } {
2127- return [check_cached_effective_target arm_neon_fp16_ok \
2128- check_effective_target_arm_neon_fp16_ok_nocache]
2129+proc check_effective_target_arm_fp16_ok { } {
2130+ return [check_cached_effective_target arm_fp16_ok \
2131+ check_effective_target_arm_fp16_ok_nocache]
2132 }
2133
2134 # Return 1 is this is an ARM target where -mthumb causes Thumb-1 to be
2135@@ -3913,3 +3921,11 @@
2136 return 1
2137 }
2138
2139+proc check_effective_target_non_strict_align {} {
2140+ return [check_no_compiler_messages non_strict_align assembly {
2141+ char *y;
2142+ typedef char __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) c;
2143+ c *z;
2144+ void foo(void) { z = (c *) y; }
2145+ } "-Wcast-align"]
2146+}
2147Index: gcc/testsuite/gfortran.dg/extends_14.f03
2148===================================================================
2149--- gcc/testsuite/gfortran.dg/extends_14.f03 (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2150+++ gcc/testsuite/gfortran.dg/extends_14.f03 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2151@@ -0,0 +1,28 @@
2152+! { dg-do compile }
2153+! { dg-options "-fdump-tree-original" }
2154+!
2155+! PR 49466: [4.6/4.7 Regression] Memory leak with assignment of extended derived types
2156+!
2157+! Contributed by Rich Townsend <townsend@astro.wisc.edu>
2158+
2159+program evolve_aflow
2160+
2161+ implicit none
2162+
2163+ type :: state_t
2164+ real, allocatable :: U(:)
2165+ end type
2166+
2167+ type, extends(state_t) :: astate_t
2168+ end type
2169+
2170+ type(astate_t) :: a,b
2171+
2172+ allocate(a%U(1000))
2173+
2174+ a = b
2175+
2176+end program
2177+
2178+! { dg-final { scan-tree-dump-times "__builtin_free" 3 "original" } }
2179+! { dg-final { cleanup-tree-dump "original" } }
2180Index: gcc/testsuite/gfortran.dg/pr49472.f90
2181===================================================================
2182--- gcc/testsuite/gfortran.dg/pr49472.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2183+++ gcc/testsuite/gfortran.dg/pr49472.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2184@@ -0,0 +1,15 @@
2185+! PR rtl-optimization/49472
2186+! { dg-do compile }
2187+! { dg-options "-O -fcompare-debug -ffast-math" }
2188+subroutine pr49472
2189+ integer, parameter :: n = 3
2190+ real(8) :: a, b, c, d, e (n+1)
2191+ integer :: i
2192+ do i=2, (n+1)
2193+ b = 1. / ((i - 1.5d0) * 1.)
2194+ c = b * a
2195+ d = -b * c / (1. + b * b) ** 1.5d0
2196+ e(i) = d
2197+ end do
2198+ call dummy (e)
2199+end subroutine
2200Index: gcc/testsuite/gfortran.dg/pr49540-2.f90
2201===================================================================
2202--- gcc/testsuite/gfortran.dg/pr49540-2.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2203+++ gcc/testsuite/gfortran.dg/pr49540-2.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2204@@ -0,0 +1,17 @@
2205+! PR fortran/49540
2206+! { dg-do compile }
2207+! { dg-options "" }
2208+block data
2209+ common /a/ i(5,5)
2210+ data i /4, 23 * 5, 6/
2211+ data i(:,2) /1, 3 * 2, 3/
2212+ common /b/ j(5,5)
2213+ data j(2,:) /1, 3 * 2, 3/
2214+ data j /4, 23 * 5, 6/
2215+ common /c/ k(5,5)
2216+ data k(:,2) /1, 3 * 2, 3/
2217+ data k /4, 23 * 5, 6/
2218+ common /d/ l(5,5)
2219+ data l /4, 23 * 5, 6/
2220+ data l(2,:) /1, 3 * 2, 3/
2221+end block data
c1bcd8d3
AM
2222Index: gcc/testsuite/gfortran.dg/intrinsic_signal.f90
2223===================================================================
2224--- gcc/testsuite/gfortran.dg/intrinsic_signal.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
2225+++ gcc/testsuite/gfortran.dg/intrinsic_signal.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
2226@@ -0,0 +1,21 @@
2227+! { dg-do compile }
2228+!
2229+! PR fortran/49690
2230+!
2231+! Reduced test case, based on the one of Debian bug #631204
2232+!
2233+
2234+subroutine ctrlc_ast
2235+ common /xinterrupt/ interrupted
2236+ logical interrupted
2237+ interrupted = .true.
2238+end subroutine ctrlc_ast
2239+
2240+subroutine set_ctrl_c(ctrlc_ast)
2241+ external ctrlc_ast
2242+ intrinsic signal
2243+ integer old_handle
2244+ common /xinterrupt/ interrupted
2245+ logical interrupted
2246+ old_handler = signal(2, ctrlc_ast)
2247+end subroutine set_ctrl_c
2248Index: gcc/testsuite/gfortran.dg/typebound_proc_23.f90
2249===================================================================
2250--- gcc/testsuite/gfortran.dg/typebound_proc_23.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
2251+++ gcc/testsuite/gfortran.dg/typebound_proc_23.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
2252@@ -0,0 +1,32 @@
2253+! { dg-do run }
2254+!
2255+! PR 49562: [4.6/4.7 Regression] [OOP] assigning value to type-bound function
2256+!
2257+! Contributed by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
2258+
2259+module ice
2260+ type::ice_type
2261+ contains
2262+ procedure::ice_func
2263+ end type
2264+ integer, target :: it = 0
2265+contains
2266+ function ice_func(this)
2267+ integer, pointer :: ice_func
2268+ class(ice_type)::this
2269+ ice_func => it
2270+ end function ice_func
2271+ subroutine ice_sub(a)
2272+ class(ice_type)::a
2273+ a%ice_func() = 1
2274+ end subroutine ice_sub
2275+end module
2276+
2277+use ice
2278+type(ice_type) :: t
2279+if (it/=0) call abort()
2280+call ice_sub(t)
2281+if (it/=1) call abort()
2282+end
2283+
2284+! { dg-final { cleanup-modules "ice" } }
7700e675
AM
2285Index: gcc/testsuite/gfortran.dg/read_list_eof_1.f90
2286===================================================================
2287--- gcc/testsuite/gfortran.dg/read_list_eof_1.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2288+++ gcc/testsuite/gfortran.dg/read_list_eof_1.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2289@@ -0,0 +1,22 @@
2290+! { dg-do run }
2291+! PR 49296 List formatted read of file without EOR marker (\n).
2292+program read_list_eof_1
2293+ implicit none
2294+ character(len=100) :: s
2295+ call genfil ()
2296+ open (unit=20, file='read.dat', form='FORMATTED', action='READ', &
2297+ status='OLD')
2298+ read (20, fmt=*) s
2299+ close (20, status='delete')
2300+ if (trim(s) /= "a") then
2301+ call abort ()
2302+ end if
2303+
2304+contains
2305+ subroutine genfil
2306+ open(10, file='read.dat', form='unformatted', action='write', &
2307+ status='replace', access='stream')
2308+ write(10) 'a'
2309+ close(10)
2310+ end subroutine genfil
2311+end program read_list_eof_1
2312Index: gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90
2313===================================================================
2314--- gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2315+++ gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2316@@ -0,0 +1,43 @@
2317+! { dg-do run }
2318+! PR 49479 - this used not to print anything.
2319+! Test case by Joost VandeVondele.
2320+MODULE M1
2321+ IMPLICIT NONE
2322+ type foo
2323+ character(len=5) :: x
2324+ end type foo
2325+CONTAINS
2326+ SUBROUTINE S1(data)
2327+ INTEGER, DIMENSION(:), INTENT(IN), &
2328+ OPTIONAL :: DATA
2329+ character(20) :: line
2330+ IF (.not. PRESENT(data)) call abort
2331+ write (unit=line,fmt='(I5)') size(data)
2332+ if (line /= ' 0 ') call abort
2333+ END SUBROUTINE S1
2334+
2335+ subroutine s_type(data)
2336+ type(foo), dimension(:), intent(in), optional :: data
2337+ character(20) :: line
2338+ IF (.not. PRESENT(data)) call abort
2339+ write (unit=line,fmt='(I5)') size(data)
2340+ if (line /= ' 0 ') call abort
2341+ end subroutine s_type
2342+
2343+ SUBROUTINE S2(N)
2344+ INTEGER :: N
2345+ INTEGER, ALLOCATABLE, DIMENSION(:, :) :: blki
2346+ type(foo), allocatable, dimension(:, :) :: bar
2347+ ALLOCATE(blki(3,N))
2348+ allocate (bar(3,n))
2349+ blki=0
2350+ CALL S1(RESHAPE(blki,(/3*N/)))
2351+ call s_type(reshape(bar, (/3*N/)))
2352+ END SUBROUTINE S2
2353+
2354+END MODULE M1
2355+
2356+USE M1
2357+CALL S2(0)
2358+END
2359+! { dg-final { cleanup-modules "m1" } }
2360Index: gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
2361===================================================================
c1bcd8d3
AM
2362--- gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90 (.../tags/gcc_4_6_1_release) (wersja 176160)
2363+++ gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2364@@ -49,7 +49,7 @@
2365 if(allocated(na4%b4)) call abort()
2366 end
2367
2368-! { dg-final { scan-tree-dump-times "__builtin_free" 32 "original" } }
2369+! { dg-final { scan-tree-dump-times "__builtin_free" 38 "original" } }
2370 ! { dg-final { cleanup-tree-dump "original" } }
2371
2372 ! { dg-final { cleanup-modules "m" } }
2373Index: gcc/testsuite/gfortran.dg/pr49540-1.f90
2374===================================================================
2375--- gcc/testsuite/gfortran.dg/pr49540-1.f90 (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2376+++ gcc/testsuite/gfortran.dg/pr49540-1.f90 (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2377@@ -0,0 +1,6 @@
2378+! PR fortran/49540
2379+! { dg-do compile }
2380+block data
2381+ common /a/ b(100000,100)
2382+ data b /10000000 * 0.0/
2383+end block data
c1bcd8d3
AM
2384Index: gcc/testsuite/gcc.c-torture/execute/pr49644.c
2385===================================================================
2386--- gcc/testsuite/gcc.c-torture/execute/pr49644.c (.../tags/gcc_4_6_1_release) (wersja 0)
2387+++ gcc/testsuite/gcc.c-torture/execute/pr49644.c (.../branches/gcc-4_6-branch) (wersja 176160)
2388@@ -0,0 +1,16 @@
2389+/* PR c/49644 */
2390+
2391+extern void abort (void);
2392+
2393+int
2394+main ()
2395+{
2396+ _Complex double a[12], *c = a, s = 3.0 + 1.0i;
2397+ double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b;
2398+ int i;
2399+ for (i = 0; i < 6; i++)
2400+ *c++ = *d++ * s;
2401+ if (c != a + 6 || d != b + 6)
2402+ abort ();
2403+ return 0;
2404+}
7700e675
AM
2405Index: gcc/testsuite/gcc.c-torture/compile/pr38752.c
2406===================================================================
2407--- gcc/testsuite/gcc.c-torture/compile/pr38752.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2408+++ gcc/testsuite/gcc.c-torture/compile/pr38752.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2409@@ -0,0 +1,25 @@
2410+typedef struct
2411+{
2412+ int baddr;
2413+} mstruct_t;
2414+
2415+static struct
2416+{
2417+ unsigned int mapnum;
2418+ mstruct_t unused;
2419+} mtab;
2420+
2421+static mstruct_t *mactab = &mtab.unused;
2422+
2423+int
2424+main(void)
2425+{
2426+ int i;
2427+ int addr;
2428+
2429+ for (i=1; i <= mtab.mapnum; i++)
2430+ if (addr < mactab[i].baddr)
2431+ break;
2432+ return 0;
2433+}
2434+
2435Index: gcc/testsuite/gnat.dg/opt17.adb
2436===================================================================
2437--- gcc/testsuite/gnat.dg/opt17.adb (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2438+++ gcc/testsuite/gnat.dg/opt17.adb (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2439@@ -0,0 +1,13 @@
2440+-- { dg-do compile }
2441+-- { dg-options "-O" }
2442+
2443+package body Opt17 is
2444+
2445+ function Func return S is
2446+ V : String (1 .. 6);
2447+ begin
2448+ V (1 .. 3) := "ABC";
2449+ return V (1 .. 5);
2450+ end;
2451+
2452+end Opt17;
2453Index: gcc/testsuite/gnat.dg/opt17.ads
2454===================================================================
2455--- gcc/testsuite/gnat.dg/opt17.ads (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2456+++ gcc/testsuite/gnat.dg/opt17.ads (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2457@@ -0,0 +1,7 @@
2458+package Opt17 is
2459+
2460+ subtype S is String (1 .. 5);
2461+
2462+ function Func return S;
2463+
2464+end Opt17;
c1bcd8d3
AM
2465Index: gcc/testsuite/gcc.dg/gomp/pr49640.c
2466===================================================================
2467--- gcc/testsuite/gcc.dg/gomp/pr49640.c (.../tags/gcc_4_6_1_release) (wersja 0)
2468+++ gcc/testsuite/gcc.dg/gomp/pr49640.c (.../branches/gcc-4_6-branch) (wersja 176160)
2469@@ -0,0 +1,29 @@
2470+/* PR middle-end/49640 */
2471+/* { dg-do compile } */
2472+/* { dg-options "-O2 -std=gnu99 -fopenmp" } */
2473+
2474+void
2475+foo (int N, int M, int K, int P, int Q, int R, int i, int j, int k,
2476+ unsigned char x[P][Q][R], int y[N][M][K])
2477+{
2478+ int ii, jj, kk;
2479+
2480+#pragma omp parallel for private(ii,jj,kk)
2481+ for (ii = 0; ii < P; ++ii)
2482+ for (jj = 0; jj < Q; ++jj)
2483+ for (kk = 0; kk < R; ++kk)
2484+ y[i + ii][j + jj][k + kk] = x[ii][jj][kk];
2485+}
2486+
2487+void
2488+bar (int N, int M, int K, int P, int Q, int R, int i, int j, int k,
2489+ unsigned char x[P][Q][R], float y[N][M][K], float factor, float zero)
2490+{
2491+ int ii, jj, kk;
2492+
2493+#pragma omp parallel for private(ii,jj,kk)
2494+ for (ii = 0; ii < P; ++ii)
2495+ for (jj = 0; jj < Q; ++jj)
2496+ for (kk = 0; kk < R; ++kk)
2497+ y[i + ii][j + jj][k + kk] = factor * x[ii][jj][kk] + zero;
2498+}
7700e675
AM
2499Index: gcc/testsuite/gcc.dg/pr49619.c
2500===================================================================
2501--- gcc/testsuite/gcc.dg/pr49619.c (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2502+++ gcc/testsuite/gcc.dg/pr49619.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2503@@ -0,0 +1,13 @@
2504+/* PR rtl-optimization/49619 */
2505+/* { dg-do compile } */
2506+/* { dg-options "-O -fno-tree-fre" } */
2507+
2508+extern int a, b;
2509+
2510+void
2511+foo (int x)
2512+{
2513+ a = 2;
2514+ b = 0;
2515+ b = (a && ((a = 1, 0 >= b) || (short) (x + (b & x))));
2516+}
c1bcd8d3
AM
2517Index: gcc/testsuite/gcc.dg/debug/pr49522.c
2518===================================================================
2519--- gcc/testsuite/gcc.dg/debug/pr49522.c (.../tags/gcc_4_6_1_release) (wersja 0)
2520+++ gcc/testsuite/gcc.dg/debug/pr49522.c (.../branches/gcc-4_6-branch) (wersja 176160)
2521@@ -0,0 +1,41 @@
2522+/* PR debug/49522 */
2523+/* { dg-do compile } */
2524+/* { dg-options "-fcompare-debug" } */
2525+
2526+int val1 = 0L;
2527+volatile int val2 = 7L;
2528+long long val3;
2529+int *ptr = &val1;
2530+
2531+static int
2532+func1 ()
2533+{
2534+ return 0;
2535+}
2536+
2537+static short int
2538+func2 (short int a, unsigned int b)
2539+{
2540+ return !b ? a : a >> b;
2541+}
2542+
2543+static unsigned long long
2544+func3 (unsigned long long a, unsigned long long b)
2545+{
2546+ return !b ? a : a % b;
2547+}
2548+
2549+void
2550+func4 (unsigned short arg1, int arg2)
2551+{
2552+ for (arg2 = 0; arg2 < 2; arg2++)
2553+ {
2554+ *ptr = func3 (func3 (10, func2 (val3, val2)), val3);
2555+ for (arg1 = -14; arg1 > 14; arg1 = func1 ())
2556+ {
2557+ *ptr = -1;
2558+ if (foo ())
2559+ ;
2560+ }
2561+ }
2562+}
2563Index: gcc/testsuite/gcc.dg/graphite/pr37485.c
2564===================================================================
2565--- gcc/testsuite/gcc.dg/graphite/pr37485.c (.../tags/gcc_4_6_1_release) (wersja 176160)
2566+++ gcc/testsuite/gcc.dg/graphite/pr37485.c (.../branches/gcc-4_6-branch) (wersja 176160)
2567@@ -1,4 +1,4 @@
2568-/* { dg-options "-O2 -fdump-tree-graphite-all" } */
2569+/* { dg-options "-O2 -floop-block -fno-loop-strip-mine -fno-loop-interchange -ffast-math -fdump-tree-graphite-all" } */
2570
2571 typedef unsigned char UChar;
2572 typedef int Int32;
7700e675
AM
2573Index: gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
2574===================================================================
c1bcd8d3
AM
2575--- gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c (.../tags/gcc_4_6_1_release) (wersja 176160)
2576+++ gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2577@@ -1,8 +1,8 @@
2578 /* Test various operators on __fp16 and mixed __fp16/float operands. */
2579 /* { dg-do compile { target arm*-*-* } } */
2580-/* { dg-require-effective-target arm_neon_fp16_ok } */
2581+/* { dg-require-effective-target arm_fp16_ok } */
2582 /* { dg-options "-mfp16-format=ieee" } */
2583-/* { dg-add-options arm_neon_fp16 } */
2584+/* { dg-add-options arm_fp16 } */
2585
2586 #include "arm-fp16-ops.h"
2587
2588Index: gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
2589===================================================================
c1bcd8d3
AM
2590--- gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c (.../tags/gcc_4_6_1_release) (wersja 176160)
2591+++ gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2592@@ -1,8 +1,8 @@
2593 /* Test various operators on __fp16 and mixed __fp16/float operands. */
2594 /* { dg-do compile { target arm*-*-* } } */
2595-/* { dg-require-effective-target arm_neon_fp16_ok } */
2596+/* { dg-require-effective-target arm_fp16_ok } */
2597 /* { dg-options "-mfp16-format=ieee -ffast-math" } */
2598-/* { dg-add-options arm_neon_fp16 } */
2599+/* { dg-add-options arm_fp16 } */
2600
2601 #include "arm-fp16-ops.h"
2602
2603Index: gcc/testsuite/gcc.dg/vect/pr48377.c
2604===================================================================
c1bcd8d3
AM
2605--- gcc/testsuite/gcc.dg/vect/pr48377.c (.../tags/gcc_4_6_1_release) (wersja 176160)
2606+++ gcc/testsuite/gcc.dg/vect/pr48377.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2607@@ -1,5 +1,6 @@
2608 /* PR tree-optimization/48377 */
2609 /* { dg-do run } */
2610+/* { dg-require-effective-target non_strict_align } */
2611
2612 typedef unsigned int U __attribute__((__aligned__ (1), __may_alias__));
2613
2614Index: gcc/testsuite/ada/acats/run_acats
2615===================================================================
c1bcd8d3
AM
2616--- gcc/testsuite/ada/acats/run_acats (.../tags/gcc_4_6_1_release) (wersja 176160)
2617+++ gcc/testsuite/ada/acats/run_acats (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2618@@ -10,12 +10,12 @@
2619 # type -p is missing from Solaris 2 /bin/sh and /bin/ksh (ksh88), but both
2620 # ksh93 and bash have it.
2621 # type output format differs between ksh88 and ksh93, so avoid it if
2622-# type -p is present.
2623+# type -p is present. Unfortunately, HP-UX /bin/sh ignores -p with type.
2624 # Fall back to whence which ksh88 and ksh93 provide, but bash does not.
2625
2626 which () {
2627- path=`type -p $* 2>/dev/null` && { echo $path; return 0; }
2628- path=`type $* 2>/dev/null | awk '{print $NF}'` && { echo $path; return 0; }
2629+ path=`type -p $* 2>/dev/null` && { echo $path | awk '{print $NF}'; return 0; }
2630+ path=`type $* 2>/dev/null` && { echo $path | awk '{print $NF}'; return 0; }
2631 path=`whence $* 2>/dev/null` && { echo $path; return 0; }
2632 return 1
2633 }
2634Index: gcc/testsuite/ChangeLog
2635===================================================================
c1bcd8d3
AM
2636--- gcc/testsuite/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 176160)
2637+++ gcc/testsuite/ChangeLog (.../branches/gcc-4_6-branch) (wersja 176160)
2638@@ -1,3 +1,217 @@
2639+2011-07-10 Tobias Burnus <burnus@net-b.de>
2640+
2641+ PR fortran/49690
2642+ * gfortran.dg/intrinsic_signal.f90: New.
2643+
2644+2011-07-10 Janus Weil <janus@gcc.gnu.org>
2645+
2646+ PR fortran/49562
2647+ * gfortran.dg/typebound_proc_23.f90: New.
2648+
2649+2011-07-09 Uros Bizjak <ubizjak@gmail.com>
2650+
2651+ * gcc.dg/graphite/pr37485.c (dg-options): Add -floop-block
2652+ -fno-loop-strip-mine -fno-loop-interchange -ffast-math.
2653+
2654+2011-07-09 Jason Merrill <jason@redhat.com>
2655+
2656+ * g++.dg/cpp0x/regress/regress5.C: New.
2657+
2658+2011-07-08 Jakub Jelinek <jakub@redhat.com>
2659+
2660+ PR target/49621
2661+ * gcc.target/powerpc/altivec-34.c: New test.
2662+
2663+2011-07-07 Jason Merrill <jason@redhat.com>
2664+
2665+ PR c++/48157
2666+ * g++.dg/template/template-id-4.C: New.
2667+
2668+2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2669+
2670+ * gcc.target/sparc/cas64.c: New test.
2671+
2672+2011-07-07 Jakub Jelinek <jakub@redhat.com>
2673+
2674+ PR c/49644
2675+ * g++.dg/torture/pr49644.C: New test.
2676+
2677+ PR c/49644
2678+ * gcc.c-torture/execute/pr49644.c: New test.
2679+
2680+ PR debug/49522
2681+ * gcc.dg/debug/pr49522.c: New test.
2682+
2683+ PR middle-end/49640
2684+ * gcc.dg/gomp/pr49640.c: New test.
2685+
7700e675
AM
2686+2011-07-06 Thomas Koenig <tkoenig@gcc.gnu.org>
2687+
2688+ PR fortran/49479
2689+ * gfortran.dg/reshape_zerosize_3.f90: New test case.
2690+
2691+2011-07-05 Janis Johnson <janisjo@codesourcery.com>
2692+
2693+ * gcc.target/arm/20031108-1.c: Require thumb1 or thumb2.
2694+ * gcc.target/arm/pr40482.c: Likewise.
2695+ * gcc.target/arm/stack-corruption.c: Likewise.
2696+
2697+ * gcc.target/arm/ctz.c: Don't specify -march, require thumb2.
2698+ * gcc.target/arm/pr42879.c: Likewise.
2699+ * gcc.target/arm/pr45701-3.c: Likewise.
2700+
2701+ * gcc.target/arm/thumb-bitfld1.c: Don't specify -march, require thumb1.
2702+
2703+ * gcc.target/arm/scd42-3.c: Allow -march-xscale; skip if -mcpu
2704+ is not xscale.
2705+
2706+ * lib/target-supports-dg.exp (dg-require-effective-target): Return
2707+ early if the test is already being skipped.
2708+
2709+ * lib/target-supports.exp (add_options_for_arm_fp16): Renamed
2710+ from add_options_for_arm_neon_fp16.
2711+ (check_effective_target_arm_fp16_ok_nocache): Renamed from
2712+ check_effective_target_arm_neon_fp16_ok_nocache.
2713+ Check -mfpu and -mfloat-abi options from current multilib.
2714+ Do not require neon support.
2715+ (check_effective_target_arm_fp16_ok): Renamed from
2716+ check_effecitve_target_arm_neon_fp16_ok.
2717+ * g++.dg/ext/arm-fp16/arm-fp16-ops-5.C: Use new names for
2718+ arm_neon_fp16_ok and arm_fp16.
2719+ * g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: Likewise.
2720+ * gcc.dg/torture/arm-fp16-ops-5.c: Likewise.
2721+ * gcc.dg/torture/arm-fp16-ops-6.c: Likewise.
2722+ * gcc.target/arm/fp16-compile-vcvt.c: Likewise.
2723+
2724+ * lib/scandump.exp (scan-dump, scan-dump-times, scan-dump-not,
2725+ scan-dump-dem, scan-dump-dem-not): Treat a missing dump file as
2726+ unresolved and report the reason to the log file.
2727+
2728+ * lib/scanasm.exp (dg-scan, scan-assembler-times, scan-assembler-dem,
2729+ scan-assembler-dem-not): For missing file, report unresolved with
2730+ same message as for pass/fail, with reason reported in log file.
2731+
2732+2011-07-05 Jason Merrill <jason@redhat.com>
2733+
2734+ PR testsuite/49643
2735+ * g++.dg/rtti/anon-ns1.C: Allow for null-termination.
2736+
2737+ * g++.dg/cpp0x/lambda/lambda-ref2.C: New.
2738+
2739+ * g++.dg/diagnostic/aka1.C: New.
2740+
2741+2011-07-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2742+
2743+ * ada/acats/run_acats (which): Extract last field from type -p,
2744+ type output only if command succeeded.
2745+
2746+2011-07-04 Jakub Jelinek <jakub@redhat.com>
2747+
2748+ PR rtl-optimization/49619
2749+ * gcc.dg/pr49619.c: New test.
2750+
2751+ PR rtl-optimization/49472
2752+ * gfortran.dg/pr49472.f90: New test.
2753+
2754+ Backported from mainline
2755+ 2011-06-30 Jakub Jelinek <jakub@redhat.com>
2756+
2757+ PR fortran/49540
2758+ * gfortran.dg/pr49540-1.f90: New test.
2759+ * gfortran.dg/pr49540-2.f90: New test.
2760+
2761+2011-07-04 Richard Guenther <rguenther@suse.de>
2762+
2763+ PR tree-optimization/49615
2764+ * g++.dg/torture/pr49615.C: New testcase.
2765+
2766+2011-07-03 Janne Blomqvist <jb@gcc.gnu.org>
2767+
2768+ Backport from mainline:
c1bcd8d3
AM
2769+ PR libfortran/49296
2770+ * gfortran.dg/read_list_eof_1.f90: New test.
7700e675
AM
2771+
2772+2011-07-02 Janus Weil <janus@gcc.gnu.org>
2773+
2774+ PR fortran/49466
2775+ * gfortran.dg/allocatable_scalar_9.f90: Modified.
2776+ * gfortran.dg/extends_14.f03: New.
2777+
2778+2011-06-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2779+
2780+ PR ada/49511
2781+ * ada/acats/run_acats (which): Use last field of type -p output.
2782+
2783+2011-06-30 Richard Guenther <rguenther@suse.de>
2784+
2785+ PR tree-optimization/38752
2786+ * gcc.c-torture/compile/pr38752.c: New testcase.
2787+
2788+2011-06-29 Martin Jambor <mjambor@suse.cz>
2789+ Backport from mainline
2790+ 2011-06-24 Martin Jambor <mjambor@suse.cz>
2791+
2792+ PR tree-optimizations/49516
2793+ * g++.dg/tree-ssa/pr49516.C: New test.
2794+
2795+2011-06-28 Changpeng Fang <changpeng.fang@amd.com>
2796+ Backport from mainline
2797+ 2011-03-27 H.J. Lu <hongjiu.lu@intel.com>
2798+
2799+ * gcc.target/i386/avx256-unaligned-load-1.c: New.
2800+ * gcc.target/i386/avx256-unaligned-load-2.c: Likewise.
2801+ * gcc.target/i386/avx256-unaligned-load-3.c: Likewise.
2802+ * gcc.target/i386/avx256-unaligned-load-4.c: Likewise.
2803+ * gcc.target/i386/avx256-unaligned-load-5.c: Likewise.
2804+ * gcc.target/i386/avx256-unaligned-load-6.c: Likewise.
2805+ * gcc.target/i386/avx256-unaligned-load-7.c: Likewise.
2806+ * gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
2807+ * gcc.target/i386/avx256-unaligned-store-2.c: Likewise.
2808+ * gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
2809+ * gcc.target/i386/avx256-unaligned-store-4.c: Likewise.
2810+ * gcc.target/i386/avx256-unaligned-store-5.c: Likewise.
2811+ * gcc.target/i386/avx256-unaligned-store-6.c: Likewise.
2812+ * gcc.target/i386/avx256-unaligned-store-7.c: Likewise.
2813+
2814+2011-06-28 Eric Botcazou <ebotcazou@adacore.com>
2815+
2816+ * gnat.dg/opt17.ad[sb]: New test.
2817+
2818+2011-06-28 Alexander Monakov <amonakov@ispras.ru>
2819+
2820+ Backport from mainline
2821+ 2011-04-08 Alexander Monakov <amonakov@ispras.ru>
2822+
2823+ PR target/48273
2824+ * g++.dg/opt/pr48273.C: New.
2825+
2826+2011-06-27 Jason Merrill <jason@redhat.com>
2827+
2828+ PR c++/49528
2829+ * g++.dg/init/ref19.C: New.
2830+ * g++.dg/cpp0x/constexpr-cleanup.C: New.
2831+
2832+ PR c++/49440
2833+ * g++.dg/rtti/anon-ns1.C: New.
2834+
2835+ PR c++/49418
2836+ * g++.dg/template/param3.C: New.
2837+
2838+2011-06-27 Jakub Jelinek <jakub@redhat.com>
2839+
2840+ Backported from mainline
2841+ 2011-06-26 Jakub Jelinek <jakub@redhat.com>
2842+
2843+ PR tree-optimization/48377
2844+ * gcc.dg/vect/pr48377.c: Add dg-require-effective-target
2845+ non_strict_align.
2846+
2847+ 2011-06-26 Steve Ellcey <sje@cup.hp.com>
2848+
2849+ PR middle-end/49191
2850+ * lib/target-supports.exp (check_effective_target_non_strict_align):
2851+ New.
2852+
2853 2011-06-27 Release Manager
2854
2855 * GCC 4.6.1 released.
c1bcd8d3
AM
2856@@ -186,7 +400,7 @@
2857
2858 2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
2859
2860- PR c++/33840
2861+ PR c++/33840
2862 * g++.dg/diagnostic/bitfld2.C: New.
2863
2864 2011-06-04 Ira Rosen <ira.rosen@linaro.org>
2865@@ -558,7 +772,7 @@
2866
2867 2011-05-06 Dodji Seketeli <dodji@redhat.com>
2868
2869- PR c++/48838
2870+ PR c++/48838
2871 * g++.dg/template/member9.C: New test case.
2872
2873 2011-05-05 Jason Merrill <jason@redhat.com>
7700e675
AM
2874Index: gcc/testsuite/g++.dg/rtti/anon-ns1.C
2875===================================================================
2876--- gcc/testsuite/g++.dg/rtti/anon-ns1.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2877+++ gcc/testsuite/g++.dg/rtti/anon-ns1.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2878@@ -0,0 +1,15 @@
2879+// PR c++/49440
2880+// The typeinfo name for A should start with * so we compare
2881+// it by address rather than contents.
2882+
2883+// { dg-final { scan-assembler "\"\*N\[^\"\]+1AE" } }
2884+
2885+namespace
2886+{
2887+ class A { };
2888+}
2889+
2890+void f()
2891+{
2892+ throw A();
2893+}
2894Index: gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
2895===================================================================
c1bcd8d3
AM
2896--- gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C (.../tags/gcc_4_6_1_release) (wersja 176160)
2897+++ gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2898@@ -1,8 +1,8 @@
2899 /* Test various operators on __fp16 and mixed __fp16/float operands. */
2900 /* { dg-do compile { target arm*-*-* } } */
2901-/* { dg-require-effective-target arm_neon_fp16_ok } */
2902+/* { dg-require-effective-target arm_fp16_ok } */
2903 /* { dg-options "-mfp16-format=ieee" } */
2904-/* { dg-add-options arm_neon_fp16 } */
2905+/* { dg-add-options arm_fp16 } */
2906
2907 #include "arm-fp16-ops.h"
2908
2909Index: gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
2910===================================================================
c1bcd8d3
AM
2911--- gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C (.../tags/gcc_4_6_1_release) (wersja 176160)
2912+++ gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2913@@ -1,8 +1,8 @@
2914 /* Test various operators on __fp16 and mixed __fp16/float operands. */
2915 /* { dg-do compile { target arm*-*-* } } */
2916-/* { dg-require-effective-target arm_neon_fp16_ok } */
2917+/* { dg-require-effective-target arm_fp16_ok } */
2918 /* { dg-options "-mfp16-format=ieee -ffast-math" } */
2919-/* { dg-add-options arm_neon_fp16 } */
2920+/* { dg-add-options arm_fp16 } */
2921
2922 #include "arm-fp16-ops.h"
2923
2924Index: gcc/testsuite/g++.dg/opt/pr48273.C
2925===================================================================
2926--- gcc/testsuite/g++.dg/opt/pr48273.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2927+++ gcc/testsuite/g++.dg/opt/pr48273.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2928@@ -0,0 +1,10 @@
2929+// { dg-do compile { target x86_64-*-* } }
2930+// { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -funroll-all-loops -march=core2" }
2931+
2932+void bar ();
2933+
2934+void foo ()
2935+{
2936+ for (;;)
2937+ bar ();
2938+}
2939Index: gcc/testsuite/g++.dg/init/ref19.C
2940===================================================================
2941--- gcc/testsuite/g++.dg/init/ref19.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2942+++ gcc/testsuite/g++.dg/init/ref19.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2943@@ -0,0 +1,17 @@
2944+// PR c++/49528
2945+// { dg-do run }
2946+
2947+int d;
2948+
2949+struct A
2950+{
2951+ int i;
2952+ ~A() { ++d; };
2953+};
2954+
2955+int main()
2956+{
2957+ const int &r = A().i;
2958+ if (d != 1)
2959+ return 1;
2960+}
2961Index: gcc/testsuite/g++.dg/tree-ssa/pr49516.C
2962===================================================================
2963--- gcc/testsuite/g++.dg/tree-ssa/pr49516.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 2964+++ gcc/testsuite/g++.dg/tree-ssa/pr49516.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
2965@@ -0,0 +1,86 @@
2966+/* { dg-do run } */
2967+/* { dg-options "-O2" } */
2968+
2969+extern "C" void abort (void);
2970+
2971+typedef int int32;
2972+typedef unsigned int uint32;
2973+typedef unsigned long long uint64;
2974+typedef short int16;
2975+
2976+class Tp {
2977+ public:
2978+ Tp(int, const int segment, const int index) __attribute__((noinline));
2979+
2980+ inline bool operator==(const Tp& other) const;
2981+ inline bool operator!=(const Tp& other) const;
2982+ int GetType() const { return type_; }
2983+ int GetSegment() const { return segment_; }
2984+ int GetIndex() const { return index_; }
2985+ private:
2986+ inline static bool IsValidSegment(const int segment);
2987+ static const int kSegmentBits = 28;
2988+ static const int kTypeBits = 4;
2989+ static const int kMaxSegment = (1 << kSegmentBits) - 1;
2990+
2991+ union {
2992+
2993+ struct {
2994+ int32 index_;
2995+ uint32 segment_ : kSegmentBits;
2996+ uint32 type_ : kTypeBits;
2997+ };
2998+ struct {
2999+ int32 dummy_;
3000+ uint32 type_and_segment_;
3001+ };
3002+ uint64 value_;
3003+ };
3004+};
3005+
3006+Tp::Tp(int t, const int segment, const int index)
3007+ : index_(index), segment_(segment), type_(t) {}
3008+
3009+inline bool Tp::operator==(const Tp& other) const {
3010+ return value_ == other.value_;
3011+}
3012+inline bool Tp::operator!=(const Tp& other) const {
3013+ return value_ != other.value_;
3014+}
3015+
3016+class Range {
3017+ public:
3018+ inline Range(const Tp& position, const int count) __attribute__((always_inline));
3019+ inline Tp GetBeginTokenPosition() const;
3020+ inline Tp GetEndTokenPosition() const;
3021+ private:
3022+ Tp position_;
3023+ int count_;
3024+ int16 begin_index_;
3025+ int16 end_index_;
3026+};
3027+
3028+inline Range::Range(const Tp& position,
3029+ const int count)
3030+ : position_(position), count_(count), begin_index_(0), end_index_(0)
3031+ { }
3032+
3033+inline Tp Range::GetBeginTokenPosition() const {
3034+ return position_;
3035+}
3036+inline Tp Range::GetEndTokenPosition() const {
3037+ return Tp(position_.GetType(), position_.GetSegment(),
3038+ position_.GetIndex() + count_);
3039+}
3040+
3041+int main ()
3042+{
3043+ Range range(Tp(0, 0, 3), 0);
3044+ if (!(range.GetBeginTokenPosition() == Tp(0, 0, 3)))
3045+ abort ();
3046+
3047+ if (!(range.GetEndTokenPosition() == Tp(0, 0, 3)))
3048+ abort();
3049+
3050+ return 0;
3051+}
3052Index: gcc/testsuite/g++.dg/diagnostic/aka1.C
3053===================================================================
3054--- gcc/testsuite/g++.dg/diagnostic/aka1.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 3055+++ gcc/testsuite/g++.dg/diagnostic/aka1.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3056@@ -0,0 +1,15 @@
3057+// Basic test for typedef stripping in diagnostics.
3058+
3059+struct A {
3060+ void f();
3061+};
3062+
3063+void A::f() {
3064+ // We don't want an aka for the injected-class-name.
3065+ A a = 0; // { dg-error "type .A. requested" }
3066+}
3067+
3068+typedef A B;
3069+
3070+// We do want an aka for a real typedef.
3071+B b = 0; // { dg-error "B .aka A." }
3072Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C
3073===================================================================
3074--- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 3075+++ gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3076@@ -0,0 +1,13 @@
3077+// PR c++/49598
3078+// { dg-options -std=c++0x }
3079+// { dg-do run }
3080+
3081+int
3082+main()
3083+{
3084+ int i = 10;
3085+ int& ir = i;
3086+
3087+ if ([=]{ return ir; }() != 10)
3088+ return 1;
3089+}
c1bcd8d3
AM
3090Index: gcc/testsuite/g++.dg/cpp0x/regress/regress5.C
3091===================================================================
3092--- gcc/testsuite/g++.dg/cpp0x/regress/regress5.C (.../tags/gcc_4_6_1_release) (wersja 0)
3093+++ gcc/testsuite/g++.dg/cpp0x/regress/regress5.C (.../branches/gcc-4_6-branch) (wersja 176160)
3094@@ -0,0 +1,16 @@
3095+// { dg-options -std=c++0x }
3096+
3097+struct A
3098+{
3099+ int i;
3100+ A(int);
3101+};
3102+
3103+struct B
3104+{
3105+ virtual void f();
3106+ A ar[3];
3107+};
3108+
3109+extern B b;
3110+B b2(b);
7700e675
AM
3111Index: gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C
3112===================================================================
3113--- gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 3114+++ gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3115@@ -0,0 +1,9 @@
3116+// { dg-options -std=c++0x }
3117+
3118+struct A
3119+{
3120+ int i;
3121+ ~A();
3122+};
3123+
3124+constexpr int i = A().i; // { dg-error "non-literal" }
3125Index: gcc/testsuite/g++.dg/torture/pr49615.C
3126===================================================================
3127--- gcc/testsuite/g++.dg/torture/pr49615.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 3128+++ gcc/testsuite/g++.dg/torture/pr49615.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3129@@ -0,0 +1,29 @@
3130+/* { dg-do compile } */
3131+/* { dg-options "-g" } */
3132+
3133+template <class T>
3134+static inline bool Dispatch (T* obj, void (T::*func) ())
3135+{
3136+ (obj->*func) ();
3137+}
3138+class C
3139+{
3140+ bool f (int);
3141+ void g ();
3142+};
3143+bool C::f (int n)
3144+{
3145+ bool b;
3146+ switch (n)
3147+ {
3148+ case 0:
3149+ b = Dispatch (this, &C::g);
3150+ case 1:
3151+ b = Dispatch (this, &C::g);
3152+ }
3153+}
3154+void C::g ()
3155+{
3156+ for (;;) { }
3157+}
3158+
c1bcd8d3
AM
3159Index: gcc/testsuite/g++.dg/torture/pr49644.C
3160===================================================================
3161--- gcc/testsuite/g++.dg/torture/pr49644.C (.../tags/gcc_4_6_1_release) (wersja 0)
3162+++ gcc/testsuite/g++.dg/torture/pr49644.C (.../branches/gcc-4_6-branch) (wersja 176160)
3163@@ -0,0 +1,17 @@
3164+// PR c/49644
3165+// { dg-do run }
3166+
3167+extern "C" void abort ();
3168+
3169+int
3170+main ()
3171+{
3172+ _Complex double a[12], *c = a, s = 3.0 + 1.0i;
3173+ double b[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, *d = b;
3174+ int i;
3175+ for (i = 0; i < 6; i++)
3176+ *c++ = *d++ * s;
3177+ if (c != a + 6 || d != b + 6)
3178+ abort ();
3179+ return 0;
3180+}
7700e675
AM
3181Index: gcc/testsuite/g++.dg/template/param3.C
3182===================================================================
3183--- gcc/testsuite/g++.dg/template/param3.C (.../tags/gcc_4_6_1_release) (wersja 0)
c1bcd8d3 3184+++ gcc/testsuite/g++.dg/template/param3.C (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3185@@ -0,0 +1,12 @@
3186+// PR c++/49418
3187+
3188+template <class T>
3189+void f (const T t)
3190+{
3191+ t = 1; // { dg-error "" }
3192+}
3193+
3194+int main()
3195+{
3196+ f(1);
3197+}
c1bcd8d3
AM
3198Index: gcc/testsuite/g++.dg/template/template-id-4.C
3199===================================================================
3200--- gcc/testsuite/g++.dg/template/template-id-4.C (.../tags/gcc_4_6_1_release) (wersja 0)
3201+++ gcc/testsuite/g++.dg/template/template-id-4.C (.../branches/gcc-4_6-branch) (wersja 176160)
3202@@ -0,0 +1,22 @@
3203+// PR c++/48157
3204+
3205+struct AType
3206+{
3207+ template<class AA>
3208+ void SomeFuncTemplate()
3209+ { }
3210+};
3211+
3212+template < class T >
3213+struct TTest2
3214+{
3215+ template<T> struct helper;
3216+
3217+ template<class U>
3218+ static void check(helper<&U::template SomeFuncTemplate<int> > *);
3219+};
3220+
3221+int main()
3222+{
3223+ TTest2< void (AType::*)() >::check<AType>(0);
3224+}
3225Index: gcc/cp/typeck.c
3226===================================================================
3227--- gcc/cp/typeck.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3228+++ gcc/cp/typeck.c (.../branches/gcc-4_6-branch) (wersja 176160)
3229@@ -4331,6 +4331,7 @@
3230 {
3231 case MULT_EXPR:
3232 case TRUNC_DIV_EXPR:
3233+ op1 = save_expr (op1);
3234 imag = build2 (resultcode, real_type, imag, op1);
3235 /* Fall through. */
3236 case PLUS_EXPR:
3237@@ -4349,6 +4350,7 @@
3238 switch (code)
3239 {
3240 case MULT_EXPR:
3241+ op0 = save_expr (op0);
3242 imag = build2 (resultcode, real_type, op0, imag);
3243 /* Fall through. */
3244 case PLUS_EXPR:
7700e675
AM
3245Index: gcc/cp/init.c
3246===================================================================
c1bcd8d3
AM
3247--- gcc/cp/init.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3248+++ gcc/cp/init.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3249@@ -1492,7 +1492,7 @@
3250 tree fn = get_callee_fndecl (rval);
3251 if (fn && DECL_DECLARED_CONSTEXPR_P (fn))
3252 {
3253- tree e = maybe_constant_value (rval);
3254+ tree e = maybe_constant_init (rval);
3255 if (TREE_CONSTANT (e))
3256 rval = build2 (INIT_EXPR, type, exp, e);
3257 }
3258Index: gcc/cp/class.c
3259===================================================================
c1bcd8d3
AM
3260--- gcc/cp/class.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3261+++ gcc/cp/class.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3262@@ -677,21 +677,10 @@
3263 the abstract. */
3264
3265 void
3266-set_linkage_according_to_type (tree type, tree decl)
3267+set_linkage_according_to_type (tree type ATTRIBUTE_UNUSED, tree decl)
3268 {
3269- /* If TYPE involves a local class in a function with internal
3270- linkage, then DECL should have internal linkage too. Other local
3271- classes have no linkage -- but if their containing functions
3272- have external linkage, it makes sense for DECL to have external
3273- linkage too. That will allow template definitions to be merged,
3274- for example. */
3275- if (no_linkage_check (type, /*relaxed_p=*/true))
3276- {
3277- TREE_PUBLIC (decl) = 0;
3278- DECL_INTERFACE_KNOWN (decl) = 1;
3279- }
3280- else
3281- TREE_PUBLIC (decl) = 1;
3282+ TREE_PUBLIC (decl) = 1;
3283+ determine_visibility (decl);
3284 }
3285
3286 /* Create a VAR_DECL for a primary or secondary vtable for CLASS_TYPE.
3287Index: gcc/cp/error.c
3288===================================================================
c1bcd8d3
AM
3289--- gcc/cp/error.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3290+++ gcc/cp/error.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3291@@ -2618,14 +2618,28 @@
3292
3293 reinit_cxx_pp ();
3294 dump_type (typ, flags);
3295+ /* If we're printing a type that involves typedefs, also print the
3296+ stripped version. But sometimes the stripped version looks
3297+ exactly the same, so we don't want it after all. To avoid printing
3298+ it in that case, we play ugly obstack games. */
3299 if (typ && TYPE_P (typ) && typ != TYPE_CANONICAL (typ)
3300 && !uses_template_parms (typ))
3301 {
3302+ int aka_start; char *p;
3303+ struct obstack *ob = pp_base (cxx_pp)->buffer->obstack;
3304+ /* Remember the end of the initial dump. */
3305+ int len = obstack_object_size (ob);
3306 tree aka = strip_typedefs (typ);
3307 pp_string (cxx_pp, " {aka");
3308 pp_cxx_whitespace (cxx_pp);
3309+ /* And remember the start of the aka dump. */
3310+ aka_start = obstack_object_size (ob);
3311 dump_type (aka, flags);
3312 pp_character (cxx_pp, '}');
3313+ p = (char*)obstack_base (ob);
3314+ /* If they are identical, cut off the aka with a NUL. */
3315+ if (memcmp (p, p+aka_start, len) == 0)
3316+ p[len] = '\0';
3317 }
3318 return pp_formatted_text (cxx_pp);
3319 }
c1bcd8d3
AM
3320Index: gcc/cp/tree.c
3321===================================================================
3322--- gcc/cp/tree.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3323+++ gcc/cp/tree.c (.../branches/gcc-4_6-branch) (wersja 176160)
3324@@ -495,9 +495,16 @@
3325 dummy = move (dummy);
3326 VEC_quick_push (tree, argvec, dummy);
3327 }
3328- return build_special_member_call (NULL_TREE, complete_ctor_identifier,
3329+ init = build_special_member_call (NULL_TREE, complete_ctor_identifier,
3330 &argvec, inner_type, LOOKUP_NORMAL,
3331 tf_warning_or_error);
3332+
3333+ /* For a trivial constructor, build_over_call creates a TARGET_EXPR. But
3334+ we don't want one here. */
3335+ if (TREE_CODE (init) == TARGET_EXPR)
3336+ init = TARGET_EXPR_INITIAL (init);
3337+
3338+ return init;
3339 }
3340
3341 /* Return a TARGET_EXPR which expresses the initialization of an array to
3342@@ -526,9 +533,6 @@
3343 VEC_INIT_EXPR_IS_CONSTEXPR (init) = true;
3344 VEC_INIT_EXPR_VALUE_INIT (init) = value_init;
3345
3346- init = build_target_expr (slot, init);
3347- TARGET_EXPR_IMPLICIT_P (init) = 1;
3348-
3349 return init;
3350 }
3351
7700e675
AM
3352Index: gcc/cp/ChangeLog
3353===================================================================
c1bcd8d3
AM
3354--- gcc/cp/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 176160)
3355+++ gcc/cp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 176160)
3356@@ -1,3 +1,47 @@
3357+2011-07-09 Jason Merrill <jason@redhat.com>
3358+
3359+ * tree.c (build_vec_init_elt): Strip TARGET_EXPR.
3360+
3361+ * tree.c (build_vec_init_expr): Don't add TARGET_EXPR.
3362+ * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR.
3363+ * semantics.c (cxx_eval_vec_init_1): Correct type.
3364+
3365+2011-07-07 Jason Merrill <jason@redhat.com>
3366+
3367+ PR c++/48157
3368+ * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in
3369+ partial instantiation.
3370+
3371+2011-07-07 Jakub Jelinek <jakub@redhat.com>
3372+
3373+ PR c/49644
3374+ * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with
3375+ one non-complex and one complex argument, call save_expr on both
3376+ operands.
3377+
7700e675
AM
3378+2011-07-05 Jason Merrill <jason@redhat.com>
3379+
3380+ PR c++/49598
3381+ * semantics.c (finish_id_expression): convert_from_reference.
3382+
3383+ * error.c (type_to_string): Avoid redundant akas.
3384+
3385+2011-06-27 Jason Merrill <jason@redhat.com>
3386+
3387+ PR c++/49528
3388+ * semantics.c (potential_constant_expression_1): A TARGET_EXPR
3389+ of non-literal type isn't constant.
3390+ (cxx_eval_constant_expression): Likewise.
3391+ * init.c (expand_default_init): Use maybe_constant_init.
3392+
3393+ PR c++/49440
3394+ * class.c (set_linkage_according_to_type): Hand off to
3395+ determine_visibility.
3396+
3397+ PR c++/49418
3398+ * call.c (cxx_type_promotes_to): Don't strip cv-quals.
3399+ * semantics.c (lambda_return_type): Strip them here.
3400+
3401 2011-06-27 Release Manager
3402
3403 * GCC 4.6.1 released.
c1bcd8d3
AM
3404Index: gcc/cp/typeck2.c
3405===================================================================
3406--- gcc/cp/typeck2.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3407+++ gcc/cp/typeck2.c (.../branches/gcc-4_6-branch) (wersja 176160)
3408@@ -900,7 +900,7 @@
3409 {
3410 /* Allow the result of build_array_copy and of
3411 build_value_init_noctor. */
3412- if ((TREE_CODE (init) == TARGET_EXPR
3413+ if ((TREE_CODE (init) == VEC_INIT_EXPR
3414 || TREE_CODE (init) == CONSTRUCTOR)
3415 && (same_type_ignoring_top_level_qualifiers_p
3416 (type, TREE_TYPE (init))))
3417Index: gcc/cp/pt.c
3418===================================================================
3419--- gcc/cp/pt.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3420+++ gcc/cp/pt.c (.../branches/gcc-4_6-branch) (wersja 176160)
3421@@ -11200,8 +11200,12 @@
3422 expr = name;
3423
3424 if (dependent_scope_p (scope))
3425- return build_qualified_name (NULL_TREE, scope, expr,
3426- QUALIFIED_NAME_IS_TEMPLATE (qualified_id));
3427+ {
3428+ if (is_template)
3429+ expr = build_min_nt (TEMPLATE_ID_EXPR, expr, template_args);
3430+ return build_qualified_name (NULL_TREE, scope, expr,
3431+ QUALIFIED_NAME_IS_TEMPLATE (qualified_id));
3432+ }
3433
3434 if (!BASELINK_P (name) && !DECL_P (expr))
3435 {
7700e675
AM
3436Index: gcc/cp/semantics.c
3437===================================================================
c1bcd8d3
AM
3438--- gcc/cp/semantics.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3439+++ gcc/cp/semantics.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3440@@ -2895,7 +2895,7 @@
3441 tree containing_function = current_function_decl;
3442 tree lambda_stack = NULL_TREE;
3443 tree lambda_expr = NULL_TREE;
3444- tree initializer = decl;
3445+ tree initializer = convert_from_reference (decl);
3446
3447 /* Core issue 696: "[At the July 2009 meeting] the CWG expressed
3448 support for an approach in which a reference to a local
c1bcd8d3
AM
3449@@ -6666,7 +6666,7 @@
3450
3451 if (!*non_constant_p)
3452 {
3453- init = build_constructor (TREE_TYPE (atype), n);
3454+ init = build_constructor (atype, n);
3455 TREE_CONSTANT (init) = true;
3456 return init;
3457 }
7700e675
AM
3458@@ -6932,6 +6932,15 @@
3459 break;
3460
3461 case TARGET_EXPR:
3462+ if (!literal_type_p (TREE_TYPE (t)))
3463+ {
3464+ if (!allow_non_constant)
3465+ error ("temporary of non-literal type %qT in a "
3466+ "constant expression", TREE_TYPE (t));
3467+ *non_constant_p = true;
3468+ break;
3469+ }
3470+ /* else fall through. */
3471 case INIT_EXPR:
3472 /* Pass false for 'addr' because these codes indicate
3473 initialization of a temporary. */
3474@@ -7745,8 +7754,15 @@
3475 return potential_constant_expression_1 (TREE_OPERAND (t, 1),
3476 want_rval, flags);
3477
3478+ case TARGET_EXPR:
3479+ if (!literal_type_p (TREE_TYPE (t)))
3480+ {
3481+ if (flags & tf_error)
3482+ error ("temporary of non-literal type %qT in a "
3483+ "constant expression", TREE_TYPE (t));
3484+ return false;
3485+ }
3486 case INIT_EXPR:
3487- case TARGET_EXPR:
3488 return potential_constant_expression_1 (TREE_OPERAND (t, 1),
3489 rval, flags);
3490
3491@@ -8081,7 +8097,7 @@
3492 SET_TYPE_STRUCTURAL_EQUALITY (type);
3493 }
3494 else
3495- type = type_decays_to (unlowered_expr_type (expr));
3496+ type = cv_unqualified (type_decays_to (unlowered_expr_type (expr)));
3497 return type;
3498 }
3499
3500Index: gcc/cp/call.c
3501===================================================================
c1bcd8d3
AM
3502--- gcc/cp/call.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3503+++ gcc/cp/call.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3504@@ -2554,8 +2554,6 @@
3505 return build_pointer_type (TREE_TYPE (type));
3506 if (TREE_CODE (type) == FUNCTION_TYPE)
3507 return build_pointer_type (type);
3508- if (!MAYBE_CLASS_TYPE_P (type))
3509- type = cv_unqualified (type);
3510 return type;
3511 }
3512
3513Index: gcc/tree-ssa-dom.c
3514===================================================================
c1bcd8d3
AM
3515--- gcc/tree-ssa-dom.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3516+++ gcc/tree-ssa-dom.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3517@@ -208,12 +208,11 @@
3518 {
3519 enum tree_code subcode = gimple_assign_rhs_code (stmt);
3520
3521- expr->type = NULL_TREE;
3522-
3523 switch (get_gimple_rhs_class (subcode))
3524 {
3525 case GIMPLE_SINGLE_RHS:
3526 expr->kind = EXPR_SINGLE;
3527+ expr->type = TREE_TYPE (gimple_assign_rhs1 (stmt));
3528 expr->ops.single.rhs = gimple_assign_rhs1 (stmt);
3529 break;
3530 case GIMPLE_UNARY_RHS:
3531Index: gcc/sel-sched.c
3532===================================================================
c1bcd8d3
AM
3533--- gcc/sel-sched.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3534+++ gcc/sel-sched.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3535@@ -6778,7 +6778,8 @@
3536 bookkeeping_p = 1;
3537 pipelining_p = (bookkeeping_p
3538 && (flag_sel_sched_pipelining != 0)
3539- && current_loop_nest != NULL);
3540+ && current_loop_nest != NULL
3541+ && loop_has_exit_edges (current_loop_nest));
3542 max_insns_to_rename = PARAM_VALUE (PARAM_SELSCHED_INSNS_TO_RENAME);
3543 max_ws = MAX_WS;
3544 }
3545Index: gcc/dwarf2out.c
3546===================================================================
c1bcd8d3
AM
3547--- gcc/dwarf2out.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3548+++ gcc/dwarf2out.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3549@@ -17118,7 +17118,7 @@
3550 {
3551 int count = tree_low_cst (TREE_OPERAND (index, 1), 0)
3552 - tree_low_cst (TREE_OPERAND (index, 0), 0);
3553- while (count > 0)
3554+ while (count-- > 0)
3555 {
3556 if (val)
3557 memcpy (array + curpos, array + pos, fieldsize);
3558Index: gcc/ada/ChangeLog
3559===================================================================
c1bcd8d3
AM
3560--- gcc/ada/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 176160)
3561+++ gcc/ada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3562@@ -1,3 +1,8 @@
3563+2011-07-01 Eric Botcazou <ebotcazou@adacore.com>
3564+
3565+ * gcc-interface/Make-lang.in (gnat1): Prepend '+' to the command.
3566+ (gnatbind): Likewise.
3567+
3568 2011-06-27 Release Manager
3569
3570 * GCC 4.6.1 released.
3571Index: gcc/ada/gcc-interface/Make-lang.in
3572===================================================================
c1bcd8d3
AM
3573--- gcc/ada/gcc-interface/Make-lang.in (.../tags/gcc_4_6_1_release) (wersja 176160)
3574+++ gcc/ada/gcc-interface/Make-lang.in (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3575@@ -481,11 +481,11 @@
3576 # Since the RTL should be built with the latest compiler, remove the
3577 # stamp target in the parent directory whenever gnat1 is rebuilt
3578 gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBDEPS)
3579- $(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS)
3580+ +$(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS)
3581 $(RM) stamp-gnatlib2-rts stamp-tools
3582
3583 gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS)
3584- $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS)
3585+ +$(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS)
3586
3587 # use cross-gcc
3588 gnat-cross: force
3589Index: gcc/sel-sched-ir.c
3590===================================================================
c1bcd8d3
AM
3591--- gcc/sel-sched-ir.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3592+++ gcc/sel-sched-ir.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3593@@ -2904,6 +2904,7 @@
3594 if (CANT_MOVE (insn)
3595 || INSN_ASM_P (insn)
3596 || SCHED_GROUP_P (insn)
3597+ || CALL_P (insn)
3598 /* Exception handling insns are always unique. */
3599 || (cfun->can_throw_non_call_exceptions && can_throw_internal (insn))
3600 /* TRAP_IF though have an INSN code is control_flow_insn_p (). */
3601Index: gcc/tree-eh.c
3602===================================================================
c1bcd8d3
AM
3603--- gcc/tree-eh.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3604+++ gcc/tree-eh.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3605@@ -2459,6 +2459,13 @@
3606 return true;
3607 return false;
3608
3609+ case VAR_DECL:
3610+ case FUNCTION_DECL:
3611+ /* Assume that accesses to weak vars or functions may trap. */
3612+ if (DECL_WEAK (expr))
3613+ return true;
3614+ return false;
3615+
3616 default:
3617 return false;
3618 }
c1bcd8d3
AM
3619Index: gcc/fortran/intrinsic.c
3620===================================================================
3621--- gcc/fortran/intrinsic.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3622+++ gcc/fortran/intrinsic.c (.../branches/gcc-4_6-branch) (wersja 176160)
3623@@ -2588,7 +2588,7 @@
3624
3625 add_sym_2 ("signal", GFC_ISYM_SIGNAL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER,
3626 di, GFC_STD_GNU, gfc_check_signal, NULL, gfc_resolve_signal,
3627- num, BT_INTEGER, di, REQUIRED, han, BT_UNKNOWN, 0, REQUIRED);
3628+ num, BT_INTEGER, di, REQUIRED, han, BT_VOID, 0, REQUIRED);
3629
3630 make_generic ("signal", GFC_ISYM_SIGNAL, GFC_STD_GNU);
3631
7700e675
AM
3632Index: gcc/fortran/trans-array.c
3633===================================================================
c1bcd8d3
AM
3634--- gcc/fortran/trans-array.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3635+++ gcc/fortran/trans-array.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3636@@ -4490,7 +4490,7 @@
3637 gfc_se se;
3638 HOST_WIDE_INT hi;
3639 unsigned HOST_WIDE_INT lo;
3640- tree index;
3641+ tree index, range;
3642 VEC(constructor_elt,gc) *v = NULL;
3643
3644 switch (expr->expr_type)
3645@@ -4544,28 +4544,56 @@
3646 else
3647 index = NULL_TREE;
3648
3649+ if (mpz_cmp_si (c->repeat, 1) > 0)
3650+ {
3651+ tree tmp1, tmp2;
3652+ mpz_t maxval;
3653+
3654+ mpz_init (maxval);
3655+ mpz_add (maxval, c->offset, c->repeat);
3656+ mpz_sub_ui (maxval, maxval, 1);
3657+ tmp2 = gfc_conv_mpz_to_tree (maxval, gfc_index_integer_kind);
3658+ if (mpz_cmp_si (c->offset, 0) != 0)
3659+ {
3660+ mpz_add_ui (maxval, c->offset, 1);
3661+ tmp1 = gfc_conv_mpz_to_tree (maxval, gfc_index_integer_kind);
3662+ }
3663+ else
3664+ tmp1 = gfc_conv_mpz_to_tree (c->offset, gfc_index_integer_kind);
3665+
3666+ range = fold_build2 (RANGE_EXPR, gfc_array_index_type, tmp1, tmp2);
3667+ mpz_clear (maxval);
3668+ }
3669+ else
3670+ range = NULL;
3671+
3672 gfc_init_se (&se, NULL);
3673 switch (c->expr->expr_type)
3674 {
3675 case EXPR_CONSTANT:
3676 gfc_conv_constant (&se, c->expr);
3677- CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
3678 break;
3679
3680 case EXPR_STRUCTURE:
3681 gfc_conv_structure (&se, c->expr, 1);
3682- CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
3683 break;
3684
3685-
3686 default:
3687 /* Catch those occasional beasts that do not simplify
3688 for one reason or another, assuming that if they are
3689 standard defying the frontend will catch them. */
3690 gfc_conv_expr (&se, c->expr);
3691- CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
3692 break;
3693 }
3694+
3695+ if (range == NULL_TREE)
3696+ CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
3697+ else
3698+ {
3699+ if (index != NULL_TREE)
3700+ CONSTRUCTOR_APPEND_ELT (v, index, se.expr);
3701+ CONSTRUCTOR_APPEND_ELT (v, range, se.expr);
3702+ }
3703 }
3704 break;
3705
3706@@ -6521,18 +6549,22 @@
3707 switch (purpose)
3708 {
3709 case DEALLOCATE_ALLOC_COMP:
3710+ if (cmp_has_alloc_comps && !c->attr.pointer)
3711+ {
3712+ /* Do not deallocate the components of ultimate pointer
3713+ components. */
3714+ comp = fold_build3_loc (input_location, COMPONENT_REF, ctype,
3715+ decl, cdecl, NULL_TREE);
3716+ rank = c->as ? c->as->rank : 0;
3717+ tmp = structure_alloc_comps (c->ts.u.derived, comp, NULL_TREE,
3718+ rank, purpose);
3719+ gfc_add_expr_to_block (&fnblock, tmp);
3720+ }
3721+
3722 if (c->attr.allocatable && c->attr.dimension)
3723 {
3724 comp = fold_build3_loc (input_location, COMPONENT_REF, ctype,
3725 decl, cdecl, NULL_TREE);
3726- if (cmp_has_alloc_comps && !c->attr.pointer)
3727- {
3728- /* Do not deallocate the components of ultimate pointer
3729- components. */
3730- tmp = structure_alloc_comps (c->ts.u.derived, comp, NULL_TREE,
3731- c->as->rank, purpose);
3732- gfc_add_expr_to_block (&fnblock, tmp);
3733- }
3734 tmp = gfc_trans_dealloc_allocated (comp);
3735 gfc_add_expr_to_block (&fnblock, tmp);
3736 }
3737Index: gcc/fortran/array.c
3738===================================================================
c1bcd8d3
AM
3739--- gcc/fortran/array.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3740+++ gcc/fortran/array.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3741@@ -1309,6 +1309,7 @@
3742
3743 mpz_t *offset;
3744 gfc_component *component;
3745+ mpz_t *repeat;
3746
3747 gfc_try (*expand_work_function) (gfc_expr *);
3748 }
3749@@ -1543,6 +1544,7 @@
3750 return FAILURE;
3751 }
3752 current_expand.offset = &c->offset;
3753+ current_expand.repeat = &c->repeat;
3754 current_expand.component = c->n.component;
3755 if (current_expand.expand_work_function (e) == FAILURE)
3756 return FAILURE;
3757Index: gcc/fortran/constructor.c
3758===================================================================
c1bcd8d3
AM
3759--- gcc/fortran/constructor.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3760+++ gcc/fortran/constructor.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3761@@ -1,5 +1,5 @@
3762 /* Array and structure constructors
3763- Copyright (C) 2009, 2010
3764+ Copyright (C) 2009, 2010, 2011
3765 Free Software Foundation, Inc.
3766
3767 This file is part of GCC.
3768@@ -36,6 +36,7 @@
3769 gfc_free_iterator (c->iterator, 1);
3770
3771 mpz_clear (c->offset);
3772+ mpz_clear (c->repeat);
3773
3774 gfc_free (c);
3775 }
3776@@ -54,6 +55,7 @@
3777 c->n.component = src->n.component;
3778
3779 mpz_init_set (c->offset, src->offset);
3780+ mpz_init_set (c->repeat, src->repeat);
3781
3782 return c;
3783 }
3784@@ -78,6 +80,7 @@
3785 c->iterator = NULL;
3786
3787 mpz_init_set_si (c->offset, 0);
3788+ mpz_init_set_si (c->repeat, 1);
3789
3790 return c;
3791 }
3792@@ -169,6 +172,7 @@
3793 gfc_constructor *
3794 gfc_constructor_lookup (gfc_constructor_base base, int offset)
3795 {
3796+ gfc_constructor *c;
3797 splay_tree_node node;
3798
3799 if (!base)
3800@@ -176,9 +180,24 @@
3801
3802 node = splay_tree_lookup (base, (splay_tree_key) offset);
3803 if (node)
3804- return (gfc_constructor*) node->value;
3805+ return (gfc_constructor *) node->value;
3806
3807- return NULL;
3808+ /* Check if the previous node has a repeat count big enough to
3809+ cover the offset looked for. */
3810+ node = splay_tree_predecessor (base, (splay_tree_key) offset);
3811+ if (!node)
3812+ return NULL;
3813+
3814+ c = (gfc_constructor *) node->value;
3815+ if (mpz_cmp_si (c->repeat, 1) > 0)
3816+ {
3817+ if (mpz_get_si (c->offset) + mpz_get_si (c->repeat) <= offset)
3818+ c = NULL;
3819+ }
3820+ else
3821+ c = NULL;
3822+
3823+ return c;
3824 }
3825
3826
3827@@ -232,3 +251,27 @@
3828 else
3829 return NULL;
3830 }
3831+
3832+
3833+void
3834+gfc_constructor_remove (gfc_constructor *ctor)
3835+{
3836+ if (ctor)
3837+ splay_tree_remove (ctor->base, mpz_get_si (ctor->offset));
3838+}
3839+
3840+
3841+gfc_constructor *
3842+gfc_constructor_lookup_next (gfc_constructor_base base, int offset)
3843+{
3844+ splay_tree_node node;
3845+
3846+ if (!base)
3847+ return NULL;
3848+
3849+ node = splay_tree_successor (base, (splay_tree_key) offset);
3850+ if (!node)
3851+ return NULL;
3852+
3853+ return (gfc_constructor *) node->value;
3854+}
3855Index: gcc/fortran/gfortran.h
3856===================================================================
c1bcd8d3
AM
3857--- gcc/fortran/gfortran.h (.../tags/gcc_4_6_1_release) (wersja 176160)
3858+++ gcc/fortran/gfortran.h (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3859@@ -2264,6 +2264,8 @@
3860 gfc_component *component; /* Record the component being initialized. */
3861 }
3862 n;
3863+ mpz_t repeat; /* Record the repeat number of initial values in data
3864+ statement like "data a/5*10/". */
3865 }
3866 gfc_constructor;
3867
c1bcd8d3
AM
3868@@ -2725,7 +2727,7 @@
3869 bool gfc_is_proc_ptr_comp (gfc_expr *, gfc_component **);
3870
3871 bool gfc_is_coindexed (gfc_expr *);
3872-bool gfc_get_corank (gfc_expr *);
3873+int gfc_get_corank (gfc_expr *);
3874 bool gfc_has_ultimate_allocatable (gfc_expr *);
3875 bool gfc_has_ultimate_pointer (gfc_expr *);
3876
7700e675
AM
3877Index: gcc/fortran/constructor.h
3878===================================================================
c1bcd8d3
AM
3879--- gcc/fortran/constructor.h (.../tags/gcc_4_6_1_release) (wersja 176160)
3880+++ gcc/fortran/constructor.h (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3881@@ -1,5 +1,5 @@
3882 /* Array and structure constructors
3883- Copyright (C) 2009, 2010
3884+ Copyright (C) 2009, 2010, 2011
3885 Free Software Foundation, Inc.
3886
3887 This file is part of GCC.
3888@@ -81,6 +81,10 @@
3889 Returns NULL if there is no next expression. */
3890 gfc_constructor *gfc_constructor_next (gfc_constructor *ctor);
3891
3892-gfc_constructor *gfc_constructor_advance (gfc_constructor *ctor, int n);
3893+/* Remove the gfc_constructor node from the splay tree. */
3894+void gfc_constructor_remove (gfc_constructor *);
3895
3896+/* Return first constructor node after offset. */
3897+gfc_constructor *gfc_constructor_lookup_next (gfc_constructor_base, int);
3898+
3899 #endif /* GFC_CONSTRUCTOR_H */
3900Index: gcc/fortran/ChangeLog
3901===================================================================
c1bcd8d3
AM
3902--- gcc/fortran/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 176160)
3903+++ gcc/fortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 176160)
3904@@ -1,3 +1,53 @@
3905+2011-07-10 Tobias Burnus <burnus@net-b.de>
3906+
3907+ PR fortran/49690
3908+ * intrinsic.c (add_functions): Use BT_VOID for 2nd argument of SIGNAL.
3909+
3910+2011-07-10 Janus Weil <janus@gcc.gnu.org>
3911+
3912+ PR fortran/49562
3913+ * expr.c (gfc_check_vardef_context): Handle type-bound procedures.
3914+
3915+2011-07-09 Uros Bizjak <ubizjak@gmail.com>
3916+
3917+ PR fortran/48926
3918+ * expr.c (gfc_get_corank): Change return value to int.
3919+ * gfortran.h (gfc_get_corank): Update function prototype.
3920+
7700e675
AM
3921+2011-07-04 Jakub Jelinek <jakub@redhat.com>
3922+
3923+ PR fortran/49623
3924+ * gfortranspec.c (lang_specific_driver): Ignore options with
3925+ CL_ERR_MISSING_ARG errors.
3926+
3927+ Backported from mainline
3928+ 2011-06-30 Jakub Jelinek <jakub@redhat.com>
3929+
3930+ PR fortran/49540
3931+ * gfortran.h (gfc_constructor): Add repeat field.
3932+ * trans-array.c (gfc_conv_array_initializer): Handle repeat > 1.
3933+ * array.c (current_expand): Add repeat field.
3934+ (expand_constructor): Copy repeat.
3935+ * constructor.c (node_free, node_copy, gfc_constructor_get,
3936+ gfc_constructor_lookup): Handle repeat field.
3937+ (gfc_constructor_lookup_next, gfc_constructor_remove): New functions.
3938+ * data.h (gfc_assign_data_value): Add mpz_t * argument.
3939+ (gfc_assign_data_value_range): Removed.
3940+ * constructor.h (gfc_constructor_advance): Removed.
3941+ (gfc_constructor_lookup_next, gfc_constructor_remove): New prototypes.
3942+ * data.c (gfc_assign_data_value): Add REPEAT argument, handle it and
3943+ also handle overwriting a range with a single entry.
3944+ (gfc_assign_data_value_range): Removed.
3945+ * resolve.c (check_data_variable): Adjust gfc_assign_data_value
3946+ call. Use gfc_assign_data_value instead of
3947+ gfc_assign_data_value_expr.
3948+
3949+2011-07-02 Janus Weil <janus@gcc.gnu.org>
3950+
3951+ PR fortran/49466
3952+ * trans-array.c (structure_alloc_comps): Make sure sub-components
3953+ and extended types are correctly deallocated.
3954+
3955 2011-06-27 Release Manager
3956
3957 * GCC 4.6.1 released.
3958Index: gcc/fortran/data.c
3959===================================================================
c1bcd8d3
AM
3960--- gcc/fortran/data.c (.../tags/gcc_4_6_1_release) (wersja 176160)
3961+++ gcc/fortran/data.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
3962@@ -1,5 +1,5 @@
3963 /* Supporting functions for resolving DATA statement.
3964- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
3965+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
3966 Free Software Foundation, Inc.
3967 Contributed by Lifang Zeng <zlf605@hotmail.com>
3968
3969@@ -189,10 +189,13 @@
3970
3971 /* Assign the initial value RVALUE to LVALUE's symbol->value. If the
3972 LVALUE already has an initialization, we extend this, otherwise we
3973- create a new one. */
3974+ create a new one. If REPEAT is non-NULL, initialize *REPEAT
3975+ consecutive values in LVALUE the same value in RVALUE. In that case,
3976+ LVALUE must refer to a full array, not an array section. */
3977
3978 gfc_try
3979-gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index)
3980+gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index,
3981+ mpz_t *repeat)
3982 {
3983 gfc_ref *ref;
3984 gfc_expr *init;
3985@@ -269,6 +272,100 @@
3986 &lvalue->where);
3987 goto abort;
3988 }
3989+ else if (repeat != NULL
3990+ && ref->u.ar.type != AR_ELEMENT)
3991+ {
3992+ mpz_t size, end;
3993+ gcc_assert (ref->u.ar.type == AR_FULL
3994+ && ref->next == NULL);
3995+ mpz_init_set (end, offset);
3996+ mpz_add (end, end, *repeat);
3997+ if (spec_size (ref->u.ar.as, &size) == SUCCESS)
3998+ {
3999+ if (mpz_cmp (end, size) > 0)
4000+ {
4001+ mpz_clear (size);
4002+ gfc_error ("Data element above array upper bound at %L",
4003+ &lvalue->where);
4004+ goto abort;
4005+ }
4006+ mpz_clear (size);
4007+ }
4008+
4009+ con = gfc_constructor_lookup (expr->value.constructor,
4010+ mpz_get_si (offset));
4011+ if (!con)
4012+ {
4013+ con = gfc_constructor_lookup_next (expr->value.constructor,
4014+ mpz_get_si (offset));
4015+ if (con != NULL && mpz_cmp (con->offset, end) >= 0)
4016+ con = NULL;
4017+ }
4018+
4019+ /* Overwriting an existing initializer is non-standard but
4020+ usually only provokes a warning from other compilers. */
4021+ if (con != NULL && con->expr != NULL)
4022+ {
4023+ /* Order in which the expressions arrive here depends on
4024+ whether they are from data statements or F95 style
4025+ declarations. Therefore, check which is the most
4026+ recent. */
4027+ gfc_expr *exprd;
4028+ exprd = (LOCATION_LINE (con->expr->where.lb->location)
4029+ > LOCATION_LINE (rvalue->where.lb->location))
4030+ ? con->expr : rvalue;
4031+ if (gfc_notify_std (GFC_STD_GNU,"Extension: "
4032+ "re-initialization of '%s' at %L",
4033+ symbol->name, &exprd->where) == FAILURE)
4034+ return FAILURE;
4035+ }
4036+
4037+ while (con != NULL)
4038+ {
4039+ gfc_constructor *next_con = gfc_constructor_next (con);
4040+
4041+ if (mpz_cmp (con->offset, end) >= 0)
4042+ break;
4043+ if (mpz_cmp (con->offset, offset) < 0)
4044+ {
4045+ gcc_assert (mpz_cmp_si (con->repeat, 1) > 0);
4046+ mpz_sub (con->repeat, offset, con->offset);
4047+ }
4048+ else if (mpz_cmp_si (con->repeat, 1) > 0
4049+ && mpz_get_si (con->offset)
4050+ + mpz_get_si (con->repeat) > mpz_get_si (end))
4051+ {
4052+ int endi;
4053+ splay_tree_node node
4054+ = splay_tree_lookup (con->base,
4055+ mpz_get_si (con->offset));
4056+ gcc_assert (node
4057+ && con == (gfc_constructor *) node->value
4058+ && node->key == (splay_tree_key)
4059+ mpz_get_si (con->offset));
4060+ endi = mpz_get_si (con->offset)
4061+ + mpz_get_si (con->repeat);
4062+ if (endi > mpz_get_si (end) + 1)
4063+ mpz_set_si (con->repeat, endi - mpz_get_si (end));
4064+ else
4065+ mpz_set_si (con->repeat, 1);
4066+ mpz_set (con->offset, end);
4067+ node->key = (splay_tree_key) mpz_get_si (end);
4068+ break;
4069+ }
4070+ else
4071+ gfc_constructor_remove (con);
4072+ con = next_con;
4073+ }
4074+
4075+ con = gfc_constructor_insert_expr (&expr->value.constructor,
4076+ NULL, &rvalue->where,
4077+ mpz_get_si (offset));
4078+ mpz_set (con->repeat, *repeat);
4079+ repeat = NULL;
4080+ mpz_clear (end);
4081+ break;
4082+ }
4083 else
4084 {
4085 mpz_t size;
4086@@ -293,6 +390,32 @@
4087 NULL, &rvalue->where,
4088 mpz_get_si (offset));
4089 }
4090+ else if (mpz_cmp_si (con->repeat, 1) > 0)
4091+ {
4092+ /* Need to split a range. */
4093+ if (mpz_cmp (con->offset, offset) < 0)
4094+ {
4095+ gfc_constructor *pred_con = con;
4096+ con = gfc_constructor_insert_expr (&expr->value.constructor,
4097+ NULL, &con->where,
4098+ mpz_get_si (offset));
4099+ con->expr = gfc_copy_expr (pred_con->expr);
4100+ mpz_add (con->repeat, pred_con->offset, pred_con->repeat);
4101+ mpz_sub (con->repeat, con->repeat, offset);
4102+ mpz_sub (pred_con->repeat, offset, pred_con->offset);
4103+ }
4104+ if (mpz_cmp_si (con->repeat, 1) > 0)
4105+ {
4106+ gfc_constructor *succ_con;
4107+ succ_con
4108+ = gfc_constructor_insert_expr (&expr->value.constructor,
4109+ NULL, &con->where,
4110+ mpz_get_si (offset) + 1);
4111+ succ_con->expr = gfc_copy_expr (con->expr);
4112+ mpz_sub_ui (succ_con->repeat, con->repeat, 1);
4113+ mpz_set_si (con->repeat, 1);
4114+ }
4115+ }
4116 break;
4117
4118 case REF_COMPONENT:
4119@@ -337,6 +460,7 @@
4120 }
4121
4122 mpz_clear (offset);
4123+ gcc_assert (repeat == NULL);
4124
4125 if (ref || last_ts->type == BT_CHARACTER)
4126 {
4127@@ -380,36 +504,6 @@
4128 }
4129
4130
4131-/* Similarly, but initialize REPEAT consecutive values in LVALUE the same
4132- value in RVALUE. */
4133-
4134-gfc_try
4135-gfc_assign_data_value_range (gfc_expr *lvalue, gfc_expr *rvalue,
4136- mpz_t index, mpz_t repeat)
4137-{
4138- mpz_t offset, last_offset;
4139- gfc_try t;
4140-
4141- mpz_init (offset);
4142- mpz_init (last_offset);
4143- mpz_add (last_offset, index, repeat);
4144-
4145- t = SUCCESS;
4146- for (mpz_set(offset, index) ; mpz_cmp(offset, last_offset) < 0;
4147- mpz_add_ui (offset, offset, 1))
4148- if (gfc_assign_data_value (lvalue, rvalue, offset) == FAILURE)
4149- {
4150- t = FAILURE;
4151- break;
4152- }
4153-
4154- mpz_clear (offset);
4155- mpz_clear (last_offset);
4156-
4157- return t;
4158-}
4159-
4160-
4161 /* Modify the index of array section and re-calculate the array offset. */
4162
4163 void
c1bcd8d3
AM
4164Index: gcc/fortran/expr.c
4165===================================================================
4166--- gcc/fortran/expr.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4167+++ gcc/fortran/expr.c (.../branches/gcc-4_6-branch) (wersja 176160)
4168@@ -4139,7 +4139,7 @@
4169 }
4170
4171
4172-bool
4173+int
4174 gfc_get_corank (gfc_expr *e)
4175 {
4176 int corank;
4177@@ -4389,8 +4389,8 @@
4178 sym = e->value.function.esym ? e->value.function.esym : e->symtree->n.sym;
4179 }
4180
4181- if (!pointer && e->expr_type == EXPR_FUNCTION
4182- && sym->result->attr.pointer)
4183+ attr = gfc_expr_attr (e);
4184+ if (!pointer && e->expr_type == EXPR_FUNCTION && attr.pointer)
4185 {
4186 if (!(gfc_option.allow_std & GFC_STD_F2008))
4187 {
4188@@ -4427,7 +4427,6 @@
4189
4190 /* Find out whether the expr is a pointer; this also means following
4191 component references to the last one. */
4192- attr = gfc_expr_attr (e);
4193 is_pointer = (attr.pointer || attr.proc_pointer);
4194 if (pointer && !is_pointer)
4195 {
7700e675
AM
4196Index: gcc/fortran/data.h
4197===================================================================
c1bcd8d3
AM
4198--- gcc/fortran/data.h (.../tags/gcc_4_6_1_release) (wersja 176160)
4199+++ gcc/fortran/data.h (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4200@@ -1,5 +1,5 @@
4201 /* Header for functions resolving DATA statements.
4202- Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc.
4203+ Copyright (C) 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
4204
4205 This file is part of GCC.
4206
4207@@ -19,6 +19,5 @@
4208
4209 void gfc_formalize_init_value (gfc_symbol *);
4210 void gfc_get_section_index (gfc_array_ref *, mpz_t *, mpz_t *);
4211-gfc_try gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t);
4212-gfc_try gfc_assign_data_value_range (gfc_expr *, gfc_expr *, mpz_t, mpz_t);
4213+gfc_try gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t, mpz_t *);
4214 void gfc_advance_section (mpz_t *, gfc_array_ref *, mpz_t *);
4215Index: gcc/fortran/gfortranspec.c
4216===================================================================
c1bcd8d3
AM
4217--- gcc/fortran/gfortranspec.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4218+++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4219@@ -255,6 +255,9 @@
4220
4221 for (i = 1; i < argc; ++i)
4222 {
4223+ if (decoded_options[i].errors & CL_ERR_MISSING_ARG)
4224+ continue;
4225+
4226 switch (decoded_options[i].opt_index)
4227 {
4228 case OPT_SPECIAL_input_file:
4229Index: gcc/fortran/resolve.c
4230===================================================================
c1bcd8d3
AM
4231--- gcc/fortran/resolve.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4232+++ gcc/fortran/resolve.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4233@@ -12612,8 +12612,8 @@
4234 mpz_set_ui (size, 0);
4235 }
4236
4237- t = gfc_assign_data_value_range (var->expr, values.vnode->expr,
4238- offset, range);
4239+ t = gfc_assign_data_value (var->expr, values.vnode->expr,
4240+ offset, &range);
4241
4242 mpz_add (offset, offset, range);
4243 mpz_clear (range);
4244@@ -12628,7 +12628,8 @@
4245 mpz_sub_ui (values.left, values.left, 1);
4246 mpz_sub_ui (size, size, 1);
4247
4248- t = gfc_assign_data_value (var->expr, values.vnode->expr, offset);
4249+ t = gfc_assign_data_value (var->expr, values.vnode->expr,
4250+ offset, NULL);
4251 if (t == FAILURE)
4252 break;
4253
4254Index: gcc/BASE-VER
4255===================================================================
c1bcd8d3
AM
4256--- gcc/BASE-VER (.../tags/gcc_4_6_1_release) (wersja 176160)
4257+++ gcc/BASE-VER (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4258@@ -1 +1 @@
4259-4.6.1
4260+4.6.2
c1bcd8d3
AM
4261Index: gcc/c-typeck.c
4262===================================================================
4263--- gcc/c-typeck.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4264+++ gcc/c-typeck.c (.../branches/gcc-4_6-branch) (wersja 176160)
4265@@ -10033,6 +10033,7 @@
4266 {
4267 case MULT_EXPR:
4268 case TRUNC_DIV_EXPR:
4269+ op1 = c_save_expr (op1);
4270 imag = build2 (resultcode, real_type, imag, op1);
4271 /* Fall through. */
4272 case PLUS_EXPR:
4273@@ -10053,6 +10054,7 @@
4274 switch (code)
4275 {
4276 case MULT_EXPR:
4277+ op0 = c_save_expr (op0);
4278 imag = build2 (resultcode, real_type, op0, imag);
4279 /* Fall through. */
4280 case PLUS_EXPR:
4281Index: gcc/gimplify.c
4282===================================================================
4283--- gcc/gimplify.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4284+++ gcc/gimplify.c (.../branches/gcc-4_6-branch) (wersja 176160)
4285@@ -2008,8 +2008,14 @@
4286 ret = MIN (ret, tret);
4287 }
4288 }
4289+ else
4290+ {
4291+ tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
4292+ is_gimple_reg, fb_rvalue);
4293+ ret = MIN (ret, tret);
4294+ }
4295
4296- if (!TREE_OPERAND (t, 3))
4297+ if (TREE_OPERAND (t, 3) == NULL_TREE)
4298 {
4299 tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)));
4300 tree elmt_size = unshare_expr (array_ref_element_size (t));
4301@@ -2028,11 +2034,17 @@
4302 ret = MIN (ret, tret);
4303 }
4304 }
4305+ else
4306+ {
4307+ tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p,
4308+ is_gimple_reg, fb_rvalue);
4309+ ret = MIN (ret, tret);
4310+ }
4311 }
4312 else if (TREE_CODE (t) == COMPONENT_REF)
4313 {
4314 /* Set the field offset into T and gimplify it. */
4315- if (!TREE_OPERAND (t, 2))
4316+ if (TREE_OPERAND (t, 2) == NULL_TREE)
4317 {
4318 tree offset = unshare_expr (component_ref_field_offset (t));
4319 tree field = TREE_OPERAND (t, 1);
4320@@ -2051,6 +2063,12 @@
4321 ret = MIN (ret, tret);
4322 }
4323 }
4324+ else
4325+ {
4326+ tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p,
4327+ is_gimple_reg, fb_rvalue);
4328+ ret = MIN (ret, tret);
4329+ }
4330 }
4331 }
4332
7700e675
AM
4333Index: gcc/tree-cfgcleanup.c
4334===================================================================
c1bcd8d3
AM
4335--- gcc/tree-cfgcleanup.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4336+++ gcc/tree-cfgcleanup.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4337@@ -600,7 +600,7 @@
4338 BB is present in the cfg. */
4339 if (bb == NULL
4340 || bb->index < NUM_FIXED_BLOCKS
4341- || bb->index >= n_basic_blocks
4342+ || bb->index >= last_basic_block
4343 || BASIC_BLOCK (bb->index) != bb
4344 || !gimple_call_noreturn_p (stmt))
4345 continue;
4346Index: gcc/simplify-rtx.c
4347===================================================================
c1bcd8d3
AM
4348--- gcc/simplify-rtx.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4349+++ gcc/simplify-rtx.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4350@@ -1,7 +1,7 @@
4351 /* RTL simplification functions for GNU compiler.
4352 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
4353- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
4354- Free Software Foundation, Inc.
4355+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
4356+ 2011 Free Software Foundation, Inc.
4357
4358 This file is part of GCC.
4359
4360@@ -686,13 +686,13 @@
4361 return simplify_gen_binary (MINUS, mode, temp, XEXP (op, 1));
4362 }
4363
4364- /* (neg (mult A B)) becomes (mult (neg A) B).
4365+ /* (neg (mult A B)) becomes (mult A (neg B)).
4366 This works even for floating-point values. */
4367 if (GET_CODE (op) == MULT
4368 && !HONOR_SIGN_DEPENDENT_ROUNDING (mode))
4369 {
4370- temp = simplify_gen_unary (NEG, mode, XEXP (op, 0), mode);
4371- return simplify_gen_binary (MULT, mode, temp, XEXP (op, 1));
4372+ temp = simplify_gen_unary (NEG, mode, XEXP (op, 1), mode);
4373+ return simplify_gen_binary (MULT, mode, XEXP (op, 0), temp);
4374 }
4375
4376 /* NEG commutes with ASHIFT since it is multiplication. Only do
4377@@ -2175,12 +2175,34 @@
4378 if (GET_CODE (op0) == NEG)
4379 {
4380 rtx temp = simplify_unary_operation (NEG, mode, op1, mode);
4381+ /* If op1 is a MULT as well and simplify_unary_operation
4382+ just moved the NEG to the second operand, simplify_gen_binary
4383+ below could through simplify_associative_operation move
4384+ the NEG around again and recurse endlessly. */
4385+ if (temp
4386+ && GET_CODE (op1) == MULT
4387+ && GET_CODE (temp) == MULT
4388+ && XEXP (op1, 0) == XEXP (temp, 0)
4389+ && GET_CODE (XEXP (temp, 1)) == NEG
4390+ && XEXP (op1, 1) == XEXP (XEXP (temp, 1), 0))
4391+ temp = NULL_RTX;
4392 if (temp)
4393 return simplify_gen_binary (MULT, mode, XEXP (op0, 0), temp);
4394 }
4395 if (GET_CODE (op1) == NEG)
4396 {
4397 rtx temp = simplify_unary_operation (NEG, mode, op0, mode);
4398+ /* If op0 is a MULT as well and simplify_unary_operation
4399+ just moved the NEG to the second operand, simplify_gen_binary
4400+ below could through simplify_associative_operation move
4401+ the NEG around again and recurse endlessly. */
4402+ if (temp
4403+ && GET_CODE (op0) == MULT
4404+ && GET_CODE (temp) == MULT
4405+ && XEXP (op0, 0) == XEXP (temp, 0)
4406+ && GET_CODE (XEXP (temp, 1)) == NEG
4407+ && XEXP (op0, 1) == XEXP (XEXP (temp, 1), 0))
4408+ temp = NULL_RTX;
4409 if (temp)
4410 return simplify_gen_binary (MULT, mode, temp, XEXP (op1, 0));
4411 }
4412Index: gcc/tree-sra.c
4413===================================================================
c1bcd8d3
AM
4414--- gcc/tree-sra.c (.../tags/gcc_4_6_1_release) (wersja 176160)
4415+++ gcc/tree-sra.c (.../branches/gcc-4_6-branch) (wersja 176160)
7700e675
AM
4416@@ -2813,7 +2813,8 @@
4417 there to do the copying and then load the scalar replacements of the LHS.
4418 This is what the first branch does. */
4419
4420- if (gimple_has_volatile_ops (*stmt)
4421+ if (modify_this_stmt
4422+ || gimple_has_volatile_ops (*stmt)
4423 || contains_vce_or_bfcref_p (rhs)
4424 || contains_vce_or_bfcref_p (lhs))
4425 {
c1bcd8d3 4426Index: gcc/po/es.po
7700e675 4427===================================================================
c1bcd8d3
AM
4428--- gcc/po/es.po (.../tags/gcc_4_6_1_release) (wersja 176160)
4429+++ gcc/po/es.po (.../branches/gcc-4_6-branch) (wersja 176160)
4430@@ -1,17 +1,17 @@
4431