Index: configure =================================================================== --- configure (.../tags/gcc_4_6_1_release) (wersja 175929) +++ configure (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2705,9 +2705,8 @@ # these libraries are built for the target environment, and are built after # the host libraries and the host tools (which may be a cross compiler) -# +# Note that libiberty is not a target library. target_libraries="target-libgcc \ - target-libiberty \ target-libgloss \ target-newlib \ target-libgomp \ @@ -3149,14 +3148,14 @@ ;; *-*-kaos*) # Remove unsupported stuff on all kaOS configurations. - skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx" + skipdirs="${libgcj} target-libstdc++-v3 target-librx" skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" noconfigdirs="$noconfigdirs target-libgloss" ;; *-*-netbsd*) # Skip some stuff on all NetBSD configurations. - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" + noconfigdirs="$noconfigdirs target-newlib target-libgloss" # Skip some stuff that's unsupported on some NetBSD configurations. case "${target}" in @@ -3168,21 +3167,20 @@ esac ;; *-*-netware*) - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap" + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap" ;; *-*-rtems*) - skipdirs="${skipdirs} target-libiberty" noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" ;; # The tpf target doesn't support gdb yet. *-*-tpf*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl" + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl" ;; *-*-uclinux*) noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" ;; *-*-vxworks*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}" ;; alpha*-dec-osf*) # ld works, but does not support shared libraries. @@ -3210,7 +3208,7 @@ sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs="$noconfigdirs ${libgcj}" noconfigdirs="$noconfigdirs target-examples" - noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" + noconfigdirs="$noconfigdirs texinfo send-pr" noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" noconfigdirs="$noconfigdirs expect dejagnu" # the C++ libraries don't build on top of CE's C libraries @@ -3244,7 +3242,7 @@ libgloss_dir=arm ;; arm*-*-symbianelf*) - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" + noconfigdirs="$noconfigdirs ${libgcj}" libgloss_dir=arm ;; arm-*-pe*) @@ -3263,7 +3261,7 @@ noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" ;; avr-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp" ;; bfin-*-*) unsupported_languages="$unsupported_languages java" @@ -3442,7 +3440,7 @@ noconfigdirs="$noconfigdirs ${libgcj}" ;; m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" libgloss_dir=m68hc11 ;; m68k-*-elf*) @@ -3472,9 +3470,6 @@ mt-*-*) noconfigdirs="$noconfigdirs sim" ;; - picochip-*-*) - noconfigdirs="$noconfigdirs target-libiberty" - ;; powerpc-*-aix*) # copied from rs6000-*-* entry noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}" @@ -3516,7 +3511,6 @@ noconfigdirs="$noconfigdirs gprof target-libssp ${libgcj}" ;; mips*-sde-elf*) - skipdirs="$skipdirs target-libiberty" noconfigdirs="$noconfigdirs ${libgcj}" if test x$with_newlib = xyes; then noconfigdirs="$noconfigdirs gprof" @@ -3606,7 +3600,7 @@ noconfigdirs="$noconfigdirs ${libgcj}" ;; ip2k-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" ;; *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) noconfigdirs="$noconfigdirs target-newlib target-libgloss" @@ -6585,27 +6579,6 @@ fi done -# Sometimes the tools are distributed with libiberty but with no other -# libraries. In that case, we don't want to build target-libiberty. -# Don't let libgcc imply libiberty either. -if test -n "${target_configdirs}" ; then - libgcc= - others= - for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do - if test "$i" = "libgcc"; then - libgcc=target-libgcc - elif test "$i" != "libiberty" ; then - if test -r $srcdir/$i/configure ; then - others=yes; - break; - fi - fi - done - if test -z "${others}" ; then - target_configdirs=$libgcc - fi -fi - # Quietly strip out all directories which aren't configurable in this tree. # This relies on all configurable subdirectories being autoconfiscated, which # is now the case. Index: Makefile.in =================================================================== --- Makefile.in (.../tags/gcc_4_6_1_release) (wersja 175929) +++ Makefile.in (.../branches/gcc-4_6-branch) (wersja 175929) @@ -966,7 +966,6 @@ maybe-configure-target-libtermcap \ maybe-configure-target-winsup \ maybe-configure-target-libgloss \ - maybe-configure-target-libiberty \ maybe-configure-target-gperf \ maybe-configure-target-examples \ maybe-configure-target-libffi \ @@ -1150,7 +1149,6 @@ all-target: maybe-all-target-libtermcap all-target: maybe-all-target-winsup all-target: maybe-all-target-libgloss -all-target: maybe-all-target-libiberty all-target: maybe-all-target-gperf all-target: maybe-all-target-examples all-target: maybe-all-target-libffi @@ -1273,7 +1271,6 @@ info-target: maybe-info-target-libtermcap info-target: maybe-info-target-winsup info-target: maybe-info-target-libgloss -info-target: maybe-info-target-libiberty info-target: maybe-info-target-gperf info-target: maybe-info-target-examples info-target: maybe-info-target-libffi @@ -1389,7 +1386,6 @@ dvi-target: maybe-dvi-target-libtermcap dvi-target: maybe-dvi-target-winsup dvi-target: maybe-dvi-target-libgloss -dvi-target: maybe-dvi-target-libiberty dvi-target: maybe-dvi-target-gperf dvi-target: maybe-dvi-target-examples dvi-target: maybe-dvi-target-libffi @@ -1505,7 +1501,6 @@ pdf-target: maybe-pdf-target-libtermcap pdf-target: maybe-pdf-target-winsup pdf-target: maybe-pdf-target-libgloss -pdf-target: maybe-pdf-target-libiberty pdf-target: maybe-pdf-target-gperf pdf-target: maybe-pdf-target-examples pdf-target: maybe-pdf-target-libffi @@ -1621,7 +1616,6 @@ html-target: maybe-html-target-libtermcap html-target: maybe-html-target-winsup html-target: maybe-html-target-libgloss -html-target: maybe-html-target-libiberty html-target: maybe-html-target-gperf html-target: maybe-html-target-examples html-target: maybe-html-target-libffi @@ -1737,7 +1731,6 @@ TAGS-target: maybe-TAGS-target-libtermcap TAGS-target: maybe-TAGS-target-winsup TAGS-target: maybe-TAGS-target-libgloss -TAGS-target: maybe-TAGS-target-libiberty TAGS-target: maybe-TAGS-target-gperf TAGS-target: maybe-TAGS-target-examples TAGS-target: maybe-TAGS-target-libffi @@ -1853,7 +1846,6 @@ install-info-target: maybe-install-info-target-libtermcap install-info-target: maybe-install-info-target-winsup install-info-target: maybe-install-info-target-libgloss -install-info-target: maybe-install-info-target-libiberty install-info-target: maybe-install-info-target-gperf install-info-target: maybe-install-info-target-examples install-info-target: maybe-install-info-target-libffi @@ -1969,7 +1961,6 @@ install-pdf-target: maybe-install-pdf-target-libtermcap install-pdf-target: maybe-install-pdf-target-winsup install-pdf-target: maybe-install-pdf-target-libgloss -install-pdf-target: maybe-install-pdf-target-libiberty install-pdf-target: maybe-install-pdf-target-gperf install-pdf-target: maybe-install-pdf-target-examples install-pdf-target: maybe-install-pdf-target-libffi @@ -2085,7 +2076,6 @@ install-html-target: maybe-install-html-target-libtermcap install-html-target: maybe-install-html-target-winsup install-html-target: maybe-install-html-target-libgloss -install-html-target: maybe-install-html-target-libiberty install-html-target: maybe-install-html-target-gperf install-html-target: maybe-install-html-target-examples install-html-target: maybe-install-html-target-libffi @@ -2201,7 +2191,6 @@ installcheck-target: maybe-installcheck-target-libtermcap installcheck-target: maybe-installcheck-target-winsup installcheck-target: maybe-installcheck-target-libgloss -installcheck-target: maybe-installcheck-target-libiberty installcheck-target: maybe-installcheck-target-gperf installcheck-target: maybe-installcheck-target-examples installcheck-target: maybe-installcheck-target-libffi @@ -2317,7 +2306,6 @@ mostlyclean-target: maybe-mostlyclean-target-libtermcap mostlyclean-target: maybe-mostlyclean-target-winsup mostlyclean-target: maybe-mostlyclean-target-libgloss -mostlyclean-target: maybe-mostlyclean-target-libiberty mostlyclean-target: maybe-mostlyclean-target-gperf mostlyclean-target: maybe-mostlyclean-target-examples mostlyclean-target: maybe-mostlyclean-target-libffi @@ -2433,7 +2421,6 @@ clean-target: maybe-clean-target-libtermcap clean-target: maybe-clean-target-winsup clean-target: maybe-clean-target-libgloss -clean-target: maybe-clean-target-libiberty clean-target: maybe-clean-target-gperf clean-target: maybe-clean-target-examples clean-target: maybe-clean-target-libffi @@ -2549,7 +2536,6 @@ distclean-target: maybe-distclean-target-libtermcap distclean-target: maybe-distclean-target-winsup distclean-target: maybe-distclean-target-libgloss -distclean-target: maybe-distclean-target-libiberty distclean-target: maybe-distclean-target-gperf distclean-target: maybe-distclean-target-examples distclean-target: maybe-distclean-target-libffi @@ -2665,7 +2651,6 @@ maintainer-clean-target: maybe-maintainer-clean-target-libtermcap maintainer-clean-target: maybe-maintainer-clean-target-winsup maintainer-clean-target: maybe-maintainer-clean-target-libgloss -maintainer-clean-target: maybe-maintainer-clean-target-libiberty maintainer-clean-target: maybe-maintainer-clean-target-gperf maintainer-clean-target: maybe-maintainer-clean-target-examples maintainer-clean-target: maybe-maintainer-clean-target-libffi @@ -2836,7 +2821,6 @@ maybe-check-target-libtermcap \ maybe-check-target-winsup \ maybe-check-target-libgloss \ - maybe-check-target-libiberty \ maybe-check-target-gperf \ maybe-check-target-examples \ maybe-check-target-libffi \ @@ -3059,7 +3043,6 @@ maybe-install-target-libtermcap \ maybe-install-target-winsup \ maybe-install-target-libgloss \ - maybe-install-target-libiberty \ maybe-install-target-gperf \ maybe-install-target-examples \ maybe-install-target-libffi \ @@ -3194,7 +3177,6 @@ maybe-install-strip-target-libtermcap \ maybe-install-strip-target-winsup \ maybe-install-strip-target-libgloss \ - maybe-install-strip-target-libiberty \ maybe-install-strip-target-gperf \ maybe-install-strip-target-examples \ maybe-install-strip-target-libffi \ @@ -52579,463 +52561,6 @@ -.PHONY: configure-target-libiberty maybe-configure-target-libiberty -maybe-configure-target-libiberty: -@if gcc-bootstrap -configure-target-libiberty: stage_current -@endif gcc-bootstrap -@if target-libiberty -maybe-configure-target-libiberty: configure-target-libiberty -configure-target-libiberty: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - echo "Checking multilib configuration for libiberty..."; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ - $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \ - if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \ - if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \ - rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \ - else \ - rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \ - mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ - fi; \ - else \ - mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \ - fi; \ - test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \ - $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \ - $(NORMAL_TARGET_EXPORTS) \ - echo Configuring in $(TARGET_SUBDIR)/libiberty; \ - cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \ - case $(srcdir) in \ - /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ - *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \ - sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ - esac; \ - srcdiroption="--srcdir=$${topdir}/libiberty"; \ - libsrcdir="$$s/libiberty"; \ - rm -f no-such-file || : ; \ - CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ - --target=${target_alias} $${srcdiroption} \ - || exit 1 -@endif target-libiberty - - - - - -.PHONY: all-target-libiberty maybe-all-target-libiberty -maybe-all-target-libiberty: -@if gcc-bootstrap -all-target-libiberty: stage_current -@endif gcc-bootstrap -@if target-libiberty -TARGET-target-libiberty=all -maybe-all-target-libiberty: all-target-libiberty -all-target-libiberty: configure-target-libiberty - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ - $(TARGET-target-libiberty)) -@endif target-libiberty - - - - - -.PHONY: check-target-libiberty maybe-check-target-libiberty -maybe-check-target-libiberty: -@if target-libiberty -maybe-check-target-libiberty: check-target-libiberty - -check-target-libiberty: - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check) - -@endif target-libiberty - -.PHONY: install-target-libiberty maybe-install-target-libiberty -maybe-install-target-libiberty: -@if target-libiberty -maybe-install-target-libiberty: install-target-libiberty - -install-target-libiberty: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install) - -@endif target-libiberty - -.PHONY: install-strip-target-libiberty maybe-install-strip-target-libiberty -maybe-install-strip-target-libiberty: -@if target-libiberty -maybe-install-strip-target-libiberty: install-strip-target-libiberty - -install-strip-target-libiberty: installdirs - @: $(MAKE); $(unstage) - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) - -@endif target-libiberty - -# Other targets (info, dvi, pdf, etc.) - -.PHONY: maybe-info-target-libiberty info-target-libiberty -maybe-info-target-libiberty: -@if target-libiberty -maybe-info-target-libiberty: info-target-libiberty - -info-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - info) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty -maybe-dvi-target-libiberty: -@if target-libiberty -maybe-dvi-target-libiberty: dvi-target-libiberty - -dvi-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - dvi) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty -maybe-pdf-target-libiberty: -@if target-libiberty -maybe-pdf-target-libiberty: pdf-target-libiberty - -pdf-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - pdf) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-html-target-libiberty html-target-libiberty -maybe-html-target-libiberty: -@if target-libiberty -maybe-html-target-libiberty: html-target-libiberty - -html-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - html) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty -maybe-TAGS-target-libiberty: -@if target-libiberty -maybe-TAGS-target-libiberty: TAGS-target-libiberty - -TAGS-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - TAGS) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty -maybe-install-info-target-libiberty: -@if target-libiberty -maybe-install-info-target-libiberty: install-info-target-libiberty - -install-info-target-libiberty: \ - configure-target-libiberty \ - info-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-info) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty -maybe-install-pdf-target-libiberty: -@if target-libiberty -maybe-install-pdf-target-libiberty: install-pdf-target-libiberty - -install-pdf-target-libiberty: \ - configure-target-libiberty \ - pdf-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-pdf) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty -maybe-install-html-target-libiberty: -@if target-libiberty -maybe-install-html-target-libiberty: install-html-target-libiberty - -install-html-target-libiberty: \ - configure-target-libiberty \ - html-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - install-html) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty -maybe-installcheck-target-libiberty: -@if target-libiberty -maybe-installcheck-target-libiberty: installcheck-target-libiberty - -installcheck-target-libiberty: \ - configure-target-libiberty - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - installcheck) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty -maybe-mostlyclean-target-libiberty: -@if target-libiberty -maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty - -mostlyclean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - mostlyclean) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-clean-target-libiberty clean-target-libiberty -maybe-clean-target-libiberty: -@if target-libiberty -maybe-clean-target-libiberty: clean-target-libiberty - -clean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - clean) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty -maybe-distclean-target-libiberty: -@if target-libiberty -maybe-distclean-target-libiberty: distclean-target-libiberty - -distclean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - distclean) \ - || exit 1 - -@endif target-libiberty - -.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty -maybe-maintainer-clean-target-libiberty: -@if target-libiberty -maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty - -maintainer-clean-target-libiberty: - @: $(MAKE); $(unstage) - @[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \ - r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - $(NORMAL_TARGET_EXPORTS) \ - echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \ - for flag in $(EXTRA_TARGET_FLAGS); do \ - eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ - done; \ - (cd $(TARGET_SUBDIR)/libiberty && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ - "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ - "RANLIB=$${RANLIB}" \ - "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ - maintainer-clean) \ - || exit 1 - -@endif target-libiberty - - - - - .PHONY: configure-target-gperf maybe-configure-target-gperf maybe-configure-target-gperf: @if gcc-bootstrap @@ -60187,7 +59712,6 @@ configure-target-libtermcap: stage_last configure-target-winsup: stage_last configure-target-libgloss: stage_last -configure-target-libiberty: stage_last configure-target-gperf: stage_last configure-target-examples: stage_last configure-target-libffi: stage_last @@ -60218,7 +59742,6 @@ configure-target-libtermcap: maybe-all-gcc configure-target-winsup: maybe-all-gcc configure-target-libgloss: maybe-all-gcc -configure-target-libiberty: maybe-all-gcc configure-target-gperf: maybe-all-gcc configure-target-examples: maybe-all-gcc configure-target-libffi: maybe-all-gcc @@ -60987,7 +60510,6 @@ configure-target-boehm-gc: maybe-all-target-libstdc++-v3 configure-target-fastjar: maybe-configure-target-zlib all-target-fastjar: maybe-all-target-zlib -all-target-fastjar: maybe-all-target-libiberty configure-target-libgo: maybe-configure-target-libffi configure-target-libgo: maybe-all-target-libstdc++-v3 all-target-libgo: maybe-all-target-libffi @@ -61001,9 +60523,7 @@ all-target-libjava: maybe-all-target-qthreads all-target-libjava: maybe-all-target-libffi configure-target-libobjc: maybe-configure-target-boehm-gc -all-target-libobjc: maybe-all-target-libiberty all-target-libobjc: maybe-all-target-boehm-gc -all-target-libstdc++-v3: maybe-all-target-libiberty configure-target-libstdc++-v3: maybe-configure-target-libgomp configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp @@ -61021,10 +60541,7 @@ all-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp all-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp all-target-libgloss: maybe-all-target-newlib -all-target-winsup: maybe-all-target-libiberty all-target-winsup: maybe-all-target-libtermcap -configure-target-libiberty: maybe-all-binutils -configure-target-libiberty: maybe-all-ld configure-target-newlib: maybe-all-binutils configure-target-newlib: maybe-all-ld configure-target-libgfortran: maybe-all-target-libquadmath @@ -61062,7 +60579,6 @@ configure-target-libtermcap: maybe-all-target-libgcc configure-target-winsup: maybe-all-target-libgcc configure-target-libgloss: maybe-all-target-libgcc -configure-target-libiberty: maybe-all-target-libgcc configure-target-gperf: maybe-all-target-libgcc configure-target-examples: maybe-all-target-libgcc configure-target-libffi: maybe-all-target-libgcc @@ -61097,7 +60613,6 @@ configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss - configure-target-gperf: maybe-all-target-newlib maybe-all-target-libgloss configure-target-gperf: maybe-all-target-libstdc++-v3 Index: gcc/doc/invoke.texi =================================================================== --- gcc/doc/invoke.texi (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/doc/invoke.texi (.../branches/gcc-4_6-branch) (wersja 175929) @@ -611,7 +611,8 @@ -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol -mcmodel=@var{code-model} -mabi=@var{name} @gol -m32 -m64 -mlarge-data-threshold=@var{num} @gol --msse2avx -mfentry -m8bit-idiv} +-msse2avx -mfentry -m8bit-idiv @gol +-mavx256-split-unaligned-load -mavx256-split-unaligned-store} @emph{i386 and x86-64 Windows Options} @gccoptlist{-mconsole -mcygwin -mno-cygwin -mdll @@ -12769,6 +12770,12 @@ to 255, 8bit unsigned integer divide will be used instead of 32bit/64bit integer divide. +@item -mavx256-split-unaligned-load +@item -mavx256-split-unaligned-store +@opindex avx256-split-unaligned-load +@opindex avx256-split-unaligned-store +Split 32-byte AVX unaligned load and store. + @end table These @samp{-m} switches are supported in addition to the above Index: gcc/DATESTAMP =================================================================== --- gcc/DATESTAMP (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/DATESTAMP (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1 +1 @@ -20110627 +20110706 Index: gcc/reorg.c =================================================================== --- gcc/reorg.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/reorg.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2152,7 +2152,7 @@ /* This must be an INSN or CALL_INSN. */ pat = PATTERN (trial); - /* USE and CLOBBER at this level was just for flow; ignore it. */ + /* Stand-alone USE and CLOBBER are just for flow. */ if (GET_CODE (pat) == USE || GET_CODE (pat) == CLOBBER) continue; @@ -2271,15 +2271,12 @@ } if (target == 0) - for (trial = next_nonnote_insn (insn); trial; trial = next_trial) + for (trial = next_nonnote_insn (insn); !stop_search_p (trial, 1); + trial = next_trial) { next_trial = next_nonnote_insn (trial); - if (LABEL_P (trial) - || BARRIER_P (trial)) - break; - - /* We must have an INSN, JUMP_INSN, or CALL_INSN. */ + /* This must be an INSN or CALL_INSN. */ pat = PATTERN (trial); /* Stand-alone USE and CLOBBER are just for flow. */ @@ -2293,7 +2290,7 @@ else trial_delay = trial; - /* Stop our search when seeing an unconditional jump. */ + /* Stop our search when seeing a jump. */ if (JUMP_P (trial_delay)) break; Index: gcc/DEV-PHASE =================================================================== --- gcc/DEV-PHASE (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/DEV-PHASE (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1 @@ +prerelease Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,214 @@ +2011-07-06 Ramana Radhakrishnan + + Backport from mainline. + 2011-06-24 Ramana Radhakrishnan + + PR target/49335 + * config/arm/predicates.md (add_operator): New. + * config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage + in Thumb2. + +2011-07-05 Jakub Jelinek + + PR tree-optimization/49618 + * tree-eh.c (tree_could_trap_p) : + For DECL_WEAK decls return true. + +2011-07-04 Jakub Jelinek + + PR rtl-optimization/49619 + * combine.c (combine_simplify_rtx): In PLUS -> IOR simplification + pass VOIDmode as op0_mode to recursive call. + + PR rtl-optimization/49472 + * simplify-rtx.c (simplify_unary_operation_1) : When + negating MULT, negate the second operand instead of first. + (simplify_binary_operation_1) : If one operand is + a NEG and the other is MULT, don't attempt to optimize by + negation of the MULT operand if it only moves the NEG operation + around. + + Backported from mainline + 2011-06-06 Jakub Jelinek + + PR debug/49262 + * dwarf2out.c (native_encode_initializer): Decrement count in each + iteration. + +2011-07-04 Georg-Johann Lay + + Backport from mainline + 2011-07-04 Georg-Johann Lay + + PR target/44643 + * config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY + instead of TREE_READONLY. + +2011-07-04 Richard Guenther + + PR tree-optimization/49615 + * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Fix + basic-block index check. + +2011-06-30 Eric Botcazou + + PR tree-optimization/49572 + * tree-ssa-dom.c (initialize_hash_element) : Use the + type of the RHS instead of that of the LHS for the expression type. + +2011-06-30 Georg-Johann Lay + + Backport from mainline + PR target/34734 + (avr_section_type_flags): For data in ".progmem.data", remove + section flag SECTION_WRITE. + +2011-06-30 Georg-Johann Lay + + Backport from mainline + PR target/34734 + * config/avr/avr.c (avr_handle_progmem_attribute): Move warning + about uninitialized data attributed 'progmem' from here... + (avr_encode_section_info): ...to this new function. + (TARGET_ENCODE_SECTION_INFO): New define. + +2011-06-29 Changpeng Fang + + Backport from mainline + 2011-06-29 Changpeng Fang + + * config/i386/i386.opt (mprefer-avx128): Redefine the flag as a Mask + option. + * config/i386/i386.h (ix86_tune_indices): Add X86_TUNE_AVX128_OPTIMAL + entry. + (TARGET_AVX128_OPTIMAL): New definition. + * config/i386/i386.c (initial_ix86_tune_features): Initialize + X86_TUNE_AVX128_OPTIMAL entry. + (ix86_option_override_internal): Enable the generation + of the 128-bit instructions when TARGET_AVX128_OPTIMAL is set. + (ix86_preferred_simd_mode): Use TARGET_PREFER_AVX128. + (ix86_autovectorize_vector_sizes): Use TARGET_PREFER_AVX128. + +2011-06-29 Harsha Jagasia + + Backport from mainline + 2011-05-31 Alexandre Oliva + + * config/i386/i386.c (ix86_rtx_costs): Drop NEG from sub for FMA. + * config/i386/sse.md: Add n to negated FMA pattern names. + +2011-06-29 Eric Botcazou + + PR tree-optimization/49539 + * tree-ssa-forwprop.c (can_propagate_from): Check for abnormal SSA + names by means of stmt_references_abnormal_ssa_name. + (associate_plusminus): Call can_propagate_from before propagating + from definition statements. + +2011-06-29 Martin Jambor + + Backport from mainline + 2011-06-24 Martin Jambor + + PR tree-optimizations/49516 + * tree-sra.c (sra_modify_assign): Choose the safe path for + aggregate copies if we also did scalar replacements. + +2011-06-28 Changpeng Fang + + Backport from mainline + 2011-06-20 Changpeng Fang + + PR target/49089 + * config/i386/i386.c (avx256_split_unaligned_load): New definition. + (avx256_split_unaligned_store): New definition. + (ix86_option_override_internal): Enable avx256 unaligned load/store + splitting only when avx256_split_unaligned_load/store is set. + +2011-06-28 Changpeng Fang + + Backport from mainline + 2011-03-28 H.J. Lu + + * config/i386/i386.c (flag_opts): Fix a typo in + -mavx256-split-unaligned-store. + +2011-06-28 Changpeng Fang + + Backport from mainline + 2011-03-27 H.J. Lu + + * config/i386/sse.md (*avx_mov_internal): Don't assert + unaligned 256bit load/store. + (*avx_movu): Likewise. + (*avx_movdqu): Likewise. + +2011-06-28 Changpeng Fang + + Backport from mainline + 2011-03-27 H.J. Lu + + * config/i386/i386.c (flag_opts): Add -mavx256-split-unaligned-load + and -mavx256-split-unaligned-store. + (ix86_option_override_internal): Split 32-byte AVX unaligned + load/store by default. + (ix86_avx256_split_vector_move_misalign): New. + (ix86_expand_vector_move_misalign): Use it. + + * config/i386/i386.opt: Add -mavx256-split-unaligned-load and + -mavx256-split-unaligned-store. + + * config/i386/sse.md (*avx_mov_internal): Verify unaligned + 256bit load/store. Generate unaligned store on misaligned memory + operand. + (*avx_movu): Verify unaligned + 256bit load/store. + (*avx_movdqu): Likewise. + + * doc/invoke.texi: Document -mavx256-split-unaligned-load and + -mavx256-split-unaligned-store. + +2011-06-28 Eric Botcazou + + * tree-ssa-dom.c (initialize_hash_element): Fix oversight. + +2011-06-28 Andrey Belevantsev + + Backport from mainline + 2011-05-25 Andrey Belevantsev + + PR rtl-optimization/49014 + * config/i386/athlon.md (athlon_ssecomi): Change type to ssecomi. + +2011-06-28 Alexander Monakov + + Backport from mainline + 2011-04-08 Alexander Monakov + + PR target/48273 + * cfgloop.h (loop_has_exit_edges): New helper. + * sel-sched-ir.c (init_global_and_expr_for_insn): Make CALLs + non-clonable. + * sel-sched.c (sel_setup_region_sched_flags): Don't pipeline loops + that have no exit edges. + +2011-06-28 Iain Sandoe + + PR target/47997 + * config/darwin.c (darwin_mergeable_string_section): Place string + constants in '.cstring' rather than '.const' when CF/NSStrings are + active. + +2011-06-27 Eric Botcazou + + * reorg.c (fill_simple_delay_slots): Use stop_search_p to stop the + forward scan as well. + +2011-06-27 Jakub Jelinek + + * BASE-VER: Set to 4.6.2. + * DEV-PHASE: Set to prerelease. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: gcc/testsuite/gcc.target/arm/scd42-3.c =================================================================== --- gcc/testsuite/gcc.target/arm/scd42-3.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/scd42-3.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,6 +1,7 @@ /* Verify that ldr is preferred on XScale for loading a 3 or 4 byte constant. */ /* { dg-do compile } */ -/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "" } } */ +/* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-march=*" } { "-march=xscale" } } */ +/* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */ /* { dg-options "-mcpu=xscale -O" } */ unsigned load4(void) __attribute__ ((naked)); Index: gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c =================================================================== --- gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,7 +1,7 @@ /* { dg-do compile } */ -/* { dg-require-effective-target arm_neon_fp16_ok } */ +/* { dg-require-effective-target arm_fp16_ok } */ /* { dg-options "-mfp16-format=ieee" } */ -/* { dg-add-options arm_neon_fp16 } */ +/* { dg-add-options arm_fp16 } */ /* Test generation of VFP __fp16 instructions. */ Index: gcc/testsuite/gcc.target/arm/pr42879.c =================================================================== --- gcc/testsuite/gcc.target/arm/pr42879.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/pr42879.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,4 +1,5 @@ -/* { dg-options "-march=armv7-a -mthumb -Os" } */ +/* { dg-require-effective-target arm_thumb2_ok } */ +/* { dg-options "-mthumb -Os" } */ /* { dg-final { scan-assembler "lsls" } } */ struct A Index: gcc/testsuite/gcc.target/arm/ctz.c =================================================================== --- gcc/testsuite/gcc.target/arm/ctz.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/ctz.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,6 +1,6 @@ /* { dg-do compile } */ -/* { dg-require-effective-target arm32 } */ -/* { dg-options "-O2 -march=armv6t2" } */ +/* { dg-require-effective-target arm_thumb2_ok } */ +/* { dg-options "-O2" } */ unsigned int functest(unsigned int x) { Index: gcc/testsuite/gcc.target/arm/thumb-bitfld1.c =================================================================== --- gcc/testsuite/gcc.target/arm/thumb-bitfld1.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/thumb-bitfld1.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,6 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -mthumb -march=armv5t" } */ +/* { dg-require-effective-target arm_thumb1_ok } */ +/* { dg-options "-O1 -mthumb" } */ struct foo { Index: gcc/testsuite/gcc.target/arm/stack-corruption.c =================================================================== --- gcc/testsuite/gcc.target/arm/stack-corruption.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/stack-corruption.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */ /* { dg-options "-O -mthumb -fno-omit-frame-pointer" } */ int main() { Index: gcc/testsuite/gcc.target/arm/pr40482.c =================================================================== --- gcc/testsuite/gcc.target/arm/pr40482.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/pr40482.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,4 @@ +/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */ /* { dg-options "-mthumb -Os" } */ /* { dg-final { scan-assembler-not "ldr" } } */ Index: gcc/testsuite/gcc.target/arm/pr45701-3.c =================================================================== --- gcc/testsuite/gcc.target/arm/pr45701-3.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/pr45701-3.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,6 @@ /* { dg-do compile } */ -/* { dg-options "-march=armv7-a -mthumb -Os" } */ +/* { dg-require-effective-target arm_thumb2_ok } */ +/* { dg-options "-mthumb -Os" } */ /* { dg-final { scan-assembler "push\t.*r8" } } */ /* { dg-final { scan-assembler-not "push\t*r3" } } */ Index: gcc/testsuite/gcc.target/arm/20031108-1.c =================================================================== --- gcc/testsuite/gcc.target/arm/20031108-1.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.target/arm/20031108-1.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,6 @@ /* PR optimization/10467 */ /* { dg-do compile } */ +/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */ /* { dg-options "-O2 -mthumb" } */ typedef enum {Ident_1} Enumeration; Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ + +#define N 1024 + +float a[N], b[N+3], c[N]; + +void +avx_test (void) +{ + int i; + + for (i = 0; i < N; i++) + c[i] = a[i] * b[i+3]; +} + +/* { dg-final { scan-assembler-not "\\*avx_movups256/1" } } */ +/* { dg-final { scan-assembler "\\*avx_movups/1" } } */ +/* { dg-final { scan-assembler "vinsertf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ + +#define N 1024 + +double a[N], b[N+3], c[N]; + +void +avx_test (void) +{ + int i; + + for (i = 0; i < N; i++) + c[i] = a[i] * b[i+3]; +} + +/* { dg-final { scan-assembler-not "\\*avx_movupd256/1" } } */ +/* { dg-final { scan-assembler "\\*avx_movupd/1" } } */ +/* { dg-final { scan-assembler "vinsertf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,43 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ + +#include "avx-check.h" + +#define N 8 + +float a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35, + 546.46, 46.79, 82.78, 82.7, 9.4 }; +float b[N]; +float c[N]; + +void +foo (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i] = a[i+3] * 2; +} + +__attribute__ ((noinline)) +float +bar (float x) +{ + return x * 2; +} + +void +avx_test (void) +{ + int i; + + foo (); + + for (i = 0; i < N; i++) + c[i] = bar (a[i+3]); + + for (i = 0; i < N; i++) + if (b[i] != c[i]) + abort (); +} Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ + +#define N 1024 + +float a[N], b[N+3], c[N], d[N]; + +void +avx_test (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i+3] = a[i] * 10.0; + + for (i = 0; i < N; i++) + d[i] = c[i] * 20.0; +} + +/* { dg-final { scan-assembler-not "\\*avx_movups256/2" } } */ +/* { dg-final { scan-assembler "movups.*\\*avx_movv4sf_internal/3" } } */ +/* { dg-final { scan-assembler "vextractf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,60 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ + +#include "avx-check.h" + +#define N 128 + +char **ep; +char **fp; +char **mp; +char **lp; + +__attribute__ ((noinline)) +void +foo (void) +{ + mp = (char **) malloc (N); + lp = (char **) malloc (N); + ep = (char **) malloc (N); + fp = (char **) malloc (N); +} + +void +avx_test (void) +{ + int i; + char **ap, **bp, **cp, **dp; + char *str = "STR"; + + foo (); + + cp = mp; + dp = lp; + + for (i = N; i >= 0; i--) + { + *cp++ = str; + *dp++ = str; + } + + ap = ep; + bp = fp; + cp = mp; + dp = lp; + + for (i = N; i >= 0; i--) + { + *ap++ = *cp++; + *bp++ = *dp++; + } + + for (i = N; i >= 0; i--) + { + if (strcmp (*--ap, "STR") != 0) + abort (); + if (strcmp (*--bp, "STR") != 0) + abort (); + } +} Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ + +#define N 1024 + +double a[N], b[N+3], c[N], d[N]; + +void +avx_test (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i+3] = a[i] * 10.0; + + for (i = 0; i < N; i++) + d[i] = c[i] * 20.0; +} + +/* { dg-final { scan-assembler-not "\\*avx_movupd256/2" } } */ +/* { dg-final { scan-assembler "movupd.*\\*avx_movv2df_internal/3" } } */ +/* { dg-final { scan-assembler "vextractf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,42 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ + +#include "avx-check.h" + +#define N 8 + +float a[N] = { 24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4 }; +float b[N+3]; +float c[N+3]; + +void +foo (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i+3] = a[i] * 2; +} + +__attribute__ ((noinline)) +float +bar (float x) +{ + return x * 2; +} + +void +avx_test (void) +{ + int i; + + foo (); + + for (i = 0; i < N; i++) + c[i+3] = bar (a[i]); + + for (i = 0; i < N; i++) + if (b[i+3] != c[i+3]) + abort (); +} Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,45 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ + +#include "avx-check.h" + +#define N 128 + +char **ep; +char **fp; + +__attribute__ ((noinline)) +void +foo (void) +{ + ep = (char **) malloc (N); + fp = (char **) malloc (N); +} + +void +avx_test (void) +{ + int i; + char **ap, **bp; + char *str = "STR"; + + foo (); + + ap = ep; + bp = fp; + + for (i = N; i >= 0; i--) + { + *ap++ = str; + *bp++ = str; + } + + for (i = N; i >= 0; i--) + { + if (strcmp (*--ap, "STR") != 0) + abort (); + if (strcmp (*--bp, "STR") != 0) + abort (); + } +} Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ + +#define N 1024 + +char **ep; +char **fp; + +void +avx_test (void) +{ + int i; + char **ap; + char **bp; + char **cp; + + ap = ep; + bp = fp; + for (i = 128; i >= 0; i--) + { + *ap++ = *cp++; + *bp++ = 0; + } +} + +/* { dg-final { scan-assembler-not "\\*avx_movdqu256/1" } } */ +/* { dg-final { scan-assembler "\\*avx_movdqu/1" } } */ +/* { dg-final { scan-assembler "vinsertf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */ + +#define N 1024 + +float a[N], b[N+3]; + +void +avx_test (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i] = a[i+3] * 2; +} + +/* { dg-final { scan-assembler "\\*avx_movups256/1" } } */ +/* { dg-final { scan-assembler-not "\\*avx_movups/1" } } */ +/* { dg-final { scan-assembler-not "vinsertf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,42 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ + +#include "avx-check.h" + +#define N 4 + +double a[N+3] = { -1, -1, -1, 24.43, 68.346, 43.35, 546.46 }; +double b[N]; +double c[N]; + +void +foo (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i] = a[i+3] * 2; +} + +__attribute__ ((noinline)) +double +bar (double x) +{ + return x * 2; +} + +void +avx_test (void) +{ + int i; + + foo (); + + for (i = 0; i < N; i++) + c[i] = bar (a[i+3]); + + for (i = 0; i < N; i++) + if (b[i] != c[i]) + abort (); +} Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ + +#define N 1024 + +char **ep; +char **fp; + +void +avx_test (void) +{ + int i; + char **ap; + char **bp; + char **cp; + + ap = ep; + bp = fp; + for (i = 128; i >= 0; i--) + { + *ap++ = *cp++; + *bp++ = 0; + } +} + +/* { dg-final { scan-assembler-not "\\*avx_movdqu256/2" } } */ +/* { dg-final { scan-assembler "movdqu.*\\*avx_movv16qi_internal/3" } } */ +/* { dg-final { scan-assembler "vextractf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */ + +#define N 1024 + +float a[N], b[N+3], c[N]; + +void +avx_test (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i+3] = a[i] * c[i]; +} + +/* { dg-final { scan-assembler "\\*avx_movups256/2" } } */ +/* { dg-final { scan-assembler-not "\\*avx_movups/2" } } */ +/* { dg-final { scan-assembler-not "\\*avx_movv4sf_internal/3" } } */ +/* { dg-final { scan-assembler-not "vextractf128" } } */ Index: gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c =================================================================== --- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,42 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ + +#include "avx-check.h" + +#define N 4 + +double a[N] = { 24.43, 68.346, 43.35, 546.46 }; +double b[N+3]; +double c[N+3]; + +void +foo (void) +{ + int i; + + for (i = 0; i < N; i++) + b[i+3] = a[i] * 2; +} + +__attribute__ ((noinline)) +double +bar (double x) +{ + return x * 2; +} + +void +avx_test (void) +{ + int i; + + foo (); + + for (i = 0; i < N; i++) + c[i+3] = bar (a[i]); + + for (i = 0; i < N; i++) + if (b[i+3] != c[i+3]) + abort (); +} Index: gcc/testsuite/lib/scanasm.exp =================================================================== --- gcc/testsuite/lib/scanasm.exp (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/lib/scanasm.exp (.../branches/gcc-4_6-branch) (wersja 175929) @@ -50,16 +50,22 @@ } } + set pattern [lindex $orig_args 0] + set printable_pattern [make_pattern_printable $pattern] + if { [is_remote host] } { remote_upload host "$output_file" } + set files [glob -nocomplain $output_file] + if { $files == "" } { + verbose -log "$testcase: output file does not exist" + unresolved "$testcase $name $printable_pattern" + return + } set fd [open $output_file r] set text [read $fd] close $fd - set pattern [lindex $orig_args 0] - set printable_pattern [make_pattern_printable $pattern] - set match [regexp -- $pattern $text] if { $match == $positive } { pass "$testcase $name $printable_pattern" @@ -202,15 +208,23 @@ upvar 2 name testcase set testcase [lindex $testcase 0] + set pattern [lindex $args 0] + set pp_pattern [make_pattern_printable $pattern] + # This must match the rule in gcc-dg.exp. set output_file "[file rootname [file tail $testcase]].s" + set files [glob -nocomplain $output_file] + if { $files == "" } { + verbose -log "$testcase: output file does not exist" + unresolved "$testcase scan-assembler-times $pp_pattern [lindex $args 1]" + return + } + set fd [open $output_file r] set text [read $fd] close $fd - set pattern [lindex $args 0] - set pp_pattern [make_pattern_printable $pattern] if { [llength [regexp -inline -all -- $pattern $text]] == [lindex $args 1]} { pass "$testcase scan-assembler-times $pp_pattern [lindex $args 1]" } else { @@ -253,13 +267,20 @@ upvar 2 name testcase set testcase [lindex $testcase 0] + set pattern [lindex $args 0] + set pp_pattern [make_pattern_printable $pattern] set output_file "[file rootname [file tail $testcase]].s" + set files [glob -nocomplain $output_file] + if { $files == "" } { + verbose -log "$testcase: output file does not exist" + unresolved "$testcase scan-assembler-dem $pp_pattern" + return + } + set output [remote_exec host "$cxxfilt" "" "$output_file"] set text [lindex $output 1] - set pattern [lindex $args 0] - set pp_pattern [make_pattern_printable $pattern] if [regexp -- $pattern $text] { pass "$testcase scan-assembler-dem $pp_pattern" } else { @@ -301,13 +322,20 @@ upvar 2 name testcase set testcase [lindex $testcase 0] + set pattern [lindex $args 0] + set pp_pattern [make_pattern_printable $pattern] set output_file "[file rootname [file tail $testcase]].s" + set files [glob -nocomplain $output_file] + if { $files == "" } { + verbose -log "$testcase: output file does not exist" + unresolved "$testcase scan-assembler-dem-not $pp_pattern" + return + } + set output [remote_exec host "$cxxfilt" "" "$output_file"] set text [lindex $output 1] - set pattern [lindex $args 0] - set pp_pattern [make_pattern_printable $pattern] if ![regexp -- $pattern $text] { pass "$testcase scan-assembler-dem-not $pp_pattern" } else { Index: gcc/testsuite/lib/scandump.exp =================================================================== --- gcc/testsuite/lib/scandump.exp (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/lib/scandump.exp (.../branches/gcc-4_6-branch) (wersja 175929) @@ -55,7 +55,8 @@ set src [file tail [lindex $testcase 0]] set output_file "[glob -nocomplain $src.[lindex $args 2]]" if { $output_file == "" } { - fail "$testname: dump file does not exist" + verbose -log "$testcase: dump file does not exist" + unresolved "$testname" return } @@ -97,7 +98,8 @@ set src [file tail [lindex $testcase 0]] set output_file "[glob -nocomplain $src.[lindex $args 3]]" if { $output_file == "" } { - fail "$testname: dump file does not exist" + verbose -log "$testcase: dump file does not exist" + unresolved "$testname" return } @@ -139,7 +141,8 @@ set src [file tail [lindex $testcase 0]] set output_file "[glob -nocomplain $src.[lindex $args 2]]" if { $output_file == "" } { - fail "$testname: dump file does not exist" + verbose -log "$testcase: dump file does not exist" + unresolved "$testname" return } @@ -190,7 +193,8 @@ set src [file tail [lindex $testcase 0]] set output_file "[glob -nocomplain $src.[lindex $args 2]]" if { $output_file == "" } { - fail "$testname: dump file does not exist" + verbose -log "$testcase: dump file does not exist" + unresolved "$testname" return } @@ -241,7 +245,8 @@ set src [file tail [lindex $testcase 0]] set output_file "[glob -nocomplain $src.[lindex $args 2]]" if { $output_file == "" } { - fail "$testname: dump file does not exist" + verbose -log "$testcase: dump file does not exist" + unresolved "$testname" return } Index: gcc/testsuite/lib/target-supports-dg.exp =================================================================== --- gcc/testsuite/lib/target-supports-dg.exp (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/lib/target-supports-dg.exp (.../branches/gcc-4_6-branch) (wersja 175929) @@ -172,6 +172,12 @@ if { [llength $args] < 1 || [llength $args] > 2 } { error "syntax error, need a single effective-target keyword with optional selector" } + + # Don't bother if we're already skipping the test. + upvar dg-do-what dg-do-what + if { [lindex ${dg-do-what} 1] == "N" } { + return + } # Evaluate selector if present. if { [llength $args] == 2 } { @@ -182,7 +188,6 @@ } if { ![is-effective-target [lindex $args 0]] } { - upvar dg-do-what dg-do-what set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] } } Index: gcc/testsuite/lib/target-supports.exp =================================================================== --- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1932,45 +1932,53 @@ # or -mfloat-abi=hard, but if one is already specified by the # multilib, use it. -proc add_options_for_arm_neon_fp16 { flags } { - if { ! [check_effective_target_arm_neon_fp16_ok] } { +proc add_options_for_arm_fp16 { flags } { + if { ! [check_effective_target_arm_fp16_ok] } { return "$flags" } - global et_arm_neon_fp16_flags - return "$flags $et_arm_neon_fp16_flags" + global et_arm_fp16_flags + return "$flags $et_arm_fp16_flags" } -# Return 1 if this is an ARM target supporting -mfpu=neon-fp16 -# -mfloat-abi=softfp or equivalent options. Skip multilibs that are -# incompatible with these options. Also set et_arm_neon_flags to the -# best options to add. +# Return 1 if this is an ARM target that can support a VFP fp16 variant. +# Skip multilibs that are incompatible with these options and set +# et_arm_fp16_flags to the best options to add. -proc check_effective_target_arm_neon_fp16_ok_nocache { } { - global et_arm_neon_fp16_flags - set et_arm_neon_fp16_flags "" - if { [check_effective_target_arm32] } { - if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "-mfpu=neon-fp16*" } ]] { - return 0 - } - # Always add -mfpu=neon-fp16, since there is no preprocessor - # macro for FP16 support. - foreach flags {"-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp"} { - if { [check_no_compiler_messages_nocache arm_neon_fp16_ok object { - #include "arm_neon.h" - int dummy; - } "$flags"] } { - set et_arm_neon_fp16_flags $flags - return 1 - } - } +proc check_effective_target_arm_fp16_ok_nocache { } { + global et_arm_fp16_flags + set et_arm_fp16_flags "" + if { ! [check_effective_target_arm32] } { + return 0; } + if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "-mfpu=*fp16*" "-mfpu=*fpv[4-9]*" "-mfpu=*fpv[1-9][0-9]*" } ]] { + # Multilib flags would override -mfpu. + return 0 + } + if [check-flags [list "" { *-*-* } { "-mfloat-abi=soft" } { "" } ]] { + # Must generate floating-point instructions. + return 0 + } + if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] { + # The existing -mfpu value is OK; use it, but add softfp. + set et_arm_fp16_flags "-mfloat-abi=softfp" + return 1; + } + # Add -mfpu for a VFP fp16 variant since there is no preprocessor + # macro to check for this support. + set flags "-mfpu=vfpv4 -mfloat-abi=softfp" + if { [check_no_compiler_messages_nocache arm_fp16_ok assembly { + int dummy; + } "$flags"] } { + set et_arm_fp16_flags "$flags" + return 1 + } return 0 } -proc check_effective_target_arm_neon_fp16_ok { } { - return [check_cached_effective_target arm_neon_fp16_ok \ - check_effective_target_arm_neon_fp16_ok_nocache] +proc check_effective_target_arm_fp16_ok { } { + return [check_cached_effective_target arm_fp16_ok \ + check_effective_target_arm_fp16_ok_nocache] } # Return 1 is this is an ARM target where -mthumb causes Thumb-1 to be @@ -3913,3 +3921,11 @@ return 1 } +proc check_effective_target_non_strict_align {} { + return [check_no_compiler_messages non_strict_align assembly { + char *y; + typedef char __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) c; + c *z; + void foo(void) { z = (c *) y; } + } "-Wcast-align"] +} Index: gcc/testsuite/gfortran.dg/extends_14.f03 =================================================================== --- gcc/testsuite/gfortran.dg/extends_14.f03 (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/extends_14.f03 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,28 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-original" } +! +! PR 49466: [4.6/4.7 Regression] Memory leak with assignment of extended derived types +! +! Contributed by Rich Townsend + +program evolve_aflow + + implicit none + + type :: state_t + real, allocatable :: U(:) + end type + + type, extends(state_t) :: astate_t + end type + + type(astate_t) :: a,b + + allocate(a%U(1000)) + + a = b + +end program + +! { dg-final { scan-tree-dump-times "__builtin_free" 3 "original" } } +! { dg-final { cleanup-tree-dump "original" } } Index: gcc/testsuite/gfortran.dg/pr49472.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr49472.f90 (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/pr49472.f90 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,15 @@ +! PR rtl-optimization/49472 +! { dg-do compile } +! { dg-options "-O -fcompare-debug -ffast-math" } +subroutine pr49472 + integer, parameter :: n = 3 + real(8) :: a, b, c, d, e (n+1) + integer :: i + do i=2, (n+1) + b = 1. / ((i - 1.5d0) * 1.) + c = b * a + d = -b * c / (1. + b * b) ** 1.5d0 + e(i) = d + end do + call dummy (e) +end subroutine Index: gcc/testsuite/gfortran.dg/pr49540-2.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr49540-2.f90 (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/pr49540-2.f90 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,17 @@ +! PR fortran/49540 +! { dg-do compile } +! { dg-options "" } +block data + common /a/ i(5,5) + data i /4, 23 * 5, 6/ + data i(:,2) /1, 3 * 2, 3/ + common /b/ j(5,5) + data j(2,:) /1, 3 * 2, 3/ + data j /4, 23 * 5, 6/ + common /c/ k(5,5) + data k(:,2) /1, 3 * 2, 3/ + data k /4, 23 * 5, 6/ + common /d/ l(5,5) + data l /4, 23 * 5, 6/ + data l(2,:) /1, 3 * 2, 3/ +end block data Index: gcc/testsuite/gfortran.dg/read_list_eof_1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/read_list_eof_1.f90 (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/read_list_eof_1.f90 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,22 @@ +! { dg-do run } +! PR 49296 List formatted read of file without EOR marker (\n). +program read_list_eof_1 + implicit none + character(len=100) :: s + call genfil () + open (unit=20, file='read.dat', form='FORMATTED', action='READ', & + status='OLD') + read (20, fmt=*) s + close (20, status='delete') + if (trim(s) /= "a") then + call abort () + end if + +contains + subroutine genfil + open(10, file='read.dat', form='unformatted', action='write', & + status='replace', access='stream') + write(10) 'a' + close(10) + end subroutine genfil +end program read_list_eof_1 Index: gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90 (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,43 @@ +! { dg-do run } +! PR 49479 - this used not to print anything. +! Test case by Joost VandeVondele. +MODULE M1 + IMPLICIT NONE + type foo + character(len=5) :: x + end type foo +CONTAINS + SUBROUTINE S1(data) + INTEGER, DIMENSION(:), INTENT(IN), & + OPTIONAL :: DATA + character(20) :: line + IF (.not. PRESENT(data)) call abort + write (unit=line,fmt='(I5)') size(data) + if (line /= ' 0 ') call abort + END SUBROUTINE S1 + + subroutine s_type(data) + type(foo), dimension(:), intent(in), optional :: data + character(20) :: line + IF (.not. PRESENT(data)) call abort + write (unit=line,fmt='(I5)') size(data) + if (line /= ' 0 ') call abort + end subroutine s_type + + SUBROUTINE S2(N) + INTEGER :: N + INTEGER, ALLOCATABLE, DIMENSION(:, :) :: blki + type(foo), allocatable, dimension(:, :) :: bar + ALLOCATE(blki(3,N)) + allocate (bar(3,n)) + blki=0 + CALL S1(RESHAPE(blki,(/3*N/))) + call s_type(reshape(bar, (/3*N/))) + END SUBROUTINE S2 + +END MODULE M1 + +USE M1 +CALL S2(0) +END +! { dg-final { cleanup-modules "m1" } } Index: gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90 =================================================================== --- gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90 (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -49,7 +49,7 @@ if(allocated(na4%b4)) call abort() end -! { dg-final { scan-tree-dump-times "__builtin_free" 32 "original" } } +! { dg-final { scan-tree-dump-times "__builtin_free" 38 "original" } } ! { dg-final { cleanup-tree-dump "original" } } ! { dg-final { cleanup-modules "m" } } Index: gcc/testsuite/gfortran.dg/pr49540-1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr49540-1.f90 (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gfortran.dg/pr49540-1.f90 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,6 @@ +! PR fortran/49540 +! { dg-do compile } +block data + common /a/ b(100000,100) + data b /10000000 * 0.0/ +end block data Index: gcc/testsuite/gcc.c-torture/compile/pr38752.c =================================================================== --- gcc/testsuite/gcc.c-torture/compile/pr38752.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.c-torture/compile/pr38752.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,25 @@ +typedef struct +{ + int baddr; +} mstruct_t; + +static struct +{ + unsigned int mapnum; + mstruct_t unused; +} mtab; + +static mstruct_t *mactab = &mtab.unused; + +int +main(void) +{ + int i; + int addr; + + for (i=1; i <= mtab.mapnum; i++) + if (addr < mactab[i].baddr) + break; + return 0; +} + Index: gcc/testsuite/gnat.dg/opt17.adb =================================================================== --- gcc/testsuite/gnat.dg/opt17.adb (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gnat.dg/opt17.adb (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,13 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +package body Opt17 is + + function Func return S is + V : String (1 .. 6); + begin + V (1 .. 3) := "ABC"; + return V (1 .. 5); + end; + +end Opt17; Index: gcc/testsuite/gnat.dg/opt17.ads =================================================================== --- gcc/testsuite/gnat.dg/opt17.ads (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gnat.dg/opt17.ads (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,7 @@ +package Opt17 is + + subtype S is String (1 .. 5); + + function Func return S; + +end Opt17; Index: gcc/testsuite/gcc.dg/pr49619.c =================================================================== --- gcc/testsuite/gcc.dg/pr49619.c (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/gcc.dg/pr49619.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,13 @@ +/* PR rtl-optimization/49619 */ +/* { dg-do compile } */ +/* { dg-options "-O -fno-tree-fre" } */ + +extern int a, b; + +void +foo (int x) +{ + a = 2; + b = 0; + b = (a && ((a = 1, 0 >= b) || (short) (x + (b & x)))); +} Index: gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c =================================================================== --- gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,8 +1,8 @@ /* Test various operators on __fp16 and mixed __fp16/float operands. */ /* { dg-do compile { target arm*-*-* } } */ -/* { dg-require-effective-target arm_neon_fp16_ok } */ +/* { dg-require-effective-target arm_fp16_ok } */ /* { dg-options "-mfp16-format=ieee" } */ -/* { dg-add-options arm_neon_fp16 } */ +/* { dg-add-options arm_fp16 } */ #include "arm-fp16-ops.h" Index: gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c =================================================================== --- gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,8 +1,8 @@ /* Test various operators on __fp16 and mixed __fp16/float operands. */ /* { dg-do compile { target arm*-*-* } } */ -/* { dg-require-effective-target arm_neon_fp16_ok } */ +/* { dg-require-effective-target arm_fp16_ok } */ /* { dg-options "-mfp16-format=ieee -ffast-math" } */ -/* { dg-add-options arm_neon_fp16 } */ +/* { dg-add-options arm_fp16 } */ #include "arm-fp16-ops.h" Index: gcc/testsuite/gcc.dg/vect/pr48377.c =================================================================== --- gcc/testsuite/gcc.dg/vect/pr48377.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/gcc.dg/vect/pr48377.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,6 @@ /* PR tree-optimization/48377 */ /* { dg-do run } */ +/* { dg-require-effective-target non_strict_align } */ typedef unsigned int U __attribute__((__aligned__ (1), __may_alias__)); Index: gcc/testsuite/ada/acats/run_acats =================================================================== --- gcc/testsuite/ada/acats/run_acats (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/ada/acats/run_acats (.../branches/gcc-4_6-branch) (wersja 175929) @@ -10,12 +10,12 @@ # type -p is missing from Solaris 2 /bin/sh and /bin/ksh (ksh88), but both # ksh93 and bash have it. # type output format differs between ksh88 and ksh93, so avoid it if -# type -p is present. +# type -p is present. Unfortunately, HP-UX /bin/sh ignores -p with type. # Fall back to whence which ksh88 and ksh93 provide, but bash does not. which () { - path=`type -p $* 2>/dev/null` && { echo $path; return 0; } - path=`type $* 2>/dev/null | awk '{print $NF}'` && { echo $path; return 0; } + path=`type -p $* 2>/dev/null` && { echo $path | awk '{print $NF}'; return 0; } + path=`type $* 2>/dev/null` && { echo $path | awk '{print $NF}'; return 0; } path=`whence $* 2>/dev/null` && { echo $path; return 0; } return 1 } Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,170 @@ +2011-07-06 Thomas Koenig + + PR fortran/49479 + * gfortran.dg/reshape_zerosize_3.f90: New test case. + +2011-07-05 Janis Johnson + + * gcc.target/arm/20031108-1.c: Require thumb1 or thumb2. + * gcc.target/arm/pr40482.c: Likewise. + * gcc.target/arm/stack-corruption.c: Likewise. + + * gcc.target/arm/ctz.c: Don't specify -march, require thumb2. + * gcc.target/arm/pr42879.c: Likewise. + * gcc.target/arm/pr45701-3.c: Likewise. + + * gcc.target/arm/thumb-bitfld1.c: Don't specify -march, require thumb1. + + * gcc.target/arm/scd42-3.c: Allow -march-xscale; skip if -mcpu + is not xscale. + + * lib/target-supports-dg.exp (dg-require-effective-target): Return + early if the test is already being skipped. + + * lib/target-supports.exp (add_options_for_arm_fp16): Renamed + from add_options_for_arm_neon_fp16. + (check_effective_target_arm_fp16_ok_nocache): Renamed from + check_effective_target_arm_neon_fp16_ok_nocache. + Check -mfpu and -mfloat-abi options from current multilib. + Do not require neon support. + (check_effective_target_arm_fp16_ok): Renamed from + check_effecitve_target_arm_neon_fp16_ok. + * g++.dg/ext/arm-fp16/arm-fp16-ops-5.C: Use new names for + arm_neon_fp16_ok and arm_fp16. + * g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: Likewise. + * gcc.dg/torture/arm-fp16-ops-5.c: Likewise. + * gcc.dg/torture/arm-fp16-ops-6.c: Likewise. + * gcc.target/arm/fp16-compile-vcvt.c: Likewise. + + * lib/scandump.exp (scan-dump, scan-dump-times, scan-dump-not, + scan-dump-dem, scan-dump-dem-not): Treat a missing dump file as + unresolved and report the reason to the log file. + + * lib/scanasm.exp (dg-scan, scan-assembler-times, scan-assembler-dem, + scan-assembler-dem-not): For missing file, report unresolved with + same message as for pass/fail, with reason reported in log file. + +2011-07-05 Jason Merrill + + PR testsuite/49643 + * g++.dg/rtti/anon-ns1.C: Allow for null-termination. + + * g++.dg/cpp0x/lambda/lambda-ref2.C: New. + + * g++.dg/diagnostic/aka1.C: New. + +2011-07-05 Rainer Orth + + * ada/acats/run_acats (which): Extract last field from type -p, + type output only if command succeeded. + +2011-07-04 Jakub Jelinek + + PR rtl-optimization/49619 + * gcc.dg/pr49619.c: New test. + + PR rtl-optimization/49472 + * gfortran.dg/pr49472.f90: New test. + + Backported from mainline + 2011-06-30 Jakub Jelinek + + PR fortran/49540 + * gfortran.dg/pr49540-1.f90: New test. + * gfortran.dg/pr49540-2.f90: New test. + +2011-07-04 Richard Guenther + + PR tree-optimization/49615 + * g++.dg/torture/pr49615.C: New testcase. + +2011-07-03 Janne Blomqvist + + Backport from mainline: + PR libfortran/49296 + * gfortran.dg/read_list_eof_1.f90: New test. + +2011-07-02 Janus Weil + + PR fortran/49466 + * gfortran.dg/allocatable_scalar_9.f90: Modified. + * gfortran.dg/extends_14.f03: New. + +2011-06-30 Rainer Orth + + PR ada/49511 + * ada/acats/run_acats (which): Use last field of type -p output. + +2011-06-30 Richard Guenther + + PR tree-optimization/38752 + * gcc.c-torture/compile/pr38752.c: New testcase. + +2011-06-29 Martin Jambor + Backport from mainline + 2011-06-24 Martin Jambor + + PR tree-optimizations/49516 + * g++.dg/tree-ssa/pr49516.C: New test. + +2011-06-28 Changpeng Fang + Backport from mainline + 2011-03-27 H.J. Lu + + * gcc.target/i386/avx256-unaligned-load-1.c: New. + * gcc.target/i386/avx256-unaligned-load-2.c: Likewise. + * gcc.target/i386/avx256-unaligned-load-3.c: Likewise. + * gcc.target/i386/avx256-unaligned-load-4.c: Likewise. + * gcc.target/i386/avx256-unaligned-load-5.c: Likewise. + * gcc.target/i386/avx256-unaligned-load-6.c: Likewise. + * gcc.target/i386/avx256-unaligned-load-7.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-1.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-2.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-3.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-4.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-5.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-6.c: Likewise. + * gcc.target/i386/avx256-unaligned-store-7.c: Likewise. + +2011-06-28 Eric Botcazou + + * gnat.dg/opt17.ad[sb]: New test. + +2011-06-28 Alexander Monakov + + Backport from mainline + 2011-04-08 Alexander Monakov + + PR target/48273 + * g++.dg/opt/pr48273.C: New. + +2011-06-27 Jason Merrill + + PR c++/49528 + * g++.dg/init/ref19.C: New. + * g++.dg/cpp0x/constexpr-cleanup.C: New. + + PR c++/49440 + * g++.dg/rtti/anon-ns1.C: New. + + PR c++/49418 + * g++.dg/template/param3.C: New. + +2011-06-27 Jakub Jelinek + + Backported from mainline + 2011-06-26 Jakub Jelinek + + PR tree-optimization/48377 + * gcc.dg/vect/pr48377.c: Add dg-require-effective-target + non_strict_align. + + 2011-06-26 Steve Ellcey + + PR middle-end/49191 + * lib/target-supports.exp (check_effective_target_non_strict_align): + New. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: gcc/testsuite/g++.dg/rtti/anon-ns1.C =================================================================== --- gcc/testsuite/g++.dg/rtti/anon-ns1.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/rtti/anon-ns1.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,15 @@ +// PR c++/49440 +// The typeinfo name for A should start with * so we compare +// it by address rather than contents. + +// { dg-final { scan-assembler "\"\*N\[^\"\]+1AE" } } + +namespace +{ + class A { }; +} + +void f() +{ + throw A(); +} Index: gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C =================================================================== --- gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,8 +1,8 @@ /* Test various operators on __fp16 and mixed __fp16/float operands. */ /* { dg-do compile { target arm*-*-* } } */ -/* { dg-require-effective-target arm_neon_fp16_ok } */ +/* { dg-require-effective-target arm_fp16_ok } */ /* { dg-options "-mfp16-format=ieee" } */ -/* { dg-add-options arm_neon_fp16 } */ +/* { dg-add-options arm_fp16 } */ #include "arm-fp16-ops.h" Index: gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C =================================================================== --- gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,8 +1,8 @@ /* Test various operators on __fp16 and mixed __fp16/float operands. */ /* { dg-do compile { target arm*-*-* } } */ -/* { dg-require-effective-target arm_neon_fp16_ok } */ +/* { dg-require-effective-target arm_fp16_ok } */ /* { dg-options "-mfp16-format=ieee -ffast-math" } */ -/* { dg-add-options arm_neon_fp16 } */ +/* { dg-add-options arm_fp16 } */ #include "arm-fp16-ops.h" Index: gcc/testsuite/g++.dg/opt/pr48273.C =================================================================== --- gcc/testsuite/g++.dg/opt/pr48273.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/opt/pr48273.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,10 @@ +// { dg-do compile { target x86_64-*-* } } +// { dg-options "-fschedule-insns2 -fsel-sched-pipelining -fselective-scheduling2 -funroll-all-loops -march=core2" } + +void bar (); + +void foo () +{ + for (;;) + bar (); +} Index: gcc/testsuite/g++.dg/init/ref19.C =================================================================== --- gcc/testsuite/g++.dg/init/ref19.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/init/ref19.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,17 @@ +// PR c++/49528 +// { dg-do run } + +int d; + +struct A +{ + int i; + ~A() { ++d; }; +}; + +int main() +{ + const int &r = A().i; + if (d != 1) + return 1; +} Index: gcc/testsuite/g++.dg/tree-ssa/pr49516.C =================================================================== --- gcc/testsuite/g++.dg/tree-ssa/pr49516.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/tree-ssa/pr49516.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,86 @@ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +extern "C" void abort (void); + +typedef int int32; +typedef unsigned int uint32; +typedef unsigned long long uint64; +typedef short int16; + +class Tp { + public: + Tp(int, const int segment, const int index) __attribute__((noinline)); + + inline bool operator==(const Tp& other) const; + inline bool operator!=(const Tp& other) const; + int GetType() const { return type_; } + int GetSegment() const { return segment_; } + int GetIndex() const { return index_; } + private: + inline static bool IsValidSegment(const int segment); + static const int kSegmentBits = 28; + static const int kTypeBits = 4; + static const int kMaxSegment = (1 << kSegmentBits) - 1; + + union { + + struct { + int32 index_; + uint32 segment_ : kSegmentBits; + uint32 type_ : kTypeBits; + }; + struct { + int32 dummy_; + uint32 type_and_segment_; + }; + uint64 value_; + }; +}; + +Tp::Tp(int t, const int segment, const int index) + : index_(index), segment_(segment), type_(t) {} + +inline bool Tp::operator==(const Tp& other) const { + return value_ == other.value_; +} +inline bool Tp::operator!=(const Tp& other) const { + return value_ != other.value_; +} + +class Range { + public: + inline Range(const Tp& position, const int count) __attribute__((always_inline)); + inline Tp GetBeginTokenPosition() const; + inline Tp GetEndTokenPosition() const; + private: + Tp position_; + int count_; + int16 begin_index_; + int16 end_index_; +}; + +inline Range::Range(const Tp& position, + const int count) + : position_(position), count_(count), begin_index_(0), end_index_(0) + { } + +inline Tp Range::GetBeginTokenPosition() const { + return position_; +} +inline Tp Range::GetEndTokenPosition() const { + return Tp(position_.GetType(), position_.GetSegment(), + position_.GetIndex() + count_); +} + +int main () +{ + Range range(Tp(0, 0, 3), 0); + if (!(range.GetBeginTokenPosition() == Tp(0, 0, 3))) + abort (); + + if (!(range.GetEndTokenPosition() == Tp(0, 0, 3))) + abort(); + + return 0; +} Index: gcc/testsuite/g++.dg/diagnostic/aka1.C =================================================================== --- gcc/testsuite/g++.dg/diagnostic/aka1.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/diagnostic/aka1.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,15 @@ +// Basic test for typedef stripping in diagnostics. + +struct A { + void f(); +}; + +void A::f() { + // We don't want an aka for the injected-class-name. + A a = 0; // { dg-error "type .A. requested" } +} + +typedef A B; + +// We do want an aka for a real typedef. +B b = 0; // { dg-error "B .aka A." } Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,13 @@ +// PR c++/49598 +// { dg-options -std=c++0x } +// { dg-do run } + +int +main() +{ + int i = 10; + int& ir = i; + + if ([=]{ return ir; }() != 10) + return 1; +} Index: gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C =================================================================== --- gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/cpp0x/constexpr-cleanup.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,9 @@ +// { dg-options -std=c++0x } + +struct A +{ + int i; + ~A(); +}; + +constexpr int i = A().i; // { dg-error "non-literal" } Index: gcc/testsuite/g++.dg/torture/pr49615.C =================================================================== --- gcc/testsuite/g++.dg/torture/pr49615.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/torture/pr49615.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-options "-g" } */ + +template +static inline bool Dispatch (T* obj, void (T::*func) ()) +{ + (obj->*func) (); +} +class C +{ + bool f (int); + void g (); +}; +bool C::f (int n) +{ + bool b; + switch (n) + { + case 0: + b = Dispatch (this, &C::g); + case 1: + b = Dispatch (this, &C::g); + } +} +void C::g () +{ + for (;;) { } +} + Index: gcc/testsuite/g++.dg/template/param3.C =================================================================== --- gcc/testsuite/g++.dg/template/param3.C (.../tags/gcc_4_6_1_release) (wersja 0) +++ gcc/testsuite/g++.dg/template/param3.C (.../branches/gcc-4_6-branch) (wersja 175929) @@ -0,0 +1,12 @@ +// PR c++/49418 + +template +void f (const T t) +{ + t = 1; // { dg-error "" } +} + +int main() +{ + f(1); +} Index: gcc/cp/init.c =================================================================== --- gcc/cp/init.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cp/init.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1492,7 +1492,7 @@ tree fn = get_callee_fndecl (rval); if (fn && DECL_DECLARED_CONSTEXPR_P (fn)) { - tree e = maybe_constant_value (rval); + tree e = maybe_constant_init (rval); if (TREE_CONSTANT (e)) rval = build2 (INIT_EXPR, type, exp, e); } Index: gcc/cp/class.c =================================================================== --- gcc/cp/class.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cp/class.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -677,21 +677,10 @@ the abstract. */ void -set_linkage_according_to_type (tree type, tree decl) +set_linkage_according_to_type (tree type ATTRIBUTE_UNUSED, tree decl) { - /* If TYPE involves a local class in a function with internal - linkage, then DECL should have internal linkage too. Other local - classes have no linkage -- but if their containing functions - have external linkage, it makes sense for DECL to have external - linkage too. That will allow template definitions to be merged, - for example. */ - if (no_linkage_check (type, /*relaxed_p=*/true)) - { - TREE_PUBLIC (decl) = 0; - DECL_INTERFACE_KNOWN (decl) = 1; - } - else - TREE_PUBLIC (decl) = 1; + TREE_PUBLIC (decl) = 1; + determine_visibility (decl); } /* Create a VAR_DECL for a primary or secondary vtable for CLASS_TYPE. Index: gcc/cp/error.c =================================================================== --- gcc/cp/error.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cp/error.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2618,14 +2618,28 @@ reinit_cxx_pp (); dump_type (typ, flags); + /* If we're printing a type that involves typedefs, also print the + stripped version. But sometimes the stripped version looks + exactly the same, so we don't want it after all. To avoid printing + it in that case, we play ugly obstack games. */ if (typ && TYPE_P (typ) && typ != TYPE_CANONICAL (typ) && !uses_template_parms (typ)) { + int aka_start; char *p; + struct obstack *ob = pp_base (cxx_pp)->buffer->obstack; + /* Remember the end of the initial dump. */ + int len = obstack_object_size (ob); tree aka = strip_typedefs (typ); pp_string (cxx_pp, " {aka"); pp_cxx_whitespace (cxx_pp); + /* And remember the start of the aka dump. */ + aka_start = obstack_object_size (ob); dump_type (aka, flags); pp_character (cxx_pp, '}'); + p = (char*)obstack_base (ob); + /* If they are identical, cut off the aka with a NUL. */ + if (memcmp (p, p+aka_start, len) == 0) + p[len] = '\0'; } return pp_formatted_text (cxx_pp); } Index: gcc/cp/ChangeLog =================================================================== --- gcc/cp/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cp/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,26 @@ +2011-07-05 Jason Merrill + + PR c++/49598 + * semantics.c (finish_id_expression): convert_from_reference. + + * error.c (type_to_string): Avoid redundant akas. + +2011-06-27 Jason Merrill + + PR c++/49528 + * semantics.c (potential_constant_expression_1): A TARGET_EXPR + of non-literal type isn't constant. + (cxx_eval_constant_expression): Likewise. + * init.c (expand_default_init): Use maybe_constant_init. + + PR c++/49440 + * class.c (set_linkage_according_to_type): Hand off to + determine_visibility. + + PR c++/49418 + * call.c (cxx_type_promotes_to): Don't strip cv-quals. + * semantics.c (lambda_return_type): Strip them here. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: gcc/cp/semantics.c =================================================================== --- gcc/cp/semantics.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cp/semantics.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2895,7 +2895,7 @@ tree containing_function = current_function_decl; tree lambda_stack = NULL_TREE; tree lambda_expr = NULL_TREE; - tree initializer = decl; + tree initializer = convert_from_reference (decl); /* Core issue 696: "[At the July 2009 meeting] the CWG expressed support for an approach in which a reference to a local @@ -6932,6 +6932,15 @@ break; case TARGET_EXPR: + if (!literal_type_p (TREE_TYPE (t))) + { + if (!allow_non_constant) + error ("temporary of non-literal type %qT in a " + "constant expression", TREE_TYPE (t)); + *non_constant_p = true; + break; + } + /* else fall through. */ case INIT_EXPR: /* Pass false for 'addr' because these codes indicate initialization of a temporary. */ @@ -7745,8 +7754,15 @@ return potential_constant_expression_1 (TREE_OPERAND (t, 1), want_rval, flags); + case TARGET_EXPR: + if (!literal_type_p (TREE_TYPE (t))) + { + if (flags & tf_error) + error ("temporary of non-literal type %qT in a " + "constant expression", TREE_TYPE (t)); + return false; + } case INIT_EXPR: - case TARGET_EXPR: return potential_constant_expression_1 (TREE_OPERAND (t, 1), rval, flags); @@ -8081,7 +8097,7 @@ SET_TYPE_STRUCTURAL_EQUALITY (type); } else - type = type_decays_to (unlowered_expr_type (expr)); + type = cv_unqualified (type_decays_to (unlowered_expr_type (expr))); return type; } Index: gcc/cp/call.c =================================================================== --- gcc/cp/call.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cp/call.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2554,8 +2554,6 @@ return build_pointer_type (TREE_TYPE (type)); if (TREE_CODE (type) == FUNCTION_TYPE) return build_pointer_type (type); - if (!MAYBE_CLASS_TYPE_P (type)) - type = cv_unqualified (type); return type; } Index: gcc/tree-ssa-dom.c =================================================================== --- gcc/tree-ssa-dom.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/tree-ssa-dom.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -208,12 +208,11 @@ { enum tree_code subcode = gimple_assign_rhs_code (stmt); - expr->type = NULL_TREE; - switch (get_gimple_rhs_class (subcode)) { case GIMPLE_SINGLE_RHS: expr->kind = EXPR_SINGLE; + expr->type = TREE_TYPE (gimple_assign_rhs1 (stmt)); expr->ops.single.rhs = gimple_assign_rhs1 (stmt); break; case GIMPLE_UNARY_RHS: Index: gcc/sel-sched.c =================================================================== --- gcc/sel-sched.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/sel-sched.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -6778,7 +6778,8 @@ bookkeeping_p = 1; pipelining_p = (bookkeeping_p && (flag_sel_sched_pipelining != 0) - && current_loop_nest != NULL); + && current_loop_nest != NULL + && loop_has_exit_edges (current_loop_nest)); max_insns_to_rename = PARAM_VALUE (PARAM_SELSCHED_INSNS_TO_RENAME); max_ws = MAX_WS; } Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/dwarf2out.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -17118,7 +17118,7 @@ { int count = tree_low_cst (TREE_OPERAND (index, 1), 0) - tree_low_cst (TREE_OPERAND (index, 0), 0); - while (count > 0) + while (count-- > 0) { if (val) memcpy (array + curpos, array + pos, fieldsize); Index: gcc/ada/ChangeLog =================================================================== --- gcc/ada/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/ada/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,8 @@ +2011-07-01 Eric Botcazou + + * gcc-interface/Make-lang.in (gnat1): Prepend '+' to the command. + (gnatbind): Likewise. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: gcc/ada/gcc-interface/Make-lang.in =================================================================== --- gcc/ada/gcc-interface/Make-lang.in (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/ada/gcc-interface/Make-lang.in (.../branches/gcc-4_6-branch) (wersja 175929) @@ -481,11 +481,11 @@ # Since the RTL should be built with the latest compiler, remove the # stamp target in the parent directory whenever gnat1 is rebuilt gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBDEPS) - $(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS) + +$(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS) $(RM) stamp-gnatlib2-rts stamp-tools gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) - $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS) + +$(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS) # use cross-gcc gnat-cross: force Index: gcc/sel-sched-ir.c =================================================================== --- gcc/sel-sched-ir.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/sel-sched-ir.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2904,6 +2904,7 @@ if (CANT_MOVE (insn) || INSN_ASM_P (insn) || SCHED_GROUP_P (insn) + || CALL_P (insn) /* Exception handling insns are always unique. */ || (cfun->can_throw_non_call_exceptions && can_throw_internal (insn)) /* TRAP_IF though have an INSN code is control_flow_insn_p (). */ Index: gcc/tree-eh.c =================================================================== --- gcc/tree-eh.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/tree-eh.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2459,6 +2459,13 @@ return true; return false; + case VAR_DECL: + case FUNCTION_DECL: + /* Assume that accesses to weak vars or functions may trap. */ + if (DECL_WEAK (expr)) + return true; + return false; + default: return false; } Index: gcc/fortran/trans-array.c =================================================================== --- gcc/fortran/trans-array.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/trans-array.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -4490,7 +4490,7 @@ gfc_se se; HOST_WIDE_INT hi; unsigned HOST_WIDE_INT lo; - tree index; + tree index, range; VEC(constructor_elt,gc) *v = NULL; switch (expr->expr_type) @@ -4544,28 +4544,56 @@ else index = NULL_TREE; + if (mpz_cmp_si (c->repeat, 1) > 0) + { + tree tmp1, tmp2; + mpz_t maxval; + + mpz_init (maxval); + mpz_add (maxval, c->offset, c->repeat); + mpz_sub_ui (maxval, maxval, 1); + tmp2 = gfc_conv_mpz_to_tree (maxval, gfc_index_integer_kind); + if (mpz_cmp_si (c->offset, 0) != 0) + { + mpz_add_ui (maxval, c->offset, 1); + tmp1 = gfc_conv_mpz_to_tree (maxval, gfc_index_integer_kind); + } + else + tmp1 = gfc_conv_mpz_to_tree (c->offset, gfc_index_integer_kind); + + range = fold_build2 (RANGE_EXPR, gfc_array_index_type, tmp1, tmp2); + mpz_clear (maxval); + } + else + range = NULL; + gfc_init_se (&se, NULL); switch (c->expr->expr_type) { case EXPR_CONSTANT: gfc_conv_constant (&se, c->expr); - CONSTRUCTOR_APPEND_ELT (v, index, se.expr); break; case EXPR_STRUCTURE: gfc_conv_structure (&se, c->expr, 1); - CONSTRUCTOR_APPEND_ELT (v, index, se.expr); break; - default: /* Catch those occasional beasts that do not simplify for one reason or another, assuming that if they are standard defying the frontend will catch them. */ gfc_conv_expr (&se, c->expr); - CONSTRUCTOR_APPEND_ELT (v, index, se.expr); break; } + + if (range == NULL_TREE) + CONSTRUCTOR_APPEND_ELT (v, index, se.expr); + else + { + if (index != NULL_TREE) + CONSTRUCTOR_APPEND_ELT (v, index, se.expr); + CONSTRUCTOR_APPEND_ELT (v, range, se.expr); + } } break; @@ -6521,18 +6549,22 @@ switch (purpose) { case DEALLOCATE_ALLOC_COMP: + if (cmp_has_alloc_comps && !c->attr.pointer) + { + /* Do not deallocate the components of ultimate pointer + components. */ + comp = fold_build3_loc (input_location, COMPONENT_REF, ctype, + decl, cdecl, NULL_TREE); + rank = c->as ? c->as->rank : 0; + tmp = structure_alloc_comps (c->ts.u.derived, comp, NULL_TREE, + rank, purpose); + gfc_add_expr_to_block (&fnblock, tmp); + } + if (c->attr.allocatable && c->attr.dimension) { comp = fold_build3_loc (input_location, COMPONENT_REF, ctype, decl, cdecl, NULL_TREE); - if (cmp_has_alloc_comps && !c->attr.pointer) - { - /* Do not deallocate the components of ultimate pointer - components. */ - tmp = structure_alloc_comps (c->ts.u.derived, comp, NULL_TREE, - c->as->rank, purpose); - gfc_add_expr_to_block (&fnblock, tmp); - } tmp = gfc_trans_dealloc_allocated (comp); gfc_add_expr_to_block (&fnblock, tmp); } Index: gcc/fortran/array.c =================================================================== --- gcc/fortran/array.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/array.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1309,6 +1309,7 @@ mpz_t *offset; gfc_component *component; + mpz_t *repeat; gfc_try (*expand_work_function) (gfc_expr *); } @@ -1543,6 +1544,7 @@ return FAILURE; } current_expand.offset = &c->offset; + current_expand.repeat = &c->repeat; current_expand.component = c->n.component; if (current_expand.expand_work_function (e) == FAILURE) return FAILURE; Index: gcc/fortran/constructor.c =================================================================== --- gcc/fortran/constructor.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/constructor.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,5 @@ /* Array and structure constructors - Copyright (C) 2009, 2010 + Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -36,6 +36,7 @@ gfc_free_iterator (c->iterator, 1); mpz_clear (c->offset); + mpz_clear (c->repeat); gfc_free (c); } @@ -54,6 +55,7 @@ c->n.component = src->n.component; mpz_init_set (c->offset, src->offset); + mpz_init_set (c->repeat, src->repeat); return c; } @@ -78,6 +80,7 @@ c->iterator = NULL; mpz_init_set_si (c->offset, 0); + mpz_init_set_si (c->repeat, 1); return c; } @@ -169,6 +172,7 @@ gfc_constructor * gfc_constructor_lookup (gfc_constructor_base base, int offset) { + gfc_constructor *c; splay_tree_node node; if (!base) @@ -176,9 +180,24 @@ node = splay_tree_lookup (base, (splay_tree_key) offset); if (node) - return (gfc_constructor*) node->value; + return (gfc_constructor *) node->value; - return NULL; + /* Check if the previous node has a repeat count big enough to + cover the offset looked for. */ + node = splay_tree_predecessor (base, (splay_tree_key) offset); + if (!node) + return NULL; + + c = (gfc_constructor *) node->value; + if (mpz_cmp_si (c->repeat, 1) > 0) + { + if (mpz_get_si (c->offset) + mpz_get_si (c->repeat) <= offset) + c = NULL; + } + else + c = NULL; + + return c; } @@ -232,3 +251,27 @@ else return NULL; } + + +void +gfc_constructor_remove (gfc_constructor *ctor) +{ + if (ctor) + splay_tree_remove (ctor->base, mpz_get_si (ctor->offset)); +} + + +gfc_constructor * +gfc_constructor_lookup_next (gfc_constructor_base base, int offset) +{ + splay_tree_node node; + + if (!base) + return NULL; + + node = splay_tree_successor (base, (splay_tree_key) offset); + if (!node) + return NULL; + + return (gfc_constructor *) node->value; +} Index: gcc/fortran/gfortran.h =================================================================== --- gcc/fortran/gfortran.h (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/gfortran.h (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2264,6 +2264,8 @@ gfc_component *component; /* Record the component being initialized. */ } n; + mpz_t repeat; /* Record the repeat number of initial values in data + statement like "data a/5*10/". */ } gfc_constructor; Index: gcc/fortran/constructor.h =================================================================== --- gcc/fortran/constructor.h (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/constructor.h (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,5 @@ /* Array and structure constructors - Copyright (C) 2009, 2010 + Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -81,6 +81,10 @@ Returns NULL if there is no next expression. */ gfc_constructor *gfc_constructor_next (gfc_constructor *ctor); -gfc_constructor *gfc_constructor_advance (gfc_constructor *ctor, int n); +/* Remove the gfc_constructor node from the splay tree. */ +void gfc_constructor_remove (gfc_constructor *); +/* Return first constructor node after offset. */ +gfc_constructor *gfc_constructor_lookup_next (gfc_constructor_base, int); + #endif /* GFC_CONSTRUCTOR_H */ Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,37 @@ +2011-07-04 Jakub Jelinek + + PR fortran/49623 + * gfortranspec.c (lang_specific_driver): Ignore options with + CL_ERR_MISSING_ARG errors. + + Backported from mainline + 2011-06-30 Jakub Jelinek + + PR fortran/49540 + * gfortran.h (gfc_constructor): Add repeat field. + * trans-array.c (gfc_conv_array_initializer): Handle repeat > 1. + * array.c (current_expand): Add repeat field. + (expand_constructor): Copy repeat. + * constructor.c (node_free, node_copy, gfc_constructor_get, + gfc_constructor_lookup): Handle repeat field. + (gfc_constructor_lookup_next, gfc_constructor_remove): New functions. + * data.h (gfc_assign_data_value): Add mpz_t * argument. + (gfc_assign_data_value_range): Removed. + * constructor.h (gfc_constructor_advance): Removed. + (gfc_constructor_lookup_next, gfc_constructor_remove): New prototypes. + * data.c (gfc_assign_data_value): Add REPEAT argument, handle it and + also handle overwriting a range with a single entry. + (gfc_assign_data_value_range): Removed. + * resolve.c (check_data_variable): Adjust gfc_assign_data_value + call. Use gfc_assign_data_value instead of + gfc_assign_data_value_expr. + +2011-07-02 Janus Weil + + PR fortran/49466 + * trans-array.c (structure_alloc_comps): Make sure sub-components + and extended types are correctly deallocated. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: gcc/fortran/data.c =================================================================== --- gcc/fortran/data.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/data.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,5 @@ /* Supporting functions for resolving DATA statement. - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Lifang Zeng @@ -189,10 +189,13 @@ /* Assign the initial value RVALUE to LVALUE's symbol->value. If the LVALUE already has an initialization, we extend this, otherwise we - create a new one. */ + create a new one. If REPEAT is non-NULL, initialize *REPEAT + consecutive values in LVALUE the same value in RVALUE. In that case, + LVALUE must refer to a full array, not an array section. */ gfc_try -gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index) +gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index, + mpz_t *repeat) { gfc_ref *ref; gfc_expr *init; @@ -269,6 +272,100 @@ &lvalue->where); goto abort; } + else if (repeat != NULL + && ref->u.ar.type != AR_ELEMENT) + { + mpz_t size, end; + gcc_assert (ref->u.ar.type == AR_FULL + && ref->next == NULL); + mpz_init_set (end, offset); + mpz_add (end, end, *repeat); + if (spec_size (ref->u.ar.as, &size) == SUCCESS) + { + if (mpz_cmp (end, size) > 0) + { + mpz_clear (size); + gfc_error ("Data element above array upper bound at %L", + &lvalue->where); + goto abort; + } + mpz_clear (size); + } + + con = gfc_constructor_lookup (expr->value.constructor, + mpz_get_si (offset)); + if (!con) + { + con = gfc_constructor_lookup_next (expr->value.constructor, + mpz_get_si (offset)); + if (con != NULL && mpz_cmp (con->offset, end) >= 0) + con = NULL; + } + + /* Overwriting an existing initializer is non-standard but + usually only provokes a warning from other compilers. */ + if (con != NULL && con->expr != NULL) + { + /* Order in which the expressions arrive here depends on + whether they are from data statements or F95 style + declarations. Therefore, check which is the most + recent. */ + gfc_expr *exprd; + exprd = (LOCATION_LINE (con->expr->where.lb->location) + > LOCATION_LINE (rvalue->where.lb->location)) + ? con->expr : rvalue; + if (gfc_notify_std (GFC_STD_GNU,"Extension: " + "re-initialization of '%s' at %L", + symbol->name, &exprd->where) == FAILURE) + return FAILURE; + } + + while (con != NULL) + { + gfc_constructor *next_con = gfc_constructor_next (con); + + if (mpz_cmp (con->offset, end) >= 0) + break; + if (mpz_cmp (con->offset, offset) < 0) + { + gcc_assert (mpz_cmp_si (con->repeat, 1) > 0); + mpz_sub (con->repeat, offset, con->offset); + } + else if (mpz_cmp_si (con->repeat, 1) > 0 + && mpz_get_si (con->offset) + + mpz_get_si (con->repeat) > mpz_get_si (end)) + { + int endi; + splay_tree_node node + = splay_tree_lookup (con->base, + mpz_get_si (con->offset)); + gcc_assert (node + && con == (gfc_constructor *) node->value + && node->key == (splay_tree_key) + mpz_get_si (con->offset)); + endi = mpz_get_si (con->offset) + + mpz_get_si (con->repeat); + if (endi > mpz_get_si (end) + 1) + mpz_set_si (con->repeat, endi - mpz_get_si (end)); + else + mpz_set_si (con->repeat, 1); + mpz_set (con->offset, end); + node->key = (splay_tree_key) mpz_get_si (end); + break; + } + else + gfc_constructor_remove (con); + con = next_con; + } + + con = gfc_constructor_insert_expr (&expr->value.constructor, + NULL, &rvalue->where, + mpz_get_si (offset)); + mpz_set (con->repeat, *repeat); + repeat = NULL; + mpz_clear (end); + break; + } else { mpz_t size; @@ -293,6 +390,32 @@ NULL, &rvalue->where, mpz_get_si (offset)); } + else if (mpz_cmp_si (con->repeat, 1) > 0) + { + /* Need to split a range. */ + if (mpz_cmp (con->offset, offset) < 0) + { + gfc_constructor *pred_con = con; + con = gfc_constructor_insert_expr (&expr->value.constructor, + NULL, &con->where, + mpz_get_si (offset)); + con->expr = gfc_copy_expr (pred_con->expr); + mpz_add (con->repeat, pred_con->offset, pred_con->repeat); + mpz_sub (con->repeat, con->repeat, offset); + mpz_sub (pred_con->repeat, offset, pred_con->offset); + } + if (mpz_cmp_si (con->repeat, 1) > 0) + { + gfc_constructor *succ_con; + succ_con + = gfc_constructor_insert_expr (&expr->value.constructor, + NULL, &con->where, + mpz_get_si (offset) + 1); + succ_con->expr = gfc_copy_expr (con->expr); + mpz_sub_ui (succ_con->repeat, con->repeat, 1); + mpz_set_si (con->repeat, 1); + } + } break; case REF_COMPONENT: @@ -337,6 +460,7 @@ } mpz_clear (offset); + gcc_assert (repeat == NULL); if (ref || last_ts->type == BT_CHARACTER) { @@ -380,36 +504,6 @@ } -/* Similarly, but initialize REPEAT consecutive values in LVALUE the same - value in RVALUE. */ - -gfc_try -gfc_assign_data_value_range (gfc_expr *lvalue, gfc_expr *rvalue, - mpz_t index, mpz_t repeat) -{ - mpz_t offset, last_offset; - gfc_try t; - - mpz_init (offset); - mpz_init (last_offset); - mpz_add (last_offset, index, repeat); - - t = SUCCESS; - for (mpz_set(offset, index) ; mpz_cmp(offset, last_offset) < 0; - mpz_add_ui (offset, offset, 1)) - if (gfc_assign_data_value (lvalue, rvalue, offset) == FAILURE) - { - t = FAILURE; - break; - } - - mpz_clear (offset); - mpz_clear (last_offset); - - return t; -} - - /* Modify the index of array section and re-calculate the array offset. */ void Index: gcc/fortran/data.h =================================================================== --- gcc/fortran/data.h (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/data.h (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,5 +1,5 @@ /* Header for functions resolving DATA statements. - Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -19,6 +19,5 @@ void gfc_formalize_init_value (gfc_symbol *); void gfc_get_section_index (gfc_array_ref *, mpz_t *, mpz_t *); -gfc_try gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t); -gfc_try gfc_assign_data_value_range (gfc_expr *, gfc_expr *, mpz_t, mpz_t); +gfc_try gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t, mpz_t *); void gfc_advance_section (mpz_t *, gfc_array_ref *, mpz_t *); Index: gcc/fortran/gfortranspec.c =================================================================== --- gcc/fortran/gfortranspec.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/gfortranspec.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -255,6 +255,9 @@ for (i = 1; i < argc; ++i) { + if (decoded_options[i].errors & CL_ERR_MISSING_ARG) + continue; + switch (decoded_options[i].opt_index) { case OPT_SPECIAL_input_file: Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/fortran/resolve.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -12612,8 +12612,8 @@ mpz_set_ui (size, 0); } - t = gfc_assign_data_value_range (var->expr, values.vnode->expr, - offset, range); + t = gfc_assign_data_value (var->expr, values.vnode->expr, + offset, &range); mpz_add (offset, offset, range); mpz_clear (range); @@ -12628,7 +12628,8 @@ mpz_sub_ui (values.left, values.left, 1); mpz_sub_ui (size, size, 1); - t = gfc_assign_data_value (var->expr, values.vnode->expr, offset); + t = gfc_assign_data_value (var->expr, values.vnode->expr, + offset, NULL); if (t == FAILURE) break; Index: gcc/BASE-VER =================================================================== --- gcc/BASE-VER (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/BASE-VER (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1 +1 @@ -4.6.1 +4.6.2 Index: gcc/tree-cfgcleanup.c =================================================================== --- gcc/tree-cfgcleanup.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/tree-cfgcleanup.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -600,7 +600,7 @@ BB is present in the cfg. */ if (bb == NULL || bb->index < NUM_FIXED_BLOCKS - || bb->index >= n_basic_blocks + || bb->index >= last_basic_block || BASIC_BLOCK (bb->index) != bb || !gimple_call_noreturn_p (stmt)) continue; Index: gcc/simplify-rtx.c =================================================================== --- gcc/simplify-rtx.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/simplify-rtx.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,7 +1,7 @@ /* RTL simplification functions for GNU compiler. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 - Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, + 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -686,13 +686,13 @@ return simplify_gen_binary (MINUS, mode, temp, XEXP (op, 1)); } - /* (neg (mult A B)) becomes (mult (neg A) B). + /* (neg (mult A B)) becomes (mult A (neg B)). This works even for floating-point values. */ if (GET_CODE (op) == MULT && !HONOR_SIGN_DEPENDENT_ROUNDING (mode)) { - temp = simplify_gen_unary (NEG, mode, XEXP (op, 0), mode); - return simplify_gen_binary (MULT, mode, temp, XEXP (op, 1)); + temp = simplify_gen_unary (NEG, mode, XEXP (op, 1), mode); + return simplify_gen_binary (MULT, mode, XEXP (op, 0), temp); } /* NEG commutes with ASHIFT since it is multiplication. Only do @@ -2175,12 +2175,34 @@ if (GET_CODE (op0) == NEG) { rtx temp = simplify_unary_operation (NEG, mode, op1, mode); + /* If op1 is a MULT as well and simplify_unary_operation + just moved the NEG to the second operand, simplify_gen_binary + below could through simplify_associative_operation move + the NEG around again and recurse endlessly. */ + if (temp + && GET_CODE (op1) == MULT + && GET_CODE (temp) == MULT + && XEXP (op1, 0) == XEXP (temp, 0) + && GET_CODE (XEXP (temp, 1)) == NEG + && XEXP (op1, 1) == XEXP (XEXP (temp, 1), 0)) + temp = NULL_RTX; if (temp) return simplify_gen_binary (MULT, mode, XEXP (op0, 0), temp); } if (GET_CODE (op1) == NEG) { rtx temp = simplify_unary_operation (NEG, mode, op0, mode); + /* If op0 is a MULT as well and simplify_unary_operation + just moved the NEG to the second operand, simplify_gen_binary + below could through simplify_associative_operation move + the NEG around again and recurse endlessly. */ + if (temp + && GET_CODE (op0) == MULT + && GET_CODE (temp) == MULT + && XEXP (op0, 0) == XEXP (temp, 0) + && GET_CODE (XEXP (temp, 1)) == NEG + && XEXP (op0, 1) == XEXP (XEXP (temp, 1), 0)) + temp = NULL_RTX; if (temp) return simplify_gen_binary (MULT, mode, temp, XEXP (op1, 0)); } Index: gcc/tree-sra.c =================================================================== --- gcc/tree-sra.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/tree-sra.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2813,7 +2813,8 @@ there to do the copying and then load the scalar replacements of the LHS. This is what the first branch does. */ - if (gimple_has_volatile_ops (*stmt) + if (modify_this_stmt + || gimple_has_volatile_ops (*stmt) || contains_vce_or_bfcref_p (rhs) || contains_vce_or_bfcref_p (lhs)) { Index: gcc/po/ChangeLog =================================================================== --- gcc/po/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/po/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,15 @@ +2011-06-30 Joseph Myers + + * de.po: Update. + +2011-06-27 Joseph Myers + + * de.po: Update. + +2011-06-27 Joseph Myers + + * de.po: Update. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: gcc/po/de.po =================================================================== --- gcc/po/de.po (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/po/de.po (.../branches/gcc-4_6-branch) (wersja 175929) @@ -9,7 +9,7 @@ "Project-Id-Version: gcc 4.6.0\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2011-03-24 16:45+0000\n" -"PO-Revision-Date: 2011-06-24 13:27+0100\n" +"PO-Revision-Date: 2011-06-30 12:55+0100\n" "Last-Translator: Roland Stigge \n" "Language-Team: German \n" "Language: de\n" @@ -25274,232 +25274,232 @@ #: cp/cvt.c:965 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in second operand of conditional expression" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt unvollständigen Typs %qT in zweitem Operanden des bedingten Ausdrucks zu" #: cp/cvt.c:970 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in third operand of conditional expression" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt unvollständigen Typs %qT in drittem Operanden des bedingten Ausdrucks zu" #: cp/cvt.c:975 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in right operand of comma operator" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt unvollständigen Typs %qT in rechtem Operanden des Kommaoperators zu" #: cp/cvt.c:980 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in left operand of comma operator" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt unvollständigen Typs %qT in linkem Operanden des Kommaoperators zu" #: cp/cvt.c:985 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in statement" -msgstr "Ungültige Anwendung von %qs auf unvollständigen Typen %qT" +msgstr "Indirektion greift nicht auf Objekt unvollständigen Typs %qT in Anweisung zu" #: cp/cvt.c:989 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in for increment expression" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt unvollständigen Typs %qT in Erhöhungsausdruck zu" #: cp/cvt.c:1005 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to void will not access object of type %qT" -msgstr "Konvertierung in unvollständigen Typen" +msgstr "Umwandlung in void greift nicht auf Objekt des Typs %qT zu" #: cp/cvt.c:1009 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in second operand of conditional expression" -msgstr "" +msgstr "implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in zweitem Operanden des bedingten Ausdrucks zu" #: cp/cvt.c:1014 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in third operand of conditional expression" -msgstr "" +msgstr "implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in drittem Operanden des bedingten Ausdrucks zu" #: cp/cvt.c:1019 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in right operand of comma operator" -msgstr "" +msgstr "implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in rechtem Operanden des Kommaoperators zu" #: cp/cvt.c:1024 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in left operand of comma operator" -msgstr "" +msgstr "implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in linkem Operanden des Kommaoperators zu" #: cp/cvt.c:1029 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in statement" -msgstr "" +msgstr "implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in Anweisung zu" #: cp/cvt.c:1033 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in for increment expression" -msgstr "" +msgstr "implizite Dereferenzierung greift nicht auf Objekt des Typs %qT in Erhöhungsausdruck zu" #: cp/cvt.c:1047 #, gcc-internal-format msgid "conversion to void will not access object of non-trivially-copyable type %qT" -msgstr "" +msgstr "Umwandlung in void greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT zu" #: cp/cvt.c:1052 #, gcc-internal-format msgid "indirection will not access object of non-trivially-copyable type %qT in second operand of conditional expression" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im zweiten Operanden des bedingten Ausdrucks zu" #: cp/cvt.c:1057 #, gcc-internal-format msgid "indirection will not access object of non-trivially-copyable type %qT in third operand of conditional expression" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im dritten Operanden des bedingten Ausdrucks zu" #: cp/cvt.c:1062 #, gcc-internal-format msgid "indirection will not access object of non-trivially-copyable type %qT in right operand of comma operator" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im rechten Operanden des Kommaoperators zu" #: cp/cvt.c:1067 #, gcc-internal-format msgid "indirection will not access object of non-trivially-copyable type %qT in left operand of comma operator" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT im linken Operanden des Kommaoperators zu" #: cp/cvt.c:1072 #, gcc-internal-format msgid "indirection will not access object of non-trivially-copyable type %qT in statement" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT in Anweisung zu" #: cp/cvt.c:1077 #, gcc-internal-format msgid "indirection will not access object of non-trivially-copyable type %qT in for increment expression" -msgstr "" +msgstr "Indirektion greift nicht auf Objekt des nicht trivial kopierbaren Typs %qT in Erhöhungsausdruck zu" #: cp/cvt.c:1115 #, gcc-internal-format msgid "conversion to void will not access object %qE of incomplete type %qT" -msgstr "" +msgstr "Umwandlung in void greift nicht auf Objekt %qE des unvollständigen Typs %qT zu" #: cp/cvt.c:1119 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in second operand of conditional expression" -msgstr "auf Objekt %qE des unvollständigen Typs %qT wird in %s nicht zugegriffen" +msgstr "auf Variable %qE des unvollständigen Typs %qT wird nicht im zweiten Operanden des bedingten Ausdrucks zugegriffen" #: cp/cvt.c:1124 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in third operand of conditional expression" -msgstr "auf Objekt %qE des unvollständigen Typs %qT wird in %s nicht zugegriffen" +msgstr "auf Variable %qE des unvollständigen Typs %qT wird nicht im dritten Operanden des bedingten Ausdrucks zugegriffen" #: cp/cvt.c:1129 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in right operand of comma operator" -msgstr "auf Objekt %qE des unvollständigen Typs %qT wird in %s nicht zugegriffen" +msgstr "auf Variable %qE des unvollständigen Typs %qT wird nicht im rechten Operanden des Kommaoperators zugegriffen" #: cp/cvt.c:1134 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in left operand of comma operator" -msgstr "auf Objekt %qE des unvollständigen Typs %qT wird in %s nicht zugegriffen" +msgstr "auf Variable %qE des unvollständigen Typs %qT wird nicht im linken Operanden des Kommaoperators zugegriffen" #: cp/cvt.c:1139 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in statement" -msgstr "auf Objekt %qE des unvollständigen Typs %qT wird in %s nicht zugegriffen" +msgstr "auf Variable %qE des unvollständigen Typs %qT wird in Anweisung nicht zugegriffen" #: cp/cvt.c:1143 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in for increment expression" -msgstr "auf Objekt %qE des unvollständigen Typs %qT wird in %s nicht zugegriffen" +msgstr "auf Variable %qE des unvollständigen Typs %qT wird in Erhöhungsausdruck nicht zugegriffen" #: cp/cvt.c:1192 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to void cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "Umwandlung in void kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1196 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "second operand of conditional expression cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "zweiter Operand des bedingten Ausdrucks kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1200 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "third operand of conditional expression cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "dritter Operand des bedingten Ausdrucks kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1204 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "right operand of comma operator cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "rechter Operand des Komma-Operators kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1208 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "left operand of comma operator cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "linker Operand des Komma-Operators kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1212 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "statement cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "Anweisung kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1216 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "for increment expression cannot resolve address of overloaded function" -msgstr "%s kann die Adresse der überladenen Funktion nicht auflösen" +msgstr "Erhöhungsausdruck kann die Adresse der überladenen Funktion nicht auflösen" #: cp/cvt.c:1232 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "second operand of conditional expression is a reference, not call, to function %qE" -msgstr "%s ist eine Referenz, kein Aufruf, zur Funktion %qE" +msgstr "zweiter Operand des bedingten Ausdrucks ist eine Referenz, kein Aufruf, zur Funktion %qE" #: cp/cvt.c:1237 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "third operand of conditional expression is a reference, not call, to function %qE" -msgstr "%s ist eine Referenz, kein Aufruf, zur Funktion %qE" +msgstr "dritter Operand des bedingten Ausdrucks ist eine Referenz, kein Aufruf, zur Funktion %qE" #: cp/cvt.c:1242 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "right operand of comma operator is a reference, not call, to function %qE" -msgstr "%s ist eine Referenz, kein Aufruf, zur Funktion %qE" +msgstr "rechter Operand des Komma-Operators ist eine Referenz, kein Aufruf, zur Funktion %qE" #: cp/cvt.c:1247 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "left operand of comma operator is a reference, not call, to function %qE" -msgstr "%s ist eine Referenz, kein Aufruf, zur Funktion %qE" +msgstr "linker Operand des Komma-Operators ist eine Referenz, kein Aufruf, zur Funktion %qE" #: cp/cvt.c:1252 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "statement is a reference, not call, to function %qE" -msgstr "%s ist eine Referenz, kein Aufruf, zur Funktion %qE" +msgstr "Anweisung ist eine Referenz, kein Aufruf, zur Funktion %qE" #: cp/cvt.c:1257 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "for increment expression is a reference, not call, to function %qE" -msgstr "%s ist eine Referenz, kein Aufruf, zur Funktion %qE" +msgstr "Erhöhungsausdruck ist eine Referenz, kein Aufruf, zur Funktion %qE" #: cp/cvt.c:1284 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "second operand of conditional expression has no effect" -msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt" +msgstr "zweiter Operand des bedingten Ausdrucks hat keinen Effekt" #: cp/cvt.c:1288 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "third operand of conditional expression has no effect" -msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt" +msgstr "dritter Operand des bedingten Ausdrucks hat keinen Effekt" #: cp/cvt.c:1292 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "right operand of comma operator has no effect" -msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt" +msgstr "rechter Operand des Komma-Operators hat keinen Effekt" #: cp/cvt.c:1296 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "left operand of comma operator has no effect" -msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt" +msgstr "linker Operand des Komma-Operators hat keinen Effekt" #: cp/cvt.c:1300 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "statement has no effect" -msgstr "Anweisung ohne Effekt" +msgstr "Anweisung hat keinen Effekt" #: cp/cvt.c:1304 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "for increment expression has no effect" -msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt" +msgstr "Erhöhungsausdruck hat keinen Effekt" #: cp/cvt.c:1453 #, gcc-internal-format @@ -25517,9 +25517,9 @@ msgstr " in Frage kommende Umwandlungen beziehen %qD und %qD ein" #: cp/decl.c:636 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable %q+D set but not used" -msgstr "Marke %q+D definiert, aber nicht verwendet" +msgstr "Variable %q+D gesetzt, aber nicht verwendet" #: cp/decl.c:1101 #, gcc-internal-format @@ -25532,9 +25532,9 @@ msgstr "vorherige Deklaration von %q+D" #: cp/decl.c:1134 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qF has a different exception specifier" -msgstr "Deklaration von %qF wirft andere Ausnahmen" +msgstr "Deklaration von %qF hat eine andere Ausnahmen-Spezifikation" #: cp/decl.c:1136 #, gcc-internal-format @@ -25542,14 +25542,14 @@ msgstr "von vorheriger Deklaration %q+F" #: cp/decl.c:1161 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "redeclaration %qD differs in %" -msgstr "Redeklaration von %qT als Nicht-Template" +msgstr "Redeklaration %qD unterscheidet sich in %" #: cp/decl.c:1162 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "from previous declaration %q+D" -msgstr "von vorheriger Deklaration %q+F" +msgstr "von vorheriger Deklaration %q+D" #: cp/decl.c:1218 #, gcc-internal-format @@ -25572,14 +25572,14 @@ msgstr "vorherige Deklaration von %q+D war inline" #: cp/decl.c:1253 cp/decl.c:1327 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "shadowing built-in function %q#D" -msgstr "%Jeingebaute Funktion »%D« überdeckt" +msgstr "eingebaute Funktion %q#D wird überdeckt" #: cp/decl.c:1254 cp/decl.c:1328 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "shadowing library function %q#D" -msgstr "Bibliotheksfunktion »%s« überdeckt" +msgstr "Bibliotheksfunktion %q#D wird überdeckt" #: cp/decl.c:1261 #, gcc-internal-format @@ -25676,9 +25676,9 @@ msgstr "Prototyp für %q+#D" #: cp/decl.c:1549 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "follows non-prototype definition here" -msgstr "%Jfolgt Nicht-Prototyp-Definition hier" +msgstr "folgt Nicht-Prototyp-Definition hier" #: cp/decl.c:1589 #, gcc-internal-format @@ -25706,14 +25706,14 @@ msgstr "redundante Redeklaration von %qD im selben Gültigkeitsbereich" #: cp/decl.c:1686 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "deleted definition of %qD" -msgstr "Redefinition von %q+D" +msgstr "Definition von %qD gelöscht" #: cp/decl.c:1687 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "after previous declaration %q+D" -msgstr "vorherige Deklaration %q+D" +msgstr "nach vorheriger Deklaration %q+D" #. From [temp.expl.spec]: #. @@ -25734,58 +25734,58 @@ msgstr "%q+D: Sichtbarkeitsattribut ignoriert, da es" #: cp/decl.c:2141 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicts with previous declaration here" -msgstr "%Jin Konflikt mit vorheriger Deklaration (hier) steht" +msgstr "in Konflikt mit vorheriger Deklaration hier" #. Reject two definitions. #: cp/decl.c:2303 cp/decl.c:2332 cp/decl.c:2361 cp/decl.c:2378 cp/decl.c:2450 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "redefinition of %q#D" -msgstr "Redefinition von %q+D" +msgstr "Redefinition von %q#D" #: cp/decl.c:2319 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD conflicts with used function" -msgstr "%q#D steht mit vorheriger %-Deklaration %q#D in Konflikt" +msgstr "%qD steht mit verwendeter Funktion in Konflikt" #: cp/decl.c:2329 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#D not declared in class" -msgstr "%qD in %qD nicht deklariert" +msgstr "%q#D nicht in Klasse deklariert" #: cp/decl.c:2343 cp/decl.c:2388 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+D redeclared inline with % attribute" -msgstr "%qs mit in Konflikt stehenden Attributen %qs redeklariert" +msgstr "%q+D mit Attribut % »inline« redeklariert" #: cp/decl.c:2346 cp/decl.c:2391 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+D redeclared inline without % attribute" -msgstr "%qs mit in Konflikt stehenden Attributen %qs redeklariert" +msgstr "%q+D ohne Attribut % »inline« redeklariert" #. is_primary= #. is_partial= #. is_friend_decl= #: cp/decl.c:2407 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "redeclaration of friend %q#D may not have default template arguments" -msgstr "%qD kann keine Standardargumente haben" +msgstr "Redeklaration des »friend« %q#D kann keine Standardtemplateargumente haben" #: cp/decl.c:2421 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "thread-local declaration of %q#D follows non-thread-local declaration" -msgstr "Thread-lokale Deklaration von %q+D folgt nicht-Thread-lokaler Deklaration" +msgstr "Thread-lokale Deklaration von %q#D folgt nicht-Thread-lokaler Deklaration" #: cp/decl.c:2424 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-thread-local declaration of %q#D follows thread-local declaration" -msgstr "Nicht-Thread-lokale Deklaration von %q+D folgt Thread-lokaler Deklaration" +msgstr "Nicht-Thread-lokale Deklaration von %q#D folgt Thread-lokaler Deklaration" #: cp/decl.c:2439 cp/decl.c:2458 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "redeclaration of %q#D" -msgstr "Deklaration von %q#D" +msgstr "Redeklaration von %q#D" #: cp/decl.c:2602 #, gcc-internal-format @@ -25813,9 +25813,9 @@ msgstr " überschneidet Initialisierung von %q+#D" #: cp/decl.c:2648 cp/decl.c:2764 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " enters scope of %q+#D which has non-trivial destructor" -msgstr "Basisklasse %q#T hat einen nicht-virtuellen Destruktor" +msgstr " Eintritt in Gültigkeitsbereich von %q+#D mit nicht-trivialem Destruktor" #: cp/decl.c:2662 cp/decl.c:2769 #, gcc-internal-format @@ -25869,9 +25869,9 @@ msgstr "kein Klassentemplate namens %q#T in %q#T" #: cp/decl.c:3164 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "lookup of %qT in %qT is ambiguous" -msgstr "Umformung von %qT in %qT ist nicht eindeutig" +msgstr "Nachschlagen von %qT in %qT ist nicht eindeutig" #: cp/decl.c:3173 #, gcc-internal-format @@ -25894,14 +25894,14 @@ msgstr "%q+D hier deklariert" #: cp/decl.c:3957 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "an anonymous struct cannot have function members" -msgstr "%Jeine anonyme struct kann keine Funktionselemente haben" +msgstr "eine anonyme struct kann keine Funktionselemente haben" #: cp/decl.c:3960 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "an anonymous union cannot have function members" -msgstr "%Jeine anonyme Union kann keine Funktionselemente haben" +msgstr "eine anonyme Union kann keine Funktionselemente haben" #: cp/decl.c:3978 #, gcc-internal-format @@ -25969,9 +25969,9 @@ msgstr "% wurde in dieser Deklaration ignoriert" #: cp/decl.c:4085 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% cannot be used for type declarations" -msgstr "% in leerer Deklaration im Datei-Gültigkeitsbereich" +msgstr "% kann nicht für Typdeklarationen verwendet werden" #: cp/decl.c:4114 #, gcc-internal-format @@ -25995,9 +25995,9 @@ msgstr "auf abhängigen Typ %qT angewandte Attribute ohne zugehörige Deklaration werden ignoriert" #: cp/decl.c:4231 cp/decl2.c:813 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "typedef %qD is initialized (use decltype instead)" -msgstr "typedef %qD ist initialisiert (stattdessen lieber __typeof__ verwenden)" +msgstr "typedef %qD ist initialisiert (stattdessen decltype verwenden)" #: cp/decl.c:4249 #, gcc-internal-format @@ -26030,9 +26030,9 @@ msgstr "doppelte Initialisierung von %qD" #: cp/decl.c:4325 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared % outside its class" -msgstr "%qE nach erster Benutzung als % deklariert" +msgstr "%qD außerhalb seiner Klasse als % deklariert" #: cp/decl.c:4364 #, gcc-internal-format @@ -26050,9 +26050,9 @@ msgstr "Elemente des Feldes %q#D haben unvollständigen Typ" #: cp/decl.c:4472 cp/decl.c:5778 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %q#D has no initializer" -msgstr "Deklaration von %q#D hat % und ist initialisiert" +msgstr "Deklaration von %q#D hat keine Initialisierung" #: cp/decl.c:4474 #, gcc-internal-format @@ -26070,9 +26070,9 @@ msgstr "%qT kann nicht von %qT initialisiert werden" #: cp/decl.c:4597 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "name used in a GNU-style designated initializer for an array" -msgstr "Name %qD in benannter Initialisierung im GNU-Stil für ein Feld verwendet" +msgstr "Name in benannter Initialisierung im GNU-Stil für ein Feld verwendet" #: cp/decl.c:4605 #, gcc-internal-format @@ -26098,24 +26098,24 @@ #. Don't talk about array types here, since we took care of that #. message in grokdeclarator. #: cp/decl.c:4715 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "storage size of %qD isn%'t known" -msgstr "Speichergröße von %q+D ist unbekannt" +msgstr "Speichergröße von %qD ist unbekannt" #: cp/decl.c:4738 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "storage size of %qD isn%'t constant" -msgstr "Speichergröße von %q+D ist nicht konstant" +msgstr "Speichergröße von %qD ist nicht konstant" #: cp/decl.c:4784 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "sorry: semantics of inline function static data %q+#D are wrong (you%'ll wind up with multiple copies)" msgstr "Entschuldigung: Semantik der statischen Daten %q+#D der inline-Funktion ist falsch (mehrere Kopien wären die Folge)" #: cp/decl.c:4788 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " you can work around this by removing the initializer" -msgstr "%J dies kann durch das Löschen des Initialisierers umgangen werden" +msgstr " dies kann durch das Löschen der Initialisierung umgangen werden" #: cp/decl.c:4817 #, gcc-internal-format @@ -26123,14 +26123,14 @@ msgstr "nicht initialisiertes const %qD" #: cp/decl.c:4825 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#T has no user-provided default constructor" -msgstr "Typ %qs hat einen benutzerdefinierten Konstruktor" +msgstr "%q#T hat keinen benutzerdefinierten Default-Konstruktor" #: cp/decl.c:4829 #, gcc-internal-format msgid "constructor is not user-provided because it is explicitly defaulted in the class body" -msgstr "" +msgstr "Konstruktor ist nicht benutzerdefiniert, da er im Klassenkörper ausdrücklich standardisiert ist" #: cp/decl.c:4943 #, gcc-internal-format @@ -26164,9 +26164,9 @@ msgstr "zu viele Initialisierer für %qT" #: cp/decl.c:5227 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "elements of array %q#T have incomplete type" -msgstr "Elemente des Feldes %q#D haben unvollständigen Typ" +msgstr "Elemente des Feldes %q#T haben unvollständigen Typ" #: cp/decl.c:5236 #, gcc-internal-format @@ -26174,9 +26174,9 @@ msgstr "Objekt %qD variabler Größe kann nicht initialisiert werden" #: cp/decl.c:5238 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "variable-sized compound literal" -msgstr "%HISO-C90 verbietet zusammengesetzte Literale" +msgstr "zusammengesetztes Literal variabler Größe" #: cp/decl.c:5294 #, gcc-internal-format @@ -26189,9 +26189,9 @@ msgstr "skalares Objekt %qD erfordert ein Element in Initialisierung" #: cp/decl.c:5350 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>" -msgstr "%qD muss mit Konstruktor initialisiert werden, nicht mit %<{...}%>" +msgstr "in C++98 muss %qD mit Konstruktor initialisiert werden, nicht mit %<{...}%>" #: cp/decl.c:5418 #, gcc-internal-format @@ -26204,9 +26204,9 @@ msgstr "Initialisierung ungültig für statisches Element mit Konstruktor" #: cp/decl.c:5447 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-constant in-class initialization invalid for static member %qD" -msgstr "ISO-C++ verbietet Initialisierung des nicht konstanten statischen Elements %qD in der Klasse" +msgstr "Initialisierung des nicht konstanten statischen Elements %qD in der Klasse ist ungültig" #: cp/decl.c:5451 #, gcc-internal-format @@ -26224,9 +26224,9 @@ msgstr "vorherige Typdeklaration von %q#D wird überschattet" #: cp/decl.c:5935 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD cannot be thread-local because it has non-trivial type %qT" -msgstr "%qD kann nicht Thread-lokal sein, weil es Nicht-POD-Typen %qT hat" +msgstr "%qD kann nicht Thread-lokal sein, weil es nichttrivialen Typen %qT hat" #: cp/decl.c:5977 #, gcc-internal-format @@ -26264,64 +26264,64 @@ msgstr "Konstruktor für fremde Klasse %qT kann kein Element sein" #: cp/decl.c:6722 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as a % variable" -msgstr "%qD als % %s deklariert" +msgstr "%qD als eine % Variable deklariert" #: cp/decl.c:6724 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as an % variable" -msgstr "%qD als % %s deklariert" +msgstr "%qD als eine % Variable deklariert" #: cp/decl.c:6726 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% and % function specifiers on %qD invalid in variable declaration" -msgstr "Funktionsspezifizierer % und % an %qD ungültig in %s-Deklaration" +msgstr "Funktionsspezifizierer % und % an %qD ungültig in Variablendeklaration" #: cp/decl.c:6731 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as a % parameter" -msgstr "%qD als % %s deklariert" +msgstr "%qD als ein % Parameter deklariert" #: cp/decl.c:6733 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as an % parameter" -msgstr "%qD als % %s deklariert" +msgstr "%qD als ein % Parameter deklariert" #: cp/decl.c:6735 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% and % function specifiers on %qD invalid in parameter declaration" -msgstr "Funktionsspezifizierer % und % an %qD ungültig in %s-Deklaration" +msgstr "Funktionsspezifizierer % und % an %qD ungültig in Parameterdeklaration" #: cp/decl.c:6740 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as a % type" -msgstr "%qD als % %s deklariert" +msgstr "%qD als ein % Typ deklariert" #: cp/decl.c:6742 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as an % type" -msgstr "%qD als % %s deklariert" +msgstr "%qD als ein % Typ deklariert" #: cp/decl.c:6744 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% and % function specifiers on %qD invalid in type declaration" -msgstr "Funktionsspezifizierer % und % an %qD ungültig in %s-Deklaration" +msgstr "Funktionsspezifizierer % und % an %qD ungültig in Typdeklaration" #: cp/decl.c:6749 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as a % field" -msgstr "%qD als % %s deklariert" +msgstr "%qD als ein % Feld deklariert" #: cp/decl.c:6751 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD declared as an % field" -msgstr "%qD als % %s deklariert" +msgstr "%qD als ein % Feld deklariert" #: cp/decl.c:6753 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% and % function specifiers on %qD invalid in field declaration" -msgstr "Funktionsspezifizierer % und % an %qD ungültig in %s-Deklaration" +msgstr "Funktionsspezifizierer % und % an %qD ungültig in Felddeklaration" #: cp/decl.c:6760 #, gcc-internal-format @@ -26385,9 +26385,9 @@ msgstr "%q+#D verweist nicht auf den unqualifizierten Typen, also wird es nicht zum Binden verwendet" #: cp/decl.c:7053 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "type %qT with no linkage used to declare function %q#D with linkage" -msgstr "vorherige Deklaration von %q+#D mit %qL-Bindung" +msgstr "Typ %qT ohne Bindung für Funktionsdeklaration %q#D mit Bindung deklariert" #: cp/decl.c:7075 #, gcc-internal-format @@ -26421,22 +26421,22 @@ #: cp/decl.c:7330 #, gcc-internal-format msgid "anonymous type with no linkage used to declare variable %q#D with linkage" -msgstr "" +msgstr "anonymer Typ ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren" #: cp/decl.c:7339 #, gcc-internal-format msgid "type %qT with no linkage used to declare variable %q#D with linkage" -msgstr "" +msgstr "Typ %qT ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren" #: cp/decl.c:7459 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% needed for in-class initialization of static data member %q#D of non-integral type" -msgstr "ungültige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen %qT" +msgstr "% erforderlich für Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ" #: cp/decl.c:7462 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "in-class initialization of static data member %q#D of non-literal type" -msgstr "ungültige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen %qT" +msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ" #: cp/decl.c:7475 #, gcc-internal-format @@ -26514,44 +26514,44 @@ msgstr "Überlauf in Feldgröße" #: cp/decl.c:7741 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as array of void" -msgstr "Deklaration von %qs als Feld von voids" +msgstr "Deklaration von %qD als Feld von voids" #: cp/decl.c:7743 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "creating array of void" -msgstr "Feld von %qT wird erzeugt" +msgstr "Feld von void wird erzeugt" #: cp/decl.c:7748 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as array of functions" -msgstr "Deklaration von %qs als Feld von Funktionen" +msgstr "Deklaration von %qD als Feld von Funktionen" #: cp/decl.c:7750 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "creating array of functions" -msgstr "Feld von %qT wird erzeugt" +msgstr "Feld von Funktionen wird erzeugt" #: cp/decl.c:7755 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as array of references" -msgstr "Deklaration von %qs als Feld von Funktionen" +msgstr "Deklaration von %qD als Feld von Referenzen" #: cp/decl.c:7757 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "creating array of references" -msgstr "Feld von %qT wird erzeugt" +msgstr "Feld von Referenzen wird erzeugt" #: cp/decl.c:7762 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %qD as array of function members" -msgstr "Deklaration von %qs als Feld von Funktionen" +msgstr "Deklaration von %qD als Feld von Funktionselementen" #: cp/decl.c:7764 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "creating array of function members" -msgstr "Deklaration von %qs als Feld von Funktionen" +msgstr "Feld von Funktionselementen wird erzeugt" #: cp/decl.c:7778 #, gcc-internal-format @@ -26629,9 +26629,9 @@ msgstr "Funktionsdefinition deklariert keine Parameter" #: cp/decl.c:8208 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% cannot appear in a typedef declaration" -msgstr "eine Template-ID darf nicht in »using«-Deklaration auftreten" +msgstr "% kann nicht in typedef-Deklaration auftreten" #: cp/decl.c:8216 #, gcc-internal-format @@ -26664,9 +26664,9 @@ msgstr "% ungültig für %qs" #: cp/decl.c:8331 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<__int128%> invalid for %qs" -msgstr "% ungültig für %qs" +msgstr "%<__int128%> ungültig für %qs" #: cp/decl.c:8333 #, gcc-internal-format @@ -26684,9 +26684,9 @@ msgstr "% oder % ungültig für %qs" #: cp/decl.c:8339 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%, %, %, or % invalid for %qs" -msgstr "% oder % ungültig für %qs" +msgstr "%, %, % oder % ungültig für %qs" #: cp/decl.c:8341 #, gcc-internal-format @@ -26699,9 +26699,9 @@ msgstr "% und % für %qs gleichzeitig angegeben" #: cp/decl.c:8349 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% or % invalid for %qs" -msgstr "% oder % ungültig für %qs" +msgstr "% oder % ungültig für %qs" #: cp/decl.c:8357 #, gcc-internal-format @@ -26709,14 +26709,14 @@ msgstr "long, short, signed oder unsigned ungültig verwendet für %qs" #: cp/decl.c:8366 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<__int128%> is not supported by this target" -msgstr "__builtin_saveregs wird von diesem Ziel nicht unterstützt" +msgstr "%<__int128%> wird von diesem Ziel nicht unterstützt" #: cp/decl.c:8372 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ does not support %<__int128%> for %qs" -msgstr "ISO-C++ 1998 unterstützt nicht %" +msgstr "ISO-C++ unterstützt nicht %<__int128%> for %qs" #: cp/decl.c:8442 #, gcc-internal-format @@ -26744,9 +26744,9 @@ msgstr "»typedef«-Deklaration in Parameterdeklaration ungültig" #: cp/decl.c:8513 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "storage class specified for template parameter %qs" -msgstr "Speicherklasse für Parameter %qs angegeben" +msgstr "Speicherklasse für Template-Parameter %qs angegeben" #: cp/decl.c:8519 #, gcc-internal-format @@ -26754,19 +26754,19 @@ msgstr "Speicherklassenangaben sind in Parameterdeklarationen ungültig" #: cp/decl.c:8523 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter declared %" -msgstr "Parameter %q+D als % deklariert" +msgstr "Parameter als % deklariert" #: cp/decl.c:8531 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a parameter cannot be declared %" -msgstr "Nicht-Element %qs kann nicht als % deklariert sein" +msgstr "ein Parameter kann nicht als % deklariert sein" #: cp/decl.c:8540 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% outside class declaration" -msgstr "»virtual« außerhalb einer Klassendeklaration" +msgstr "% außerhalb einer Klassendeklaration" #: cp/decl.c:8558 #, gcc-internal-format @@ -26816,17 +26816,17 @@ #: cp/decl.c:8735 #, gcc-internal-format msgid "%qs function uses % type specifier without late return type" -msgstr "" +msgstr "Funktion %qs verwendet Typspezifikation % ohne späten Rückgabetypen" #: cp/decl.c:8741 #, gcc-internal-format msgid "%qs function with late return type has %qT as its type rather than plain %" -msgstr "" +msgstr "Funktion %qs mit spätem Rückgabetypen hat %qT als seinen Typ statt einfaches %" #: cp/decl.c:8749 #, gcc-internal-format msgid "%qs function with late return type not declared with % type specifier" -msgstr "" +msgstr "Funktion %qs mit spätem Rückgabetypen nicht mit Typspezifikation % deklariert" #: cp/decl.c:8782 #, gcc-internal-format @@ -26844,7 +26844,7 @@ msgstr "Konstruktoren können nicht als virtuell deklariert werden" #: cp/decl.c:8818 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "can%'t initialize friend function %qs" msgstr "friend-Funktion %qs kann nicht initialisiert werden" @@ -26860,7 +26860,7 @@ msgstr "friend-Deklaration nicht in Klassendefinition" #: cp/decl.c:8828 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "can%'t define friend function %qs in a local class definition" msgstr "friend-Funktion %qs kann nicht in einer lokalen Klassendefinition definiert werden" @@ -26885,14 +26885,14 @@ msgstr "Zeiger auf Element %q#T kann nicht deklariert werden" #: cp/decl.c:8913 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot declare reference to qualified function type %qT" -msgstr "Referenz auf %q#T kann nicht deklariert werden" +msgstr "Referenz auf qualifizierten Funktionstypen %qT kann nicht deklariert werden" #: cp/decl.c:8914 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot declare pointer to qualified function type %qT" -msgstr "Zeiger auf unvollständigen Typen %qT kann nicht verringert werden" +msgstr "Zeiger auf qualifizierten Funktionstypen %qT kann nicht deklariert werden" #: cp/decl.c:8978 #, gcc-internal-format @@ -26902,12 +26902,12 @@ #: cp/decl.c:9023 #, gcc-internal-format msgid "both % and % cannot be used here" -msgstr "" +msgstr "% und % können hier nicht zusammen verwendet werden" #: cp/decl.c:9025 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "both % and % cannot be used here" -msgstr "sowohl %<_Sat%> als auch % in Deklaration" +msgstr " % und % können hier nicht zusammen verwendet werden" #: cp/decl.c:9034 #, gcc-internal-format @@ -26987,14 +26987,14 @@ msgstr "Konstante %qs kann nicht als % deklariert sein" #: cp/decl.c:9226 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "reference %qs cannot be declared %" -msgstr "Funktion %qs kann nicht als % deklariert sein" +msgstr "Referenz %qs kann nicht als % deklariert sein" #: cp/decl.c:9265 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "typedef name may not be a nested-name-specifier" -msgstr "%Jtypedef-Name darf kein Spezifizierer mit geschachteltem Namen sein" +msgstr "typedef-Name darf kein Spezifizierer mit geschachteltem Namen sein" #: cp/decl.c:9283 #, gcc-internal-format @@ -27063,9 +27063,9 @@ msgstr "ungültige Verwendung von %<::%>" #: cp/decl.c:9570 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of function %qD in invalid context" -msgstr "Deklaration der C-Funktion %q#D steht in Konflikt mit" +msgstr "Deklaration der Funktion %qD in ungültigem Kontext" #: cp/decl.c:9579 #, gcc-internal-format @@ -27088,9 +27088,9 @@ msgstr "Deklaration von %qD als Element %qT" #: cp/decl.c:9617 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a destructor cannot be %" -msgstr "Konstruktor kann nicht %s sein" +msgstr "Destruktor kann nicht % sein" #: cp/decl.c:9623 #, gcc-internal-format @@ -27118,9 +27118,9 @@ msgstr "%qE ist weder eine Funktion noch Elementfunktion; kann nicht als »friend« deklariert werden" #: cp/decl.c:9743 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-static data member initializers" -msgstr "%qT hat kein nicht-statisches Datenelement namens %qD" +msgstr "Initialisierung nicht-statischer Datenelemente" #: cp/decl.c:9747 #, gcc-internal-format @@ -27133,14 +27133,14 @@ msgstr "%qD wird statisch gemacht" #: cp/decl.c:9786 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "constexpr static data member %qD must have an initializer" -msgstr "%qT hat kein nicht-statisches Datenelement namens %qD" +msgstr "statisches Datenelement %qD (constexpr) muss Initialisierung haben" #: cp/decl.c:9795 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-static data member %qE declared %" -msgstr "statisches Element %qD als % deklariert" +msgstr "nicht-statisches Datenelement %qE als % deklariert" #: cp/decl.c:9832 #, gcc-internal-format @@ -27168,9 +27168,9 @@ msgstr "% ungültig für außerhalb des globalen Gültigkeitsbereiches deklarierte Funktion %qs" #: cp/decl.c:9859 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q#T is not a class or a namespace" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%q#T ist keine Klasse oder Namensbereich" #: cp/decl.c:9867 #, gcc-internal-format @@ -27178,9 +27178,9 @@ msgstr "virtuelle Nicht-Klassen-Funktion %qs" #: cp/decl.c:9874 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs defined in a non-class scope" -msgstr "Keine Variable %qs in Klasse %qs definiert" +msgstr "%qs nicht in Klassen-Gültigkeitsbereich definiert" #: cp/decl.c:9903 #, gcc-internal-format @@ -27209,9 +27209,9 @@ msgstr "Element %q#D kann nicht explizit deklariert werden, externe Bindung zu haben" #: cp/decl.c:9959 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of constexpr variable %qD is not a definition" -msgstr "Deklaration von %q#D außerhalb einer Klasse ist keine Definition" +msgstr "Deklaration der constexpr-Variable %qD ist keine Definition" #: cp/decl.c:9970 #, gcc-internal-format @@ -27249,14 +27249,14 @@ msgstr "Parameter %qD deklariert ungültigerweise Methodentyp" #: cp/decl.c:10261 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter %qD includes pointer to array of unknown bound %qT" -msgstr "Parameter %qD bezieht %s in Feld mit unbekannter Grenze %qT ein" +msgstr "Parameter %qD bezieht Zeiger auf Feld mit unbekannter Grenze %qT ein" #: cp/decl.c:10263 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter %qD includes reference to array of unknown bound %qT" -msgstr "Parameter %qD bezieht %s in Feld mit unbekannter Grenze %qT ein" +msgstr "Parameter %qD bezieht Referenz auf Feld mit unbekannter Grenze %qT ein" #: cp/decl.c:10278 #, gcc-internal-format @@ -27309,34 +27309,34 @@ msgstr "%qD muss ein Argument von einem Klassen- oder Aufzählungstyp haben" #: cp/decl.c:10723 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to a reference to void will never use a type conversion operator" -msgstr "Umwandlung in %s%s wird nie einen Typumwandlungsoperator verwenden" +msgstr "Umwandlung in Referenz auf void wird nie einen Typumwandlungsoperator verwenden" #: cp/decl.c:10725 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to void will never use a type conversion operator" -msgstr "Umwandlung in %s%s wird nie einen Typumwandlungsoperator verwenden" +msgstr "Umwandlung in void wird nie einen Typumwandlungsoperator verwenden" #: cp/decl.c:10732 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to a reference to the same type will never use a type conversion operator" -msgstr "Umwandlung in %s%s wird nie einen Typumwandlungsoperator verwenden" +msgstr "Umwandlung in Referenz auf gleichen Typ wird nie einen Typumwandlungsoperator verwenden" #: cp/decl.c:10734 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to the same type will never use a type conversion operator" -msgstr "Umwandlung in %s%s wird nie einen Typumwandlungsoperator verwenden" +msgstr "Umwandlung in gleichen Typ wird nie einen Typumwandlungsoperator verwenden" #: cp/decl.c:10742 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to a reference to a base class will never use a type conversion operator" -msgstr "Umwandlung in %s%s wird nie einen Typumwandlungsoperator verwenden" +msgstr "Umwandlung in Referenz auf Basisklasse wird nie einen Typumwandlungsoperator verwenden" #: cp/decl.c:10744 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conversion to a base class will never use a type conversion operator" -msgstr "Umwandlung in %s%s wird nie einen Typumwandlungsoperator verwenden" +msgstr "Umwandlung in Basisklasse wird nie einen Typumwandlungsoperator verwenden" #. 13.4.0.3 #: cp/decl.c:10753 @@ -27510,27 +27510,27 @@ #: cp/decl.c:11544 #, gcc-internal-format msgid "scoped/unscoped mismatch in enum %q#T" -msgstr "" +msgstr "falsche Zuordnung zwischen innerhalb und außerhalb eines Gültigkeitsbereiches in enum %q#T" #: cp/decl.c:11547 cp/decl.c:11555 cp/decl.c:11567 cp/parser.c:13637 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous definition here" -msgstr "%Jvorherige Definition hier" +msgstr "vorherige Definition hier" #: cp/decl.c:11552 #, gcc-internal-format msgid "underlying type mismatch in enum %q#T" -msgstr "" +msgstr "falsche Zuordnung des zugrunde liegenden Typs in enum %q#T" #: cp/decl.c:11564 #, gcc-internal-format msgid "different underlying type in enum %q#T" -msgstr "" +msgstr "anderer zugrunde liegender Typ in enum %q#T" #: cp/decl.c:11616 #, gcc-internal-format msgid "underlying type %<%T%> of %<%T%> must be an integral type" -msgstr "" +msgstr "zugrunde liegender Typ %<%T%> von %<%T%> muss ein eingebauter Typ sein" #. DR 377 #. @@ -27552,9 +27552,9 @@ msgstr "Überlauf in Aufzählungswerten bei %qD" #: cp/decl.c:11938 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "enumerator value %E is too large for underlying type %<%T%>" -msgstr "Aufzählungswert für %qE ist keine Ganzzahlkonstante" +msgstr "Aufzählungswert %E ist zu groß für zugrunde liegenden Typ %<%T%>" #: cp/decl.c:12035 #, gcc-internal-format @@ -27587,9 +27587,9 @@ msgstr "Parameter %qD leer definiert" #: cp/decl.c:13027 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "parameter %q+D set but not used" -msgstr "Marke %q+D definiert, aber nicht verwendet" +msgstr "Parameter %q+D gesetzt, aber nicht verwendet" #: cp/decl.c:13118 #, gcc-internal-format @@ -27657,9 +27657,9 @@ msgstr "Java-Methode %qD hat Nicht-Java-Parametertyp %qT" #: cp/decl2.c:628 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "template parameter lists provided don%'t match the template parameters of %qD" -msgstr "Template-Parameter passen nicht zum Template" +msgstr "angegebene Template-Parameterlisten passen nicht zu Templateparametern von %qD" #: cp/decl2.c:696 #, gcc-internal-format @@ -27672,9 +27672,9 @@ msgstr "lokale Klasse %q#T sollte nicht statisches Datenelement %q#D haben" #: cp/decl2.c:833 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "explicit template argument list not allowed" -msgstr "Templateargument %d ist ungültig" +msgstr "explizite Templateargumentliste nicht erlaubt" #: cp/decl2.c:839 #, gcc-internal-format @@ -27687,9 +27687,9 @@ msgstr "%qD ist bereits in %qT definiert" #: cp/decl2.c:910 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid initializer for member function %qD" -msgstr "ungültiger Anfangswert für Element %qs" +msgstr "ungültige Initialisierung für Elementfunktion %qD" #: cp/decl2.c:916 #, gcc-internal-format @@ -27732,9 +27732,9 @@ msgstr "statisches Element %qD kann kein Bitfeld sein" #: cp/decl2.c:1057 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "width of bit-field %qD has non-integral type %qT" -msgstr "Bit-Feld %qD mit Nicht-Ganzzahl-Typ" +msgstr "Breite des Bit-Feldes %qD hat Nicht-Ganzzahl-Typ %qT" #: cp/decl2.c:1309 #, gcc-internal-format @@ -27801,14 +27801,14 @@ msgstr "%qT mit bedeutenderer Sichtbarkeit als seine Basis %qT deklariert" #: cp/decl2.c:3595 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D, declared using anonymous type, is used but never defined" -msgstr "%q+F als % deklariert, aber nirgendwo definiert" +msgstr "mit anonymem Typ deklariertes %q+#D wird verwendet, aber nirgendwo definiert" #: cp/decl2.c:3602 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+#D, declared using local type %qT, is used but never defined" -msgstr "%q+F als % deklariert, aber nirgendwo definiert" +msgstr "mit lokalem Typ %2$qT deklariertes %1$q+#D wird verwendet, aber nirgendwo definiert" #: cp/decl2.c:3931 #, gcc-internal-format @@ -27825,52 +27825,52 @@ #: cp/decl2.c:4162 #, gcc-internal-format msgid "converting lambda which uses %<...%> to function pointer" -msgstr "" +msgstr "%<...%> verwendendes Lambda wird in Funktionszeiger umgewandelt" #: cp/decl2.c:4167 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "use of deleted function %qD" -msgstr "%s der Funktion %qD" +msgstr "gelöschte Funktion %qD wird verwendet" #: cp/error.c:3108 #, gcc-internal-format msgid "extended initializer lists only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "erweiterte Initialisierungsliste nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3113 #, gcc-internal-format msgid "explicit conversion operators only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "explizite Umwandlungsoperatoren nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3118 #, gcc-internal-format msgid "variadic templates only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "variadische Templates nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3123 #, gcc-internal-format msgid "lambda expressions only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "Lambda-Ausdrücke nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3128 #, gcc-internal-format msgid "C++0x auto only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "C++0x »auto« nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3132 #, gcc-internal-format msgid "scoped enums only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "enums mit Gültigkeitsbereich nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3136 #, gcc-internal-format msgid "defaulted and deleted functions only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "Standard- und gelöschte Funktionen nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3141 #, gcc-internal-format msgid "inline namespaces only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "»inline« Namensräume nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/error.c:3188 #, gcc-internal-format @@ -27945,29 +27945,29 @@ msgstr "Ausdruck %qE von abstraktem Klassentyp %qT kann nicht in throw-Ausdruck verwendet werden" #: cp/except.c:982 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "exception of type %qT will be caught" -msgstr "%HAusnahme des Typs %qT wird gefangen werden" +msgstr "Ausnahme des Typs %qT wird gefangen werden" #: cp/except.c:985 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " by earlier handler for %qT" -msgstr "%H von früherem Behandler für %qT" +msgstr " von früherem Behandler für %qT" #: cp/except.c:1014 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<...%> handler must be the last handler for its try block" -msgstr "%H%<...%>-Behandler muss der letzte Behandler für seinen »try«-Block sein" +msgstr "%<...%>-Behandler muss der letzte Behandler für seinen »try«-Block sein" #: cp/except.c:1097 #, gcc-internal-format msgid "noexcept-expression evaluates to % because of a call to %qD" -msgstr "" +msgstr "noexcept-Ausdruck wird wegen Aufruf von %qD zu % ausgewertet" #: cp/except.c:1099 #, gcc-internal-format msgid "but %q+D does not throw; perhaps it should be declared %" -msgstr "" +msgstr "aber %q+D wird nicht geworfen; vielleicht sollte es als % deklariert werden" #: cp/friend.c:153 #, gcc-internal-format @@ -28059,39 +28059,39 @@ msgstr "Wert-Initialisierung von Referenz" #: cp/init.c:430 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot value-initialize array of unknown bound %qT" -msgstr "Parameter %qD bezieht %s in Feld mit unbekannter Grenze %qT ein" +msgstr "Feld mit unbekannter Grenze %qT kann nicht mit Werten initialisiert werden" #: cp/init.c:479 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD should be initialized in the member initialization list" -msgstr "%J%qD sollte in Elementinitialisierungsliste initialisiert werden" +msgstr "%qD sollte in Elementinitialisierungsliste initialisiert werden" #: cp/init.c:503 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "value-initialization of %q#D, which has reference type" -msgstr "%JStandardinitialisierung von %q#D, das Referenztyp hat" +msgstr "Wertinitialisierung von %q#D, das Referenztyp hat" #: cp/init.c:542 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid initializer for array member %q#D" -msgstr "ungültiger Anfangswert für Element %qs" +msgstr "ungültige Initialisierung für Feldelement %q#D" #: cp/init.c:555 cp/init.c:573 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized member %qD with % type %qT" -msgstr "%Jnicht initialisiertes Element %qD mit %-Typ %qT" +msgstr "nicht initialisiertes Element %qD mit %-Typ %qT" #: cp/init.c:569 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized reference member %qD" -msgstr "%Jnicht initialisiertes Referenzelement %qD" +msgstr "nicht initialisiertes Referenzelement %qD" #: cp/init.c:582 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized member %qD in % constructor" -msgstr "%Jnicht initialisiertes Element %qD mit %-Typ %qT" +msgstr "nicht initialisiertes Element %qD in %-Konstruktor" #: cp/init.c:739 #, gcc-internal-format @@ -28114,34 +28114,34 @@ msgstr " Basis %qT" #: cp/init.c:749 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " when initialized here" -msgstr "%J während es hier initialisiert wurde" +msgstr " während es hier initialisiert wurde" #: cp/init.c:766 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "multiple initializations given for %qD" -msgstr "%Jmehrere Initialisierungen für %qD angegeben" +msgstr "mehrere Initialisierungen für %qD angegeben" #: cp/init.c:770 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "multiple initializations given for base %qT" -msgstr "%Jmehrere Initialisierungen für Basis %qT angegeben" +msgstr "mehrere Initialisierungen für Basis %qT angegeben" #: cp/init.c:854 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "initializations for multiple members of %qT" -msgstr "%JInitialisierungen für mehrere Elemente von %qT" +msgstr "Initialisierungen für mehrere Elemente von %qT" #: cp/init.c:932 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "base class %q#T should be explicitly initialized in the copy constructor" -msgstr "%JBasisklasse %q#T sollte explizit im Kopierkonstruktor initialisiert werden" +msgstr "Basisklasse %q#T sollte explizit im Kopierkonstruktor initialisiert werden" #: cp/init.c:941 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized base %qT in % constructor" -msgstr "%Jnicht initialisiertes Element %qD mit %-Typ %qT" +msgstr "nicht initialisierte Basis %qT in %-Konstruktor" #: cp/init.c:1167 cp/init.c:1186 #, gcc-internal-format @@ -28189,9 +28189,9 @@ msgstr "schlechte Feldinitialisierung" #: cp/init.c:1597 cp/semantics.c:2681 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qT is not a class type" -msgstr "%q#T ist keine Klasse" +msgstr "%qT ist kein Klassentyp" #: cp/init.c:1651 #, gcc-internal-format @@ -28216,22 +28216,22 @@ #: cp/init.c:1914 #, gcc-internal-format msgid "uninitialized reference member in %q#T using % without new-initializer" -msgstr "" +msgstr "nicht initialisiertes Referenzelement in %q#T verwendet % ohne new-Initialisierung" #: cp/init.c:1917 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized reference member in %q#T" -msgstr "%Jnicht initialisiertes Referenzelement %qD" +msgstr "nicht initialisiertes Referenzelement in %q#T" #: cp/init.c:1929 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized const member in %q#T using % without new-initializer" -msgstr "nicht initialisierte Konstante in % von %q#T" +msgstr "nicht initialisiertes konstantes Element in %q#T verwendet % ohne new-Initialisierung" #: cp/init.c:1932 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized const member in %q#T" -msgstr "nicht initialisiertes konstantes Element %qD" +msgstr "nicht initialisiertes konstantes Element in %q#T" #: cp/init.c:2029 #, gcc-internal-format @@ -28264,9 +28264,9 @@ msgstr "Abfrage des Elementes %qD ist mehrdeutig" #: cp/init.c:2364 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-constant array size in new, unable to verify length of initializer-list" -msgstr "nichtkonstanter Feldindex in Initialisierung" +msgstr "Größe eines nicht konstanten Feldes in new, Länge der Initialisierungsliste kann nicht geprüft werden" #: cp/init.c:2373 #, gcc-internal-format @@ -28294,9 +28294,9 @@ msgstr "Aufruf von Java-Konstruktor, wobei % nicht definiert ist" #: cp/init.c:2691 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "can%'t find % in %qT" -msgstr "% in %qT kann nicht gefunden werden" +msgstr "% kann nicht in %qT gefunden werden" #: cp/init.c:3142 #, gcc-internal-format @@ -28314,7 +28314,7 @@ msgstr "mögliches Problem bei Aufruf des »delete«-Operators erkannt" #: cp/init.c:3367 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined" msgstr "weder der Destruktor noch der klassenspezifische Operator »delete« wird aufgerufen, auch wenn sie bei der Klassendefinition deklariert werden" @@ -28391,17 +28391,17 @@ #: cp/mangle.c:2215 #, gcc-internal-format msgid "mangling unknown fixed point type" -msgstr "" +msgstr "unbekannter Festkommatyp wird vernichtet" #: cp/mangle.c:2642 -#, fuzzy, gcc-internal-format, gfc-internal-format +#, gcc-internal-format, gfc-internal-format msgid "mangling %C" -msgstr "Warnung: " +msgstr "%C wird vernichtet" #: cp/mangle.c:2694 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "mangling new-expression" -msgstr "fehlendes '(' in Ausdruck" +msgstr "new-Ausdruck wird vernichtet" #: cp/mangle.c:2728 #, gcc-internal-format @@ -28411,7 +28411,7 @@ #: cp/mangle.c:2768 #, gcc-internal-format msgid "string literal in function template signature" -msgstr "" +msgstr "Zeichenkettenliteral in Signatur des Funktionstemplate" #: cp/mangle.c:3040 #, gcc-internal-format @@ -28421,7 +28421,7 @@ #: cp/mangle.c:3156 #, gcc-internal-format msgid "-fabi-version=4 (or =0) avoids this error with a change in vector mangling" -msgstr "" +msgstr "-fabi-version=4 (oder =0) verhindert diesen Fehler mit einer Änderung in Vektorvernichtung" #: cp/method.c:395 #, gcc-internal-format @@ -28429,89 +28429,89 @@ msgstr "allgemeiner Thunk-Code für Methode %q#D mit %<...%> scheitert" #: cp/method.c:651 cp/method.c:991 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-static const member %q#D, can%'t use default assignment operator" msgstr "nicht-statisches konstantes Element %q#D, Standard-Zuweisungsoperator kann nicht verwendet werden" #: cp/method.c:657 cp/method.c:997 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-static reference member %q#D, can%'t use default assignment operator" msgstr "nicht-statisches Referenzelement %q#D, Standard-Zuweisungsoperator kann nicht verwendet werden" #: cp/method.c:773 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "synthesized method %qD first required here " -msgstr "%Hkünstlich erzeugte Methode %qD zuerst hier erfordert " +msgstr "erzeugte Methode %qD zuerst hier erfordert " #: cp/method.c:935 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "union member %q+D with non-trivial %qD" -msgstr "%Jnicht initialisiertes Element %qD mit %-Typ %qT" +msgstr "Union-Element %q+D mit nichttrivialem %qD" #: cp/method.c:1014 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized non-static const member %q#D" -msgstr "nicht initialisiertes konstantes Element %qD" +msgstr "nicht initialisiertes nicht statisches konstantes Element %q#D" #: cp/method.c:1020 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized non-static reference member %q#D" -msgstr "%Jnicht initialisiertes Referenzelement %qD" +msgstr "nicht initialisiertes nicht statisches Referenzelement %q#D" #: cp/method.c:1253 #, gcc-internal-format msgid "%qT has virtual bases, default move assignment operator cannot be generated" -msgstr "" +msgstr "%qT hat virtuelle Basen, Standard-Zuweisungsoperator (move) kann nicht erzeugt werden" #: cp/method.c:1355 #, gcc-internal-format msgid "a lambda closure type has a deleted default constructor" -msgstr "" +msgstr "Lambda-Abschlusstyp hat gelöschten Standardkonstruktor" #: cp/method.c:1357 #, gcc-internal-format msgid "a lambda closure type has a deleted copy assignment operator" -msgstr "" +msgstr "Lambda-Abschlusstyp hat gelöschten Kopier-Zuweisungsoperator" #: cp/method.c:1366 #, gcc-internal-format msgid "%qD is implicitly deleted because the default definition would be ill-formed:" -msgstr "" +msgstr "%qD wird implizit gelöscht, da die Standarddefinition ungültig wäre:" #: cp/method.c:1558 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "defaulted declaration %q+D" -msgstr "Wiederholte using-Deklaration %q+D" +msgstr "Vorgabe-Deklaration %q+D" #: cp/method.c:1560 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "does not match expected signature %qD" -msgstr "Feld passt nicht zum Regionsbaum" +msgstr "passt nicht zur erwarteten Signatur %qD" #: cp/method.c:1581 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD cannot be declared as constexpr" -msgstr "%qD darf nicht als »static« deklariert werden" +msgstr "%qD kann nicht als »constexpr« deklariert werden" #: cp/method.c:1621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD cannot be defaulted" -msgstr "%q+#D kann nicht deklariert werden" +msgstr "%qD kann nicht vorgegeben werden" #: cp/method.c:1630 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "defaulted function %q+D with default argument" -msgstr "Datei endet in Standardargument" +msgstr "vorgegebene Funktion %q+D mit Standardargument" #: cp/method.c:1636 #, gcc-internal-format msgid "function %q+D defaulted on its first declaration must not have an exception-specification" -msgstr "" +msgstr "bei ihrer ersten Deklaration vorgegebene Funktion %q+D darf keine Ausnahmespezifikation haben" #: cp/method.c:1639 #, gcc-internal-format msgid "%qD declared virtual cannot be defaulted in the class body" -msgstr "" +msgstr "als virtuell deklariertes %qD kann nicht im Klassenkörper vordefiniert werden" #: cp/method.c:1716 #, gcc-internal-format @@ -28540,14 +28540,14 @@ msgstr "als %qD" #: cp/name-lookup.c:809 cp/name-lookup.c:820 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %q#D with C language linkage" -msgstr "Redeklaration von %q+D ohne Bindung" +msgstr "Deklaration von %q#D mit C-Sprachen-Bindung" #: cp/name-lookup.c:813 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "due to different exception specifications" -msgstr "Code zur Überprüfung von Exception-Spezifikationen erzeugen" +msgstr "durch andere Ausnahmespezifikationen" #: cp/name-lookup.c:904 #, gcc-internal-format @@ -28560,7 +28560,7 @@ msgstr "vorherige externe Deklaration von %q+#D" #: cp/name-lookup.c:996 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "extern declaration of %q#D doesn%'t match" msgstr "externe Deklaration von %q#D passt nicht" @@ -28606,9 +28606,9 @@ msgstr " passt nach den alten Regeln zu diesem %q+D" #: cp/name-lookup.c:1273 cp/name-lookup.c:1281 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "name lookup of %qD changed for ISO % scoping" -msgstr "Namenssuche von %qD hat sich für neue ISO-Regeln zum »for«-Gültigkeitsbereich geändert" +msgstr "Namenssuche von %qD hat sich für ISO-Regeln zum »for«-Gültigkeitsbereich geändert" #: cp/name-lookup.c:1275 #, gcc-internal-format @@ -28621,7 +28621,7 @@ msgstr " bei %q+D wird veraltete Bindung verwendet" #: cp/name-lookup.c:1290 cp/parser.c:11678 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "(if you use %<-fpermissive%> G++ will accept your code)" msgstr "(G++ wird den Code mit »-fpermissive« akzeptieren)" @@ -28758,19 +28758,19 @@ #: cp/name-lookup.c:3980 #, gcc-internal-format msgid "maximum limit of %d namespaces searched for %qE" -msgstr "" +msgstr "obere Grenze von %d Namensräumen für %qE durchsucht" #: cp/name-lookup.c:3990 #, gcc-internal-format msgid "suggested alternative:" msgid_plural "suggested alternatives:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "empfohlene Alternative:" +msgstr[1] "empfohlene Alternativen:" #: cp/name-lookup.c:3994 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid " %qE" -msgstr " %q+#D" +msgstr " %qE" #: cp/name-lookup.c:5184 #, gcc-internal-format @@ -28788,14 +28788,14 @@ msgstr "XXX pop_everything () wird verlassen\n" #: cp/optimize.c:341 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "making multiple clones of %qD" -msgstr "mehrfache Definition von %q#T" +msgstr "mehrfache Kopien von %qD werden erzeugt" #: cp/parser.c:579 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "identifier %qE will become a keyword in C++0x" -msgstr "Bezeichner %<%s%> wird in C++0x ein Schlüsselwort" +msgstr "Bezeichner %qE wird in C++0x zum Schlüsselwort" #: cp/parser.c:2323 #, gcc-internal-format @@ -28828,49 +28828,49 @@ msgstr "%qE wurde nicht deklariert" #: cp/parser.c:2373 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<%E::%E%> is not a type" -msgstr "%<%T::%E%> ist kein Typ" +msgstr "%<%E::%E%> ist kein Typ" #: cp/parser.c:2377 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<%E::%E%> is not a class or namespace" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%<%E::%E%> ist keine Klasse oder Namensbereich" #: cp/parser.c:2382 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<%E::%E%> is not a class, namespace, or enumeration" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%<%E::%E%> ist keine Klasse, Namensbereich oder Aufzählung" #: cp/parser.c:2395 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<::%E%> is not a type" -msgstr "%<%T::%E%> ist kein Typ" +msgstr "%<::%E%> ist kein Typ" #: cp/parser.c:2398 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<::%E%> is not a class or namespace" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%<::%E%> ist keine Klasse oder Namensbereich" #: cp/parser.c:2402 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<::%E%> is not a class, namespace, or enumeration" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%<::%E%> ist keine Klasse, Namensbereich oder Aufzählung" #: cp/parser.c:2414 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a type" -msgstr "%qD ist kein Typ" +msgstr "%qE ist kein Typ" #: cp/parser.c:2417 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a class or namespace" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%qE ist keine Klasse oder Namensbereich" #: cp/parser.c:2421 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a class, namespace, or enumeration" -msgstr "%qT ist keine Klasse oder Namensbereich" +msgstr "%qE ist keine Klasse, Namensbereich oder Aufzählung" #: cp/parser.c:2464 #, gcc-internal-format @@ -28908,9 +28908,9 @@ msgstr "ungültige Template-ID" #: cp/parser.c:2589 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "floating-point literal cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "Gleitkommaliteral kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2593 cp/pt.c:12595 #, gcc-internal-format @@ -28918,64 +28918,64 @@ msgstr "Eine Typumwandlung, die weder zu ganzzahligen noch Aufzählungstypen führt, kann nicht in einem Konstantenausdruck auftreten" #: cp/parser.c:2598 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% operator cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "%-Operator kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2602 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-constant compound literals cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "nicht-konstantes zusammengesetztes Literal kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2606 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a function call cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "ein Funktionsaufruf kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2610 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "an increment cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "eine Erhöhung kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2614 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "an decrement cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "eine Verringerung kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2618 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "an array reference cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "eine Feldreferenz kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2622 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "the address of a label cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "die Adresse einer Marke kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2626 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "calls to overloaded operators cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "Aufrufe überladener Operatoren können nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2630 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "an assignment cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "eine Zuweisung kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2633 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a comma operator cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "ein Komma-Operator kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2637 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a call to a constructor cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "ein Konstruktoraufruf kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2683 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs cannot appear in a constant-expression" -msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten" +msgstr "%qs kann nicht in einem Konstanten-Ausdruck auftreten" #: cp/parser.c:2711 #, gcc-internal-format @@ -29002,7 +29002,7 @@ #: cp/parser.c:2730 #, gcc-internal-format msgid "C++0x % only available with -std=c++0x or -std=gnu++0x" -msgstr "" +msgstr "% von C++0x nur mit -std=c++0x oder -std=gnu++0x verfügbar" #: cp/parser.c:2757 #, gcc-internal-format @@ -29016,19 +29016,19 @@ #. A::A() #: cp/parser.c:2778 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<%T::%E%> names the constructor, not the type" -msgstr "%<%T::%D%> benennt Konstruktor in %qT" +msgstr "%<%T::%E%> benennt den Konstruktor, nicht den Typ" #: cp/parser.c:2781 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "and %qT has no template constructors" -msgstr "Typ %qs hat keinen Standard-Konstruktor" +msgstr "und %qT hat keinen Template-Konstruktor" #: cp/parser.c:2786 #, gcc-internal-format msgid "need % before %<%T::%E%> because %qT is a dependent scope" -msgstr "" +msgstr "vor %<%T::%E%> ist % erforderlich, da %qT ein abhängiger Gültigkeitsbereich ist" #: cp/parser.c:2790 #, gcc-internal-format @@ -29036,24 +29036,24 @@ msgstr "%qE in Klasse %qT bezeichnet keinen Typen" #: cp/parser.c:3340 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected string-literal" msgstr "Zeichenkettenliteral erwartet" #: cp/parser.c:3392 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a wide string is invalid in this context" -msgstr "Wertargument bei %L ist in diesem Kontext nicht erlaubt" +msgstr "eine Wide-Zeichenkette ist in diesem Kontext ungültig" #: cp/parser.c:3487 cp/parser.c:9657 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected declaration" -msgstr "Leere Deklaration" +msgstr "Deklaration erwartet" #: cp/parser.c:3582 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "fixed-point types not supported in C++" -msgstr "Festkommatypen werden für dieses Ziel nicht unterstützt" +msgstr "Festkommatypen werden in C++ nicht unterstützt" #: cp/parser.c:3662 #, gcc-internal-format @@ -29066,9 +29066,9 @@ msgstr "Anweisungs-Ausdrücke sind weder außerhalb von Funktionen noch in Template-Argumenten erlaubt" #: cp/parser.c:3728 cp/parser.c:3877 cp/parser.c:4030 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected primary-expression" -msgstr "Ausdruck erwartet" +msgstr "übergeordneter Ausdruck erwartet" #: cp/parser.c:3758 #, gcc-internal-format @@ -29076,9 +29076,9 @@ msgstr "% darf in diesem Kontext nicht verwendet werden" #: cp/parser.c:3872 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "a template declaration cannot appear at block scope" -msgstr "Objective-C-Deklarationen dürfen nur im globalen Gültigkeitsbereich erscheinen" +msgstr "eine Template-Deklaration kann nicht im Block-Gültigkeitsbereich auftreten" #: cp/parser.c:4006 #, gcc-internal-format @@ -29086,9 +29086,9 @@ msgstr "lokale Variable %qD darf in diesem Kontext nicht auftauchen" #: cp/parser.c:4170 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected id-expression" -msgstr "Ausdruck erwartet" +msgstr "ID-Ausdruck erwartet" #: cp/parser.c:4300 #, gcc-internal-format @@ -29106,29 +29106,29 @@ msgstr "typedef-Name %qD als Destruktor-Deklarator verwendet" #: cp/parser.c:4472 cp/parser.c:15219 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected unqualified-id" -msgstr "Spezifizierer-Qualifizierer-Liste erwartet" +msgstr "unqualifiziertes ID erwartet" #: cp/parser.c:4576 #, gcc-internal-format msgid "found %<:%> in nested-name-specifier, expected %<::%>" -msgstr "" +msgstr "%<:%> in Spezifikation mit geschachteltem Namen gefunden, %<::%> erwartet" #: cp/parser.c:4793 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected nested-name-specifier" -msgstr "Deklarationsspezifizierer erwartet" +msgstr "Spezifikation mit geschachteltem Namen erwartet" #: cp/parser.c:4975 cp/parser.c:6644 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in casts" -msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden" +msgstr "Typen dürfen nicht in Typumwandlungen definiert werden" #: cp/parser.c:5035 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in a % expression" -msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden" +msgstr "Typen dürfen nicht in einem %-Ausdruck definiert werden" #. Warn the user that a compound literal is not #. allowed in standard C++. @@ -29150,17 +29150,17 @@ #: cp/parser.c:5868 #, gcc-internal-format msgid "non-scalar type" -msgstr "" +msgstr "nicht-skalarer Typ" #: cp/parser.c:5957 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ does not allow % with a non-type" -msgstr "ISO-C++ erlaubt keine benannten Initialisierungen" +msgstr "ISO-C++ erlaubt kein % mit einem Nicht-Typ" #: cp/parser.c:6016 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in % expressions" -msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden" +msgstr "Typen dürfen nicht in %-Ausdrücken definiert werden" #: cp/parser.c:6247 #, gcc-internal-format @@ -29173,9 +29173,9 @@ msgstr "Klammern um die Type-ID sollten entfernt werden" #: cp/parser.c:6330 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in a new-type-id" -msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden" +msgstr "Typen dürfen nicht in einem »new-type-id« definiert werden" #: cp/parser.c:6454 #, gcc-internal-format @@ -29188,9 +29188,9 @@ msgstr "Verwendung einer Typumwandlung im alten Stil" #: cp/parser.c:6838 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<>>%> operator will be treated as two right angle brackets in C++0x" -msgstr "%HOperator %<>>%> wird in C++0x als zwei spitze schließende Klammern behandelt" +msgstr "Operator %<>>%> wird in C++0x als zwei spitze schließende Klammern behandelt" #: cp/parser.c:6841 #, gcc-internal-format @@ -29198,34 +29198,34 @@ msgstr "Klammern um %<>>%>-Ausdruck empfohlen" #: cp/parser.c:6986 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ does not allow ?: with omitted middle operand" -msgstr "ISO-C++ erlaubt keine benannten Initialisierungen" +msgstr "ISO-C++ erlaubt nicht ?: mit ausgelassenem mittleren Operanden" #: cp/parser.c:7582 #, gcc-internal-format msgid "lambda-expression in unevaluated context" -msgstr "" +msgstr "Lambda-Ausdruck in ungeprüftem Kontext" #: cp/parser.c:7705 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected end of capture-list" -msgstr "Unerwartetes Modulende" +msgstr "unerwartetes Ende der Auffangliste" #: cp/parser.c:7756 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C++ does not allow initializers in lambda expression capture lists" -msgstr "ISO-C++ erlaubt keine benannten Initialisierungen" +msgstr "ISO-C++ erlaubt keine Initialisierungen Auffanglisten von Lambda-Ausdrücken" #: cp/parser.c:7850 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "default argument specified for lambda parameter" -msgstr "Standardargument für Parameter %d von %q#D angegeben" +msgstr "Standardargument für Lambda-Parameter angegeben" #: cp/parser.c:8211 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected labeled-statement" -msgstr "Anweisung erwartet" +msgstr "benannte Anweisung erwartet" #: cp/parser.c:8249 #, gcc-internal-format @@ -29235,32 +29235,32 @@ #: cp/parser.c:8324 #, gcc-internal-format msgid "need % before %qE because %qT is a dependent scope" -msgstr "" +msgstr "% vor %qE erforderlich, da %qT ein abhängiger Gültigkeitsbereich ist" #: cp/parser.c:8333 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<%T::%D%> names the constructor, not the type" -msgstr "%<%T::%D%> benennt Konstruktor in %qT" +msgstr "%<%T::%D%> benennt Konstruktor, nicht den Typ" #: cp/parser.c:8590 cp/parser.c:20971 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected selection-statement" -msgstr "Deklaration oder Anweisung erwartet" +msgstr "Auswahl-Anweisung erwartet" #: cp/parser.c:8623 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "types may not be defined in conditions" -msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden" +msgstr "Typen dürfen nicht in Bedingungen definiert werden" #: cp/parser.c:8897 #, gcc-internal-format msgid "inconsistent begin/end types in range-based for: %qT and %qT" -msgstr "" +msgstr "widersprüchliche Anfang-/Ende-Typen in bereichsbasiertem »for«: %qT und %qT" #: cp/parser.c:9044 cp/parser.c:20974 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected iteration-statement" -msgstr "Deklaration oder Anweisung erwartet" +msgstr "Iterationsanweisung erwartet" #: cp/parser.c:9091 #, fuzzy, gcc-internal-format Index: gcc/tree-ssa-forwprop.c =================================================================== --- gcc/tree-ssa-forwprop.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/tree-ssa-forwprop.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -260,9 +260,6 @@ static bool can_propagate_from (gimple def_stmt) { - use_operand_p use_p; - ssa_op_iter iter; - gcc_assert (is_gimple_assign (def_stmt)); /* If the rhs has side-effects we cannot propagate from it. */ @@ -280,9 +277,8 @@ return true; /* We cannot propagate ssa names that occur in abnormal phi nodes. */ - FOR_EACH_SSA_USE_OPERAND (use_p, def_stmt, iter, SSA_OP_USE) - if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (USE_FROM_PTR (use_p))) - return false; + if (stmt_references_abnormal_ssa_name (def_stmt)) + return false; /* If the definition is a conversion of a pointer to a function type, then we can not apply optimizations as some targets require @@ -1679,7 +1675,8 @@ { gimple def_stmt = SSA_NAME_DEF_STMT (rhs2); if (is_gimple_assign (def_stmt) - && gimple_assign_rhs_code (def_stmt) == NEGATE_EXPR) + && gimple_assign_rhs_code (def_stmt) == NEGATE_EXPR + && can_propagate_from (def_stmt)) { code = (code == MINUS_EXPR) ? PLUS_EXPR : MINUS_EXPR; gimple_assign_set_rhs_code (stmt, code); @@ -1696,7 +1693,8 @@ { gimple def_stmt = SSA_NAME_DEF_STMT (rhs1); if (is_gimple_assign (def_stmt) - && gimple_assign_rhs_code (def_stmt) == NEGATE_EXPR) + && gimple_assign_rhs_code (def_stmt) == NEGATE_EXPR + && can_propagate_from (def_stmt)) { code = MINUS_EXPR; gimple_assign_set_rhs_code (stmt, code); @@ -1739,7 +1737,7 @@ if (TREE_CODE (rhs1) == SSA_NAME) { gimple def_stmt = SSA_NAME_DEF_STMT (rhs1); - if (is_gimple_assign (def_stmt)) + if (is_gimple_assign (def_stmt) && can_propagate_from (def_stmt)) { enum tree_code def_code = gimple_assign_rhs_code (def_stmt); if (def_code == PLUS_EXPR @@ -1839,7 +1837,7 @@ if (rhs2 && TREE_CODE (rhs2) == SSA_NAME) { gimple def_stmt = SSA_NAME_DEF_STMT (rhs2); - if (is_gimple_assign (def_stmt)) + if (is_gimple_assign (def_stmt) && can_propagate_from (def_stmt)) { enum tree_code def_code = gimple_assign_rhs_code (def_stmt); if (def_code == PLUS_EXPR Index: gcc/combine.c =================================================================== --- gcc/combine.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/combine.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -5629,7 +5629,7 @@ { /* Try to simplify the expression further. */ rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1)); - temp = combine_simplify_rtx (tor, mode, in_dest); + temp = combine_simplify_rtx (tor, VOIDmode, in_dest); /* If we could, great. If not, do not go ahead with the IOR replacement, since PLUS appears in many special purpose Index: gcc/cfgloop.h =================================================================== --- gcc/cfgloop.h (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/cfgloop.h (.../branches/gcc-4_6-branch) (wersja 175929) @@ -443,6 +443,14 @@ return VEC_index (loop_p, loop->superloops, n - 1); } +/* Returns true if LOOP has at least one exit edge. */ + +static inline bool +loop_has_exit_edges (const struct loop *loop) +{ + return loop->exits->next->e != NULL; +} + /* Returns the list of loops in current_loops. */ static inline VEC (loop_p, gc) * Index: gcc/config/i386/i386.h =================================================================== --- gcc/config/i386/i386.h (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/i386/i386.h (.../branches/gcc-4_6-branch) (wersja 175929) @@ -322,6 +322,7 @@ X86_TUNE_FUSE_CMP_AND_BRANCH, X86_TUNE_OPT_AGU, X86_TUNE_VECTORIZE_DOUBLE, + X86_TUNE_AVX128_OPTIMAL, X86_TUNE_LAST }; @@ -418,6 +419,8 @@ #define TARGET_OPT_AGU ix86_tune_features[X86_TUNE_OPT_AGU] #define TARGET_VECTORIZE_DOUBLE \ ix86_tune_features[X86_TUNE_VECTORIZE_DOUBLE] +#define TARGET_AVX128_OPTIMAL \ + ix86_tune_features[X86_TUNE_AVX128_OPTIMAL] /* Feature tests against the various architecture variations. */ enum ix86_arch_indices { Index: gcc/config/i386/athlon.md =================================================================== --- gcc/config/i386/athlon.md (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/i386/athlon.md (.../branches/gcc-4_6-branch) (wersja 175929) @@ -798,7 +798,7 @@ "athlon-direct,athlon-fploadk8,athlon-fadd") (define_insn_reservation "athlon_ssecomi" 4 (and (eq_attr "cpu" "athlon,k8,generic64") - (eq_attr "type" "ssecmp")) + (eq_attr "type" "ssecomi")) "athlon-vector,athlon-fpsched,athlon-fadd") (define_insn_reservation "athlon_ssecomi_amdfam10" 3 (and (eq_attr "cpu" "amdfam10") Index: gcc/config/i386/sse.md =================================================================== --- gcc/config/i386/sse.md (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/i386/sse.md (.../branches/gcc-4_6-branch) (wersja 175929) @@ -207,15 +207,25 @@ { case MODE_V8SF: case MODE_V4SF: - return "vmovaps\t{%1, %0|%0, %1}"; + if (misaligned_operand (operands[0], mode) + || misaligned_operand (operands[1], mode)) + return "vmovups\t{%1, %0|%0, %1}"; + else + return "vmovaps\t{%1, %0|%0, %1}"; case MODE_V4DF: case MODE_V2DF: - if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) + if (misaligned_operand (operands[0], mode) + || misaligned_operand (operands[1], mode)) + return "vmovupd\t{%1, %0|%0, %1}"; + else if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) return "vmovaps\t{%1, %0|%0, %1}"; else return "vmovapd\t{%1, %0|%0, %1}"; default: - if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) + if (misaligned_operand (operands[0], mode) + || misaligned_operand (operands[1], mode)) + return "vmovdqu\t{%1, %0|%0, %1}"; + else if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) return "vmovaps\t{%1, %0|%0, %1}"; else return "vmovdqa\t{%1, %0|%0, %1}"; @@ -2120,7 +2130,7 @@ [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fma_fmadd_" +(define_insn "*fma_fnmadd_" [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x") (fma:FMAMODE (neg:FMAMODE @@ -2135,7 +2145,7 @@ [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) -(define_insn "*fma_fmsub_" +(define_insn "*fma_fnmsub_" [(set (match_operand:FMAMODE 0 "register_operand" "=x,x,x") (fma:FMAMODE (neg:FMAMODE Index: gcc/config/i386/i386.opt =================================================================== --- gcc/config/i386/i386.opt (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/i386/i386.opt (.../branches/gcc-4_6-branch) (wersja 175929) @@ -267,7 +267,7 @@ is selected. mprefer-avx128 -Target Report Var(flag_prefer_avx128) Init(0) +Target Report Mask(PREFER_AVX128) SAVE Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer. ;; ISA support @@ -415,3 +415,11 @@ m8bit-idiv Target Report Mask(USE_8BIT_IDIV) Save Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check + +mavx256-split-unaligned-load +Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save +Split 32-byte AVX unaligned load + +mavx256-split-unaligned-store +Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save +Split 32-byte AVX unaligned store Index: gcc/config/i386/i386.c =================================================================== --- gcc/config/i386/i386.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/i386/i386.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -2082,6 +2082,10 @@ /* X86_TUNE_VECTORIZE_DOUBLE: Enable double precision vector instructions. */ ~m_ATOM, + + /* X86_TUNE_AVX128_OPTIMAL: Enable 128-bit AVX instruction generation for + the auto-vectorizer. */ + m_BDVER1, }; /* Feature tests against the various architecture variations. */ @@ -2114,6 +2118,12 @@ = m_PENT | m_ATOM | m_PPRO | m_AMD_MULTIPLE | m_PENT4 | m_NOCONA | m_CORE2I7 | m_GENERIC; +static const unsigned int x86_avx256_split_unaligned_load + = m_COREI7 | m_GENERIC; + +static const unsigned int x86_avx256_split_unaligned_store + = m_COREI7 | m_BDVER1 | m_GENERIC; + static enum stringop_alg stringop_alg = no_stringop; /* In case the average insn count for single function invocation is @@ -3127,6 +3137,9 @@ { "-mvect8-ret-in-mem", MASK_VECT8_RETURNS }, { "-m8bit-idiv", MASK_USE_8BIT_IDIV }, { "-mvzeroupper", MASK_VZEROUPPER }, + { "-mavx256-split-unaligned-load", MASK_AVX256_SPLIT_UNALIGNED_LOAD}, + { "-mavx256-split-unaligned-store", MASK_AVX256_SPLIT_UNALIGNED_STORE}, + { "-mprefer-avx128", MASK_PREFER_AVX128}, }; const char *opts[ARRAY_SIZE (isa_opts) + ARRAY_SIZE (flag_opts) + 6][2]; @@ -4272,11 +4285,23 @@ if (TARGET_AVX) { /* When not optimize for size, enable vzeroupper optimization for - TARGET_AVX with -fexpensive-optimizations. */ - if (!optimize_size - && flag_expensive_optimizations - && !(target_flags_explicit & MASK_VZEROUPPER)) - target_flags |= MASK_VZEROUPPER; + TARGET_AVX with -fexpensive-optimizations and split 32-byte + AVX unaligned load/store. */ + if (!optimize_size) + { + if (flag_expensive_optimizations + && !(target_flags_explicit & MASK_VZEROUPPER)) + target_flags |= MASK_VZEROUPPER; + if ((x86_avx256_split_unaligned_load & ix86_tune_mask) + && !(target_flags_explicit & MASK_AVX256_SPLIT_UNALIGNED_LOAD)) + target_flags |= MASK_AVX256_SPLIT_UNALIGNED_LOAD; + if ((x86_avx256_split_unaligned_store & ix86_tune_mask) + && !(target_flags_explicit & MASK_AVX256_SPLIT_UNALIGNED_STORE)) + target_flags |= MASK_AVX256_SPLIT_UNALIGNED_STORE; + /* Enable 128-bit AVX instruction generation for the auto-vectorizer. */ + if (TARGET_AVX128_OPTIMAL && !(target_flags_explicit & MASK_PREFER_AVX128)) + target_flags |= MASK_PREFER_AVX128; + } } else { @@ -15591,6 +15616,57 @@ emit_insn (gen_rtx_SET (VOIDmode, op0, op1)); } +/* Split 32-byte AVX unaligned load and store if needed. */ + +static void +ix86_avx256_split_vector_move_misalign (rtx op0, rtx op1) +{ + rtx m; + rtx (*extract) (rtx, rtx, rtx); + rtx (*move_unaligned) (rtx, rtx); + enum machine_mode mode; + + switch (GET_MODE (op0)) + { + default: + gcc_unreachable (); + case V32QImode: + extract = gen_avx_vextractf128v32qi; + move_unaligned = gen_avx_movdqu256; + mode = V16QImode; + break; + case V8SFmode: + extract = gen_avx_vextractf128v8sf; + move_unaligned = gen_avx_movups256; + mode = V4SFmode; + break; + case V4DFmode: + extract = gen_avx_vextractf128v4df; + move_unaligned = gen_avx_movupd256; + mode = V2DFmode; + break; + } + + if (MEM_P (op1) && TARGET_AVX256_SPLIT_UNALIGNED_LOAD) + { + rtx r = gen_reg_rtx (mode); + m = adjust_address (op1, mode, 0); + emit_move_insn (r, m); + m = adjust_address (op1, mode, 16); + r = gen_rtx_VEC_CONCAT (GET_MODE (op0), r, m); + emit_move_insn (op0, r); + } + else if (MEM_P (op0) && TARGET_AVX256_SPLIT_UNALIGNED_STORE) + { + m = adjust_address (op0, mode, 0); + emit_insn (extract (m, op1, const0_rtx)); + m = adjust_address (op0, mode, 16); + emit_insn (extract (m, op1, const1_rtx)); + } + else + emit_insn (move_unaligned (op0, op1)); +} + /* Implement the movmisalign patterns for SSE. Non-SSE modes go straight to ix86_expand_vector_move. */ /* Code generation for scalar reg-reg moves of single and double precision data: @@ -15675,7 +15751,7 @@ case 32: op0 = gen_lowpart (V32QImode, op0); op1 = gen_lowpart (V32QImode, op1); - emit_insn (gen_avx_movdqu256 (op0, op1)); + ix86_avx256_split_vector_move_misalign (op0, op1); break; default: gcc_unreachable (); @@ -15691,7 +15767,7 @@ emit_insn (gen_avx_movups (op0, op1)); break; case V8SFmode: - emit_insn (gen_avx_movups256 (op0, op1)); + ix86_avx256_split_vector_move_misalign (op0, op1); break; case V2DFmode: if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL) @@ -15704,7 +15780,7 @@ emit_insn (gen_avx_movupd (op0, op1)); break; case V4DFmode: - emit_insn (gen_avx_movupd256 (op0, op1)); + ix86_avx256_split_vector_move_misalign (op0, op1); break; default: gcc_unreachable (); @@ -29013,12 +29089,12 @@ /* Negate in op0 or op2 is free: FMS, FNMA, FNMS. */ sub = XEXP (x, 0); if (GET_CODE (sub) == NEG) - sub = XEXP (x, 0); + sub = XEXP (sub, 0); *total += rtx_cost (sub, FMA, speed); sub = XEXP (x, 2); if (GET_CODE (sub) == NEG) - sub = XEXP (x, 0); + sub = XEXP (sub, 0); *total += rtx_cost (sub, FMA, speed); return true; } @@ -34830,9 +34906,9 @@ switch (mode) { case SFmode: - return (TARGET_AVX && !flag_prefer_avx128) ? V8SFmode : V4SFmode; + return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V8SFmode : V4SFmode; case DFmode: - return (TARGET_AVX && !flag_prefer_avx128) ? V4DFmode : V2DFmode; + return (TARGET_AVX && !TARGET_PREFER_AVX128) ? V4DFmode : V2DFmode; case DImode: return V2DImode; case SImode: @@ -34854,7 +34930,7 @@ static unsigned int ix86_autovectorize_vector_sizes (void) { - return TARGET_AVX ? 32 | 16 : 0; + return (TARGET_AVX && !TARGET_PREFER_AVX128) ? 32 | 16 : 0; } /* Initialize the GCC target structure. */ Index: gcc/config/avr/avr.c =================================================================== --- gcc/config/avr/avr.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/avr/avr.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -78,7 +78,7 @@ static void avr_insert_attributes (tree, tree *); static void avr_asm_init_sections (void); static unsigned int avr_section_type_flags (tree, const char *, int); - +static void avr_encode_section_info (tree, rtx, int); static void avr_reorg (void); static void avr_asm_out_ctor (rtx, int); static void avr_asm_out_dtor (rtx, int); @@ -176,6 +176,8 @@ #define TARGET_INSERT_ATTRIBUTES avr_insert_attributes #undef TARGET_SECTION_TYPE_FLAGS #define TARGET_SECTION_TYPE_FLAGS avr_section_type_flags +#undef TARGET_ENCODE_SECTION_INFO +#define TARGET_ENCODE_SECTION_INFO avr_encode_section_info #undef TARGET_REGISTER_MOVE_COST #define TARGET_REGISTER_MOVE_COST avr_register_move_cost #undef TARGET_MEMORY_MOVE_COST @@ -4961,12 +4963,7 @@ } else if (TREE_STATIC (*node) || DECL_EXTERNAL (*node)) { - if (DECL_INITIAL (*node) == NULL_TREE && !DECL_EXTERNAL (*node)) - { - warning (0, "only initialized variables can be placed into " - "program memory area"); - *no_add_attrs = true; - } + *no_add_attrs = false; } else { @@ -5052,7 +5049,19 @@ && (TREE_STATIC (node) || DECL_EXTERNAL (node)) && avr_progmem_p (node, *attributes)) { - if (TREE_READONLY (node)) + tree node0 = node; + + /* For C++, we have to peel arrays in order to get correct + determination of readonlyness. */ + + do + node0 = TREE_TYPE (node0); + while (TREE_CODE (node0) == ARRAY_TYPE); + + if (error_mark_node == node0) + return; + + if (TYPE_READONLY (node0)) { static const char dsec[] = ".progmem.data"; @@ -5107,9 +5116,36 @@ ".noinit section"); } + if (0 == strncmp (name, ".progmem.data", strlen (".progmem.data"))) + flags &= ~SECTION_WRITE; + return flags; } + +/* Implement `TARGET_ENCODE_SECTION_INFO'. */ + +static void +avr_encode_section_info (tree decl, rtx rtl, int new_decl_p) +{ + /* In avr_handle_progmem_attribute, DECL_INITIAL is not yet + readily available, see PR34734. So we postpone the warning + about uninitialized data in program memory section until here. */ + + if (new_decl_p + && decl && DECL_P (decl) + && NULL_TREE == DECL_INITIAL (decl) + && avr_progmem_p (decl, DECL_ATTRIBUTES (decl))) + { + warning (OPT_Wuninitialized, + "uninitialized variable %q+D put into " + "program memory area", decl); + } + + default_encode_section_info (decl, rtl, new_decl_p); +} + + /* Outputs some appropriate text to go at the start of an assembler file. */ Index: gcc/config/darwin.c =================================================================== --- gcc/config/darwin.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/darwin.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1195,7 +1195,11 @@ darwin_mergeable_string_section (tree exp, unsigned HOST_WIDE_INT align) { - if (flag_merge_constants + /* Darwin's ld expects to see non-writable string literals in the .cstring + section. Later versions of ld check and complain when CFStrings are + enabled. Therefore we shall force the strings into .cstring since we + don't support writable ones anyway. */ + if ((darwin_constant_cfstrings || flag_merge_constants) && TREE_CODE (exp) == STRING_CST && TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE && align <= 256 Index: gcc/config/arm/predicates.md =================================================================== --- gcc/config/arm/predicates.md (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/arm/predicates.md (.../branches/gcc-4_6-branch) (wersja 175929) @@ -683,3 +683,6 @@ } return true; }) + +(define_special_predicate "add_operator" + (match_code "plus")) Index: gcc/config/arm/arm.md =================================================================== --- gcc/config/arm/arm.md (.../tags/gcc_4_6_1_release) (wersja 175929) +++ gcc/config/arm/arm.md (.../branches/gcc-4_6-branch) (wersja 175929) @@ -8499,18 +8499,22 @@ ;; Patterns to allow combination of arithmetic, cond code and shifts (define_insn "*arith_shiftsi" - [(set (match_operand:SI 0 "s_register_operand" "=r,r") + [(set (match_operand:SI 0 "s_register_operand" "=r,r,r,r") (match_operator:SI 1 "shiftable_operator" [(match_operator:SI 3 "shift_operator" - [(match_operand:SI 4 "s_register_operand" "r,r") - (match_operand:SI 5 "shift_amount_operand" "M,r")]) - (match_operand:SI 2 "s_register_operand" "rk,rk")]))] + [(match_operand:SI 4 "s_register_operand" "r,r,r,r") + (match_operand:SI 5 "shift_amount_operand" "M,M,M,r")]) + (match_operand:SI 2 "s_register_operand" "rk,rk,r,rk")]))] "TARGET_32BIT" "%i1%?\\t%0, %2, %4%S3" [(set_attr "predicable" "yes") (set_attr "shift" "4") - (set_attr "arch" "32,a") - ;; We have to make sure to disable the second alternative if + (set_attr "arch" "a,t2,t2,a") + ;; Thumb2 doesn't allow the stack pointer to be used for + ;; operand1 for all operations other than add and sub. In this case + ;; the minus operation is a candidate for an rsub and hence needs + ;; to be disabled. + ;; We have to make sure to disable the fourth alternative if ;; the shift_operator is MULT, since otherwise the insn will ;; also match a multiply_accumulate pattern and validate_change ;; will allow a replacement of the constant with a register @@ -8518,9 +8522,13 @@ (set_attr_alternative "insn_enabled" [(const_string "yes") (if_then_else + (match_operand:SI 1 "add_operator" "") + (const_string "yes") (const_string "no")) + (const_string "yes") + (if_then_else (match_operand:SI 3 "mult_operator" "") (const_string "no") (const_string "yes"))]) - (set_attr "type" "alu_shift,alu_shift_reg")]) + (set_attr "type" "alu_shift,alu_shift,alu_shift,alu_shift_reg")]) (define_split [(set (match_operand:SI 0 "s_register_operand" "") Index: configure.ac =================================================================== --- configure.ac (.../tags/gcc_4_6_1_release) (wersja 175929) +++ configure.ac (.../branches/gcc-4_6-branch) (wersja 175929) @@ -186,9 +186,8 @@ # these libraries are built for the target environment, and are built after # the host libraries and the host tools (which may be a cross compiler) -# +# Note that libiberty is not a target library. target_libraries="target-libgcc \ - target-libiberty \ target-libgloss \ target-newlib \ target-libgomp \ @@ -595,14 +594,14 @@ ;; *-*-kaos*) # Remove unsupported stuff on all kaOS configurations. - skipdirs="target-libiberty ${libgcj} target-libstdc++-v3 target-librx" + skipdirs="${libgcj} target-libstdc++-v3 target-librx" skipdirs="$skipdirs target-libobjc target-examples target-groff target-gperf" skipdirs="$skipdirs zlib fastjar target-libjava target-boehm-gc target-zlib" noconfigdirs="$noconfigdirs target-libgloss" ;; *-*-netbsd*) # Skip some stuff on all NetBSD configurations. - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss" + noconfigdirs="$noconfigdirs target-newlib target-libgloss" # Skip some stuff that's unsupported on some NetBSD configurations. case "${target}" in @@ -614,21 +613,20 @@ esac ;; *-*-netware*) - noconfigdirs="$noconfigdirs target-newlib target-libiberty target-libgloss ${libgcj} target-libmudflap" + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap" ;; *-*-rtems*) - skipdirs="${skipdirs} target-libiberty" noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" ;; # The tpf target doesn't support gdb yet. *-*-tpf*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj} target-libmudflap gdb tcl tk libgui itcl" + noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj} target-libmudflap gdb tcl tk libgui itcl" ;; *-*-uclinux*) noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" ;; *-*-vxworks*) - noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libstdc++-v3 ${libgcj}" ;; alpha*-dec-osf*) # ld works, but does not support shared libraries. @@ -656,7 +654,7 @@ sh*-*-pe|mips*-*-pe|*arm-wince-pe) noconfigdirs="$noconfigdirs ${libgcj}" noconfigdirs="$noconfigdirs target-examples" - noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr" + noconfigdirs="$noconfigdirs texinfo send-pr" noconfigdirs="$noconfigdirs tcl tk itcl libgui sim" noconfigdirs="$noconfigdirs expect dejagnu" # the C++ libraries don't build on top of CE's C libraries @@ -690,7 +688,7 @@ libgloss_dir=arm ;; arm*-*-symbianelf*) - noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" + noconfigdirs="$noconfigdirs ${libgcj}" libgloss_dir=arm ;; arm-*-pe*) @@ -709,7 +707,7 @@ noconfigdirs="$noconfigdirs ld target-libgloss ${libgcj}" ;; avr-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj} target-libssp" ;; bfin-*-*) unsupported_languages="$unsupported_languages java" @@ -888,7 +886,7 @@ noconfigdirs="$noconfigdirs ${libgcj}" ;; m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" libgloss_dir=m68hc11 ;; m68k-*-elf*) @@ -918,9 +916,6 @@ mt-*-*) noconfigdirs="$noconfigdirs sim" ;; - picochip-*-*) - noconfigdirs="$noconfigdirs target-libiberty" - ;; powerpc-*-aix*) # copied from rs6000-*-* entry noconfigdirs="$noconfigdirs gprof target-libgloss target-libssp target-newlib ${libgcj}" @@ -962,7 +957,6 @@ noconfigdirs="$noconfigdirs gprof target-libssp ${libgcj}" ;; mips*-sde-elf*) - skipdirs="$skipdirs target-libiberty" noconfigdirs="$noconfigdirs ${libgcj}" if test x$with_newlib = xyes; then noconfigdirs="$noconfigdirs gprof" @@ -1052,7 +1046,7 @@ noconfigdirs="$noconfigdirs ${libgcj}" ;; ip2k-*-*) - noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj}" + noconfigdirs="$noconfigdirs target-libstdc++-v3 ${libgcj}" ;; *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu) noconfigdirs="$noconfigdirs target-newlib target-libgloss" @@ -2120,27 +2114,6 @@ fi done -# Sometimes the tools are distributed with libiberty but with no other -# libraries. In that case, we don't want to build target-libiberty. -# Don't let libgcc imply libiberty either. -if test -n "${target_configdirs}" ; then - libgcc= - others= - for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do - if test "$i" = "libgcc"; then - libgcc=target-libgcc - elif test "$i" != "libiberty" ; then - if test -r $srcdir/$i/configure ; then - others=yes; - break; - fi - fi - done - if test -z "${others}" ; then - target_configdirs=$libgcc - fi -fi - # Quietly strip out all directories which aren't configurable in this tree. # This relies on all configurable subdirectories being autoconfiscated, which # is now the case. Index: libgfortran/m4/eoshift1.m4 =================================================================== --- libgfortran/m4/eoshift1.m4 (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/m4/eoshift1.m4 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -89,7 +89,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/m4/eoshift3.m4 =================================================================== --- libgfortran/m4/eoshift3.m4 (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/m4/eoshift3.m4 (.../branches/gcc-4_6-branch) (wersja 175929) @@ -90,7 +90,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/runtime/memory.c =================================================================== --- libgfortran/runtime/memory.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/runtime/memory.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -54,8 +54,8 @@ void * internal_malloc_size (size_t size) { - if (size == 0) - return NULL; + if (unlikely (size == 0)) + size = 1; return get_mem (size); } Index: libgfortran/ChangeLog =================================================================== --- libgfortran/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,24 @@ +2011-07-06 Thomas Koenig + + Partial backport from trunk: + PR fortran/49479 + * runtime/memory.c: If size is zero, allocate a single byte. + * m4/eoshift1.m4: Remove double allocation. + * m4/eoshift3.m4: Likewise. + * generated/eoshift1_4.c: Regenerated. + * generated/eoshift1_8.c: Regenerated. + * generated/eoshift1_16.c: Regenerated. + * generated/eoshift3_4.c: Regenerated. + * generated/eoshift3_8.c: Regenerated. + * generated/eoshift3_16.c: Regenerated. + +2011-07-03 Janne Blomqvist + + Backport from mainline: + PR libfortran/49296 + * io/list_read.c (read_character): Accept EOF as a separator when + reading string. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: libgfortran/generated/eoshift3_4.c =================================================================== --- libgfortran/generated/eoshift3_4.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/generated/eoshift3_4.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -89,7 +89,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/generated/eoshift1_8.c =================================================================== --- libgfortran/generated/eoshift1_8.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/generated/eoshift1_8.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -88,7 +88,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/generated/eoshift3_8.c =================================================================== --- libgfortran/generated/eoshift3_8.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/generated/eoshift3_8.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -89,7 +89,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/generated/eoshift1_16.c =================================================================== --- libgfortran/generated/eoshift1_16.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/generated/eoshift1_16.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -88,7 +88,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/generated/eoshift1_4.c =================================================================== --- libgfortran/generated/eoshift1_4.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/generated/eoshift1_4.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -88,7 +88,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/generated/eoshift3_16.c =================================================================== --- libgfortran/generated/eoshift3_16.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/generated/eoshift3_16.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -89,7 +89,6 @@ { int i; - ret->data = internal_malloc_size (size * arraysize); ret->offset = 0; ret->dtype = array->dtype; for (i = 0; i < GFC_DESCRIPTOR_RANK (array); i++) Index: libgfortran/io/list_read.c =================================================================== --- libgfortran/io/list_read.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libgfortran/io/list_read.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1024,7 +1024,7 @@ for (;;) { if ((c = next_char (dtp)) == EOF) - goto eof; + goto done_eof; switch (c) { case '"': @@ -1070,8 +1070,8 @@ invalid. */ done: c = next_char (dtp); - eof: - if (is_separator (c) || c == '!') + done_eof: + if (is_separator (c) || c == '!' || c == EOF) { unget_char (dtp, c); eat_separator (dtp); @@ -1081,15 +1081,15 @@ else { free_saved (dtp); - if (c == EOF) - { - hit_eof (dtp); - return; - } sprintf (message, "Invalid string input in item %d", dtp->u.p.item_count); generate_error (&dtp->common, LIBERROR_READ_VALUE, message); } + return; + + eof: + free_saved (dtp); + hit_eof (dtp); } Index: Makefile.def =================================================================== --- Makefile.def (.../tags/gcc_4_6_1_release) (wersja 175929) +++ Makefile.def (.../branches/gcc-4_6-branch) (wersja 175929) @@ -167,7 +167,6 @@ missing=maintainer-clean; }; target_modules = { module= winsup; }; target_modules = { module= libgloss; no_check=true; }; -target_modules = { module= libiberty; }; target_modules = { module= gperf; }; target_modules = { module= examples; no_check=true; no_install=true; }; target_modules = { module= libffi; }; @@ -551,7 +550,6 @@ dependencies = { module=configure-target-boehm-gc; on=all-target-libstdc++-v3; }; dependencies = { module=configure-target-fastjar; on=configure-target-zlib; }; dependencies = { module=all-target-fastjar; on=all-target-zlib; }; -dependencies = { module=all-target-fastjar; on=all-target-libiberty; }; dependencies = { module=configure-target-libgo; on=configure-target-libffi; }; dependencies = { module=configure-target-libgo; on=all-target-libstdc++-v3; }; dependencies = { module=all-target-libgo; on=all-target-libffi; }; @@ -565,9 +563,7 @@ dependencies = { module=all-target-libjava; on=all-target-qthreads; }; dependencies = { module=all-target-libjava; on=all-target-libffi; }; dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; }; -dependencies = { module=all-target-libobjc; on=all-target-libiberty; }; dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; }; -dependencies = { module=all-target-libstdc++-v3; on=all-target-libiberty; }; dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; // parallel_list.o and parallel_settings.o depend on omp.h, which is // generated by the libgomp configure. Unfortunately, due to the use of @@ -582,10 +578,7 @@ lang_env_dependencies = { module=qthreads; }; dependencies = { module=all-target-libgloss; on=all-target-newlib; }; -dependencies = { module=all-target-winsup; on=all-target-libiberty; }; dependencies = { module=all-target-winsup; on=all-target-libtermcap; }; -dependencies = { module=configure-target-libiberty; on=all-binutils; }; -dependencies = { module=configure-target-libiberty; on=all-ld; }; dependencies = { module=configure-target-newlib; on=all-binutils; }; dependencies = { module=configure-target-newlib; on=all-ld; }; dependencies = { module=configure-target-libgfortran; on=all-target-libquadmath; }; Index: ChangeLog =================================================================== --- ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,19 @@ +2011-06-27 Hans-Peter Nilsson + + PR regression/47836 + PR bootstrap/23656 + PR other/47733 + PR bootstrap/49247 + PR c/48825 + * configure.ac (target_libraries): Remove target-libiberty. + Remove all target-specific settings adding target-libiberty to + skipdirs and noconfigdirs. Remove checking target_configdirs + and removing target-libiberty but keeping target-libgcc if + otherwise empty. + * Makefile.def (target_modules): Don't add libiberty. + (dependencies): Remove all traces of target-libiberty. + * configure, Makefile.in: Regenerate. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: libffi/ChangeLog =================================================================== --- libffi/ChangeLog (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libffi/ChangeLog (.../branches/gcc-4_6-branch) (wersja 175929) @@ -1,3 +1,15 @@ +2011-06-29 Rainer Orth + + * testsuite/libffi.call/cls_double_va.c: Move PR number to comment. + * testsuite/libffi.call/cls_longdouble_va.c: Likewise. + +2011-06-29 Rainer Orth + + PR libffi/46660 + * testsuite/libffi.call/cls_double_va.c: xfail dg-output on + mips-sgi-irix6*. + * testsuite/libffi.call/cls_longdouble_va.c: Likewise. + 2011-06-27 Release Manager * GCC 4.6.1 released. Index: libffi/testsuite/libffi.call/cls_double_va.c =================================================================== --- libffi/testsuite/libffi.call/cls_double_va.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libffi/testsuite/libffi.call/cls_double_va.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -6,6 +6,7 @@ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-output "" { xfail avr32*-*-* } } */ +/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ /* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */ #include "ffitest.h" Index: libffi/testsuite/libffi.call/cls_longdouble_va.c =================================================================== --- libffi/testsuite/libffi.call/cls_longdouble_va.c (.../tags/gcc_4_6_1_release) (wersja 175929) +++ libffi/testsuite/libffi.call/cls_longdouble_va.c (.../branches/gcc-4_6-branch) (wersja 175929) @@ -6,6 +6,7 @@ /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */ +/* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ /* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */ #include "ffitest.h"