Merge lp:~michaelh1/gcc-linaro/merge-from-fsf-r177703-4.6 into lp:gcc-linaro/4.6
- merge-from-fsf-r177703-4.6
- Merge into 4.6
Status: | Merged |
---|---|
Merged at revision: | 106788 |
Proposed branch: | lp:~michaelh1/gcc-linaro/merge-from-fsf-r177703-4.6 |
Merge into: | lp:gcc-linaro/4.6 |
Diff against target: |
474982 lines (+89766/-65554) 257 files modified
ChangeLog.linaro (+4/-0) gcc/ChangeLog (+444/-2) gcc/DATESTAMP (+1/-1) gcc/ada/ChangeLog (+29/-0) gcc/ada/g-socthi-mingw.adb (+2/-1) gcc/ada/gcc-interface/Make-lang.in (+2/-2) gcc/ada/gcc-interface/Makefile.in (+0/-1) gcc/ada/s-taprop-hpux-dce.adb (+1/-2) gcc/builtins.c (+8/-20) gcc/c-typeck.c (+2/-0) gcc/combine.c (+2/-1) gcc/config.gcc (+21/-8) gcc/config/alpha/alpha.c (+10/-0) gcc/config/arm/arm.h (+2/-0) gcc/config/arm/predicates.md (+1/-1) gcc/config/avr/avr.c (+103/-37) gcc/config/avr/avr.md (+32/-28) gcc/config/i386/constraints.md (+5/-1) gcc/config/i386/i386.c (+5/-0) gcc/config/i386/i386.md (+71/-56) gcc/config/m68k/m68k.c (+17/-0) gcc/config/pa/pa.md (+10/-10) gcc/config/rs6000/altivec.md (+2/-2) gcc/config/rs6000/rs6000.c (+1/-1) gcc/config/rs6000/vector.md (+4/-4) gcc/config/rs6000/vsx.md (+2/-2) gcc/config/rx/rx.md (+52/-32) gcc/config/s390/s390-protos.h (+1/-1) gcc/config/s390/s390.c (+1/-1) gcc/config/sol2.h (+3/-4) gcc/config/sparc/sol2-64.h (+2/-5) gcc/config/sparc/sol2.h (+11/-4) gcc/config/spu/spu.c (+2/-12) gcc/cp/ChangeLog (+81/-0) gcc/cp/call.c (+3/-5) gcc/cp/error.c (+14/-0) gcc/cp/init.c (+5/-5) gcc/cp/parser.c (+4/-0) gcc/cp/pt.c (+56/-28) gcc/cp/semantics.c (+33/-5) gcc/cp/tree.c (+8/-4) gcc/cp/typeck.c (+2/-0) gcc/cp/typeck2.c (+1/-1) gcc/df-problems.c (+22/-2) gcc/doc/invoke.texi (+4/-0) gcc/doc/md.texi (+13/-9) gcc/dwarf2out.c (+27/-4) gcc/expr.c (+8/-0) gcc/fortran/ChangeLog (+98/-0) gcc/fortran/array.c (+2/-0) gcc/fortran/constructor.c (+47/-4) gcc/fortran/constructor.h (+6/-2) gcc/fortran/data.c (+127/-33) gcc/fortran/data.h (+2/-3) gcc/fortran/expr.c (+6/-4) gcc/fortran/gfortran.h (+3/-1) gcc/fortran/gfortranspec.c (+3/-0) gcc/fortran/intrinsic.c (+1/-1) gcc/fortran/resolve.c (+57/-29) gcc/fortran/trans-array.c (+46/-14) gcc/fortran/trans-stmt.c (+1/-1) gcc/fortran/trans-types.c (+3/-0) gcc/gimple.c (+14/-0) gcc/gimplify.c (+20/-2) gcc/omp-low.c (+4/-2) gcc/po/ChangeLog (+18/-0) gcc/po/be.po (+4452/-3683) gcc/po/da.po (+6981/-3689) gcc/po/de.po (+4900/-4836) gcc/po/el.po (+3799/-3689) gcc/po/es.po (+3749/-3686) gcc/po/fi.po (+4057/-3691) gcc/po/fr.po (+7834/-3688) gcc/po/id.po (+5861/-3682) gcc/po/ja.po (+3778/-3682) gcc/po/nl.po (+4147/-3688) gcc/po/ru.po (+3750/-3677) gcc/po/sr.po (+6557/-3696) gcc/po/sv.po (+3736/-3679) gcc/po/tr.po (+6629/-3699) gcc/po/vi.po (+4107/-3682) gcc/po/zh_CN.po (+3756/-3672) gcc/po/zh_TW.po (+6540/-3696) gcc/simplify-rtx.c (+27/-5) gcc/testsuite/ChangeLog (+401/-2) gcc/testsuite/ada/acats/run_acats (+3/-3) gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C (+26/-0) gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C (+14/-0) gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C (+23/-0) gcc/testsuite/g++.dg/cpp0x/decltype31.C (+13/-0) gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C (+7/-0) gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C (+2/-1) gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref2.C (+13/-0) gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic1.C (+15/-0) gcc/testsuite/g++.dg/cpp0x/regress/regress5.C (+16/-0) gcc/testsuite/g++.dg/cpp0x/union5.C (+23/-0) gcc/testsuite/g++.dg/cpp0x/variadic114.C (+27/-0) gcc/testsuite/g++.dg/cpp0x/variadic115.C (+19/-0) gcc/testsuite/g++.dg/debug/dwarf2/icf.C (+4/-4) gcc/testsuite/g++.dg/diagnostic/aka1.C (+15/-0) gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C (+2/-2) gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C (+2/-2) gcc/testsuite/g++.dg/init/array28.C (+7/-0) gcc/testsuite/g++.dg/rtti/anon-ns1.C (+1/-1) gcc/testsuite/g++.dg/template/template-id-4.C (+22/-0) gcc/testsuite/g++.dg/torture/pr49309.C (+15/-0) gcc/testsuite/g++.dg/torture/pr49615.C (+29/-0) gcc/testsuite/g++.dg/torture/pr49644.C (+17/-0) gcc/testsuite/g++.old-deja/g++.pt/crash60.C (+2/-2) gcc/testsuite/gcc.c-torture/compile/pr38752.c (+25/-0) gcc/testsuite/gcc.c-torture/compile/pr41679.c (+15/-0) gcc/testsuite/gcc.c-torture/compile/pr46883.c (+13/-0) gcc/testsuite/gcc.c-torture/execute/pr49644.c (+16/-0) gcc/testsuite/gcc.c-torture/execute/pr49768.c (+12/-0) gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c (+12/-0) gcc/testsuite/gcc.dg/debug/pr49522.c (+41/-0) gcc/testsuite/gcc.dg/gomp/pr49640.c (+29/-0) gcc/testsuite/gcc.dg/graphite/pr37485.c (+1/-1) gcc/testsuite/gcc.dg/ipa/pr48195.c (+1/-0) gcc/testsuite/gcc.dg/pr45819.c (+20/-0) gcc/testsuite/gcc.dg/pr49619.c (+13/-0) gcc/testsuite/gcc.dg/pr49799.c (+25/-0) gcc/testsuite/gcc.dg/pr49948.c (+22/-0) gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c (+2/-2) gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c (+2/-2) gcc/testsuite/gcc.dg/torture/pr49651.c (+31/-0) gcc/testsuite/gcc.dg/tree-ssa/pr49094.c (+38/-0) gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c (+17/-0) gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c (+17/-0) gcc/testsuite/gcc.dg/tree-ssa/pr49923.c (+55/-0) gcc/testsuite/gcc.dg/vect/vect-70.c (+1/-1) gcc/testsuite/gcc.target/arm/20031108-1.c (+1/-0) gcc/testsuite/gcc.target/arm/ctz.c (+2/-2) gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c (+2/-2) gcc/testsuite/gcc.target/arm/mla-1.c (+2/-1) gcc/testsuite/gcc.target/arm/pr39839.c (+2/-2) gcc/testsuite/gcc.target/arm/pr40482.c (+1/-0) gcc/testsuite/gcc.target/arm/pr40657-2.c (+1/-1) gcc/testsuite/gcc.target/arm/pr40956.c (+1/-2) gcc/testsuite/gcc.target/arm/pr41679.c (+0/-16) gcc/testsuite/gcc.target/arm/pr42093.c (+1/-1) gcc/testsuite/gcc.target/arm/pr42235.c (+1/-1) gcc/testsuite/gcc.target/arm/pr42495.c (+1/-1) gcc/testsuite/gcc.target/arm/pr42505.c (+1/-2) gcc/testsuite/gcc.target/arm/pr42574.c (+1/-1) gcc/testsuite/gcc.target/arm/pr42879.c (+2/-1) gcc/testsuite/gcc.target/arm/pr45701-1.c (+2/-1) gcc/testsuite/gcc.target/arm/pr45701-2.c (+2/-1) gcc/testsuite/gcc.target/arm/pr45701-3.c (+2/-1) gcc/testsuite/gcc.target/arm/pr46883.c (+0/-16) gcc/testsuite/gcc.target/arm/scd42-3.c (+2/-1) gcc/testsuite/gcc.target/arm/stack-corruption.c (+1/-0) gcc/testsuite/gcc.target/arm/thumb-bitfld1.c (+2/-1) gcc/testsuite/gcc.target/arm/thumb-branch1.c (+2/-1) gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-ldmiad.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-ldmias.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-stmdbd.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-stmdbs.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-stmiad.c (+1/-0) gcc/testsuite/gcc.target/arm/vfp-stmias.c (+1/-0) gcc/testsuite/gcc.target/arm/wmul-1.c (+2/-1) gcc/testsuite/gcc.target/arm/wmul-2.c (+2/-1) gcc/testsuite/gcc.target/arm/wmul-3.c (+2/-1) gcc/testsuite/gcc.target/arm/wmul-4.c (+2/-1) gcc/testsuite/gcc.target/i386/aes-avx-check.h (+4/-2) gcc/testsuite/gcc.target/i386/avx-check.h (+3/-1) gcc/testsuite/gcc.target/i386/avx-os-support.h (+10/-0) gcc/testsuite/gcc.target/i386/pclmul-avx-check.h (+4/-2) gcc/testsuite/gcc.target/i386/pr49866.c (+23/-0) gcc/testsuite/gcc.target/i386/pr49920.c (+23/-0) gcc/testsuite/gcc.target/powerpc/altivec-34.c (+24/-0) gcc/testsuite/gcc.target/sparc/cas64.c (+15/-0) gcc/testsuite/gfortran.dg/abstract_type_6.f03 (+1/-1) gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90 (+1/-1) gcc/testsuite/gfortran.dg/allocate_error_3.f90 (+9/-0) gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f90 (+25/-0) gcc/testsuite/gfortran.dg/extends_14.f03 (+28/-0) gcc/testsuite/gfortran.dg/intrinsic_signal.f90 (+21/-0) gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90 (+34/-0) gcc/testsuite/gfortran.dg/namelist_72.f (+33/-0) gcc/testsuite/gfortran.dg/pr49472.f90 (+15/-0) gcc/testsuite/gfortran.dg/pr49540-1.f90 (+6/-0) gcc/testsuite/gfortran.dg/pr49540-2.f90 (+17/-0) gcc/testsuite/gfortran.dg/pr49675.f90 (+6/-0) gcc/testsuite/gfortran.dg/pr49698.f90 (+15/-0) gcc/testsuite/gfortran.dg/read_list_eof_1.f90 (+54/-0) gcc/testsuite/gfortran.dg/reshape_zerosize_3.f90 (+43/-0) gcc/testsuite/gfortran.dg/result_in_spec_4.f90 (+27/-0) gcc/testsuite/gfortran.dg/string_5.f90 (+7/-0) gcc/testsuite/gfortran.dg/typebound_proc_23.f90 (+32/-0) gcc/testsuite/gfortran.dg/typebound_proc_24.f03 (+32/-0) gcc/testsuite/gnat.dg/pointer_controlled.adb (+31/-0) gcc/testsuite/lib/scanasm.exp (+37/-9) gcc/testsuite/lib/scandump.exp (+10/-5) gcc/testsuite/lib/target-supports-dg.exp (+6/-1) gcc/testsuite/lib/target-supports.exp (+97/-70) gcc/tree-cfgcleanup.c (+1/-1) gcc/tree-eh.c (+7/-0) gcc/tree-inline.c (+3/-1) gcc/tree-mudflap.c (+1/-1) gcc/tree-sra.c (+39/-4) gcc/tree-ssa-ccp.c (+9/-5) gcc/tree-ssa-dom.c (+1/-3) gcc/tree-ssa-forwprop.c (+6/-2) gcc/tree-ssa-pre.c (+5/-2) gcc/tree-ssa-structalias.c (+11/-2) gcc/tree.c (+33/-3) libcpp/po/ChangeLog (+6/-0) libcpp/po/be.po (+76/-60) libcpp/po/ca.po (+87/-60) libcpp/po/da.po (+107/-60) libcpp/po/de.po (+60/-60) libcpp/po/el.po (+60/-60) libcpp/po/es.po (+60/-60) libcpp/po/fi.po (+60/-60) libcpp/po/fr.po (+74/-60) libcpp/po/id.po (+61/-60) libcpp/po/ja.po (+60/-60) libcpp/po/nl.po (+61/-60) libcpp/po/ru.po (+60/-60) libcpp/po/sv.po (+60/-60) libcpp/po/tr.po (+79/-60) libcpp/po/uk.po (+79/-60) libcpp/po/vi.po (+61/-60) libcpp/po/zh_CN.po (+60/-60) libcpp/po/zh_TW.po (+83/-60) libgfortran/ChangeLog (+38/-0) libgfortran/generated/eoshift1_16.c (+0/-1) libgfortran/generated/eoshift1_4.c (+0/-1) libgfortran/generated/eoshift1_8.c (+0/-1) libgfortran/generated/eoshift3_16.c (+0/-1) libgfortran/generated/eoshift3_4.c (+0/-1) libgfortran/generated/eoshift3_8.c (+0/-1) libgfortran/io/list_read.c (+16/-17) libgfortran/m4/eoshift1.m4 (+0/-1) libgfortran/m4/eoshift3.m4 (+0/-1) libgfortran/runtime/memory.c (+2/-2) libgomp/ChangeLog (+15/-0) libgomp/testsuite/lib/libgomp.exp (+0/-1) libgomp/testsuite/libgomp.c/pr49897-1.c (+31/-0) libgomp/testsuite/libgomp.c/pr49897-2.c (+25/-0) libgomp/testsuite/libgomp.c/pr49898-1.c (+26/-0) libgomp/testsuite/libgomp.c/pr49898-2.c (+18/-0) libiberty/ChangeLog (+7/-3) libiberty/testsuite/test-expandargv.c (+5/-2) libmudflap/ChangeLog (+15/-0) libquadmath/ChangeLog (+5/-0) libquadmath/math/rem_pio2q.c (+12/-6) libstdc++-v3/ChangeLog (+25/-0) libstdc++-v3/include/bits/shared_ptr.h (+2/-2) libstdc++-v3/include/bits/shared_ptr_base.h (+2/-2) libstdc++-v3/include/parallel/algo.h (+6/-6) libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc (+7/-7) libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc (+9/-1) libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc (+11/-1) |
To merge this branch: | bzr merge lp:~michaelh1/gcc-linaro/merge-from-fsf-r177703-4.6 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Linaro Toolchain Developers | Pending | ||
Review via email: mp+71445@code.launchpad.net |
Commit message
Description of the change
Merge from FSF GCC 4.6.1 (svn branches/
Linaro Toolchain Builder (cbuild) wrote : | # |
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on x86_64-
The build results are available at:
http://
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-UNSUPPORTED: g++.dg/
-UNSUPPORTED: g++.dg/
-UNSUPPORTED: g++.dg/
-UNSUPPORTED: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on i686-natty-
The build results are available at:
http://
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-UNSUPPORTED: g++.dg/
-UNSUPPORTED: g++.dg/
-UNSUPPORTED: g++.dg/
-UNSUPPORTED: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-FAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-FAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
Michael Hope (michaelh1) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+XFAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-FAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
-FAIL: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
+PASS: g++.dg/
Michael Hope (michaelh1) wrote : | # |
I've checked the x86_64 and i686 differences at:
http://
All are new passes, new xfails, or changes in the pattern being checked.
Michael Hope (michaelh1) wrote : | # |
I've checked the cortexa9 differences at:
http://
The new fails are:
-PASS: gcc.dg/
-PASS: gcc.dg/
-PASS: gcc.dg/
-PASS: gcc.dg/
+FAIL: gcc.dg/
+FAIL: gcc.dg/
+FAIL: gcc.dg/
+FAIL: gcc.dg/
-PASS: gcc.dg/
+FAIL: gcc.dg/
These faults also exist in trunk. See:
http://
...so it's not specific to us.
Preview Diff
1 | === modified file 'ChangeLog.linaro' |
2 | --- ChangeLog.linaro 2011-08-10 23:03:03 +0000 |
3 | +++ ChangeLog.linaro 2011-08-13 08:58:15 +0000 |
4 | @@ -1,3 +1,7 @@ |
5 | +2011-08-13 Michael Hope <michael.hope@linaro.org> |
6 | + |
7 | + Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch 177703). |
8 | + |
9 | 2011-08-11 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> |
10 | |
11 | gcc/ |
12 | |
13 | === modified file 'gcc/ChangeLog' |
14 | --- gcc/ChangeLog 2011-07-01 09:19:21 +0000 |
15 | +++ gcc/ChangeLog 2011-08-13 08:58:15 +0000 |
16 | @@ -1,9 +1,451 @@ |
17 | +2011-08-12 Nick Clifton <nickc@redhat.com> |
18 | + |
19 | + * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi |
20 | + pattern. |
21 | + * doc/md.texi (cmpstrn): Note that the comparison stops if both |
22 | + fetched bytes are zero. |
23 | + (cmpstr): Likewise. |
24 | + (cmpmem): Note that the comparison does not stop if both of the |
25 | + fetched bytes are zero. |
26 | + |
27 | +2011-08-11 Kazuhiro Inaoka <kazuhiro.inaoka.ud@renesas.com> |
28 | + |
29 | + * config/rx/rx.md (movsicc): Allow register to register |
30 | + transfers. |
31 | + (*movsicc): Likewise. |
32 | + (*stcc): Restrict this pattern to EQ and NE compares. |
33 | + (*stcc_reg): New pattern. Works for any comparison but only for |
34 | + register transfers. |
35 | + |
36 | +2011-08-10 DJ Delorie <dj@redhat.com> |
37 | + |
38 | + * expr.c (expand_expr_addr_expr_1): Detect a user request for |
39 | + a local frame in a naked function, and produce a suitable |
40 | + error for that specific case. |
41 | + |
42 | +2011-08-09 Martin Jambor <mjambor@suse.cz> |
43 | + |
44 | + PR middle-end/49923 |
45 | + * tree-sra.c (access_precludes_ipa_sra_p): Also check access |
46 | + memory alignment. |
47 | + |
48 | +2011-08-09 Nick Clifton <nickc@redhat.com> |
49 | + |
50 | + * config/rx/rx.md: Disable extender peepholes at -O3. |
51 | + |
52 | +2011-08-06 Uros Bizjak <ubizjak@gmail.com> |
53 | + |
54 | + PR target/50001 |
55 | + * config/alpha/alpha.c (alpha_instantiate_decls): New function. |
56 | + (TARGET_INSTANTIATE_DECLS): New define. |
57 | + |
58 | +2011-08-05 H.J. Lu <hongjiu.lu@intel.com> |
59 | + |
60 | + Backport from mainline |
61 | + 2011-08-05 H.J. Lu <hongjiu.lu@intel.com> |
62 | + |
63 | + * config/i386/i386.c (processor_alias_table): Add core-avx-i. |
64 | + |
65 | + * doc/invoke.texi: Document core-avx-i. |
66 | + |
67 | +2011-08-03 Jakub Jelinek <jakub@redhat.com> |
68 | + |
69 | + PR tree-optimization/49948 |
70 | + * gimple.c (walk_stmt_load_store_addr_ops): Walk CONSTRUCTOR elements. |
71 | + |
72 | +2011-08-02 Uros Bizjak <ubizjak@gmail.com> |
73 | + |
74 | + * doc/md.texi (stack_protect_set): The pattern moves ptr_mode value. |
75 | + (stack_protect_test): The pattern compares ptr_mode value. |
76 | + |
77 | +2011-07-31 Uros Bizjak <ubizjak@gmail.com> |
78 | + |
79 | + PR target/49920 |
80 | + * config/i386/i386.md (strset): Do not expand strset_singleop |
81 | + when %eax or $edi are fixed. |
82 | + (*strsetdi_rex_1): Disable when %eax or %edi are fixed. |
83 | + (*strsetsi_1): Ditto. |
84 | + (*strsethi_1): Ditto. |
85 | + (*strsetqi_1): Ditto. |
86 | + (*rep_stosdi_rex64): Disable when %eax, %ecx or %edi are fixed. |
87 | + (*rep_stossi): Ditto. |
88 | + (*rep_stosqi): Ditto. |
89 | + (*strlenqi_1): Ditto. |
90 | + (cmpstrnsi): Also fail when %ecx is fixed. |
91 | + (*cmpstrnqi_nz_1): Disable when %ecx, %esi or %edi are fixed. |
92 | + (*cmpstrnqi_1): Ditto. |
93 | + (*strmovdi_rex_1): Disable when %esi or %edi are fixed. |
94 | + (*strmovsi_1): Ditto. |
95 | + (*strmovhi_1): Ditto. |
96 | + (*strmovqi_1): Ditto. |
97 | + (*rep_movdi_rex64): Disable when %ecx, %esi or %edi are fixed. |
98 | + (*rep_movsi): Ditto. |
99 | + (*rep_movqi): Ditto. |
100 | + |
101 | +2011-07-31 Mikael Pettersson <mikpe@it.uu.se> |
102 | + |
103 | + PR target/47908 |
104 | + * config/m68k/m68k.c (m68k_override_options_after_change): New function. |
105 | + Disable instruction scheduling for non-ColdFire targets. |
106 | + (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define. |
107 | + |
108 | +2011-07-29 Jakub Jelinek <jakub@redhat.com> |
109 | + |
110 | + PR middle-end/49897 |
111 | + PR middle-end/49898 |
112 | + * omp-low.c (use_pointer_for_field): If disallowing copy-in/out |
113 | + in nested parallel and outer is a gimple_reg, mark it as addressable |
114 | + and set its bit in task_shared_vars bitmap too. |
115 | + |
116 | +2011-07-29 Wei Guozhi <carrot@google.com> |
117 | + |
118 | + Backport from mainline |
119 | + 2011-07-29 Wei Guozhi <carrot@google.com> |
120 | + |
121 | + PR rtl-optimization/49799 |
122 | + * combine.c (make_compound_operation): Check if the bit field is valid |
123 | + before change it to bit field extraction. |
124 | + |
125 | +2011-07-28 Jakub Jelinek <jakub@redhat.com> |
126 | + |
127 | + PR debug/49871 |
128 | + * dwarf2out.c (size_of_die, value_format, output_die): Use |
129 | + DW_FORM_udata instead of DW_FORM_data[48] for |
130 | + dw_val_class_unsigned_const DW_AT_data_member_location for DWARF 3. |
131 | + |
132 | +2011-07-28 H.J. Lu <hongjiu.lu@intel.com> |
133 | + |
134 | + Backport from mainline |
135 | + 2011-07-28 H.J. Lu <hongjiu.lu@intel.com> |
136 | + |
137 | + PR target/47364 |
138 | + * config/i386/i386.md (strlen<mode>): Replace SWI48x with P. |
139 | + |
140 | +2011-07-28 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> |
141 | + |
142 | + Backport from mainline: |
143 | + 2011-07-26 Martin Jambor <mjambor@suse.cz> |
144 | + |
145 | + * tree-sra.c (tree_non_mode_aligned_mem_p): Strip conversions and |
146 | + return false for invariants. |
147 | + |
148 | +2011-07-27 Jakub Jelinek <jakub@redhat.com> |
149 | + |
150 | + PR target/49866 |
151 | + * config/i386/i386.md (*call_pop_1_vzeroupper, *call_pop_1, |
152 | + *sibcall_pop_1_vzeroupper, *sibcall_pop_1, *call_1_vzeroupper, |
153 | + *call_1, *sibcall_1_vzeroupper, *sibcall_1, *call_1_rex64_vzeroupper, |
154 | + *call_1_rex64, *call_1_rex64_ms_sysv_vzeroupper, |
155 | + *call_1_rex64_ms_sysv, *sibcall_1_rex64_vzeroupper, |
156 | + *sibcall_1_rex64, *call_value_pop_1_vzeroupper, |
157 | + *call_value_pop_1, *sibcall_value_pop_1_vzeroupper, |
158 | + *sibcall_value_pop_1, *call_value_1_vzeroupper, |
159 | + *call_value_1, *sibcall_value_1_vzeroupper, |
160 | + *sibcall_value_1, *call_value_1_rex64_vzeroupper, |
161 | + *call_value_1_rex64, *call_value_1_rex64_ms_sysv_vzeroupper, |
162 | + *call_value_1_rex64_ms_sysv, *sibcall_value_1_rex64_vzeroupper, |
163 | + *sibcall_value_1_rex64): Use z constraint instead of s constraint. |
164 | + |
165 | + Backport from mainline |
166 | + 2011-05-16 Uros Bizjak <ubizjak@gmail.com> |
167 | + |
168 | + * config/i386/constraints.md (z): New constraint. |
169 | + |
170 | +2011-07-25 Andrew Pinski <apinski@cavium.com> |
171 | + |
172 | + PR tree-opt/49671 |
173 | + * tree-inline.c (remap_gimple_op_r): Copy TREE_THIS_VOLATILE and |
174 | + TREE_THIS_NOTRAP into the inner most MEM_REF. |
175 | + Always copy TREE_THIS_VOLATILE. |
176 | + * tree-sra.c (ptr_parm_has_direct_uses): Check that the lhs, rhs and |
177 | + arguments are not volatile references. |
178 | + |
179 | +2011-07-25 Georg-Johann Lay <avr@gjlay.de> |
180 | + |
181 | + PR target/39386 |
182 | + Backport from mainline r176756 |
183 | + 2011-07-25 Georg-Johann Lay |
184 | + * config/avr/avr.c (out_shift_with_cnt): Use tmp_reg as |
185 | + shift counter for x << x and x >> x shifts. |
186 | + |
187 | +2011-07-22 Uros Bizjak <ubizjak@gmail.com> |
188 | + |
189 | + * config.gcc (x86_64-*-linux*): Set |
190 | + default_gnu_indirect_function to yes. |
191 | + |
192 | +2011-07-22 Richard Guenther <rguenther@suse.de> |
193 | + |
194 | + PR tree-optimization/45819 |
195 | + * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly |
196 | + preserve volatile and notrap flags. |
197 | + |
198 | +2011-07-21 Uros Bizjak <ubizjak@gmail.com> |
199 | + |
200 | + Backport from mainline |
201 | + 2011-07-04 Uros Bizjak <ubizjak@gmail.com> |
202 | + |
203 | + PR target/49600 |
204 | + * config/i386/i386.md (SSE2 int->float split): Push operand 1 in |
205 | + general register to memory for !TARGET_INTER_UNIT_MOVES. |
206 | + |
207 | +2011-07-20 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> |
208 | + |
209 | + * config/s390/s390.c (s390_class_max_nregs): Fix return type. |
210 | + * config/s390/s390-protos.h (s390_class_max_nregs): Likewise. |
211 | + |
212 | +2011-07-19 Jakub Jelinek <jakub@redhat.com> |
213 | + |
214 | + PR tree-optimization/49768 |
215 | + * tree-ssa-ccp.c (fold_nonarray_ctor_reference): Return NULL |
216 | + if offset is smaller than bitoffset, but offset+size is bigger |
217 | + than bitoffset. |
218 | + |
219 | +2011-07-18 Jakub Jelinek <jakub@redhat.com> |
220 | + |
221 | + PR middle-end/49675 |
222 | + * tree.c (build_common_builtin_nodes): Register |
223 | + __builtin_return_address, __cyg_profile_func_enter |
224 | + and __cyg_profile_func_exit. |
225 | + |
226 | +2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
227 | + |
228 | + * config.gcc: Obsolete i[3456x]86-*-netware*. |
229 | + |
230 | +2011-07-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> |
231 | + |
232 | + PR target/49746 |
233 | + Revert: |
234 | + 2010-12-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> |
235 | + |
236 | + * config/pa/pa.md: Add ",*" condition to 64-bit add/subtract boolean |
237 | + patterns. |
238 | + |
239 | +2011-07-17 Eric Botcazou <ebotcazou@adacore.com> |
240 | + |
241 | + PR middle-end/49732 |
242 | + * tree.c (walk_tree_1) <DECL_EXPR>: Do not walk a pointed-to type. |
243 | + |
244 | +2011-07-16 Eric Botcazou <ebotcazou@adacore.com> |
245 | + |
246 | + PR tree-optimization/49725 |
247 | + Backport from mainline |
248 | + 2011-03-31 Eric Botcazou <ebotcazou@adacore.com> |
249 | + |
250 | + * tree-ssa-pre.c (create_component_ref_by_pieces_1) <ARRAY_REF>: Drop |
251 | + a zero minimum index only if it is redundant. |
252 | + |
253 | +2011-07-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> |
254 | + |
255 | + PR target/49723 |
256 | + * config/pa/pa.md (casesi): Use gen_int_mode instead of GEN_INT. |
257 | + |
258 | +2011-07-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> |
259 | + |
260 | + Backport from mainline: |
261 | + 2011-07-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> |
262 | + |
263 | + * config/spu/spu.c (TARGET_ASM_FILE_START): Do not define. |
264 | + (asm_file_start): Remove. |
265 | + (spu_machine_dependent_reorg): Call compute_bb_for_insn and |
266 | + free_bb_for_insn around code that modifies insns before |
267 | + restarting df analysis. |
268 | + |
269 | +2011-07-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
270 | + |
271 | + Backport from mainline: |
272 | + 2011-07-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
273 | + |
274 | + PR target/49541 |
275 | + * config/sol2.h (LIB_SPEC): Simplify. |
276 | + Move LIB_THREAD_LDFLAGS_SPEC ... |
277 | + (LINK_SPEC): ... here. |
278 | + |
279 | +2011-07-14 James Greenhalgh <james.greenhalgh@arm.com> |
280 | + |
281 | + * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add __ARM_FEATURE_DSP. |
282 | + |
283 | +2011-07-14 Andrew Pinski <pinskia@gmail.com> |
284 | + |
285 | + PR tree-opt/49309 |
286 | + * tree-mudflap.c (mf_xform_derefs_1 <case MEM_REF>): |
287 | + Use fold_build2_loc instead of build2. |
288 | + Use the correct type for the new tree. |
289 | + |
290 | +2011-07-14 Georg-Johann Lay <avr@gjlay.de> |
291 | + |
292 | + PR target/49487 |
293 | + Backport from mainline r176276 |
294 | + 2011-07-14 Georg-Johann Lay |
295 | + * config/avr/avr.md (rotl<mode>3): Generate SCRATCH instead |
296 | + of REG. |
297 | + (*rotw<mode>): Use const_int_operand for operand2. |
298 | + Use match_scatch for operand3. |
299 | + (*rotb<mode>): Ditto |
300 | + * config/avr/avr.c (avr_rotate_bytes): Treat SCRATCH. |
301 | + |
302 | +2011-07-14 Richard Guenther <rguenther@suse.de> |
303 | + |
304 | + PR tree-optimization/49651 |
305 | + * tree-ssa-structalias.c (get_constraint_for_1): Properly |
306 | + handle dereferences with subvariables. |
307 | + |
308 | +2011-07-11 Martin Jambor <mjambor@suse.cz> |
309 | + |
310 | + PR tree-optimization/49094 |
311 | + * tree-sra.c (tree_non_mode_aligned_mem_p): New function. |
312 | + (build_accesses_from_assign): Use it. |
313 | + |
314 | +2011-07-11 Georg-Johann Lay <avr@gjlay.de> |
315 | + |
316 | + PR target/39633 |
317 | + Backport from mainline r176141 |
318 | + 2011-07-11 Georg-Johann Lay |
319 | + * config/avr/avr.c (notice_update_cc): For ashiftrt:QI, only |
320 | + offsets 1..5 set cc0 in a usable way. |
321 | + |
322 | +2011-07-08 Jakub Jelinek <jakub@redhat.com> |
323 | + |
324 | + PR target/49621 |
325 | + * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Use |
326 | + CONST0_RTX (dest_mode) instead of const0_rtx as second operand |
327 | + of NE. |
328 | + * config/rs6000/vector.md (vector_select_<mode>, |
329 | + vector_select_<mode>_uns): Change second operand of NE to |
330 | + CONST0_RTX (<MODE>mode) instead of const0_rtx. |
331 | + * config/rs6000/altivec.md (*altivec_vsel<mode>, |
332 | + *altivec_vsel<mode>_uns): Expect second operand of NE to be |
333 | + zero_constant of the corresponding vector mode. |
334 | + * config/rs6000/vsx.md (*vsx_xxsel<mode>, *vsx_xxsel<mode>_uns): |
335 | + Likewise. |
336 | + |
337 | +2011-07-08 Georg-Johann Lay <avr@gjlay.de> |
338 | + |
339 | + PR target/46779 |
340 | + Backport from mainline SVN 176053. |
341 | + 2011-07-08 Georg-Johann Lay <avr@gjlay.de> |
342 | + * config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite. |
343 | + In particular, allow 8-bit values in r28 and r29. |
344 | + (avr_hard_regno_scratch_ok): Disallow any register that might be |
345 | + part of the frame pointer. |
346 | + (avr_hard_regno_rename_ok): Same. |
347 | + (avr_legitimate_address_p): Don't allow SUBREGs. |
348 | + |
349 | +2011-07-07 Eric Botcazou <ebotcazou@adacore.com> |
350 | + |
351 | + PR target/49660 |
352 | + * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add |
353 | + MASK_V8PLUS, remove commented out flag and reorder. |
354 | + |
355 | + Backport from mainline |
356 | + 2011-06-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
357 | + |
358 | + * config/sparc/sol2-64.h (TARGET_DEFAULT): Remove. |
359 | + (TARGET_64BIT_DEFAULT): Define. |
360 | + * config.gcc (sparc*-*-solaris2*): Move sparc/sol2-64.h to front |
361 | + of tm_file. |
362 | + * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Define. |
363 | + |
364 | +2011-07-07 Jakub Jelinek <jakub@redhat.com> |
365 | + |
366 | + PR c/49644 |
367 | + * c-typeck.c (build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with |
368 | + one non-complex and one complex argument, call c_save_expr on both |
369 | + operands. |
370 | + |
371 | + PR debug/49522 |
372 | + * df-problems.c (dead_debug_reset): Remove dead_debug_uses |
373 | + referencing debug insns that have been reset. |
374 | + (dead_debug_insert_before): Don't assert reg is non-NULL, |
375 | + instead return immediately if it is NULL. |
376 | + |
377 | + PR middle-end/49640 |
378 | + * gimplify.c (gimplify_compound_lval): For last 2 ARRAY_*REF |
379 | + operands and last COMPONENT_REF operand call gimplify_expr on it |
380 | + if non-NULL. |
381 | + |
382 | +2011-07-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> |
383 | + |
384 | + Backport from mainline. |
385 | + 2011-06-24 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> |
386 | + |
387 | + PR target/49335 |
388 | + * config/arm/predicates.md (add_operator): New. |
389 | + * config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage |
390 | + in Thumb2. |
391 | + |
392 | +2011-07-05 Jakub Jelinek <jakub@redhat.com> |
393 | + |
394 | + PR tree-optimization/49618 |
395 | + * tree-eh.c (tree_could_trap_p) <case FUNCTION_DECL, case VAR_DECL>: |
396 | + For DECL_WEAK decls return true. |
397 | + |
398 | +2011-07-04 Jakub Jelinek <jakub@redhat.com> |
399 | + |
400 | + PR rtl-optimization/49619 |
401 | + * combine.c (combine_simplify_rtx): In PLUS -> IOR simplification |
402 | + pass VOIDmode as op0_mode to recursive call. |
403 | + |
404 | + PR rtl-optimization/49472 |
405 | + * simplify-rtx.c (simplify_unary_operation_1) <case NEG>: When |
406 | + negating MULT, negate the second operand instead of first. |
407 | + (simplify_binary_operation_1) <case MULT>: If one operand is |
408 | + a NEG and the other is MULT, don't attempt to optimize by |
409 | + negation of the MULT operand if it only moves the NEG operation |
410 | + around. |
411 | + |
412 | + Backported from mainline |
413 | + 2011-06-06 Jakub Jelinek <jakub@redhat.com> |
414 | + |
415 | + PR debug/49262 |
416 | + * dwarf2out.c (native_encode_initializer): Decrement count in each |
417 | + iteration. |
418 | + |
419 | +2011-07-04 Georg-Johann Lay <avr@gjlay.de> |
420 | + |
421 | + Backport from mainline |
422 | + 2011-07-04 Georg-Johann Lay <avr@gjlay.de> |
423 | + |
424 | + PR target/44643 |
425 | + * config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY |
426 | + instead of TREE_READONLY. |
427 | + |
428 | +2011-07-04 Richard Guenther <rguenther@suse.de> |
429 | + |
430 | + PR tree-optimization/49615 |
431 | + * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Fix |
432 | + basic-block index check. |
433 | + |
434 | +2011-06-30 Eric Botcazou <ebotcazou@adacore.com> |
435 | + |
436 | + PR tree-optimization/49572 |
437 | + * tree-ssa-dom.c (initialize_hash_element) <GIMPLE_SINGLE_RHS>: Use the |
438 | + type of the RHS instead of that of the LHS for the expression type. |
439 | + |
440 | +2011-06-30 Georg-Johann Lay <avr@gjlay.de> |
441 | + |
442 | + Backport from mainline |
443 | + PR target/34734 |
444 | + (avr_section_type_flags): For data in ".progmem.data", remove |
445 | + section flag SECTION_WRITE. |
446 | + |
447 | +2011-06-30 Georg-Johann Lay <avr@gjlay.de> |
448 | + |
449 | + Backport from mainline |
450 | + PR target/34734 |
451 | + * config/avr/avr.c (avr_handle_progmem_attribute): Move warning |
452 | + about uninitialized data attributed 'progmem' from here... |
453 | + (avr_encode_section_info): ...to this new function. |
454 | + (TARGET_ENCODE_SECTION_INFO): New define. |
455 | + |
456 | 2011-06-29 Changpeng Fang <changpeng.fang@amd.com> |
457 | + |
458 | Backport from mainline |
459 | 2011-06-29 Changpeng Fang <changpeng.fang@amd.com> |
460 | |
461 | - * config/i386/i386.opt (mprefer-avx128): Redefine the flag as a Mask option. |
462 | - * config/i386/i386.h (ix86_tune_indices): Add X86_TUNE_AVX128_OPTIMAL entry. |
463 | + * config/i386/i386.opt (mprefer-avx128): Redefine the flag as a Mask |
464 | + option. |
465 | + * config/i386/i386.h (ix86_tune_indices): Add X86_TUNE_AVX128_OPTIMAL |
466 | + entry. |
467 | (TARGET_AVX128_OPTIMAL): New definition. |
468 | * config/i386/i386.c (initial_ix86_tune_features): Initialize |
469 | X86_TUNE_AVX128_OPTIMAL entry. |
470 | |
471 | === modified file 'gcc/DATESTAMP' |
472 | --- gcc/DATESTAMP 2011-06-30 00:17:44 +0000 |
473 | +++ gcc/DATESTAMP 2011-08-13 08:58:15 +0000 |
474 | @@ -1,1 +1,1 @@ |
475 | -20110630 |
476 | +20110813 |
477 | |
478 | === modified file 'gcc/ada/ChangeLog' |
479 | --- gcc/ada/ChangeLog 2011-06-27 10:03:04 +0000 |
480 | +++ gcc/ada/ChangeLog 2011-08-13 08:58:15 +0000 |
481 | @@ -1,3 +1,32 @@ |
482 | +2011-07-23 Eric Botcazou <ebotcazou@adacore.com> |
483 | + |
484 | + Backport from mainline |
485 | + 2011-07-23 Arnaud Charlet <charlet@adacore.com> |
486 | + |
487 | + PR ada/49819 |
488 | + * gcc-interface/Makefile.in (powerpc-linux): Remove reference to |
489 | + g-trasym-dwarf.adb. |
490 | + |
491 | +2011-07-15 Eric Botcazou <ebotcazou@adacore.com> |
492 | + |
493 | + PR ada/48711 |
494 | + * g-socthi-mingw.adb (Fill): Fix formatting. |
495 | + |
496 | +2011-07-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> |
497 | + |
498 | + PR ada/46350 |
499 | + * s-taprop-hpux-dce.adb (Abort_Task): Remove unnecessary cast. |
500 | + |
501 | +2011-07-14 Florian Weimer <fw@deneb.enyo.de> |
502 | + |
503 | + PR ada/48711 |
504 | + * g-socthi-mingw.adb (Fill): Guard against invalid MSG_WAITALL. |
505 | + |
506 | +2011-07-01 Eric Botcazou <ebotcazou@adacore.com> |
507 | + |
508 | + * gcc-interface/Make-lang.in (gnat1): Prepend '+' to the command. |
509 | + (gnatbind): Likewise. |
510 | + |
511 | 2011-06-27 Release Manager |
512 | |
513 | * GCC 4.6.1 released. |
514 | |
515 | === modified file 'gcc/ada/g-socthi-mingw.adb' |
516 | --- gcc/ada/g-socthi-mingw.adb 2010-06-22 08:46:58 +0000 |
517 | +++ gcc/ada/g-socthi-mingw.adb 2011-08-13 08:58:15 +0000 |
518 | @@ -277,7 +277,8 @@ |
519 | use type C.size_t; |
520 | |
521 | Fill : constant Boolean := |
522 | - (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0; |
523 | + SOSC.MSG_WAITALL /= -1 |
524 | + and then (C.unsigned (Flags) and SOSC.MSG_WAITALL) /= 0; |
525 | -- Is the MSG_WAITALL flag set? If so we need to fully fill all vectors |
526 | |
527 | Res : C.int; |
528 | |
529 | === modified file 'gcc/ada/gcc-interface/Make-lang.in' |
530 | --- gcc/ada/gcc-interface/Make-lang.in 2011-04-17 22:29:13 +0000 |
531 | +++ gcc/ada/gcc-interface/Make-lang.in 2011-08-13 08:58:15 +0000 |
532 | @@ -481,11 +481,11 @@ |
533 | # Since the RTL should be built with the latest compiler, remove the |
534 | # stamp target in the parent directory whenever gnat1 is rebuilt |
535 | gnat1$(exeext): $(TARGET_ADA_SRCS) $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBDEPS) |
536 | - $(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS) |
537 | + +$(GCC_LINK) -o $@ $(GNAT1_OBJS) $(ADA_BACKEND) $(LIBS) $(SYSLIBS) $(BACKENDLIBS) $(CFLAGS) |
538 | $(RM) stamp-gnatlib2-rts stamp-tools |
539 | |
540 | gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS) |
541 | - $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS) |
542 | + +$(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS) |
543 | |
544 | # use cross-gcc |
545 | gnat-cross: force |
546 | |
547 | === modified file 'gcc/ada/gcc-interface/Makefile.in' |
548 | --- gcc/ada/gcc-interface/Makefile.in 2011-02-08 22:55:57 +0000 |
549 | +++ gcc/ada/gcc-interface/Makefile.in 2011-08-13 08:58:15 +0000 |
550 | @@ -1792,7 +1792,6 @@ |
551 | s-osinte.adb<s-osinte-posix.adb \ |
552 | s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ |
553 | g-sercom.adb<g-sercom-linux.adb \ |
554 | - g-trasym.adb<g-trasym-dwarf.adb \ |
555 | $(ATOMICS_TARGET_PAIRS) |
556 | |
557 | ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),) |
558 | |
559 | === modified file 'gcc/ada/s-taprop-hpux-dce.adb' |
560 | --- gcc/ada/s-taprop-hpux-dce.adb 2009-11-30 10:45:39 +0000 |
561 | +++ gcc/ada/s-taprop-hpux-dce.adb 2011-08-13 08:58:15 +0000 |
562 | @@ -888,8 +888,7 @@ |
563 | |
564 | if T.Common.State = Interrupt_Server_Blocked_On_Event_Flag then |
565 | System.Interrupt_Management.Operations.Interrupt_Self_Process |
566 | - (System.Interrupt_Management.Interrupt_ID |
567 | - (PIO.Get_Interrupt_ID (T))); |
568 | + (PIO.Get_Interrupt_ID (T)); |
569 | end if; |
570 | end Abort_Task; |
571 | |
572 | |
573 | === modified file 'gcc/builtins.c' |
574 | --- gcc/builtins.c 2011-07-04 09:52:27 +0000 |
575 | +++ gcc/builtins.c 2011-08-13 08:58:15 +0000 |
576 | @@ -4138,9 +4138,9 @@ |
577 | } |
578 | |
579 | /* Expand expression EXP, which is a call to the memcmp built-in function. |
580 | - Return NULL_RTX if we failed and the |
581 | - caller should emit a normal call, otherwise try to get the result in |
582 | - TARGET, if convenient (and in mode MODE, if that's convenient). */ |
583 | + Return NULL_RTX if we failed and the caller should emit a normal call, |
584 | + otherwise try to get the result in TARGET, if convenient (and in mode |
585 | + MODE, if that's convenient). */ |
586 | |
587 | static rtx |
588 | expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target, |
589 | @@ -4152,7 +4152,10 @@ |
590 | POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE)) |
591 | return NULL_RTX; |
592 | |
593 | -#if defined HAVE_cmpmemsi || defined HAVE_cmpstrnsi |
594 | + /* Note: The cmpstrnsi pattern, if it exists, is not suitable for |
595 | + implementing memcmp because it will stop if it encounters two |
596 | + zero bytes. */ |
597 | +#if defined HAVE_cmpmemsi |
598 | { |
599 | rtx arg1_rtx, arg2_rtx, arg3_rtx; |
600 | rtx result; |
601 | @@ -4167,16 +4170,9 @@ |
602 | = get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT; |
603 | enum machine_mode insn_mode; |
604 | |
605 | -#ifdef HAVE_cmpmemsi |
606 | if (HAVE_cmpmemsi) |
607 | insn_mode = insn_data[(int) CODE_FOR_cmpmemsi].operand[0].mode; |
608 | else |
609 | -#endif |
610 | -#ifdef HAVE_cmpstrnsi |
611 | - if (HAVE_cmpstrnsi) |
612 | - insn_mode = insn_data[(int) CODE_FOR_cmpstrnsi].operand[0].mode; |
613 | - else |
614 | -#endif |
615 | return NULL_RTX; |
616 | |
617 | /* If we don't have POINTER_TYPE, call the function. */ |
618 | @@ -4201,18 +4197,10 @@ |
619 | set_mem_size (arg2_rtx, arg3_rtx); |
620 | } |
621 | |
622 | -#ifdef HAVE_cmpmemsi |
623 | if (HAVE_cmpmemsi) |
624 | insn = gen_cmpmemsi (result, arg1_rtx, arg2_rtx, arg3_rtx, |
625 | GEN_INT (MIN (arg1_align, arg2_align))); |
626 | else |
627 | -#endif |
628 | -#ifdef HAVE_cmpstrnsi |
629 | - if (HAVE_cmpstrnsi) |
630 | - insn = gen_cmpstrnsi (result, arg1_rtx, arg2_rtx, arg3_rtx, |
631 | - GEN_INT (MIN (arg1_align, arg2_align))); |
632 | - else |
633 | -#endif |
634 | gcc_unreachable (); |
635 | |
636 | if (insn) |
637 | @@ -4238,7 +4226,7 @@ |
638 | else |
639 | return convert_to_mode (mode, result, 0); |
640 | } |
641 | -#endif |
642 | +#endif /* HAVE_cmpmemsi. */ |
643 | |
644 | return NULL_RTX; |
645 | } |
646 | |
647 | === modified file 'gcc/c-typeck.c' |
648 | --- gcc/c-typeck.c 2011-04-27 07:05:54 +0000 |
649 | +++ gcc/c-typeck.c 2011-08-13 08:58:15 +0000 |
650 | @@ -10033,6 +10033,7 @@ |
651 | { |
652 | case MULT_EXPR: |
653 | case TRUNC_DIV_EXPR: |
654 | + op1 = c_save_expr (op1); |
655 | imag = build2 (resultcode, real_type, imag, op1); |
656 | /* Fall through. */ |
657 | case PLUS_EXPR: |
658 | @@ -10053,6 +10054,7 @@ |
659 | switch (code) |
660 | { |
661 | case MULT_EXPR: |
662 | + op0 = c_save_expr (op0); |
663 | imag = build2 (resultcode, real_type, op0, imag); |
664 | /* Fall through. */ |
665 | case PLUS_EXPR: |
666 | |
667 | === modified file 'gcc/combine.c' |
668 | --- gcc/combine.c 2011-07-11 03:52:31 +0000 |
669 | +++ gcc/combine.c 2011-08-13 08:58:15 +0000 |
670 | @@ -5633,7 +5633,7 @@ |
671 | { |
672 | /* Try to simplify the expression further. */ |
673 | rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1)); |
674 | - temp = combine_simplify_rtx (tor, mode, in_dest, 0); |
675 | + temp = combine_simplify_rtx (tor, VOIDmode, in_dest, 0); |
676 | |
677 | /* If we could, great. If not, do not go ahead with the IOR |
678 | replacement, since PLUS appears in many special purpose |
679 | @@ -7749,6 +7749,7 @@ |
680 | && GET_CODE (lhs) == ASHIFT |
681 | && CONST_INT_P (XEXP (lhs, 1)) |
682 | && INTVAL (rhs) >= INTVAL (XEXP (lhs, 1)) |
683 | + && INTVAL (XEXP (lhs, 1)) >= 0 |
684 | && INTVAL (rhs) < mode_width) |
685 | { |
686 | new_rtx = make_compound_operation (XEXP (lhs, 0), next_code); |
687 | |
688 | === modified file 'gcc/config.gcc' |
689 | --- gcc/config.gcc 2011-05-22 20:03:43 +0000 |
690 | +++ gcc/config.gcc 2011-08-13 08:58:15 +0000 |
691 | @@ -240,6 +240,7 @@ |
692 | | crx-* \ |
693 | | i[34567]86-*-interix3* \ |
694 | | i[34567]86-*-netbsd* \ |
695 | + | i[3456x]86-*-netware* \ |
696 | | i[34567]86-*-pe \ |
697 | | m68hc11-*-* \ |
698 | | m6811-*-* \ |
699 | @@ -1281,10 +1282,17 @@ |
700 | tm_file="${tm_file} i386/linux.h" |
701 | fi |
702 | ;; |
703 | - i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;; |
704 | - i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; |
705 | - i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;; |
706 | - i[34567]86-*-gnu*) tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";; |
707 | + i[34567]86-*-knetbsd*-gnu) |
708 | + tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" |
709 | + ;; |
710 | + i[34567]86-*-kfreebsd*-gnu) |
711 | + tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" |
712 | + ;; |
713 | + i[34567]86-*-kopensolaris*-gnu) |
714 | + tm_file="${tm_file} i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" |
715 | + ;; |
716 | + i[34567]86-*-gnu*) |
717 | + tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";; |
718 | esac |
719 | tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" |
720 | ;; |
721 | @@ -1293,9 +1301,14 @@ |
722 | i386/x86-64.h i386/linux64.h" |
723 | case ${target} in |
724 | x86_64-*-linux*) |
725 | - default_gnu_indirect_function=glibc-2011 ;; |
726 | - x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; |
727 | - x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; |
728 | + default_gnu_indirect_function=yes |
729 | + ;; |
730 | + x86_64-*-kfreebsd*-gnu) |
731 | + tm_file="${tm_file} kfreebsd-gnu.h" |
732 | + ;; |
733 | + x86_64-*-knetbsd*-gnu) |
734 | + tm_file="${tm_file} knetbsd-gnu.h" |
735 | + ;; |
736 | esac |
737 | tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" |
738 | ;; |
739 | @@ -2571,7 +2584,7 @@ |
740 | tm_file="${tm_file} sparc/sol2.h" |
741 | case ${target} in |
742 | sparc64-*-* | sparcv9-*-*) |
743 | - tm_file="${tm_file} sparc/sol2-64.h" |
744 | + tm_file="sparc/sol2-64.h ${tm_file}" |
745 | ;; |
746 | *) |
747 | test x$with_cpu != x || with_cpu=v9 |
748 | |
749 | === modified file 'gcc/config/alpha/alpha.c' |
750 | --- gcc/config/alpha/alpha.c 2011-03-29 18:24:02 +0000 |
751 | +++ gcc/config/alpha/alpha.c 2011-08-13 08:58:15 +0000 |
752 | @@ -4918,6 +4918,13 @@ |
753 | return m; |
754 | } |
755 | |
756 | +static void |
757 | +alpha_instantiate_decls (void) |
758 | +{ |
759 | + if (cfun->machine->gp_save_rtx != NULL_RTX) |
760 | + instantiate_decl_rtl (cfun->machine->gp_save_rtx); |
761 | +} |
762 | + |
763 | static int |
764 | alpha_ra_ever_killed (void) |
765 | { |
766 | @@ -11110,6 +11117,9 @@ |
767 | #undef TARGET_TRAMPOLINE_INIT |
768 | #define TARGET_TRAMPOLINE_INIT alpha_trampoline_init |
769 | |
770 | +#undef TARGET_INSTANTIATE_DECLS |
771 | +#define TARGET_INSTANTIATE_DECLS alpha_instantiate_decls |
772 | + |
773 | #undef TARGET_SECONDARY_RELOAD |
774 | #define TARGET_SECONDARY_RELOAD alpha_secondary_reload |
775 | |
776 | |
777 | === modified file 'gcc/config/arm/arm.h' |
778 | --- gcc/config/arm/arm.h 2011-06-14 14:53:07 +0000 |
779 | +++ gcc/config/arm/arm.h 2011-08-13 08:58:15 +0000 |
780 | @@ -45,6 +45,8 @@ |
781 | #define TARGET_CPU_CPP_BUILTINS() \ |
782 | do \ |
783 | { \ |
784 | + if (TARGET_DSP_MULTIPLY) \ |
785 | + builtin_define ("__ARM_FEATURE_DSP"); \ |
786 | /* Define __arm__ even when in thumb mode, for \ |
787 | consistency with armcc. */ \ |
788 | builtin_define ("__arm__"); \ |
789 | |
790 | === modified file 'gcc/config/arm/predicates.md' |
791 | --- gcc/config/arm/predicates.md 2011-07-04 14:03:49 +0000 |
792 | +++ gcc/config/arm/predicates.md 2011-08-13 08:58:15 +0000 |
793 | @@ -709,4 +709,4 @@ |
794 | (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 2)"))) |
795 | |
796 | (define_special_predicate "add_operator" |
797 | - (match_code "plus")) |
798 | + (match_code "plus")) |
799 | |
800 | === modified file 'gcc/config/avr/avr.c' |
801 | --- gcc/config/avr/avr.c 2011-06-14 19:12:53 +0000 |
802 | +++ gcc/config/avr/avr.c 2011-08-13 08:58:15 +0000 |
803 | @@ -78,7 +78,7 @@ |
804 | static void avr_insert_attributes (tree, tree *); |
805 | static void avr_asm_init_sections (void); |
806 | static unsigned int avr_section_type_flags (tree, const char *, int); |
807 | - |
808 | +static void avr_encode_section_info (tree, rtx, int); |
809 | static void avr_reorg (void); |
810 | static void avr_asm_out_ctor (rtx, int); |
811 | static void avr_asm_out_dtor (rtx, int); |
812 | @@ -176,6 +176,8 @@ |
813 | #define TARGET_INSERT_ATTRIBUTES avr_insert_attributes |
814 | #undef TARGET_SECTION_TYPE_FLAGS |
815 | #define TARGET_SECTION_TYPE_FLAGS avr_section_type_flags |
816 | +#undef TARGET_ENCODE_SECTION_INFO |
817 | +#define TARGET_ENCODE_SECTION_INFO avr_encode_section_info |
818 | #undef TARGET_REGISTER_MOVE_COST |
819 | #define TARGET_REGISTER_MOVE_COST avr_register_move_cost |
820 | #undef TARGET_MEMORY_MOVE_COST |
821 | @@ -1133,8 +1135,7 @@ |
822 | true_regnum (XEXP (x, 0))); |
823 | debug_rtx (x); |
824 | } |
825 | - if (!strict && GET_CODE (x) == SUBREG) |
826 | - x = SUBREG_REG (x); |
827 | + |
828 | if (REG_P (x) && (strict ? REG_OK_FOR_BASE_STRICT_P (x) |
829 | : REG_OK_FOR_BASE_NOSTRICT_P (x))) |
830 | r = POINTER_REGS; |
831 | @@ -1476,9 +1477,8 @@ |
832 | { |
833 | rtx x = XEXP (src, 1); |
834 | |
835 | - if (GET_CODE (x) == CONST_INT |
836 | - && INTVAL (x) > 0 |
837 | - && INTVAL (x) != 6) |
838 | + if (CONST_INT_P (x) |
839 | + && IN_RANGE (INTVAL (x), 1, 5)) |
840 | { |
841 | cc_status.value1 = SET_DEST (set); |
842 | cc_status.flags |= CC_OVERFLOW_UNUSABLE; |
843 | @@ -3107,8 +3107,11 @@ |
844 | } |
845 | else if (register_operand (operands[2], QImode)) |
846 | { |
847 | - if (reg_unused_after (insn, operands[2])) |
848 | - op[3] = op[2]; |
849 | + if (reg_unused_after (insn, operands[2]) |
850 | + && !reg_overlap_mentioned_p (operands[0], operands[2])) |
851 | + { |
852 | + op[3] = op[2]; |
853 | + } |
854 | else |
855 | { |
856 | op[3] = tmp_reg_rtx; |
857 | @@ -4395,7 +4398,9 @@ |
858 | if (mode == DImode) |
859 | move_mode = QImode; |
860 | /* Make scratch smaller if needed. */ |
861 | - if (GET_MODE (scratch) == HImode && move_mode == QImode) |
862 | + if (SCRATCH != GET_CODE (scratch) |
863 | + && HImode == GET_MODE (scratch) |
864 | + && QImode == move_mode) |
865 | scratch = simplify_gen_subreg (move_mode, scratch, HImode, 0); |
866 | |
867 | move_size = GET_MODE_SIZE (move_mode); |
868 | @@ -4491,6 +4496,8 @@ |
869 | When this move occurs, it will break chain deadlock. |
870 | The scratch register is substituted for real move. */ |
871 | |
872 | + gcc_assert (SCRATCH != GET_CODE (scratch)); |
873 | + |
874 | move[size].src = move[blocked].dst; |
875 | move[size].dst = scratch; |
876 | /* Scratch move is never blocked. */ |
877 | @@ -4961,12 +4968,7 @@ |
878 | } |
879 | else if (TREE_STATIC (*node) || DECL_EXTERNAL (*node)) |
880 | { |
881 | - if (DECL_INITIAL (*node) == NULL_TREE && !DECL_EXTERNAL (*node)) |
882 | - { |
883 | - warning (0, "only initialized variables can be placed into " |
884 | - "program memory area"); |
885 | - *no_add_attrs = true; |
886 | - } |
887 | + *no_add_attrs = false; |
888 | } |
889 | else |
890 | { |
891 | @@ -5052,7 +5054,19 @@ |
892 | && (TREE_STATIC (node) || DECL_EXTERNAL (node)) |
893 | && avr_progmem_p (node, *attributes)) |
894 | { |
895 | - if (TREE_READONLY (node)) |
896 | + tree node0 = node; |
897 | + |
898 | + /* For C++, we have to peel arrays in order to get correct |
899 | + determination of readonlyness. */ |
900 | + |
901 | + do |
902 | + node0 = TREE_TYPE (node0); |
903 | + while (TREE_CODE (node0) == ARRAY_TYPE); |
904 | + |
905 | + if (error_mark_node == node0) |
906 | + return; |
907 | + |
908 | + if (TYPE_READONLY (node0)) |
909 | { |
910 | static const char dsec[] = ".progmem.data"; |
911 | |
912 | @@ -5107,9 +5121,36 @@ |
913 | ".noinit section"); |
914 | } |
915 | |
916 | + if (0 == strncmp (name, ".progmem.data", strlen (".progmem.data"))) |
917 | + flags &= ~SECTION_WRITE; |
918 | + |
919 | return flags; |
920 | } |
921 | |
922 | + |
923 | +/* Implement `TARGET_ENCODE_SECTION_INFO'. */ |
924 | + |
925 | +static void |
926 | +avr_encode_section_info (tree decl, rtx rtl, int new_decl_p) |
927 | +{ |
928 | + /* In avr_handle_progmem_attribute, DECL_INITIAL is not yet |
929 | + readily available, see PR34734. So we postpone the warning |
930 | + about uninitialized data in program memory section until here. */ |
931 | + |
932 | + if (new_decl_p |
933 | + && decl && DECL_P (decl) |
934 | + && NULL_TREE == DECL_INITIAL (decl) |
935 | + && avr_progmem_p (decl, DECL_ATTRIBUTES (decl))) |
936 | + { |
937 | + warning (OPT_Wuninitialized, |
938 | + "uninitialized variable %q+D put into " |
939 | + "program memory area", decl); |
940 | + } |
941 | + |
942 | + default_encode_section_info (decl, rtl, new_decl_p); |
943 | +} |
944 | + |
945 | + |
946 | /* Outputs some appropriate text to go at the start of an assembler |
947 | file. */ |
948 | |
949 | @@ -6048,26 +6089,30 @@ |
950 | int |
951 | avr_hard_regno_mode_ok (int regno, enum machine_mode mode) |
952 | { |
953 | - /* Disallow QImode in stack pointer regs. */ |
954 | - if ((regno == REG_SP || regno == (REG_SP + 1)) && mode == QImode) |
955 | - return 0; |
956 | - |
957 | - /* The only thing that can go into registers r28:r29 is a Pmode. */ |
958 | - if (regno == REG_Y && mode == Pmode) |
959 | - return 1; |
960 | - |
961 | - /* Otherwise disallow all regno/mode combinations that span r28:r29. */ |
962 | - if (regno <= (REG_Y + 1) && (regno + GET_MODE_SIZE (mode)) >= (REG_Y + 1)) |
963 | - return 0; |
964 | - |
965 | - if (mode == QImode) |
966 | - return 1; |
967 | - |
968 | - /* Modes larger than QImode occupy consecutive registers. */ |
969 | - if (regno + GET_MODE_SIZE (mode) > FIRST_PSEUDO_REGISTER) |
970 | - return 0; |
971 | - |
972 | - /* All modes larger than QImode should start in an even register. */ |
973 | + /* NOTE: 8-bit values must not be disallowed for R28 or R29. |
974 | + Disallowing QI et al. in these regs might lead to code like |
975 | + (set (subreg:QI (reg:HI 28) n) ...) |
976 | + which will result in wrong code because reload does not |
977 | + handle SUBREGs of hard regsisters like this. |
978 | + This could be fixed in reload. However, it appears |
979 | + that fixing reload is not wanted by reload people. */ |
980 | + |
981 | + /* Any GENERAL_REGS register can hold 8-bit values. */ |
982 | + |
983 | + if (GET_MODE_SIZE (mode) == 1) |
984 | + return 1; |
985 | + |
986 | + /* FIXME: Ideally, the following test is not needed. |
987 | + However, it turned out that it can reduce the number |
988 | + of spill fails. AVR and it's poor endowment with |
989 | + address registers is extreme stress test for reload. */ |
990 | + |
991 | + if (GET_MODE_SIZE (mode) >= 4 |
992 | + && regno >= REG_X) |
993 | + return 0; |
994 | + |
995 | + /* All modes larger than 8 bits should start in an even register. */ |
996 | + |
997 | return !(regno & 1); |
998 | } |
999 | |
1000 | @@ -6194,13 +6239,23 @@ |
1001 | && !df_regs_ever_live_p (regno)) |
1002 | return false; |
1003 | |
1004 | + /* Don't allow hard registers that might be part of the frame pointer. |
1005 | + Some places in the compiler just test for [HARD_]FRAME_POINTER_REGNUM |
1006 | + and don't care for a frame pointer that spans more than one register. */ |
1007 | + |
1008 | + if ((!reload_completed || frame_pointer_needed) |
1009 | + && (regno == REG_Y || regno == REG_Y + 1)) |
1010 | + { |
1011 | + return false; |
1012 | + } |
1013 | + |
1014 | return true; |
1015 | } |
1016 | |
1017 | /* Return nonzero if register OLD_REG can be renamed to register NEW_REG. */ |
1018 | |
1019 | int |
1020 | -avr_hard_regno_rename_ok (unsigned int old_reg ATTRIBUTE_UNUSED, |
1021 | +avr_hard_regno_rename_ok (unsigned int old_reg, |
1022 | unsigned int new_reg) |
1023 | { |
1024 | /* Interrupt functions can only use registers that have already been |
1025 | @@ -6211,6 +6266,17 @@ |
1026 | && !df_regs_ever_live_p (new_reg)) |
1027 | return 0; |
1028 | |
1029 | + /* Don't allow hard registers that might be part of the frame pointer. |
1030 | + Some places in the compiler just test for [HARD_]FRAME_POINTER_REGNUM |
1031 | + and don't care for a frame pointer that spans more than one register. */ |
1032 | + |
1033 | + if ((!reload_completed || frame_pointer_needed) |
1034 | + && (old_reg == REG_Y || old_reg == REG_Y + 1 |
1035 | + || new_reg == REG_Y || new_reg == REG_Y + 1)) |
1036 | + { |
1037 | + return 0; |
1038 | + } |
1039 | + |
1040 | return 1; |
1041 | } |
1042 | |
1043 | |
1044 | === modified file 'gcc/config/avr/avr.md' |
1045 | --- gcc/config/avr/avr.md 2011-06-14 19:12:53 +0000 |
1046 | +++ gcc/config/avr/avr.md 2011-08-13 08:58:15 +0000 |
1047 | @@ -1514,18 +1514,18 @@ |
1048 | (match_operand:VOID 2 "const_int_operand" ""))) |
1049 | (clobber (match_operand 3 ""))])] |
1050 | "" |
1051 | - " |
1052 | -{ |
1053 | - if (CONST_INT_P (operands[2]) && 0 == (INTVAL (operands[2]) % 8)) |
1054 | { |
1055 | - if (AVR_HAVE_MOVW && 0 == INTVAL (operands[2]) % 16) |
1056 | - operands[3] = gen_reg_rtx (<rotsmode>mode); |
1057 | - else |
1058 | - operands[3] = gen_reg_rtx (QImode); |
1059 | - } |
1060 | - else |
1061 | - FAIL; |
1062 | -}") |
1063 | + if (CONST_INT_P (operands[2]) |
1064 | + && 0 == INTVAL (operands[2]) % 8) |
1065 | + { |
1066 | + if (AVR_HAVE_MOVW && 0 == INTVAL (operands[2]) % 16) |
1067 | + operands[3] = gen_rtx_SCRATCH (<rotsmode>mode); |
1068 | + else |
1069 | + operands[3] = gen_rtx_SCRATCH (QImode); |
1070 | + } |
1071 | + else |
1072 | + FAIL; |
1073 | + }) |
1074 | |
1075 | |
1076 | ;; Overlapping non-HImode registers often (but not always) need a scratch. |
1077 | @@ -1537,34 +1537,38 @@ |
1078 | ; Split word aligned rotates using scratch that is mode dependent. |
1079 | (define_insn_and_split "*rotw<mode>" |
1080 | [(set (match_operand:HIDI 0 "register_operand" "=r,r,#&r") |
1081 | - (rotate:HIDI (match_operand:HIDI 1 "register_operand" "0,r,r") |
1082 | - (match_operand 2 "immediate_operand" "n,n,n"))) |
1083 | - (clobber (match_operand:<rotsmode> 3 "register_operand" "=<rotx>" ))] |
1084 | - "(CONST_INT_P (operands[2]) && |
1085 | - (0 == (INTVAL (operands[2]) % 16) && AVR_HAVE_MOVW))" |
1086 | + (rotate:HIDI (match_operand:HIDI 1 "register_operand" "0,r,r") |
1087 | + (match_operand 2 "const_int_operand" "n,n,n"))) |
1088 | + (clobber (match_scratch:<rotsmode> 3 "=<rotx>"))] |
1089 | + "AVR_HAVE_MOVW |
1090 | + && CONST_INT_P (operands[2]) |
1091 | + && 0 == INTVAL (operands[2]) % 16" |
1092 | "#" |
1093 | "&& (reload_completed || <MODE>mode == DImode)" |
1094 | [(const_int 0)] |
1095 | - "avr_rotate_bytes (operands); |
1096 | - DONE;" |
1097 | -) |
1098 | + { |
1099 | + avr_rotate_bytes (operands); |
1100 | + DONE; |
1101 | + }) |
1102 | |
1103 | |
1104 | ; Split byte aligned rotates using scratch that is always QI mode. |
1105 | (define_insn_and_split "*rotb<mode>" |
1106 | [(set (match_operand:HIDI 0 "register_operand" "=r,r,#&r") |
1107 | - (rotate:HIDI (match_operand:HIDI 1 "register_operand" "0,r,r") |
1108 | - (match_operand 2 "immediate_operand" "n,n,n"))) |
1109 | - (clobber (match_operand:QI 3 "register_operand" "=<rotx>" ))] |
1110 | - "(CONST_INT_P (operands[2]) && |
1111 | - (8 == (INTVAL (operands[2]) % 16) |
1112 | - || (!AVR_HAVE_MOVW && 0 == (INTVAL (operands[2]) % 16))))" |
1113 | + (rotate:HIDI (match_operand:HIDI 1 "register_operand" "0,r,r") |
1114 | + (match_operand 2 "const_int_operand" "n,n,n"))) |
1115 | + (clobber (match_scratch:QI 3 "=<rotx>"))] |
1116 | + "CONST_INT_P (operands[2]) |
1117 | + && (8 == INTVAL (operands[2]) % 16 |
1118 | + || (!AVR_HAVE_MOVW |
1119 | + && 0 == INTVAL (operands[2]) % 16))" |
1120 | "#" |
1121 | "&& (reload_completed || <MODE>mode == DImode)" |
1122 | [(const_int 0)] |
1123 | - "avr_rotate_bytes (operands); |
1124 | - DONE;" |
1125 | -) |
1126 | + { |
1127 | + avr_rotate_bytes (operands); |
1128 | + DONE; |
1129 | + }) |
1130 | |
1131 | |
1132 | ;;<< << << << << << << << << << << << << << << << << << << << << << << << << << |
1133 | |
1134 | === modified file 'gcc/config/i386/constraints.md' |
1135 | --- gcc/config/i386/constraints.md 2011-05-16 20:29:20 +0000 |
1136 | +++ gcc/config/i386/constraints.md 2011-08-13 08:58:15 +0000 |
1137 | @@ -19,7 +19,7 @@ |
1138 | |
1139 | ;;; Unused letters: |
1140 | ;;; B H T W |
1141 | -;;; h jk vw z |
1142 | +;;; h jk vw |
1143 | |
1144 | ;; Integer register constraints. |
1145 | ;; It is not necessary to define 'r' here. |
1146 | @@ -105,6 +105,10 @@ |
1147 | "TARGET_MMX && TARGET_INTER_UNIT_MOVES ? MMX_REGS : NO_REGS" |
1148 | "@internal Any MMX register, when inter-unit moves are enabled.") |
1149 | |
1150 | +(define_constraint "z" |
1151 | + "@internal Constant call address operand." |
1152 | + (match_operand 0 "constant_call_address_operand")) |
1153 | + |
1154 | ;; Integer constant constraints. |
1155 | (define_constraint "I" |
1156 | "Integer constant in the range 0 @dots{} 31, for 32-bit shifts." |
1157 | |
1158 | === modified file 'gcc/config/i386/i386.c' |
1159 | --- gcc/config/i386/i386.c 2011-06-29 20:15:32 +0000 |
1160 | +++ gcc/config/i386/i386.c 2011-08-13 08:58:15 +0000 |
1161 | @@ -3412,6 +3412,11 @@ |
1162 | PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 |
1163 | | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX |
1164 | | PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL}, |
1165 | + {"core-avx-i", PROCESSOR_COREI7_64, CPU_COREI7, |
1166 | + PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 |
1167 | + | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX |
1168 | + | PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL | PTA_FSGSBASE |
1169 | + | PTA_RDRND | PTA_F16C}, |
1170 | {"atom", PROCESSOR_ATOM, CPU_ATOM, |
1171 | PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 |
1172 | | PTA_SSSE3 | PTA_CX16 | PTA_MOVBE}, |
1173 | |
1174 | === modified file 'gcc/config/i386/i386.md' |
1175 | --- gcc/config/i386/i386.md 2011-05-16 20:29:20 +0000 |
1176 | +++ gcc/config/i386/i386.md 2011-08-13 08:58:15 +0000 |
1177 | @@ -5280,11 +5280,20 @@ |
1178 | if (GET_CODE (op1) == SUBREG) |
1179 | op1 = SUBREG_REG (op1); |
1180 | |
1181 | - if (GENERAL_REG_P (op1) && TARGET_INTER_UNIT_MOVES) |
1182 | + if (GENERAL_REG_P (op1)) |
1183 | { |
1184 | operands[4] = simplify_gen_subreg (V4SImode, operands[0], <MODE>mode, 0); |
1185 | - emit_insn (gen_sse2_loadld (operands[4], |
1186 | - CONST0_RTX (V4SImode), operands[1])); |
1187 | + if (TARGET_INTER_UNIT_MOVES) |
1188 | + emit_insn (gen_sse2_loadld (operands[4], |
1189 | + CONST0_RTX (V4SImode), operands[1])); |
1190 | + else |
1191 | + { |
1192 | + operands[5] = ix86_force_to_memory (GET_MODE (operands[1]), |
1193 | + operands[1]); |
1194 | + emit_insn (gen_sse2_loadld (operands[4], |
1195 | + CONST0_RTX (V4SImode), operands[5])); |
1196 | + ix86_free_from_memory (GET_MODE (operands[1])); |
1197 | + } |
1198 | } |
1199 | /* We can ignore possible trapping value in the |
1200 | high part of SSE register for non-trapping math. */ |
1201 | @@ -11341,7 +11350,7 @@ |
1202 | |
1203 | (define_insn_and_split "*call_pop_1_vzeroupper" |
1204 | [(parallel |
1205 | - [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm")) |
1206 | + [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm")) |
1207 | (match_operand:SI 1 "" "")) |
1208 | (set (reg:SI SP_REG) |
1209 | (plus:SI (reg:SI SP_REG) |
1210 | @@ -11356,7 +11365,7 @@ |
1211 | [(set_attr "type" "call")]) |
1212 | |
1213 | (define_insn "*call_pop_1" |
1214 | - [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm")) |
1215 | + [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm")) |
1216 | (match_operand:SI 1 "" "")) |
1217 | (set (reg:SI SP_REG) |
1218 | (plus:SI (reg:SI SP_REG) |
1219 | @@ -11371,7 +11380,7 @@ |
1220 | |
1221 | (define_insn_and_split "*sibcall_pop_1_vzeroupper" |
1222 | [(parallel |
1223 | - [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U")) |
1224 | + [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U")) |
1225 | (match_operand:SI 1 "" "")) |
1226 | (set (reg:SI SP_REG) |
1227 | (plus:SI (reg:SI SP_REG) |
1228 | @@ -11386,7 +11395,7 @@ |
1229 | [(set_attr "type" "call")]) |
1230 | |
1231 | (define_insn "*sibcall_pop_1" |
1232 | - [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U")) |
1233 | + [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U")) |
1234 | (match_operand:SI 1 "" "")) |
1235 | (set (reg:SI SP_REG) |
1236 | (plus:SI (reg:SI SP_REG) |
1237 | @@ -11437,7 +11446,7 @@ |
1238 | [(set_attr "type" "call")]) |
1239 | |
1240 | (define_insn_and_split "*call_1_vzeroupper" |
1241 | - [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm")) |
1242 | + [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm")) |
1243 | (match_operand 1 "" "")) |
1244 | (unspec [(match_operand 2 "const_int_operand" "")] |
1245 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1246 | @@ -11449,14 +11458,14 @@ |
1247 | [(set_attr "type" "call")]) |
1248 | |
1249 | (define_insn "*call_1" |
1250 | - [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm")) |
1251 | + [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm")) |
1252 | (match_operand 1 "" ""))] |
1253 | "!TARGET_64BIT && !SIBLING_CALL_P (insn)" |
1254 | { return ix86_output_call_insn (insn, operands[0], 0); } |
1255 | [(set_attr "type" "call")]) |
1256 | |
1257 | (define_insn_and_split "*sibcall_1_vzeroupper" |
1258 | - [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U")) |
1259 | + [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U")) |
1260 | (match_operand 1 "" "")) |
1261 | (unspec [(match_operand 2 "const_int_operand" "")] |
1262 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1263 | @@ -11468,14 +11477,14 @@ |
1264 | [(set_attr "type" "call")]) |
1265 | |
1266 | (define_insn "*sibcall_1" |
1267 | - [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U")) |
1268 | + [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U")) |
1269 | (match_operand 1 "" ""))] |
1270 | "!TARGET_64BIT && SIBLING_CALL_P (insn)" |
1271 | { return ix86_output_call_insn (insn, operands[0], 0); } |
1272 | [(set_attr "type" "call")]) |
1273 | |
1274 | (define_insn_and_split "*call_1_rex64_vzeroupper" |
1275 | - [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm")) |
1276 | + [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm")) |
1277 | (match_operand 1 "" "")) |
1278 | (unspec [(match_operand 2 "const_int_operand" "")] |
1279 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1280 | @@ -11488,7 +11497,7 @@ |
1281 | [(set_attr "type" "call")]) |
1282 | |
1283 | (define_insn "*call_1_rex64" |
1284 | - [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm")) |
1285 | + [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm")) |
1286 | (match_operand 1 "" ""))] |
1287 | "TARGET_64BIT && !SIBLING_CALL_P (insn) |
1288 | && ix86_cmodel != CM_LARGE && ix86_cmodel != CM_LARGE_PIC" |
1289 | @@ -11497,7 +11506,7 @@ |
1290 | |
1291 | (define_insn_and_split "*call_1_rex64_ms_sysv_vzeroupper" |
1292 | [(parallel |
1293 | - [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm")) |
1294 | + [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm")) |
1295 | (match_operand 1 "" "")) |
1296 | (unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL) |
1297 | (clobber (reg:TI XMM6_REG)) |
1298 | @@ -11522,7 +11531,7 @@ |
1299 | [(set_attr "type" "call")]) |
1300 | |
1301 | (define_insn "*call_1_rex64_ms_sysv" |
1302 | - [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm")) |
1303 | + [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm")) |
1304 | (match_operand 1 "" "")) |
1305 | (unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL) |
1306 | (clobber (reg:TI XMM6_REG)) |
1307 | @@ -11561,7 +11570,7 @@ |
1308 | [(set_attr "type" "call")]) |
1309 | |
1310 | (define_insn_and_split "*sibcall_1_rex64_vzeroupper" |
1311 | - [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "s,U")) |
1312 | + [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "z,U")) |
1313 | (match_operand 1 "" "")) |
1314 | (unspec [(match_operand 2 "const_int_operand" "")] |
1315 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1316 | @@ -11573,7 +11582,7 @@ |
1317 | [(set_attr "type" "call")]) |
1318 | |
1319 | (define_insn "*sibcall_1_rex64" |
1320 | - [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "s,U")) |
1321 | + [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "z,U")) |
1322 | (match_operand 1 "" ""))] |
1323 | "TARGET_64BIT && SIBLING_CALL_P (insn)" |
1324 | { return ix86_output_call_insn (insn, operands[0], 0); } |
1325 | @@ -15699,7 +15708,8 @@ |
1326 | (set (match_operand:DI 1 "register_operand" "=S") |
1327 | (plus:DI (match_dup 3) |
1328 | (const_int 8)))] |
1329 | - "TARGET_64BIT" |
1330 | + "TARGET_64BIT |
1331 | + && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1332 | "movsq" |
1333 | [(set_attr "type" "str") |
1334 | (set_attr "memory" "both") |
1335 | @@ -15714,7 +15724,7 @@ |
1336 | (set (match_operand:P 1 "register_operand" "=S") |
1337 | (plus:P (match_dup 3) |
1338 | (const_int 4)))] |
1339 | - "" |
1340 | + "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1341 | "movs{l|d}" |
1342 | [(set_attr "type" "str") |
1343 | (set_attr "memory" "both") |
1344 | @@ -15729,7 +15739,7 @@ |
1345 | (set (match_operand:P 1 "register_operand" "=S") |
1346 | (plus:P (match_dup 3) |
1347 | (const_int 2)))] |
1348 | - "" |
1349 | + "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1350 | "movsw" |
1351 | [(set_attr "type" "str") |
1352 | (set_attr "memory" "both") |
1353 | @@ -15744,7 +15754,7 @@ |
1354 | (set (match_operand:P 1 "register_operand" "=S") |
1355 | (plus:P (match_dup 3) |
1356 | (const_int 1)))] |
1357 | - "" |
1358 | + "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1359 | "movsb" |
1360 | [(set_attr "type" "str") |
1361 | (set_attr "memory" "both") |
1362 | @@ -15779,7 +15789,8 @@ |
1363 | (set (mem:BLK (match_dup 3)) |
1364 | (mem:BLK (match_dup 4))) |
1365 | (use (match_dup 5))] |
1366 | - "TARGET_64BIT" |
1367 | + "TARGET_64BIT |
1368 | + && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1369 | "rep{%;} movsq" |
1370 | [(set_attr "type" "str") |
1371 | (set_attr "prefix_rep" "1") |
1372 | @@ -15798,7 +15809,7 @@ |
1373 | (set (mem:BLK (match_dup 3)) |
1374 | (mem:BLK (match_dup 4))) |
1375 | (use (match_dup 5))] |
1376 | - "" |
1377 | + "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1378 | "rep{%;} movs{l|d}" |
1379 | [(set_attr "type" "str") |
1380 | (set_attr "prefix_rep" "1") |
1381 | @@ -15815,7 +15826,7 @@ |
1382 | (set (mem:BLK (match_dup 3)) |
1383 | (mem:BLK (match_dup 4))) |
1384 | (use (match_dup 5))] |
1385 | - "" |
1386 | + "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1387 | "rep{%;} movsb" |
1388 | [(set_attr "type" "str") |
1389 | (set_attr "prefix_rep" "1") |
1390 | @@ -15858,7 +15869,9 @@ |
1391 | operands[3] = gen_rtx_PLUS (Pmode, operands[0], |
1392 | GEN_INT (GET_MODE_SIZE (GET_MODE |
1393 | (operands[2])))); |
1394 | - if (TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ()) |
1395 | + /* Can't use this if the user has appropriated eax or edi. */ |
1396 | + if ((TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ()) |
1397 | + && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])) |
1398 | { |
1399 | emit_insn (gen_strset_singleop (operands[0], operands[1], operands[2], |
1400 | operands[3])); |
1401 | @@ -15880,7 +15893,8 @@ |
1402 | (set (match_operand:DI 0 "register_operand" "=D") |
1403 | (plus:DI (match_dup 1) |
1404 | (const_int 8)))] |
1405 | - "TARGET_64BIT" |
1406 | + "TARGET_64BIT |
1407 | + && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])" |
1408 | "stosq" |
1409 | [(set_attr "type" "str") |
1410 | (set_attr "memory" "store") |
1411 | @@ -15892,7 +15906,7 @@ |
1412 | (set (match_operand:P 0 "register_operand" "=D") |
1413 | (plus:P (match_dup 1) |
1414 | (const_int 4)))] |
1415 | - "" |
1416 | + "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" |
1417 | "stos{l|d}" |
1418 | [(set_attr "type" "str") |
1419 | (set_attr "memory" "store") |
1420 | @@ -15904,7 +15918,7 @@ |
1421 | (set (match_operand:P 0 "register_operand" "=D") |
1422 | (plus:P (match_dup 1) |
1423 | (const_int 2)))] |
1424 | - "" |
1425 | + "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" |
1426 | "stosw" |
1427 | [(set_attr "type" "str") |
1428 | (set_attr "memory" "store") |
1429 | @@ -15916,7 +15930,7 @@ |
1430 | (set (match_operand:P 0 "register_operand" "=D") |
1431 | (plus:P (match_dup 1) |
1432 | (const_int 1)))] |
1433 | - "" |
1434 | + "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])" |
1435 | "stosb" |
1436 | [(set_attr "type" "str") |
1437 | (set_attr "memory" "store") |
1438 | @@ -15947,7 +15961,8 @@ |
1439 | (const_int 0)) |
1440 | (use (match_operand:DI 2 "register_operand" "a")) |
1441 | (use (match_dup 4))] |
1442 | - "TARGET_64BIT" |
1443 | + "TARGET_64BIT |
1444 | + && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" |
1445 | "rep{%;} stosq" |
1446 | [(set_attr "type" "str") |
1447 | (set_attr "prefix_rep" "1") |
1448 | @@ -15964,7 +15979,7 @@ |
1449 | (const_int 0)) |
1450 | (use (match_operand:SI 2 "register_operand" "a")) |
1451 | (use (match_dup 4))] |
1452 | - "" |
1453 | + "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" |
1454 | "rep{%;} stos{l|d}" |
1455 | [(set_attr "type" "str") |
1456 | (set_attr "prefix_rep" "1") |
1457 | @@ -15980,7 +15995,7 @@ |
1458 | (const_int 0)) |
1459 | (use (match_operand:QI 2 "register_operand" "a")) |
1460 | (use (match_dup 4))] |
1461 | - "" |
1462 | + "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" |
1463 | "rep{%;} stosb" |
1464 | [(set_attr "type" "str") |
1465 | (set_attr "prefix_rep" "1") |
1466 | @@ -16005,8 +16020,8 @@ |
1467 | if (optimize_insn_for_size_p () && !TARGET_INLINE_ALL_STRINGOPS) |
1468 | FAIL; |
1469 | |
1470 | - /* Can't use this if the user has appropriated esi or edi. */ |
1471 | - if (fixed_regs[SI_REG] || fixed_regs[DI_REG]) |
1472 | + /* Can't use this if the user has appropriated ecx, esi or edi. */ |
1473 | + if (fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG]) |
1474 | FAIL; |
1475 | |
1476 | out = operands[0]; |
1477 | @@ -16101,7 +16116,7 @@ |
1478 | (clobber (match_operand:P 0 "register_operand" "=S")) |
1479 | (clobber (match_operand:P 1 "register_operand" "=D")) |
1480 | (clobber (match_operand:P 2 "register_operand" "=c"))] |
1481 | - "" |
1482 | + "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1483 | "repz{%;} cmpsb" |
1484 | [(set_attr "type" "str") |
1485 | (set_attr "mode" "QI") |
1486 | @@ -16141,7 +16156,7 @@ |
1487 | (clobber (match_operand:P 0 "register_operand" "=S")) |
1488 | (clobber (match_operand:P 1 "register_operand" "=D")) |
1489 | (clobber (match_operand:P 2 "register_operand" "=c"))] |
1490 | - "" |
1491 | + "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])" |
1492 | "repz{%;} cmpsb" |
1493 | [(set_attr "type" "str") |
1494 | (set_attr "mode" "QI") |
1495 | @@ -16153,11 +16168,11 @@ |
1496 | (set_attr "prefix_rep" "1")]) |
1497 | |
1498 | (define_expand "strlen<mode>" |
1499 | - [(set (match_operand:SWI48x 0 "register_operand" "") |
1500 | - (unspec:SWI48x [(match_operand:BLK 1 "general_operand" "") |
1501 | - (match_operand:QI 2 "immediate_operand" "") |
1502 | - (match_operand 3 "immediate_operand" "")] |
1503 | - UNSPEC_SCAS))] |
1504 | + [(set (match_operand:P 0 "register_operand" "") |
1505 | + (unspec:P [(match_operand:BLK 1 "general_operand" "") |
1506 | + (match_operand:QI 2 "immediate_operand" "") |
1507 | + (match_operand 3 "immediate_operand" "")] |
1508 | + UNSPEC_SCAS))] |
1509 | "" |
1510 | { |
1511 | if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3])) |
1512 | @@ -16182,7 +16197,7 @@ |
1513 | (match_operand:P 4 "register_operand" "0")] UNSPEC_SCAS)) |
1514 | (clobber (match_operand:P 1 "register_operand" "=D")) |
1515 | (clobber (reg:CC FLAGS_REG))] |
1516 | - "" |
1517 | + "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])" |
1518 | "repnz{%;} scasb" |
1519 | [(set_attr "type" "str") |
1520 | (set_attr "mode" "QI") |
1521 | @@ -17567,7 +17582,7 @@ |
1522 | (define_insn_and_split "*call_value_pop_1_vzeroupper" |
1523 | [(parallel |
1524 | [(set (match_operand 0 "" "") |
1525 | - (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm")) |
1526 | + (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm")) |
1527 | (match_operand:SI 2 "" ""))) |
1528 | (set (reg:SI SP_REG) |
1529 | (plus:SI (reg:SI SP_REG) |
1530 | @@ -17583,7 +17598,7 @@ |
1531 | |
1532 | (define_insn "*call_value_pop_1" |
1533 | [(set (match_operand 0 "" "") |
1534 | - (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm")) |
1535 | + (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm")) |
1536 | (match_operand:SI 2 "" ""))) |
1537 | (set (reg:SI SP_REG) |
1538 | (plus:SI (reg:SI SP_REG) |
1539 | @@ -17595,7 +17610,7 @@ |
1540 | (define_insn_and_split "*sibcall_value_pop_1_vzeroupper" |
1541 | [(parallel |
1542 | [(set (match_operand 0 "" "") |
1543 | - (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U")) |
1544 | + (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U")) |
1545 | (match_operand:SI 2 "" ""))) |
1546 | (set (reg:SI SP_REG) |
1547 | (plus:SI (reg:SI SP_REG) |
1548 | @@ -17611,7 +17626,7 @@ |
1549 | |
1550 | (define_insn "*sibcall_value_pop_1" |
1551 | [(set (match_operand 0 "" "") |
1552 | - (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U")) |
1553 | + (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U")) |
1554 | (match_operand:SI 2 "" ""))) |
1555 | (set (reg:SI SP_REG) |
1556 | (plus:SI (reg:SI SP_REG) |
1557 | @@ -17712,7 +17727,7 @@ |
1558 | |
1559 | (define_insn_and_split "*call_value_1_vzeroupper" |
1560 | [(set (match_operand 0 "" "") |
1561 | - (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm")) |
1562 | + (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm")) |
1563 | (match_operand:SI 2 "" ""))) |
1564 | (unspec [(match_operand 3 "const_int_operand" "")] |
1565 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1566 | @@ -17725,7 +17740,7 @@ |
1567 | |
1568 | (define_insn "*call_value_1" |
1569 | [(set (match_operand 0 "" "") |
1570 | - (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm")) |
1571 | + (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm")) |
1572 | (match_operand:SI 2 "" "")))] |
1573 | "!TARGET_64BIT && !SIBLING_CALL_P (insn)" |
1574 | { return ix86_output_call_insn (insn, operands[1], 1); } |
1575 | @@ -17733,7 +17748,7 @@ |
1576 | |
1577 | (define_insn_and_split "*sibcall_value_1_vzeroupper" |
1578 | [(set (match_operand 0 "" "") |
1579 | - (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U")) |
1580 | + (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U")) |
1581 | (match_operand:SI 2 "" ""))) |
1582 | (unspec [(match_operand 3 "const_int_operand" "")] |
1583 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1584 | @@ -17746,7 +17761,7 @@ |
1585 | |
1586 | (define_insn "*sibcall_value_1" |
1587 | [(set (match_operand 0 "" "") |
1588 | - (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U")) |
1589 | + (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U")) |
1590 | (match_operand:SI 2 "" "")))] |
1591 | "!TARGET_64BIT && SIBLING_CALL_P (insn)" |
1592 | { return ix86_output_call_insn (insn, operands[1], 1); } |
1593 | @@ -17754,7 +17769,7 @@ |
1594 | |
1595 | (define_insn_and_split "*call_value_1_rex64_vzeroupper" |
1596 | [(set (match_operand 0 "" "") |
1597 | - (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm")) |
1598 | + (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm")) |
1599 | (match_operand:DI 2 "" ""))) |
1600 | (unspec [(match_operand 3 "const_int_operand" "")] |
1601 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1602 | @@ -17768,7 +17783,7 @@ |
1603 | |
1604 | (define_insn "*call_value_1_rex64" |
1605 | [(set (match_operand 0 "" "") |
1606 | - (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm")) |
1607 | + (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm")) |
1608 | (match_operand:DI 2 "" "")))] |
1609 | "TARGET_64BIT && !SIBLING_CALL_P (insn) |
1610 | && ix86_cmodel != CM_LARGE && ix86_cmodel != CM_LARGE_PIC" |
1611 | @@ -17778,7 +17793,7 @@ |
1612 | (define_insn_and_split "*call_value_1_rex64_ms_sysv_vzeroupper" |
1613 | [(parallel |
1614 | [(set (match_operand 0 "" "") |
1615 | - (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm")) |
1616 | + (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm")) |
1617 | (match_operand:DI 2 "" ""))) |
1618 | (unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL) |
1619 | (clobber (reg:TI XMM6_REG)) |
1620 | @@ -17804,7 +17819,7 @@ |
1621 | |
1622 | (define_insn "*call_value_1_rex64_ms_sysv" |
1623 | [(set (match_operand 0 "" "") |
1624 | - (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm")) |
1625 | + (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm")) |
1626 | (match_operand:DI 2 "" ""))) |
1627 | (unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL) |
1628 | (clobber (reg:TI XMM6_REG)) |
1629 | @@ -17846,7 +17861,7 @@ |
1630 | |
1631 | (define_insn_and_split "*sibcall_value_1_rex64_vzeroupper" |
1632 | [(set (match_operand 0 "" "") |
1633 | - (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "s,U")) |
1634 | + (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "z,U")) |
1635 | (match_operand:DI 2 "" ""))) |
1636 | (unspec [(match_operand 3 "const_int_operand" "")] |
1637 | UNSPEC_CALL_NEEDS_VZEROUPPER)] |
1638 | @@ -17859,7 +17874,7 @@ |
1639 | |
1640 | (define_insn "*sibcall_value_1_rex64" |
1641 | [(set (match_operand 0 "" "") |
1642 | - (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "s,U")) |
1643 | + (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "z,U")) |
1644 | (match_operand:DI 2 "" "")))] |
1645 | "TARGET_64BIT && SIBLING_CALL_P (insn)" |
1646 | { return ix86_output_call_insn (insn, operands[1], 1); } |
1647 | |
1648 | === modified file 'gcc/config/m68k/m68k.c' |
1649 | --- gcc/config/m68k/m68k.c 2010-12-12 14:03:55 +0000 |
1650 | +++ gcc/config/m68k/m68k.c 2011-08-13 08:58:15 +0000 |
1651 | @@ -136,6 +136,7 @@ |
1652 | static bool m68k_legitimate_address_p (enum machine_mode, rtx, bool); |
1653 | static bool m68k_handle_option (size_t, const char *, int); |
1654 | static void m68k_option_override (void); |
1655 | +static void m68k_override_options_after_change (void); |
1656 | static rtx find_addr_reg (rtx); |
1657 | static const char *singlemove_string (rtx *); |
1658 | static void m68k_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, |
1659 | @@ -241,6 +242,9 @@ |
1660 | #undef TARGET_OPTION_OVERRIDE |
1661 | #define TARGET_OPTION_OVERRIDE m68k_option_override |
1662 | |
1663 | +#undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE |
1664 | +#define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE m68k_override_options_after_change |
1665 | + |
1666 | #undef TARGET_RTX_COSTS |
1667 | #define TARGET_RTX_COSTS m68k_rtx_costs |
1668 | |
1669 | @@ -756,6 +760,19 @@ |
1670 | } |
1671 | } |
1672 | |
1673 | +/* Implement TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE. */ |
1674 | + |
1675 | +static void |
1676 | +m68k_override_options_after_change (void) |
1677 | +{ |
1678 | + if (m68k_sched_cpu == CPU_UNKNOWN) |
1679 | + { |
1680 | + flag_schedule_insns = 0; |
1681 | + flag_schedule_insns_after_reload = 0; |
1682 | + flag_modulo_sched = 0; |
1683 | + } |
1684 | +} |
1685 | + |
1686 | /* Generate a macro of the form __mPREFIX_cpu_NAME, where PREFIX is the |
1687 | given argument and NAME is the argument passed to -mcpu. Return NULL |
1688 | if -mcpu was not passed. */ |
1689 | |
1690 | === modified file 'gcc/config/pa/pa.md' |
1691 | --- gcc/config/pa/pa.md 2011-04-20 23:36:20 +0000 |
1692 | +++ gcc/config/pa/pa.md 2011-08-13 08:58:15 +0000 |
1693 | @@ -811,7 +811,7 @@ |
1694 | (match_operand:DI 3 "arith11_operand" "rI")) |
1695 | (match_operand:DI 1 "register_operand" "r")))] |
1696 | "TARGET_64BIT" |
1697 | - "sub%I3,* %3,%2,%%r0\;add,dc %%r0,%1,%0" |
1698 | + "sub%I3 %3,%2,%%r0\;add,dc %%r0,%1,%0" |
1699 | [(set_attr "type" "binary") |
1700 | (set_attr "length" "8")]) |
1701 | |
1702 | @@ -833,7 +833,7 @@ |
1703 | (match_operand:DI 3 "register_operand" "r")) |
1704 | (match_operand:DI 1 "register_operand" "r")))] |
1705 | "TARGET_64BIT" |
1706 | - "sub,* %2,%3,%%r0\;add,dc %%r0,%1,%0" |
1707 | + "sub %2,%3,%%r0\;add,dc %%r0,%1,%0" |
1708 | [(set_attr "type" "binary") |
1709 | (set_attr "length" "8")]) |
1710 | |
1711 | @@ -856,7 +856,7 @@ |
1712 | (match_operand:DI 3 "int11_operand" "I")) |
1713 | (match_operand:DI 1 "register_operand" "r")))] |
1714 | "TARGET_64BIT" |
1715 | - "addi,* %k3,%2,%%r0\;add,dc %%r0,%1,%0" |
1716 | + "addi %k3,%2,%%r0\;add,dc %%r0,%1,%0" |
1717 | [(set_attr "type" "binary") |
1718 | (set_attr "length" "8")]) |
1719 | |
1720 | @@ -902,7 +902,7 @@ |
1721 | (gtu:DI (match_operand:DI 2 "register_operand" "r") |
1722 | (match_operand:DI 3 "arith11_operand" "rI"))))] |
1723 | "TARGET_64BIT" |
1724 | - "sub%I3,* %3,%2,%%r0\;sub,db %1,%%r0,%0" |
1725 | + "sub%I3 %3,%2,%%r0\;sub,db %1,%%r0,%0" |
1726 | [(set_attr "type" "binary") |
1727 | (set_attr "length" "8")]) |
1728 | |
1729 | @@ -924,7 +924,7 @@ |
1730 | (match_operand:DI 3 "arith11_operand" "rI"))) |
1731 | (match_operand:DI 4 "register_operand" "r")))] |
1732 | "TARGET_64BIT" |
1733 | - "sub%I3,* %3,%2,%%r0\;sub,db %1,%4,%0" |
1734 | + "sub%I3 %3,%2,%%r0\;sub,db %1,%4,%0" |
1735 | [(set_attr "type" "binary") |
1736 | (set_attr "length" "8")]) |
1737 | |
1738 | @@ -946,7 +946,7 @@ |
1739 | (ltu:DI (match_operand:DI 2 "register_operand" "r") |
1740 | (match_operand:DI 3 "register_operand" "r"))))] |
1741 | "TARGET_64BIT" |
1742 | - "sub,* %2,%3,%%r0\;sub,db %1,%%r0,%0" |
1743 | + "sub %2,%3,%%r0\;sub,db %1,%%r0,%0" |
1744 | [(set_attr "type" "binary") |
1745 | (set_attr "length" "8")]) |
1746 | |
1747 | @@ -968,7 +968,7 @@ |
1748 | (match_operand:DI 3 "register_operand" "r"))) |
1749 | (match_operand:DI 4 "register_operand" "r")))] |
1750 | "TARGET_64BIT" |
1751 | - "sub,* %2,%3,%%r0\;sub,db %1,%4,%0" |
1752 | + "sub %2,%3,%%r0\;sub,db %1,%4,%0" |
1753 | [(set_attr "type" "binary") |
1754 | (set_attr "length" "8")]) |
1755 | |
1756 | @@ -991,7 +991,7 @@ |
1757 | (leu:DI (match_operand:DI 2 "register_operand" "r") |
1758 | (match_operand:DI 3 "int11_operand" "I"))))] |
1759 | "TARGET_64BIT" |
1760 | - "addi,* %k3,%2,%%r0\;sub,db %1,%%r0,%0" |
1761 | + "addi %k3,%2,%%r0\;sub,db %1,%%r0,%0" |
1762 | [(set_attr "type" "binary") |
1763 | (set_attr "length" "8")]) |
1764 | |
1765 | @@ -1013,7 +1013,7 @@ |
1766 | (match_operand:DI 3 "int11_operand" "I"))) |
1767 | (match_operand:DI 4 "register_operand" "r")))] |
1768 | "TARGET_64BIT" |
1769 | - "addi,* %k3,%2,%%r0\;sub,db %1,%4,%0" |
1770 | + "addi %k3,%2,%%r0\;sub,db %1,%4,%0" |
1771 | [(set_attr "type" "binary") |
1772 | (set_attr "length" "8")]) |
1773 | |
1774 | @@ -6913,7 +6913,7 @@ |
1775 | { |
1776 | rtx index = gen_reg_rtx (SImode); |
1777 | |
1778 | - operands[1] = GEN_INT (-INTVAL (operands[1])); |
1779 | + operands[1] = gen_int_mode (-INTVAL (operands[1]), SImode); |
1780 | if (!INT_14_BITS (operands[1])) |
1781 | operands[1] = force_reg (SImode, operands[1]); |
1782 | emit_insn (gen_addsi3 (index, operands[0], operands[1])); |
1783 | |
1784 | === modified file 'gcc/config/rs6000/altivec.md' |
1785 | --- gcc/config/rs6000/altivec.md 2011-04-28 22:39:59 +0000 |
1786 | +++ gcc/config/rs6000/altivec.md 2011-08-13 08:58:15 +0000 |
1787 | @@ -495,7 +495,7 @@ |
1788 | [(set (match_operand:VM 0 "altivec_register_operand" "=v") |
1789 | (if_then_else:VM |
1790 | (ne:CC (match_operand:VM 1 "altivec_register_operand" "v") |
1791 | - (const_int 0)) |
1792 | + (match_operand:VM 4 "zero_constant" "")) |
1793 | (match_operand:VM 2 "altivec_register_operand" "v") |
1794 | (match_operand:VM 3 "altivec_register_operand" "v")))] |
1795 | "VECTOR_MEM_ALTIVEC_P (<MODE>mode)" |
1796 | @@ -506,7 +506,7 @@ |
1797 | [(set (match_operand:VM 0 "altivec_register_operand" "=v") |
1798 | (if_then_else:VM |
1799 | (ne:CCUNS (match_operand:VM 1 "altivec_register_operand" "v") |
1800 | - (const_int 0)) |
1801 | + (match_operand:VM 4 "zero_constant" "")) |
1802 | (match_operand:VM 2 "altivec_register_operand" "v") |
1803 | (match_operand:VM 3 "altivec_register_operand" "v")))] |
1804 | "VECTOR_MEM_ALTIVEC_P (<MODE>mode)" |
1805 | |
1806 | === modified file 'gcc/config/rs6000/rs6000.c' |
1807 | --- gcc/config/rs6000/rs6000.c 2011-06-20 15:12:44 +0000 |
1808 | +++ gcc/config/rs6000/rs6000.c 2011-08-13 08:58:15 +0000 |
1809 | @@ -17437,7 +17437,7 @@ |
1810 | op_false = tmp; |
1811 | } |
1812 | |
1813 | - cond2 = gen_rtx_fmt_ee (NE, cc_mode, mask, const0_rtx); |
1814 | + cond2 = gen_rtx_fmt_ee (NE, cc_mode, mask, CONST0_RTX (dest_mode)); |
1815 | emit_insn (gen_rtx_SET (VOIDmode, |
1816 | dest, |
1817 | gen_rtx_IF_THEN_ELSE (dest_mode, |
1818 | |
1819 | === modified file 'gcc/config/rs6000/vector.md' |
1820 | --- gcc/config/rs6000/vector.md 2011-04-28 22:39:59 +0000 |
1821 | +++ gcc/config/rs6000/vector.md 2011-08-13 08:58:15 +0000 |
1822 | @@ -454,21 +454,21 @@ |
1823 | [(set (match_operand:VEC_L 0 "vlogical_operand" "") |
1824 | (if_then_else:VEC_L |
1825 | (ne:CC (match_operand:VEC_L 3 "vlogical_operand" "") |
1826 | - (const_int 0)) |
1827 | + (match_dup 4)) |
1828 | (match_operand:VEC_L 2 "vlogical_operand" "") |
1829 | (match_operand:VEC_L 1 "vlogical_operand" "")))] |
1830 | "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)" |
1831 | - "") |
1832 | + "operands[4] = CONST0_RTX (<MODE>mode);") |
1833 | |
1834 | (define_expand "vector_select_<mode>_uns" |
1835 | [(set (match_operand:VEC_L 0 "vlogical_operand" "") |
1836 | (if_then_else:VEC_L |
1837 | (ne:CCUNS (match_operand:VEC_L 3 "vlogical_operand" "") |
1838 | - (const_int 0)) |
1839 | + (match_dup 4)) |
1840 | (match_operand:VEC_L 2 "vlogical_operand" "") |
1841 | (match_operand:VEC_L 1 "vlogical_operand" "")))] |
1842 | "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)" |
1843 | - "") |
1844 | + "operands[4] = CONST0_RTX (<MODE>mode);") |
1845 | |
1846 | ;; Expansions that compare vectors producing a vector result and a predicate, |
1847 | ;; setting CR6 to indicate a combined status |
1848 | |
1849 | === modified file 'gcc/config/rs6000/vsx.md' |
1850 | --- gcc/config/rs6000/vsx.md 2011-02-03 05:42:19 +0000 |
1851 | +++ gcc/config/rs6000/vsx.md 2011-08-13 08:58:15 +0000 |
1852 | @@ -674,7 +674,7 @@ |
1853 | [(set (match_operand:VSX_L 0 "vsx_register_operand" "=<VSr>,?wa") |
1854 | (if_then_else:VSX_L |
1855 | (ne:CC (match_operand:VSX_L 1 "vsx_register_operand" "<VSr>,wa") |
1856 | - (const_int 0)) |
1857 | + (match_operand:VSX_L 4 "zero_constant" "")) |
1858 | (match_operand:VSX_L 2 "vsx_register_operand" "<VSr>,wa") |
1859 | (match_operand:VSX_L 3 "vsx_register_operand" "<VSr>,wa")))] |
1860 | "VECTOR_MEM_VSX_P (<MODE>mode)" |
1861 | @@ -685,7 +685,7 @@ |
1862 | [(set (match_operand:VSX_L 0 "vsx_register_operand" "=<VSr>,?wa") |
1863 | (if_then_else:VSX_L |
1864 | (ne:CCUNS (match_operand:VSX_L 1 "vsx_register_operand" "<VSr>,wa") |
1865 | - (const_int 0)) |
1866 | + (match_operand:VSX_L 4 "zero_constant" "")) |
1867 | (match_operand:VSX_L 2 "vsx_register_operand" "<VSr>,wa") |
1868 | (match_operand:VSX_L 3 "vsx_register_operand" "<VSr>,wa")))] |
1869 | "VECTOR_MEM_VSX_P (<MODE>mode)" |
1870 | |
1871 | === modified file 'gcc/config/rx/rx.md' |
1872 | --- gcc/config/rx/rx.md 2011-05-17 08:46:51 +0000 |
1873 | +++ gcc/config/rx/rx.md 2011-08-13 08:58:15 +0000 |
1874 | @@ -708,24 +708,24 @@ |
1875 | (clobber (reg:CC CC_REG))])] |
1876 | "" |
1877 | { |
1878 | - /* ??? Support other conditions via cstore into a temporary? */ |
1879 | - if (GET_CODE (operands[1]) != EQ && GET_CODE (operands[1]) != NE) |
1880 | - FAIL; |
1881 | - /* One operand must be a constant. */ |
1882 | - if (!CONSTANT_P (operands[2]) && !CONSTANT_P (operands[3])) |
1883 | + /* One operand must be a constant or a register, the other must be a register. */ |
1884 | + if ( ! CONSTANT_P (operands[2]) |
1885 | + && ! CONSTANT_P (operands[3]) |
1886 | + && ! (REG_P (operands[2]) && REG_P (operands[3]))) |
1887 | FAIL; |
1888 | }) |
1889 | |
1890 | (define_insn_and_split "*movsicc" |
1891 | - [(set (match_operand:SI 0 "register_operand" "=r,r") |
1892 | + [(set (match_operand:SI 0 "register_operand" "=r,r,r") |
1893 | (if_then_else:SI |
1894 | - (match_operator 5 "rx_z_comparison_operator" |
1895 | - [(match_operand:SI 3 "register_operand" "r,r") |
1896 | - (match_operand:SI 4 "rx_source_operand" "riQ,riQ")]) |
1897 | - (match_operand:SI 1 "nonmemory_operand" "i,ri") |
1898 | - (match_operand:SI 2 "nonmemory_operand" "ri,i"))) |
1899 | + (match_operator 5 "comparison_operator" |
1900 | + [(match_operand:SI 3 "register_operand" "r,r,r") |
1901 | + (match_operand:SI 4 "rx_source_operand" "riQ,riQ,riQ")]) |
1902 | + (match_operand:SI 1 "nonmemory_operand" "i,ri,r") |
1903 | + (match_operand:SI 2 "nonmemory_operand" "ri,i,r"))) |
1904 | (clobber (reg:CC CC_REG))] |
1905 | - "CONSTANT_P (operands[1]) || CONSTANT_P (operands[2])" |
1906 | + "(CONSTANT_P (operands[1]) || CONSTANT_P (operands[2])) |
1907 | + || (REG_P (operands[1]) && REG_P (operands[2]))" |
1908 | "#" |
1909 | "&& reload_completed" |
1910 | [(const_int 0)] |
1911 | @@ -742,8 +742,11 @@ |
1912 | op1 = operands[1]; |
1913 | op2 = operands[2]; |
1914 | |
1915 | - /* If OP2 is the constant, reverse the sense of the move. */ |
1916 | - if (!CONSTANT_P (operands[1])) |
1917 | + /* If OP2 is the constant, reverse the sense of the move. |
1918 | + Likewise if both operands are registers but OP1 == OP0. */ |
1919 | + if ((! CONSTANT_P (operands[1]) && CONSTANT_P (operands[2])) |
1920 | + || (REG_P (operands[1]) && REG_P (operands[2]) |
1921 | + && rtx_equal_p (op0, op1))) |
1922 | { |
1923 | x = op1, op1 = op2, op2 = x; |
1924 | cmp_code = reverse_condition (cmp_code); |
1925 | @@ -752,7 +755,7 @@ |
1926 | /* If OP2 does not match the output, copy it into place. We have allowed |
1927 | these alternatives so that the destination can legitimately be one of |
1928 | the comparison operands without increasing register pressure. */ |
1929 | - if (!rtx_equal_p (op0, op2)) |
1930 | + if (! rtx_equal_p (op0, op2)) |
1931 | emit_move_insn (op0, op2); |
1932 | |
1933 | x = gen_rtx_fmt_ee (cmp_code, VOIDmode, flags, const0_rtx); |
1934 | @@ -768,16 +771,33 @@ |
1935 | [(reg CC_REG) (const_int 0)]) |
1936 | (match_operand:SI 1 "immediate_operand" "Sint08,Sint16,Sint24,i") |
1937 | (match_dup 0)))] |
1938 | - "reload_completed" |
1939 | -{ |
1940 | - if (GET_CODE (operands[2]) == EQ) |
1941 | - return "stz\t%1, %0"; |
1942 | - else |
1943 | - return "stnz\t%1, %0"; |
1944 | -} |
1945 | + "reload_completed |
1946 | + && ((GET_CODE (operands[2]) == EQ) || (GET_CODE (operands[2]) == NE))" |
1947 | + { |
1948 | + if (GET_CODE (operands[2]) == EQ) |
1949 | + return "stz\t%1, %0"; |
1950 | + else |
1951 | + return "stnz\t%1, %0"; |
1952 | + } |
1953 | [(set_attr "length" "4,5,6,7")] |
1954 | ) |
1955 | |
1956 | +(define_insn "*stcc_reg" |
1957 | + [(set (match_operand:SI 0 "register_operand" "+r,r,r,r,r,r") |
1958 | + (if_then_else:SI |
1959 | + (match_operator 2 "comparison_operator" |
1960 | + [(reg CC_REG) (const_int 0)]) |
1961 | + (match_operand:SI 1 "nonmemory_operand" |
1962 | + "r,Uint04,Sint08,Sint16,Sint24,i") |
1963 | + (match_dup 0)))] |
1964 | + "reload_completed" |
1965 | + { |
1966 | + PUT_CODE (operands[2], reverse_condition (GET_CODE (operands[2]))); |
1967 | + return "b%B2 1f\n\tmov %1, %0\n1:"; |
1968 | + } |
1969 | + [(set_attr "length" "3,3,4,5,6,7")] |
1970 | +) |
1971 | + |
1972 | ;; Arithmetic Instructions |
1973 | |
1974 | (define_insn "abssi2" |
1975 | @@ -1598,7 +1618,7 @@ |
1976 | (memex_commutative:SI (match_dup 0) |
1977 | (match_dup 2))) |
1978 | (clobber (reg:CC CC_REG))])] |
1979 | - "peep2_regno_dead_p (2, REGNO (operands[0]))" |
1980 | + "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)" |
1981 | [(parallel [(set:SI (match_dup 2) |
1982 | (memex_commutative:SI (match_dup 2) |
1983 | (extend_types:SI (match_dup 1)))) |
1984 | @@ -1612,7 +1632,7 @@ |
1985 | (memex_commutative:SI (match_dup 2) |
1986 | (match_dup 0))) |
1987 | (clobber (reg:CC CC_REG))])] |
1988 | - "peep2_regno_dead_p (2, REGNO (operands[0]))" |
1989 | + "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)" |
1990 | [(parallel [(set:SI (match_dup 2) |
1991 | (memex_commutative:SI (match_dup 2) |
1992 | (extend_types:SI (match_dup 1)))) |
1993 | @@ -1626,7 +1646,7 @@ |
1994 | (memex_noncomm:SI (match_dup 2) |
1995 | (match_dup 0))) |
1996 | (clobber (reg:CC CC_REG))])] |
1997 | - "peep2_regno_dead_p (2, REGNO (operands[0]))" |
1998 | + "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)" |
1999 | [(parallel [(set:SI (match_dup 2) |
2000 | (memex_noncomm:SI (match_dup 2) |
2001 | (extend_types:SI (match_dup 1)))) |
2002 | @@ -1639,7 +1659,7 @@ |
2003 | (set (match_operand:SI 2 "register_operand") |
2004 | (memex_nocc:SI (match_dup 0) |
2005 | (match_dup 2)))] |
2006 | - "peep2_regno_dead_p (2, REGNO (operands[0]))" |
2007 | + "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)" |
2008 | [(set:SI (match_dup 2) |
2009 | (memex_nocc:SI (match_dup 2) |
2010 | (extend_types:SI (match_dup 1))))] |
2011 | @@ -1651,7 +1671,7 @@ |
2012 | (set (match_operand:SI 2 "register_operand") |
2013 | (memex_nocc:SI (match_dup 2) |
2014 | (match_dup 0)))] |
2015 | - "peep2_regno_dead_p (2, REGNO (operands[0]))" |
2016 | + "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)" |
2017 | [(set:SI (match_dup 2) |
2018 | (memex_nocc:SI (match_dup 2) |
2019 | (extend_types:SI (match_dup 1))))] |
2020 | @@ -1662,7 +1682,7 @@ |
2021 | (memex_commutative:SI (match_operand:SI 1 "register_operand" "%0") |
2022 | (extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q")))) |
2023 | (clobber (reg:CC CC_REG))] |
2024 | - "" |
2025 | + "(optimize < 3 || optimize_size)" |
2026 | "<memex_commutative:op>\t%<extend_types:letter>2, %0" |
2027 | [(set_attr "timings" "33") |
2028 | (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns |
2029 | @@ -1673,7 +1693,7 @@ |
2030 | (memex_noncomm:SI (match_operand:SI 1 "register_operand" "0") |
2031 | (extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q")))) |
2032 | (clobber (reg:CC CC_REG))] |
2033 | - "" |
2034 | + "(optimize < 3 || optimize_size)" |
2035 | "<memex_noncomm:op>\t%<extend_types:letter>2, %0" |
2036 | [(set_attr "timings" "33") |
2037 | (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns |
2038 | @@ -1683,7 +1703,7 @@ |
2039 | [(set (match_operand:SI 0 "register_operand" "=r") |
2040 | (memex_nocc:SI (match_operand:SI 1 "register_operand" "%0") |
2041 | (extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))] |
2042 | - "" |
2043 | + "(optimize < 3 || optimize_size)" |
2044 | "<memex_nocc:op>\t%<extend_types:letter>2, %0" |
2045 | [(set_attr "timings" "33") |
2046 | (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns |
2047 | @@ -1695,7 +1715,7 @@ |
2048 | (set (reg:CC CC_REG) |
2049 | (compare:CC (match_operand:SI 2 "register_operand") |
2050 | (match_dup 0)))] |
2051 | - "peep2_regno_dead_p (2, REGNO (operands[0]))" |
2052 | + "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)" |
2053 | [(set (reg:CC CC_REG) |
2054 | (compare:CC (match_dup 2) |
2055 | (extend_types:SI (match_dup 1))))] |
2056 | @@ -1734,7 +1754,7 @@ |
2057 | [(set (reg:CC CC_REG) |
2058 | (compare:CC (match_operand:SI 0 "register_operand" "=r") |
2059 | (extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand" "Q"))))] |
2060 | - "" |
2061 | + "(optimize < 3 || optimize_size)" |
2062 | "cmp\t%<extend_types:letter>1, %0" |
2063 | [(set_attr "timings" "33") |
2064 | (set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns |
2065 | |
2066 | === modified file 'gcc/config/s390/s390-protos.h' |
2067 | --- gcc/config/s390/s390-protos.h 2011-03-09 16:27:15 +0000 |
2068 | +++ gcc/config/s390/s390-protos.h 2011-08-13 08:58:15 +0000 |
2069 | @@ -41,7 +41,7 @@ |
2070 | extern void s390_set_has_landing_pad_p (bool); |
2071 | extern bool s390_hard_regno_mode_ok (unsigned int, enum machine_mode); |
2072 | extern bool s390_hard_regno_rename_ok (unsigned int, unsigned int); |
2073 | -extern bool s390_class_max_nregs (enum reg_class, enum machine_mode); |
2074 | +extern int s390_class_max_nregs (enum reg_class, enum machine_mode); |
2075 | |
2076 | #ifdef RTX_CODE |
2077 | extern int s390_extra_constraint_str (rtx, int, const char *); |
2078 | |
2079 | === modified file 'gcc/config/s390/s390.c' |
2080 | --- gcc/config/s390/s390.c 2011-05-06 11:10:13 +0000 |
2081 | +++ gcc/config/s390/s390.c 2011-08-13 08:58:15 +0000 |
2082 | @@ -7648,7 +7648,7 @@ |
2083 | /* Maximum number of registers to represent a value of mode MODE |
2084 | in a register of class RCLASS. */ |
2085 | |
2086 | -bool |
2087 | +int |
2088 | s390_class_max_nregs (enum reg_class rclass, enum machine_mode mode) |
2089 | { |
2090 | switch (rclass) |
2091 | |
2092 | === modified file 'gcc/config/sol2.h' |
2093 | --- gcc/config/sol2.h 2011-01-26 20:23:17 +0000 |
2094 | +++ gcc/config/sol2.h 2011-08-13 08:58:15 +0000 |
2095 | @@ -132,10 +132,8 @@ |
2096 | #define LIB_SPEC \ |
2097 | "%{compat-bsd:-lucb -lsocket -lnsl -lelf -laio} \ |
2098 | %{!symbolic:\ |
2099 | - %{pthreads|pthread:" \ |
2100 | - LIB_THREAD_LDFLAGS_SPEC " -lpthread " LIB_TLS_SPEC "} \ |
2101 | - %{!pthreads:%{!pthread:%{threads:" \ |
2102 | - LIB_THREAD_LDFLAGS_SPEC " -lthread}}} \ |
2103 | + %{pthreads|pthread:-lpthread " LIB_TLS_SPEC "} \ |
2104 | + %{!pthreads:%{!pthread:%{threads:-lthread}}} \ |
2105 | %{p|pg:-ldl} -lc}" |
2106 | |
2107 | #undef ENDFILE_SPEC |
2108 | @@ -185,6 +183,7 @@ |
2109 | %{static:-dn -Bstatic} \ |
2110 | %{shared:-G -dy %{!mimpure-text:-z text}} \ |
2111 | %{symbolic:-Bsymbolic -G -dy -z text} \ |
2112 | + %{pthreads|pthread|threads:" LIB_THREAD_LDFLAGS_SPEC "} \ |
2113 | %(link_arch) \ |
2114 | %{Qy:} %{!Qn:-Qy}" |
2115 | |
2116 | |
2117 | === modified file 'gcc/config/sparc/sol2-64.h' |
2118 | --- gcc/config/sparc/sol2-64.h 2010-03-02 23:35:12 +0000 |
2119 | +++ gcc/config/sparc/sol2-64.h 2011-08-13 08:58:15 +0000 |
2120 | @@ -1,7 +1,7 @@ |
2121 | /* Definitions of target machine for GCC, for bi-arch SPARC |
2122 | running Solaris 2, defaulting to 64-bit code generation. |
2123 | |
2124 | - Copyright (C) 1999, 2010 Free Software Foundation, Inc. |
2125 | + Copyright (C) 1999, 2010, 2011 Free Software Foundation, Inc. |
2126 | |
2127 | This file is part of GCC. |
2128 | |
2129 | @@ -19,7 +19,4 @@ |
2130 | along with GCC; see the file COPYING3. If not see |
2131 | <http://www.gnu.org/licenses/>. */ |
2132 | |
2133 | -#undef TARGET_DEFAULT |
2134 | -#define TARGET_DEFAULT \ |
2135 | - (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ + \ |
2136 | - MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) |
2137 | +#define TARGET_64BIT_DEFAULT 1 |
2138 | |
2139 | === modified file 'gcc/config/sparc/sol2.h' |
2140 | --- gcc/config/sparc/sol2.h 2010-12-06 19:11:02 +0000 |
2141 | +++ gcc/config/sparc/sol2.h 2011-08-13 08:58:15 +0000 |
2142 | @@ -153,11 +153,18 @@ |
2143 | #undef SUN_INTEGER_MULTIPLY_64 |
2144 | #define SUN_INTEGER_MULTIPLY_64 1 |
2145 | |
2146 | -/* Solaris allows 64 bit out and global registers in 32 bit mode. |
2147 | - sparc_override_options will disable V8+ if not generating V9 code. */ |
2148 | +/* Solaris allows 64-bit out and global registers to be used in 32-bit mode. |
2149 | + sparc_override_options will disable V8+ if either not generating V9 code |
2150 | + or generating 64-bit code. */ |
2151 | #undef TARGET_DEFAULT |
2152 | -#define TARGET_DEFAULT (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU \ |
2153 | - + MASK_LONG_DOUBLE_128) |
2154 | +#ifdef TARGET_64BIT_DEFAULT |
2155 | +#define TARGET_DEFAULT \ |
2156 | + (MASK_V9 + MASK_64BIT + MASK_PTR64 + MASK_STACK_BIAS + \ |
2157 | + MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) |
2158 | +#else |
2159 | +#define TARGET_DEFAULT \ |
2160 | + (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) |
2161 | +#endif |
2162 | |
2163 | /* Solaris-specific #pragmas are implemented on top of attributes. Hook in |
2164 | the bits from config/sol2.c. */ |
2165 | |
2166 | === modified file 'gcc/config/spu/spu.c' |
2167 | --- gcc/config/spu/spu.c 2011-06-04 10:15:48 +0000 |
2168 | +++ gcc/config/spu/spu.c 2011-08-13 08:58:15 +0000 |
2169 | @@ -223,7 +223,6 @@ |
2170 | static bool spu_addr_space_subset_p (addr_space_t, addr_space_t); |
2171 | static rtx spu_addr_space_convert (rtx, tree, tree); |
2172 | static int spu_sms_res_mii (struct ddg *g); |
2173 | -static void asm_file_start (void); |
2174 | static unsigned int spu_section_type_flags (tree, const char *, int); |
2175 | static section *spu_select_section (tree, int, unsigned HOST_WIDE_INT); |
2176 | static void spu_unique_section (tree, int); |
2177 | @@ -455,9 +454,6 @@ |
2178 | #undef TARGET_SCHED_SMS_RES_MII |
2179 | #define TARGET_SCHED_SMS_RES_MII spu_sms_res_mii |
2180 | |
2181 | -#undef TARGET_ASM_FILE_START |
2182 | -#define TARGET_ASM_FILE_START asm_file_start |
2183 | - |
2184 | #undef TARGET_SECTION_TYPE_FLAGS |
2185 | #define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags |
2186 | |
2187 | @@ -2717,9 +2713,11 @@ |
2188 | { |
2189 | /* We still do it for unoptimized code because an external |
2190 | function might have hinted a call or return. */ |
2191 | + compute_bb_for_insn (); |
2192 | insert_hbrp (); |
2193 | pad_bb (); |
2194 | spu_var_tracking (); |
2195 | + free_bb_for_insn (); |
2196 | return; |
2197 | } |
2198 | |
2199 | @@ -7052,14 +7050,6 @@ |
2200 | return SImode; |
2201 | } |
2202 | |
2203 | -/* An early place to adjust some flags after GCC has finished processing |
2204 | - * them. */ |
2205 | -static void |
2206 | -asm_file_start (void) |
2207 | -{ |
2208 | - default_file_start (); |
2209 | -} |
2210 | - |
2211 | /* Implement targetm.section_type_flags. */ |
2212 | static unsigned int |
2213 | spu_section_type_flags (tree decl, const char *name, int reloc) |
2214 | |
2215 | === modified file 'gcc/cp/ChangeLog' |
2216 | --- gcc/cp/ChangeLog 2011-06-27 20:16:14 +0000 |
2217 | +++ gcc/cp/ChangeLog 2011-08-13 08:58:15 +0000 |
2218 | @@ -1,3 +1,84 @@ |
2219 | +2011-08-05 Jason Merrill <jason@redhat.com> |
2220 | + |
2221 | + PR c++/48993 |
2222 | + * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry |
2223 | + on 'this' in a constructor. |
2224 | + |
2225 | + PR c++/49921 |
2226 | + * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p. |
2227 | + |
2228 | + PR c++/49669 |
2229 | + * init.c (perform_member_init): Handle invalid array initializer. |
2230 | + |
2231 | + PR c++/49988 |
2232 | + * semantics.c (cxx_eval_array_reference): Handle failure to |
2233 | + reduce the array operand to something we can work with. |
2234 | + |
2235 | +2011-08-02 Jason Merrill <jason@redhat.com> |
2236 | + |
2237 | + PR c++/43886 |
2238 | + * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p. |
2239 | + |
2240 | + PR c++/49593 |
2241 | + * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR. |
2242 | + |
2243 | + PR c++/49803 |
2244 | + * init.c (sort_mem_initializers): Initialize uses_unions_p here. |
2245 | + (build_field_list): Not here. |
2246 | + |
2247 | + PR c++/49924 |
2248 | + * semantics.c (cxx_eval_vec_init_1): Fix logic. |
2249 | + |
2250 | + PR c++/49260 |
2251 | + * call.c (build_call_a): Set cp_function_chain->can_throw here. |
2252 | + (build_cxx_call): Not here. |
2253 | + |
2254 | +2011-07-27 Jeffrey Yasskin <jyasskin@google.com> |
2255 | + |
2256 | + * pt.c (build_template_decl): Copy the function_decl's |
2257 | + source location to the new template_decl. |
2258 | + |
2259 | +2011-07-19 Jason Merrill <jason@redhat.com> |
2260 | + |
2261 | + PR c++/49785 |
2262 | + * pt.c (coerce_template_parms): Handle non-pack after pack. |
2263 | + |
2264 | +2011-07-11 Jason Merrill <jason@redhat.com> |
2265 | + |
2266 | + PR c++/49672 |
2267 | + * pt.c (extract_fnparm_pack): Split out from... |
2268 | + (make_fnparm_pack): ...here. |
2269 | + (instantiate_decl): Handle non-pack parms after a pack. |
2270 | + * semantics.c (maybe_add_lambda_conv_op): Don't in a template. |
2271 | + |
2272 | +2011-07-09 Jason Merrill <jason@redhat.com> |
2273 | + |
2274 | + * tree.c (build_vec_init_elt): Strip TARGET_EXPR. |
2275 | + |
2276 | + * tree.c (build_vec_init_expr): Don't add TARGET_EXPR. |
2277 | + * typeck2.c (digest_init_r): Handle VEC_INIT_EXPR. |
2278 | + * semantics.c (cxx_eval_vec_init_1): Correct type. |
2279 | + |
2280 | +2011-07-07 Jason Merrill <jason@redhat.com> |
2281 | + |
2282 | + PR c++/48157 |
2283 | + * pt.c (tsubst_qualified_id): Preserve TEMPLATE_ID_EXPR in |
2284 | + partial instantiation. |
2285 | + |
2286 | +2011-07-07 Jakub Jelinek <jakub@redhat.com> |
2287 | + |
2288 | + PR c/49644 |
2289 | + * typeck.c (cp_build_binary_op): For MULT_EXPR and TRUNC_DIV_EXPR with |
2290 | + one non-complex and one complex argument, call save_expr on both |
2291 | + operands. |
2292 | + |
2293 | +2011-07-05 Jason Merrill <jason@redhat.com> |
2294 | + |
2295 | + PR c++/49598 |
2296 | + * semantics.c (finish_id_expression): convert_from_reference. |
2297 | + |
2298 | + * error.c (type_to_string): Avoid redundant akas. |
2299 | + |
2300 | 2011-06-27 Jason Merrill <jason@redhat.com> |
2301 | |
2302 | PR c++/49528 |
2303 | |
2304 | === modified file 'gcc/cp/call.c' |
2305 | --- gcc/cp/call.c 2011-06-27 20:15:49 +0000 |
2306 | +++ gcc/cp/call.c 2011-08-13 08:58:15 +0000 |
2307 | @@ -351,6 +351,9 @@ |
2308 | nothrow = ((decl && TREE_NOTHROW (decl)) |
2309 | || TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function)))); |
2310 | |
2311 | + if (!nothrow && at_function_scope_p () && cfun && cp_function_chain) |
2312 | + cp_function_chain->can_throw = 1; |
2313 | + |
2314 | if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain) |
2315 | current_function_returns_abnormally = 1; |
2316 | |
2317 | @@ -6457,11 +6460,6 @@ |
2318 | |
2319 | /* If this call might throw an exception, note that fact. */ |
2320 | fndecl = get_callee_fndecl (fn); |
2321 | - if ((!fndecl || !TREE_NOTHROW (fndecl)) |
2322 | - && at_function_scope_p () |
2323 | - && cfun |
2324 | - && cp_function_chain) |
2325 | - cp_function_chain->can_throw = 1; |
2326 | |
2327 | /* Check that arguments to builtin functions match the expectations. */ |
2328 | if (fndecl |
2329 | |
2330 | === modified file 'gcc/cp/error.c' |
2331 | --- gcc/cp/error.c 2011-06-14 22:13:45 +0000 |
2332 | +++ gcc/cp/error.c 2011-08-13 08:58:15 +0000 |
2333 | @@ -2618,14 +2618,28 @@ |
2334 | |
2335 | reinit_cxx_pp (); |
2336 | dump_type (typ, flags); |
2337 | + /* If we're printing a type that involves typedefs, also print the |
2338 | + stripped version. But sometimes the stripped version looks |
2339 | + exactly the same, so we don't want it after all. To avoid printing |
2340 | + it in that case, we play ugly obstack games. */ |
2341 | if (typ && TYPE_P (typ) && typ != TYPE_CANONICAL (typ) |
2342 | && !uses_template_parms (typ)) |
2343 | { |
2344 | + int aka_start; char *p; |
2345 | + struct obstack *ob = pp_base (cxx_pp)->buffer->obstack; |
2346 | + /* Remember the end of the initial dump. */ |
2347 | + int len = obstack_object_size (ob); |
2348 | tree aka = strip_typedefs (typ); |
2349 | pp_string (cxx_pp, " {aka"); |
2350 | pp_cxx_whitespace (cxx_pp); |
2351 | + /* And remember the start of the aka dump. */ |
2352 | + aka_start = obstack_object_size (ob); |
2353 | dump_type (aka, flags); |
2354 | pp_character (cxx_pp, '}'); |
2355 | + p = (char*)obstack_base (ob); |
2356 | + /* If they are identical, cut off the aka with a NUL. */ |
2357 | + if (memcmp (p, p+aka_start, len) == 0) |
2358 | + p[len] = '\0'; |
2359 | } |
2360 | return pp_formatted_text (cxx_pp); |
2361 | } |
2362 | |
2363 | === modified file 'gcc/cp/init.c' |
2364 | --- gcc/cp/init.c 2011-06-27 20:16:14 +0000 |
2365 | +++ gcc/cp/init.c 2011-08-13 08:58:15 +0000 |
2366 | @@ -526,8 +526,10 @@ |
2367 | { |
2368 | if (init) |
2369 | { |
2370 | - gcc_assert (TREE_CHAIN (init) == NULL_TREE); |
2371 | - init = TREE_VALUE (init); |
2372 | + if (TREE_CHAIN (init)) |
2373 | + init = error_mark_node; |
2374 | + else |
2375 | + init = TREE_VALUE (init); |
2376 | if (BRACE_ENCLOSED_INITIALIZER_P (init)) |
2377 | init = digest_init (type, init); |
2378 | } |
2379 | @@ -627,8 +629,6 @@ |
2380 | { |
2381 | tree fields; |
2382 | |
2383 | - *uses_unions_p = 0; |
2384 | - |
2385 | /* Note whether or not T is a union. */ |
2386 | if (TREE_CODE (t) == UNION_TYPE) |
2387 | *uses_unions_p = 1; |
2388 | @@ -682,7 +682,7 @@ |
2389 | tree next_subobject; |
2390 | VEC(tree,gc) *vbases; |
2391 | int i; |
2392 | - int uses_unions_p; |
2393 | + int uses_unions_p = 0; |
2394 | |
2395 | /* Build up a list of initializations. The TREE_PURPOSE of entry |
2396 | will be the subobject (a FIELD_DECL or BINFO) to initialize. The |
2397 | |
2398 | === modified file 'gcc/cp/parser.c' |
2399 | --- gcc/cp/parser.c 2011-05-27 20:48:24 +0000 |
2400 | +++ gcc/cp/parser.c 2011-08-13 08:58:15 +0000 |
2401 | @@ -7940,8 +7940,11 @@ |
2402 | cp_parser_lambda_body (cp_parser* parser, tree lambda_expr) |
2403 | { |
2404 | bool nested = (current_function_decl != NULL_TREE); |
2405 | + bool local_variables_forbidden_p = parser->local_variables_forbidden_p; |
2406 | if (nested) |
2407 | push_function_context (); |
2408 | + /* Clear this in case we're in the middle of a default argument. */ |
2409 | + parser->local_variables_forbidden_p = false; |
2410 | |
2411 | /* Finish the function call operator |
2412 | - class_specifier |
2413 | @@ -8028,6 +8031,7 @@ |
2414 | expand_or_defer_fn (finish_function (/*inline*/2)); |
2415 | } |
2416 | |
2417 | + parser->local_variables_forbidden_p = local_variables_forbidden_p; |
2418 | if (nested) |
2419 | pop_function_context(); |
2420 | } |
2421 | |
2422 | === modified file 'gcc/cp/pt.c' |
2423 | --- gcc/cp/pt.c 2011-06-17 01:06:50 +0000 |
2424 | +++ gcc/cp/pt.c 2011-08-13 08:58:15 +0000 |
2425 | @@ -3013,6 +3013,7 @@ |
2426 | *walk_subtrees = 0; |
2427 | return NULL_TREE; |
2428 | |
2429 | + case CONSTRUCTOR: |
2430 | case TEMPLATE_DECL: |
2431 | cp_walk_tree (&TREE_TYPE (t), |
2432 | &find_parameter_packs_r, ppd, ppd->visited); |
2433 | @@ -4109,6 +4110,7 @@ |
2434 | tree tmpl = build_lang_decl (TEMPLATE_DECL, DECL_NAME (decl), NULL_TREE); |
2435 | DECL_TEMPLATE_PARMS (tmpl) = parms; |
2436 | DECL_CONTEXT (tmpl) = DECL_CONTEXT (decl); |
2437 | + DECL_SOURCE_LOCATION (tmpl) = DECL_SOURCE_LOCATION (decl); |
2438 | DECL_MEMBER_TEMPLATE_P (tmpl) = member_template_p; |
2439 | |
2440 | return tmpl; |
2441 | @@ -6295,6 +6297,7 @@ |
2442 | subtract it from nparms to get the number of non-variadic |
2443 | parameters. */ |
2444 | int variadic_p = 0; |
2445 | + int post_variadic_parms = 0; |
2446 | |
2447 | if (args == error_mark_node) |
2448 | return error_mark_node; |
2449 | @@ -6305,19 +6308,22 @@ |
2450 | for (parm_idx = 0; parm_idx < nparms; ++parm_idx) |
2451 | { |
2452 | tree tparm = TREE_VALUE (TREE_VEC_ELT (parms, parm_idx)); |
2453 | + if (variadic_p) |
2454 | + ++post_variadic_parms; |
2455 | if (template_parameter_pack_p (tparm)) |
2456 | ++variadic_p; |
2457 | } |
2458 | |
2459 | inner_args = INNERMOST_TEMPLATE_ARGS (args); |
2460 | - /* If there are 0 or 1 parameter packs, we need to expand any argument |
2461 | - packs so that we can deduce a parameter pack from some non-packed args |
2462 | - followed by an argument pack, as in variadic85.C. If there are more |
2463 | - than that, we need to leave argument packs intact so the arguments are |
2464 | - assigned to the right parameter packs. This should only happen when |
2465 | - dealing with a nested class inside a partial specialization of a class |
2466 | - template, as in variadic92.C. */ |
2467 | - if (variadic_p <= 1) |
2468 | + /* If there are no parameters that follow a parameter pack, we need to |
2469 | + expand any argument packs so that we can deduce a parameter pack from |
2470 | + some non-packed args followed by an argument pack, as in variadic85.C. |
2471 | + If there are such parameters, we need to leave argument packs intact |
2472 | + so the arguments are assigned properly. This can happen when dealing |
2473 | + with a nested class inside a partial specialization of a class |
2474 | + template, as in variadic92.C, or when deducing a template parameter pack |
2475 | + from a sub-declarator, as in variadic114.C. */ |
2476 | + if (!post_variadic_parms) |
2477 | inner_args = expand_template_argument_pack (inner_args); |
2478 | |
2479 | nargs = inner_args ? NUM_TMPL_ARGS (inner_args) : 0; |
2480 | @@ -8620,11 +8626,12 @@ |
2481 | return r; |
2482 | } |
2483 | |
2484 | -/* Give a chain SPEC_PARM of PARM_DECLs, pack them into a |
2485 | - NONTYPE_ARGUMENT_PACK. */ |
2486 | +/* Given a function parameter pack TMPL_PARM and some function parameters |
2487 | + instantiated from it at *SPEC_P, return a NONTYPE_ARGUMENT_PACK of them |
2488 | + and set *SPEC_P to point at the next point in the list. */ |
2489 | |
2490 | static tree |
2491 | -make_fnparm_pack (tree spec_parm) |
2492 | +extract_fnparm_pack (tree tmpl_parm, tree *spec_p) |
2493 | { |
2494 | /* Collect all of the extra "packed" parameters into an |
2495 | argument pack. */ |
2496 | @@ -8632,11 +8639,18 @@ |
2497 | tree parmtypevec; |
2498 | tree argpack = make_node (NONTYPE_ARGUMENT_PACK); |
2499 | tree argtypepack = cxx_make_type (TYPE_ARGUMENT_PACK); |
2500 | - int i, len = list_length (spec_parm); |
2501 | + tree spec_parm = *spec_p; |
2502 | + int i, len; |
2503 | + |
2504 | + for (len = 0; spec_parm; ++len, spec_parm = TREE_CHAIN (spec_parm)) |
2505 | + if (tmpl_parm |
2506 | + && !function_parameter_expanded_from_pack_p (spec_parm, tmpl_parm)) |
2507 | + break; |
2508 | |
2509 | /* Fill in PARMVEC and PARMTYPEVEC with all of the parameters. */ |
2510 | parmvec = make_tree_vec (len); |
2511 | parmtypevec = make_tree_vec (len); |
2512 | + spec_parm = *spec_p; |
2513 | for (i = 0; i < len; i++, spec_parm = DECL_CHAIN (spec_parm)) |
2514 | { |
2515 | TREE_VEC_ELT (parmvec, i) = spec_parm; |
2516 | @@ -8647,9 +8661,19 @@ |
2517 | SET_ARGUMENT_PACK_ARGS (argpack, parmvec); |
2518 | SET_ARGUMENT_PACK_ARGS (argtypepack, parmtypevec); |
2519 | TREE_TYPE (argpack) = argtypepack; |
2520 | + *spec_p = spec_parm; |
2521 | |
2522 | return argpack; |
2523 | -} |
2524 | +} |
2525 | + |
2526 | +/* Give a chain SPEC_PARM of PARM_DECLs, pack them into a |
2527 | + NONTYPE_ARGUMENT_PACK. */ |
2528 | + |
2529 | +static tree |
2530 | +make_fnparm_pack (tree spec_parm) |
2531 | +{ |
2532 | + return extract_fnparm_pack (NULL_TREE, &spec_parm); |
2533 | +} |
2534 | |
2535 | /* Substitute ARGS into T, which is an pack expansion |
2536 | (i.e. TYPE_PACK_EXPANSION or EXPR_PACK_EXPANSION). Returns a |
2537 | @@ -11200,8 +11224,12 @@ |
2538 | expr = name; |
2539 | |
2540 | if (dependent_scope_p (scope)) |
2541 | - return build_qualified_name (NULL_TREE, scope, expr, |
2542 | - QUALIFIED_NAME_IS_TEMPLATE (qualified_id)); |
2543 | + { |
2544 | + if (is_template) |
2545 | + expr = build_min_nt (TEMPLATE_ID_EXPR, expr, template_args); |
2546 | + return build_qualified_name (NULL_TREE, scope, expr, |
2547 | + QUALIFIED_NAME_IS_TEMPLATE (qualified_id)); |
2548 | + } |
2549 | |
2550 | if (!BASELINK_P (name) && !DECL_P (expr)) |
2551 | { |
2552 | @@ -17466,21 +17494,21 @@ |
2553 | spec_parm = skip_artificial_parms_for (d, spec_parm); |
2554 | tmpl_parm = skip_artificial_parms_for (subst_decl, tmpl_parm); |
2555 | } |
2556 | - while (tmpl_parm && !FUNCTION_PARAMETER_PACK_P (tmpl_parm)) |
2557 | + for (; tmpl_parm; tmpl_parm = DECL_CHAIN (tmpl_parm)) |
2558 | { |
2559 | - register_local_specialization (spec_parm, tmpl_parm); |
2560 | - tmpl_parm = DECL_CHAIN (tmpl_parm); |
2561 | - spec_parm = DECL_CHAIN (spec_parm); |
2562 | + if (!FUNCTION_PARAMETER_PACK_P (tmpl_parm)) |
2563 | + { |
2564 | + register_local_specialization (spec_parm, tmpl_parm); |
2565 | + spec_parm = DECL_CHAIN (spec_parm); |
2566 | + } |
2567 | + else |
2568 | + { |
2569 | + /* Register the (value) argument pack as a specialization of |
2570 | + TMPL_PARM, then move on. */ |
2571 | + tree argpack = extract_fnparm_pack (tmpl_parm, &spec_parm); |
2572 | + register_local_specialization (argpack, tmpl_parm); |
2573 | + } |
2574 | } |
2575 | - if (tmpl_parm && FUNCTION_PARAMETER_PACK_P (tmpl_parm)) |
2576 | - { |
2577 | - /* Register the (value) argument pack as a specialization of |
2578 | - TMPL_PARM, then move on. */ |
2579 | - tree argpack = make_fnparm_pack (spec_parm); |
2580 | - register_local_specialization (argpack, tmpl_parm); |
2581 | - tmpl_parm = DECL_CHAIN (tmpl_parm); |
2582 | - spec_parm = NULL_TREE; |
2583 | - } |
2584 | gcc_assert (!spec_parm); |
2585 | |
2586 | /* Substitute into the body of the function. */ |
2587 | |
2588 | === modified file 'gcc/cp/semantics.c' |
2589 | --- gcc/cp/semantics.c 2011-06-27 20:16:14 +0000 |
2590 | +++ gcc/cp/semantics.c 2011-08-13 08:58:15 +0000 |
2591 | @@ -2895,7 +2895,7 @@ |
2592 | tree containing_function = current_function_decl; |
2593 | tree lambda_stack = NULL_TREE; |
2594 | tree lambda_expr = NULL_TREE; |
2595 | - tree initializer = decl; |
2596 | + tree initializer = convert_from_reference (decl); |
2597 | |
2598 | /* Core issue 696: "[At the July 2009 meeting] the CWG expressed |
2599 | support for an approach in which a reference to a local |
2600 | @@ -4835,6 +4835,9 @@ |
2601 | |
2602 | expr = resolve_nondeduced_context (expr); |
2603 | |
2604 | + if (invalid_nonstatic_memfn_p (expr, complain)) |
2605 | + return error_mark_node; |
2606 | + |
2607 | /* To get the size of a static data member declared as an array of |
2608 | unknown bound, we need to instantiate it. */ |
2609 | if (TREE_CODE (expr) == VAR_DECL |
2610 | @@ -6300,12 +6303,22 @@ |
2611 | elem_type = TREE_TYPE (TREE_TYPE (ary)); |
2612 | if (TREE_CODE (ary) == CONSTRUCTOR) |
2613 | len = CONSTRUCTOR_NELTS (ary); |
2614 | - else |
2615 | + else if (TREE_CODE (ary) == STRING_CST) |
2616 | { |
2617 | elem_nchars = (TYPE_PRECISION (elem_type) |
2618 | / TYPE_PRECISION (char_type_node)); |
2619 | len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars; |
2620 | } |
2621 | + else |
2622 | + { |
2623 | + /* We can't do anything with other tree codes, so use |
2624 | + VERIFY_CONSTANT to complain and fail. */ |
2625 | + VERIFY_CONSTANT (ary); |
2626 | + /* This should be unreachable, but be more fault-tolerant on the |
2627 | + release branch. */ |
2628 | + *non_constant_p = true; |
2629 | + return t; |
2630 | + } |
2631 | if (compare_tree_int (index, len) >= 0) |
2632 | { |
2633 | if (tree_int_cst_lt (index, array_type_nelts_top (TREE_TYPE (ary)))) |
2634 | @@ -6589,6 +6602,7 @@ |
2635 | tree elttype = TREE_TYPE (atype); |
2636 | int max = tree_low_cst (array_type_nelts (atype), 0); |
2637 | VEC(constructor_elt,gc) *n = VEC_alloc (constructor_elt, gc, max + 1); |
2638 | + bool default_init = false; |
2639 | int i; |
2640 | |
2641 | /* For the default constructor, build up a call to the default |
2642 | @@ -6607,6 +6621,7 @@ |
2643 | release_tree_vector (argvec); |
2644 | init = cxx_eval_constant_expression (call, init, allow_non_constant, |
2645 | addr, non_constant_p); |
2646 | + default_init = true; |
2647 | } |
2648 | |
2649 | if (*non_constant_p && !allow_non_constant) |
2650 | @@ -6634,7 +6649,7 @@ |
2651 | eltinit = cxx_eval_constant_expression |
2652 | (call, eltinit, allow_non_constant, addr, non_constant_p); |
2653 | } |
2654 | - else if (TREE_CODE (init) == CONSTRUCTOR) |
2655 | + else if (default_init) |
2656 | { |
2657 | /* Initializing an element using the call to the default |
2658 | constructor we just built above. */ |
2659 | @@ -6666,7 +6681,7 @@ |
2660 | |
2661 | if (!*non_constant_p) |
2662 | { |
2663 | - init = build_constructor (TREE_TYPE (atype), n); |
2664 | + init = build_constructor (atype, n); |
2665 | TREE_CONSTANT (init) = true; |
2666 | return init; |
2667 | } |
2668 | @@ -7491,7 +7506,17 @@ |
2669 | { |
2670 | tree x = get_nth_callarg (t, 0); |
2671 | if (is_this_parameter (x)) |
2672 | - /* OK. */; |
2673 | + { |
2674 | + if (DECL_CONSTRUCTOR_P (DECL_CONTEXT (x))) |
2675 | + { |
2676 | + if (flags & tf_error) |
2677 | + sorry ("calling a member function of the " |
2678 | + "object being constructed in a constant " |
2679 | + "expression"); |
2680 | + return false; |
2681 | + } |
2682 | + /* Otherwise OK. */; |
2683 | + } |
2684 | else if (!potential_constant_expression_1 (x, rval, flags)) |
2685 | { |
2686 | if (flags & tf_error) |
2687 | @@ -8473,6 +8498,9 @@ |
2688 | if (LAMBDA_EXPR_CAPTURE_LIST (CLASSTYPE_LAMBDA_EXPR (type)) != NULL_TREE) |
2689 | return; |
2690 | |
2691 | + if (processing_template_decl) |
2692 | + return; |
2693 | + |
2694 | stattype = build_function_type (TREE_TYPE (TREE_TYPE (callop)), |
2695 | FUNCTION_ARG_CHAIN (callop)); |
2696 | |
2697 | |
2698 | === modified file 'gcc/cp/tree.c' |
2699 | --- gcc/cp/tree.c 2011-06-06 04:31:24 +0000 |
2700 | +++ gcc/cp/tree.c 2011-08-13 08:58:15 +0000 |
2701 | @@ -495,9 +495,16 @@ |
2702 | dummy = move (dummy); |
2703 | VEC_quick_push (tree, argvec, dummy); |
2704 | } |
2705 | - return build_special_member_call (NULL_TREE, complete_ctor_identifier, |
2706 | + init = build_special_member_call (NULL_TREE, complete_ctor_identifier, |
2707 | &argvec, inner_type, LOOKUP_NORMAL, |
2708 | tf_warning_or_error); |
2709 | + |
2710 | + /* For a trivial constructor, build_over_call creates a TARGET_EXPR. But |
2711 | + we don't want one here. */ |
2712 | + if (TREE_CODE (init) == TARGET_EXPR) |
2713 | + init = TARGET_EXPR_INITIAL (init); |
2714 | + |
2715 | + return init; |
2716 | } |
2717 | |
2718 | /* Return a TARGET_EXPR which expresses the initialization of an array to |
2719 | @@ -526,9 +533,6 @@ |
2720 | VEC_INIT_EXPR_IS_CONSTEXPR (init) = true; |
2721 | VEC_INIT_EXPR_VALUE_INIT (init) = value_init; |
2722 | |
2723 | - init = build_target_expr (slot, init); |
2724 | - TARGET_EXPR_IMPLICIT_P (init) = 1; |
2725 | - |
2726 | return init; |
2727 | } |
2728 | |
2729 | |
2730 | === modified file 'gcc/cp/typeck.c' |
2731 | --- gcc/cp/typeck.c 2011-06-07 15:12:15 +0000 |
2732 | +++ gcc/cp/typeck.c 2011-08-13 08:58:15 +0000 |
2733 | @@ -4331,6 +4331,7 @@ |
2734 | { |
2735 | case MULT_EXPR: |
2736 | case TRUNC_DIV_EXPR: |
2737 | + op1 = save_expr (op1); |
2738 | imag = build2 (resultcode, real_type, imag, op1); |
2739 | /* Fall through. */ |
2740 | case PLUS_EXPR: |
2741 | @@ -4349,6 +4350,7 @@ |
2742 | switch (code) |
2743 | { |
2744 | case MULT_EXPR: |
2745 | + op0 = save_expr (op0); |
2746 | imag = build2 (resultcode, real_type, op0, imag); |
2747 | /* Fall through. */ |
2748 | case PLUS_EXPR: |
2749 | |
2750 | === modified file 'gcc/cp/typeck2.c' |
2751 | --- gcc/cp/typeck2.c 2011-07-13 13:17:31 +0000 |
2752 | +++ gcc/cp/typeck2.c 2011-08-13 08:58:15 +0000 |
2753 | @@ -894,7 +894,7 @@ |
2754 | { |
2755 | /* Allow the result of build_array_copy and of |
2756 | build_value_init_noctor. */ |
2757 | - if ((TREE_CODE (init) == TARGET_EXPR |
2758 | + if ((TREE_CODE (init) == VEC_INIT_EXPR |
2759 | || TREE_CODE (init) == CONSTRUCTOR) |
2760 | && (same_type_ignoring_top_level_qualifiers_p |
2761 | (type, TREE_TYPE (init)))) |
2762 | |
2763 | === modified file 'gcc/df-problems.c' |
2764 | --- gcc/df-problems.c 2011-01-26 22:45:04 +0000 |
2765 | +++ gcc/df-problems.c 2011-08-13 08:58:15 +0000 |
2766 | @@ -3095,6 +3095,7 @@ |
2767 | dead_debug_reset (struct dead_debug *debug, unsigned int dregno) |
2768 | { |
2769 | struct dead_debug_use **tailp = &debug->head; |
2770 | + struct dead_debug_use **insnp = &debug->head; |
2771 | struct dead_debug_use *cur; |
2772 | rtx insn; |
2773 | |
2774 | @@ -3112,9 +3113,25 @@ |
2775 | debug->to_rescan = BITMAP_ALLOC (NULL); |
2776 | bitmap_set_bit (debug->to_rescan, INSN_UID (insn)); |
2777 | XDELETE (cur); |
2778 | + /* If the current use isn't the first one attached to INSN, go back |
2779 | + to this first use. We assume that the uses attached to an insn |
2780 | + are adjacent. */ |
2781 | + if (tailp != insnp && DF_REF_INSN ((*insnp)->use) == insn) |
2782 | + tailp = insnp; |
2783 | + /* Then remove all the other uses attached to INSN. */ |
2784 | + while ((cur = *tailp) && DF_REF_INSN (cur->use) == insn) |
2785 | + { |
2786 | + *tailp = cur->next; |
2787 | + XDELETE (cur); |
2788 | + } |
2789 | + insnp = tailp; |
2790 | } |
2791 | else |
2792 | - tailp = &(*tailp)->next; |
2793 | + { |
2794 | + if (DF_REF_INSN ((*insnp)->use) != DF_REF_INSN (cur->use)) |
2795 | + insnp = tailp; |
2796 | + tailp = &(*tailp)->next; |
2797 | + } |
2798 | } |
2799 | } |
2800 | |
2801 | @@ -3173,7 +3190,10 @@ |
2802 | tailp = &(*tailp)->next; |
2803 | } |
2804 | |
2805 | - gcc_assert (reg); |
2806 | + /* We may have dangling bits in debug->used for registers that were part |
2807 | + of a multi-register use, one component of which has been reset. */ |
2808 | + if (reg == NULL) |
2809 | + return; |
2810 | |
2811 | /* Create DEBUG_EXPR (and DEBUG_EXPR_DECL). */ |
2812 | dval = make_debug_expr_from_rtl (reg); |
2813 | |
2814 | === modified file 'gcc/doc/invoke.texi' |
2815 | --- gcc/doc/invoke.texi 2011-07-01 09:19:21 +0000 |
2816 | +++ gcc/doc/invoke.texi 2011-08-13 08:58:15 +0000 |
2817 | @@ -12183,6 +12183,10 @@ |
2818 | @item corei7-avx |
2819 | Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, |
2820 | SSE4.1, SSE4.2, AVX, AES and PCLMUL instruction set support. |
2821 | +@item core-avx-i |
2822 | +Intel Core CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, |
2823 | +SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND and F16C instruction |
2824 | +set support. |
2825 | @item atom |
2826 | Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 |
2827 | instruction set support. |
2828 | |
2829 | === modified file 'gcc/doc/md.texi' |
2830 | --- gcc/doc/md.texi 2011-06-07 11:18:20 +0000 |
2831 | +++ gcc/doc/md.texi 2011-08-13 08:58:15 +0000 |
2832 | @@ -4683,8 +4683,9 @@ |
2833 | string. The instruction is not allowed to prefetch more than one byte |
2834 | at a time since either string may end in the first byte and reading past |
2835 | that may access an invalid page or segment and cause a fault. The |
2836 | -effect of the instruction is to store a value in operand 0 whose sign |
2837 | -indicates the result of the comparison. |
2838 | +comparison terminates early if the fetched bytes are different or if |
2839 | +they are equal to zero. The effect of the instruction is to store a |
2840 | +value in operand 0 whose sign indicates the result of the comparison. |
2841 | |
2842 | @cindex @code{cmpstr@var{m}} instruction pattern |
2843 | @item @samp{cmpstr@var{m}} |
2844 | @@ -4702,8 +4703,10 @@ |
2845 | order starting at the beginning of each string. The instruction is not allowed |
2846 | to prefetch more than one byte at a time since either string may end in the |
2847 | first byte and reading past that may access an invalid page or segment and |
2848 | -cause a fault. The effect of the instruction is to store a value in operand 0 |
2849 | -whose sign indicates the result of the comparison. |
2850 | +cause a fault. The comparison will terminate when the fetched bytes |
2851 | +are different or if they are equal to zero. The effect of the |
2852 | +instruction is to store a value in operand 0 whose sign indicates the |
2853 | +result of the comparison. |
2854 | |
2855 | @cindex @code{cmpmem@var{m}} instruction pattern |
2856 | @item @samp{cmpmem@var{m}} |
2857 | @@ -4711,9 +4714,10 @@ |
2858 | of @samp{cmpstr@var{m}}. The two memory blocks specified are compared |
2859 | byte by byte in lexicographic order starting at the beginning of each |
2860 | block. Unlike @samp{cmpstr@var{m}} the instruction can prefetch |
2861 | -any bytes in the two memory blocks. The effect of the instruction is |
2862 | -to store a value in operand 0 whose sign indicates the result of the |
2863 | -comparison. |
2864 | +any bytes in the two memory blocks. Also unlike @samp{cmpstr@var{m}} |
2865 | +the comparison will not stop if both bytes are zero. The effect of |
2866 | +the instruction is to store a value in operand 0 whose sign indicates |
2867 | +the result of the comparison. |
2868 | |
2869 | @cindex @code{strlen@var{m}} instruction pattern |
2870 | @item @samp{strlen@var{m}} |
2871 | @@ -5552,7 +5556,7 @@ |
2872 | @cindex @code{stack_protect_set} instruction pattern |
2873 | @item @samp{stack_protect_set} |
2874 | |
2875 | -This pattern, if defined, moves a @code{Pmode} value from the memory |
2876 | +This pattern, if defined, moves a @code{ptr_mode} value from the memory |
2877 | in operand 1 to the memory in operand 0 without leaving the value in |
2878 | a register afterward. This is to avoid leaking the value some place |
2879 | that an attacker might use to rewrite the stack guard slot after |
2880 | @@ -5563,7 +5567,7 @@ |
2881 | @cindex @code{stack_protect_test} instruction pattern |
2882 | @item @samp{stack_protect_test} |
2883 | |
2884 | -This pattern, if defined, compares a @code{Pmode} value from the |
2885 | +This pattern, if defined, compares a @code{ptr_mode} value from the |
2886 | memory in operand 1 with the memory in operand 0 without leaving the |
2887 | value in a register afterward and branches to operand 2 if the values |
2888 | weren't equal. |
2889 | |
2890 | === modified file 'gcc/dwarf2out.c' |
2891 | --- gcc/dwarf2out.c 2011-07-01 09:19:21 +0000 |
2892 | +++ gcc/dwarf2out.c 2011-08-13 08:58:15 +0000 |
2893 | @@ -10683,7 +10683,15 @@ |
2894 | size += size_of_sleb128 (AT_int (a)); |
2895 | break; |
2896 | case dw_val_class_unsigned_const: |
2897 | - size += constant_size (AT_unsigned (a)); |
2898 | + { |
2899 | + int csize = constant_size (AT_unsigned (a)); |
2900 | + if (dwarf_version == 3 |
2901 | + && a->dw_attr == DW_AT_data_member_location |
2902 | + && csize >= 4) |
2903 | + size += size_of_uleb128 (AT_unsigned (a)); |
2904 | + else |
2905 | + size += csize; |
2906 | + } |
2907 | break; |
2908 | case dw_val_class_const_double: |
2909 | size += 2 * HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR; |
2910 | @@ -10953,8 +10961,16 @@ |
2911 | case 2: |
2912 | return DW_FORM_data2; |
2913 | case 4: |
2914 | + /* In DWARF3 DW_AT_data_member_location with |
2915 | + DW_FORM_data4 or DW_FORM_data8 is a loclistptr, not |
2916 | + constant, so we need to use DW_FORM_udata if we need |
2917 | + a large constant. */ |
2918 | + if (dwarf_version == 3 && a->dw_attr == DW_AT_data_member_location) |
2919 | + return DW_FORM_udata; |
2920 | return DW_FORM_data4; |
2921 | case 8: |
2922 | + if (dwarf_version == 3 && a->dw_attr == DW_AT_data_member_location) |
2923 | + return DW_FORM_udata; |
2924 | return DW_FORM_data8; |
2925 | default: |
2926 | gcc_unreachable (); |
2927 | @@ -11261,8 +11277,15 @@ |
2928 | break; |
2929 | |
2930 | case dw_val_class_unsigned_const: |
2931 | - dw2_asm_output_data (constant_size (AT_unsigned (a)), |
2932 | - AT_unsigned (a), "%s", name); |
2933 | + { |
2934 | + int csize = constant_size (AT_unsigned (a)); |
2935 | + if (dwarf_version == 3 |
2936 | + && a->dw_attr == DW_AT_data_member_location |
2937 | + && csize >= 4) |
2938 | + dw2_asm_output_data_uleb128 (AT_unsigned (a), "%s", name); |
2939 | + else |
2940 | + dw2_asm_output_data (csize, AT_unsigned (a), "%s", name); |
2941 | + } |
2942 | break; |
2943 | |
2944 | case dw_val_class_const_double: |
2945 | @@ -17187,7 +17210,7 @@ |
2946 | { |
2947 | int count = tree_low_cst (TREE_OPERAND (index, 1), 0) |
2948 | - tree_low_cst (TREE_OPERAND (index, 0), 0); |
2949 | - while (count > 0) |
2950 | + while (count-- > 0) |
2951 | { |
2952 | if (val) |
2953 | memcpy (array + curpos, array + pos, fieldsize); |
2954 | |
2955 | === modified file 'gcc/expr.c' |
2956 | --- gcc/expr.c 2011-07-14 11:52:32 +0000 |
2957 | +++ gcc/expr.c 2011-08-13 08:58:15 +0000 |
2958 | @@ -6965,6 +6965,14 @@ |
2959 | modifier == EXPAND_INITIALIZER |
2960 | ? EXPAND_INITIALIZER : EXPAND_CONST_ADDRESS); |
2961 | |
2962 | + if (TREE_ADDRESSABLE (exp) |
2963 | + && ! MEM_P (result) |
2964 | + && ! targetm.calls.allocate_stack_slots_for_args ()) |
2965 | + { |
2966 | + error ("local frame unavailable (naked function?)"); |
2967 | + return result; |
2968 | + } |
2969 | + |
2970 | /* If the DECL isn't in memory, then the DECL wasn't properly |
2971 | marked TREE_ADDRESSABLE, which will be either a front-end |
2972 | or a tree optimizer bug. */ |
2973 | |
2974 | === modified file 'gcc/fortran/ChangeLog' |
2975 | --- gcc/fortran/ChangeLog 2011-06-27 10:02:19 +0000 |
2976 | +++ gcc/fortran/ChangeLog 2011-08-13 08:58:15 +0000 |
2977 | @@ -1,3 +1,101 @@ |
2978 | +2011-08-05 Janus Weil <janus@gcc.gnu.org> |
2979 | + |
2980 | + PR fortran/49112 |
2981 | + * resolve.c (resolve_structure_cons): Don't do the full dt resolution, |
2982 | + only call 'resolve_fl_derived0'. |
2983 | + (resolve_typebound_procedures): Resolve typebound procedures of |
2984 | + parent type. |
2985 | + (resolve_fl_derived0): New function, which does a part of the work |
2986 | + for 'resolve_fl_derived'. |
2987 | + (resolve_fl_derived): Call 'resolve_fl_derived0' and do some additional |
2988 | + things. |
2989 | + |
2990 | +2011-08-03 Daniel Kraft <d@domob.eu> |
2991 | + |
2992 | + PR fortran/49885 |
2993 | + * trans-array.c (gfc_trans_auto_array_allocation): Change |
2994 | + gfc_start_block to gfc_init_block to avoid spurious extra-scope. |
2995 | + |
2996 | +2011-07-30 Thomas Koenig <tkoenig@gcc.gnu.org> |
2997 | + |
2998 | + Backport from trunk. |
2999 | + PR fortran/48876 |
3000 | + * expr.c (gfc_simplify_expr): If end of a string is less |
3001 | + than zero, set it to zero. |
3002 | + |
3003 | +2011-07-28 Tobias Burnus <burnus@net-b.de> |
3004 | + |
3005 | + PR fortran/45586 |
3006 | + * trans-types.c (gfc_get_derived_type): Ensure that pointer |
3007 | + component types are marked as nonrestricted. |
3008 | + |
3009 | +2011-07-23 Janus Weil <janus@gcc.gnu.org> |
3010 | + |
3011 | + PR fortran/49708 |
3012 | + * resolve.c (resolve_allocate_expr): Fix diagnostics for pointers. |
3013 | + |
3014 | +2011-07-18 Mikael Morin <mikael.morin@sfr.fr> |
3015 | + |
3016 | + PR fortran/49648 |
3017 | + * resolve.c (resolve_symbol): Force resolution of function result's |
3018 | + array specification. |
3019 | + |
3020 | +2011-07-11 Jakub Jelinek <jakub@redhat.com> |
3021 | + |
3022 | + PR fortran/49698 |
3023 | + * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Initialize |
3024 | + inner_size to gfc_index_one_node instead of integer_one_node. |
3025 | + |
3026 | +2011-07-10 Tobias Burnus <burnus@net-b.de> |
3027 | + |
3028 | + PR fortran/49690 |
3029 | + * intrinsic.c (add_functions): Use BT_VOID for 2nd argument of SIGNAL. |
3030 | + |
3031 | +2011-07-10 Janus Weil <janus@gcc.gnu.org> |
3032 | + |
3033 | + PR fortran/49562 |
3034 | + * expr.c (gfc_check_vardef_context): Handle type-bound procedures. |
3035 | + |
3036 | +2011-07-09 Uros Bizjak <ubizjak@gmail.com> |
3037 | + |
3038 | + PR fortran/48926 |
3039 | + * expr.c (gfc_get_corank): Change return value to int. |
3040 | + * gfortran.h (gfc_get_corank): Update function prototype. |
3041 | + |
3042 | +2011-07-04 Jakub Jelinek <jakub@redhat.com> |
3043 | + |
3044 | + PR fortran/49623 |
3045 | + * gfortranspec.c (lang_specific_driver): Ignore options with |
3046 | + CL_ERR_MISSING_ARG errors. |
3047 | + |
3048 | + Backported from mainline |
3049 | + 2011-06-30 Jakub Jelinek <jakub@redhat.com> |
3050 | + |
3051 | + PR fortran/49540 |
3052 | + * gfortran.h (gfc_constructor): Add repeat field. |
3053 | + * trans-array.c (gfc_conv_array_initializer): Handle repeat > 1. |
3054 | + * array.c (current_expand): Add repeat field. |
3055 | + (expand_constructor): Copy repeat. |
3056 | + * constructor.c (node_free, node_copy, gfc_constructor_get, |
3057 | + gfc_constructor_lookup): Handle repeat field. |
3058 | + (gfc_constructor_lookup_next, gfc_constructor_remove): New functions. |
3059 | + * data.h (gfc_assign_data_value): Add mpz_t * argument. |
3060 | + (gfc_assign_data_value_range): Removed. |
3061 | + * constructor.h (gfc_constructor_advance): Removed. |
3062 | + (gfc_constructor_lookup_next, gfc_constructor_remove): New prototypes. |
3063 | + * data.c (gfc_assign_data_value): Add REPEAT argument, handle it and |
3064 | + also handle overwriting a range with a single entry. |
3065 | + (gfc_assign_data_value_range): Removed. |
3066 | + * resolve.c (check_data_variable): Adjust gfc_assign_data_value |
3067 | + call. Use gfc_assign_data_value instead of |
3068 | + gfc_assign_data_value_expr. |
3069 | + |
3070 | +2011-07-02 Janus Weil <janus@gcc.gnu.org> |
3071 | + |
3072 | + PR fortran/49466 |
3073 | + * trans-array.c (structure_alloc_comps): Make sure sub-components |
3074 | + and extended types are correctly deallocated. |
3075 | + |
3076 | 2011-06-27 Release Manager |
3077 | |
3078 | * GCC 4.6.1 released. |
3079 | |
3080 | === modified file 'gcc/fortran/array.c' |
3081 | --- gcc/fortran/array.c 2010-11-02 17:09:58 +0000 |
3082 | +++ gcc/fortran/array.c 2011-08-13 08:58:15 +0000 |
3083 | @@ -1309,6 +1309,7 @@ |
3084 | |
3085 | mpz_t *offset; |
3086 | gfc_component *component; |
3087 | + mpz_t *repeat; |
3088 | |
3089 | gfc_try (*expand_work_function) (gfc_expr *); |
3090 | } |
3091 | @@ -1543,6 +1544,7 @@ |
3092 | return FAILURE; |
3093 | } |
3094 | current_expand.offset = &c->offset; |
3095 | + current_expand.repeat = &c->repeat; |
3096 | current_expand.component = c->n.component; |
3097 | if (current_expand.expand_work_function (e) == FAILURE) |
3098 | return FAILURE; |
3099 | |
3100 | === modified file 'gcc/fortran/constructor.c' |
3101 | --- gcc/fortran/constructor.c 2010-05-05 17:53:23 +0000 |
3102 | +++ gcc/fortran/constructor.c 2011-08-13 08:58:15 +0000 |
3103 | @@ -1,5 +1,5 @@ |
3104 | /* Array and structure constructors |
3105 | - Copyright (C) 2009, 2010 |
3106 | + Copyright (C) 2009, 2010, 2011 |
3107 | Free Software Foundation, Inc. |
3108 | |
3109 | This file is part of GCC. |
3110 | @@ -36,6 +36,7 @@ |
3111 | gfc_free_iterator (c->iterator, 1); |
3112 | |
3113 | mpz_clear (c->offset); |
3114 | + mpz_clear (c->repeat); |
3115 | |
3116 | gfc_free (c); |
3117 | } |
3118 | @@ -54,6 +55,7 @@ |
3119 | c->n.component = src->n.component; |
3120 | |
3121 | mpz_init_set (c->offset, src->offset); |
3122 | + mpz_init_set (c->repeat, src->repeat); |
3123 | |
3124 | return c; |
3125 | } |
3126 | @@ -78,6 +80,7 @@ |
3127 | c->iterator = NULL; |
3128 | |
3129 | mpz_init_set_si (c->offset, 0); |
3130 | + mpz_init_set_si (c->repeat, 1); |
3131 | |
3132 | return c; |
3133 | } |
3134 | @@ -169,6 +172,7 @@ |
3135 | gfc_constructor * |
3136 | gfc_constructor_lookup (gfc_constructor_base base, int offset) |
3137 | { |
3138 | + gfc_constructor *c; |
3139 | splay_tree_node node; |
3140 | |
3141 | if (!base) |
3142 | @@ -176,9 +180,24 @@ |
3143 | |
3144 | node = splay_tree_lookup (base, (splay_tree_key) offset); |
3145 | if (node) |
3146 | - return (gfc_constructor*) node->value; |
3147 | - |
3148 | - return NULL; |
3149 | + return (gfc_constructor *) node->value; |
3150 | + |
3151 | + /* Check if the previous node has a repeat count big enough to |
3152 | + cover the offset looked for. */ |
3153 | + node = splay_tree_predecessor (base, (splay_tree_key) offset); |
3154 | + if (!node) |
3155 | + return NULL; |
3156 | + |
3157 | + c = (gfc_constructor *) node->value; |
3158 | + if (mpz_cmp_si (c->repeat, 1) > 0) |
3159 | + { |
3160 | + if (mpz_get_si (c->offset) + mpz_get_si (c->repeat) <= offset) |
3161 | + c = NULL; |
3162 | + } |
3163 | + else |
3164 | + c = NULL; |
3165 | + |
3166 | + return c; |
3167 | } |
3168 | |
3169 | |
3170 | @@ -232,3 +251,27 @@ |
3171 | else |
3172 | return NULL; |
3173 | } |
3174 | + |
3175 | + |
3176 | +void |
3177 | +gfc_constructor_remove (gfc_constructor *ctor) |
3178 | +{ |
3179 | + if (ctor) |
3180 | + splay_tree_remove (ctor->base, mpz_get_si (ctor->offset)); |
3181 | +} |
3182 | + |
3183 | + |
3184 | +gfc_constructor * |
3185 | +gfc_constructor_lookup_next (gfc_constructor_base base, int offset) |
3186 | +{ |
3187 | + splay_tree_node node; |
3188 | + |
3189 | + if (!base) |
3190 | + return NULL; |
3191 | + |
3192 | + node = splay_tree_successor (base, (splay_tree_key) offset); |
3193 | + if (!node) |
3194 | + return NULL; |
3195 | + |
3196 | + return (gfc_constructor *) node->value; |
3197 | +} |
3198 | |
3199 | === modified file 'gcc/fortran/constructor.h' |
3200 | --- gcc/fortran/constructor.h 2010-05-23 16:18:24 +0000 |
3201 | +++ gcc/fortran/constructor.h 2011-08-13 08:58:15 +0000 |
3202 | @@ -1,5 +1,5 @@ |
3203 | /* Array and structure constructors |
3204 | - Copyright (C) 2009, 2010 |
3205 | + Copyright (C) 2009, 2010, 2011 |
3206 | Free Software Foundation, Inc. |
3207 | |
3208 | This file is part of GCC. |
3209 | @@ -81,6 +81,10 @@ |
3210 | Returns NULL if there is no next expression. */ |
3211 | gfc_constructor *gfc_constructor_next (gfc_constructor *ctor); |
3212 | |
3213 | -gfc_constructor *gfc_constructor_advance (gfc_constructor *ctor, int n); |
3214 | +/* Remove the gfc_constructor node from the splay tree. */ |
3215 | +void gfc_constructor_remove (gfc_constructor *); |
3216 | + |
3217 | +/* Return first constructor node after offset. */ |
3218 | +gfc_constructor *gfc_constructor_lookup_next (gfc_constructor_base, int); |
3219 | |
3220 | #endif /* GFC_CONSTRUCTOR_H */ |
3221 | |
3222 | === modified file 'gcc/fortran/data.c' |
3223 | --- gcc/fortran/data.c 2010-08-27 06:50:03 +0000 |
3224 | +++ gcc/fortran/data.c 2011-08-13 08:58:15 +0000 |
3225 | @@ -1,5 +1,5 @@ |
3226 | /* Supporting functions for resolving DATA statement. |
3227 | - Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
3228 | + Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
3229 | Free Software Foundation, Inc. |
3230 | Contributed by Lifang Zeng <zlf605@hotmail.com> |
3231 | |
3232 | @@ -189,10 +189,13 @@ |
3233 | |
3234 | /* Assign the initial value RVALUE to LVALUE's symbol->value. If the |
3235 | LVALUE already has an initialization, we extend this, otherwise we |
3236 | - create a new one. */ |
3237 | + create a new one. If REPEAT is non-NULL, initialize *REPEAT |
3238 | + consecutive values in LVALUE the same value in RVALUE. In that case, |
3239 | + LVALUE must refer to a full array, not an array section. */ |
3240 | |
3241 | gfc_try |
3242 | -gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index) |
3243 | +gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index, |
3244 | + mpz_t *repeat) |
3245 | { |
3246 | gfc_ref *ref; |
3247 | gfc_expr *init; |
3248 | @@ -269,6 +272,100 @@ |
3249 | &lvalue->where); |
3250 | goto abort; |
3251 | } |
3252 | + else if (repeat != NULL |
3253 | + && ref->u.ar.type != AR_ELEMENT) |
3254 | + { |
3255 | + mpz_t size, end; |
3256 | + gcc_assert (ref->u.ar.type == AR_FULL |
3257 | + && ref->next == NULL); |
3258 | + mpz_init_set (end, offset); |
3259 | + mpz_add (end, end, *repeat); |
3260 | + if (spec_size (ref->u.ar.as, &size) == SUCCESS) |
3261 | + { |
3262 | + if (mpz_cmp (end, size) > 0) |
3263 | + { |
3264 | + mpz_clear (size); |
3265 | + gfc_error ("Data element above array upper bound at %L", |
3266 | + &lvalue->where); |
3267 | + goto abort; |
3268 | + } |
3269 | + mpz_clear (size); |
3270 | + } |
3271 | + |
3272 | + con = gfc_constructor_lookup (expr->value.constructor, |
3273 | + mpz_get_si (offset)); |
3274 | + if (!con) |
3275 | + { |
3276 | + con = gfc_constructor_lookup_next (expr->value.constructor, |
3277 | + mpz_get_si (offset)); |
3278 | + if (con != NULL && mpz_cmp (con->offset, end) >= 0) |
3279 | + con = NULL; |
3280 | + } |
3281 | + |
3282 | + /* Overwriting an existing initializer is non-standard but |
3283 | + usually only provokes a warning from other compilers. */ |
3284 | + if (con != NULL && con->expr != NULL) |
3285 | + { |
3286 | + /* Order in which the expressions arrive here depends on |
3287 | + whether they are from data statements or F95 style |
3288 | + declarations. Therefore, check which is the most |
3289 | + recent. */ |
3290 | + gfc_expr *exprd; |
3291 | + exprd = (LOCATION_LINE (con->expr->where.lb->location) |
3292 | + > LOCATION_LINE (rvalue->where.lb->location)) |
3293 | + ? con->expr : rvalue; |
3294 | + if (gfc_notify_std (GFC_STD_GNU,"Extension: " |
3295 | + "re-initialization of '%s' at %L", |
3296 | + symbol->name, &exprd->where) == FAILURE) |
3297 | + return FAILURE; |
3298 | + } |
3299 | + |
3300 | + while (con != NULL) |
3301 | + { |
3302 | + gfc_constructor *next_con = gfc_constructor_next (con); |
3303 | + |
3304 | + if (mpz_cmp (con->offset, end) >= 0) |
3305 | + break; |
3306 | + if (mpz_cmp (con->offset, offset) < 0) |
3307 | + { |
3308 | + gcc_assert (mpz_cmp_si (con->repeat, 1) > 0); |
3309 | + mpz_sub (con->repeat, offset, con->offset); |
3310 | + } |
3311 | + else if (mpz_cmp_si (con->repeat, 1) > 0 |
3312 | + && mpz_get_si (con->offset) |
3313 | + + mpz_get_si (con->repeat) > mpz_get_si (end)) |
3314 | + { |
3315 | + int endi; |
3316 | + splay_tree_node node |
3317 | + = splay_tree_lookup (con->base, |
3318 | + mpz_get_si (con->offset)); |
3319 | + gcc_assert (node |
3320 | + && con == (gfc_constructor *) node->value |
3321 | + && node->key == (splay_tree_key) |
3322 | + mpz_get_si (con->offset)); |
3323 | + endi = mpz_get_si (con->offset) |
3324 | + + mpz_get_si (con->repeat); |
3325 | + if (endi > mpz_get_si (end) + 1) |
3326 | + mpz_set_si (con->repeat, endi - mpz_get_si (end)); |
3327 | + else |
3328 | + mpz_set_si (con->repeat, 1); |
3329 | + mpz_set (con->offset, end); |
3330 | + node->key = (splay_tree_key) mpz_get_si (end); |
3331 | + break; |
3332 | + } |
3333 | + else |
3334 | + gfc_constructor_remove (con); |
3335 | + con = next_con; |
3336 | + } |
3337 | + |
3338 | + con = gfc_constructor_insert_expr (&expr->value.constructor, |
3339 | + NULL, &rvalue->where, |
3340 | + mpz_get_si (offset)); |
3341 | + mpz_set (con->repeat, *repeat); |
3342 | + repeat = NULL; |
3343 | + mpz_clear (end); |
3344 | + break; |
3345 | + } |
3346 | else |
3347 | { |
3348 | mpz_t size; |
3349 | @@ -293,6 +390,32 @@ |
3350 | NULL, &rvalue->where, |
3351 | mpz_get_si (offset)); |
3352 | } |
3353 | + else if (mpz_cmp_si (con->repeat, 1) > 0) |
3354 | + { |
3355 | + /* Need to split a range. */ |
3356 | + if (mpz_cmp (con->offset, offset) < 0) |
3357 | + { |
3358 | + gfc_constructor *pred_con = con; |
3359 | + con = gfc_constructor_insert_expr (&expr->value.constructor, |
3360 | + NULL, &con->where, |
3361 | + mpz_get_si (offset)); |
3362 | + con->expr = gfc_copy_expr (pred_con->expr); |
3363 | + mpz_add (con->repeat, pred_con->offset, pred_con->repeat); |
3364 | + mpz_sub (con->repeat, con->repeat, offset); |
3365 | + mpz_sub (pred_con->repeat, offset, pred_con->offset); |
3366 | + } |
3367 | + if (mpz_cmp_si (con->repeat, 1) > 0) |
3368 | + { |
3369 | + gfc_constructor *succ_con; |
3370 | + succ_con |
3371 | + = gfc_constructor_insert_expr (&expr->value.constructor, |
3372 | + NULL, &con->where, |
3373 | + mpz_get_si (offset) + 1); |
3374 | + succ_con->expr = gfc_copy_expr (con->expr); |
3375 | + mpz_sub_ui (succ_con->repeat, con->repeat, 1); |
3376 | + mpz_set_si (con->repeat, 1); |
3377 | + } |
3378 | + } |
3379 | break; |
3380 | |
3381 | case REF_COMPONENT: |
3382 | @@ -337,6 +460,7 @@ |
3383 | } |
3384 | |
3385 | mpz_clear (offset); |
3386 | + gcc_assert (repeat == NULL); |
3387 | |
3388 | if (ref || last_ts->type == BT_CHARACTER) |
3389 | { |
3390 | @@ -380,36 +504,6 @@ |
3391 | } |
3392 | |
3393 | |
3394 | -/* Similarly, but initialize REPEAT consecutive values in LVALUE the same |
3395 | - value in RVALUE. */ |
3396 | - |
3397 | -gfc_try |
3398 | -gfc_assign_data_value_range (gfc_expr *lvalue, gfc_expr *rvalue, |
3399 | - mpz_t index, mpz_t repeat) |
3400 | -{ |
3401 | - mpz_t offset, last_offset; |
3402 | - gfc_try t; |
3403 | - |
3404 | - mpz_init (offset); |
3405 | - mpz_init (last_offset); |
3406 | - mpz_add (last_offset, index, repeat); |
3407 | - |
3408 | - t = SUCCESS; |
3409 | - for (mpz_set(offset, index) ; mpz_cmp(offset, last_offset) < 0; |
3410 | - mpz_add_ui (offset, offset, 1)) |
3411 | - if (gfc_assign_data_value (lvalue, rvalue, offset) == FAILURE) |
3412 | - { |
3413 | - t = FAILURE; |
3414 | - break; |
3415 | - } |
3416 | - |
3417 | - mpz_clear (offset); |
3418 | - mpz_clear (last_offset); |
3419 | - |
3420 | - return t; |
3421 | -} |
3422 | - |
3423 | - |
3424 | /* Modify the index of array section and re-calculate the array offset. */ |
3425 | |
3426 | void |
3427 | |
3428 | === modified file 'gcc/fortran/data.h' |
3429 | --- gcc/fortran/data.h 2011-01-03 20:52:22 +0000 |
3430 | +++ gcc/fortran/data.h 2011-08-13 08:58:15 +0000 |
3431 | @@ -1,5 +1,5 @@ |
3432 | /* Header for functions resolving DATA statements. |
3433 | - Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. |
3434 | + Copyright (C) 2007, 2008, 2010, 2011 Free Software Foundation, Inc. |
3435 | |
3436 | This file is part of GCC. |
3437 | |
3438 | @@ -19,6 +19,5 @@ |
3439 | |
3440 | void gfc_formalize_init_value (gfc_symbol *); |
3441 | void gfc_get_section_index (gfc_array_ref *, mpz_t *, mpz_t *); |
3442 | -gfc_try gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t); |
3443 | -gfc_try gfc_assign_data_value_range (gfc_expr *, gfc_expr *, mpz_t, mpz_t); |
3444 | +gfc_try gfc_assign_data_value (gfc_expr *, gfc_expr *, mpz_t, mpz_t *); |
3445 | void gfc_advance_section (mpz_t *, gfc_array_ref *, mpz_t *); |
3446 | |
3447 | === modified file 'gcc/fortran/expr.c' |
3448 | --- gcc/fortran/expr.c 2011-05-11 20:31:14 +0000 |
3449 | +++ gcc/fortran/expr.c 2011-08-13 08:58:15 +0000 |
3450 | @@ -1840,6 +1840,9 @@ |
3451 | if (p->ref && p->ref->u.ss.end) |
3452 | gfc_extract_int (p->ref->u.ss.end, &end); |
3453 | |
3454 | + if (end < 0) |
3455 | + end = 0; |
3456 | + |
3457 | s = gfc_get_wide_string (end - start + 2); |
3458 | memcpy (s, p->value.character.string + start, |
3459 | (end - start) * sizeof (gfc_char_t)); |
3460 | @@ -4139,7 +4142,7 @@ |
3461 | } |
3462 | |
3463 | |
3464 | -bool |
3465 | +int |
3466 | gfc_get_corank (gfc_expr *e) |
3467 | { |
3468 | int corank; |
3469 | @@ -4389,8 +4392,8 @@ |
3470 | sym = e->value.function.esym ? e->value.function.esym : e->symtree->n.sym; |
3471 | } |
3472 | |
3473 | - if (!pointer && e->expr_type == EXPR_FUNCTION |
3474 | - && sym->result->attr.pointer) |
3475 | + attr = gfc_expr_attr (e); |
3476 | + if (!pointer && e->expr_type == EXPR_FUNCTION && attr.pointer) |
3477 | { |
3478 | if (!(gfc_option.allow_std & GFC_STD_F2008)) |
3479 | { |
3480 | @@ -4427,7 +4430,6 @@ |
3481 | |
3482 | /* Find out whether the expr is a pointer; this also means following |
3483 | component references to the last one. */ |
3484 | - attr = gfc_expr_attr (e); |
3485 | is_pointer = (attr.pointer || attr.proc_pointer); |
3486 | if (pointer && !is_pointer) |
3487 | { |
3488 | |
3489 | === modified file 'gcc/fortran/gfortran.h' |
3490 | --- gcc/fortran/gfortran.h 2011-05-31 21:37:01 +0000 |
3491 | +++ gcc/fortran/gfortran.h 2011-08-13 08:58:15 +0000 |
3492 | @@ -2264,6 +2264,8 @@ |
3493 | gfc_component *component; /* Record the component being initialized. */ |
3494 | } |
3495 | n; |
3496 | + mpz_t repeat; /* Record the repeat number of initial values in data |
3497 | + statement like "data a/5*10/". */ |
3498 | } |
3499 | gfc_constructor; |
3500 | |
3501 | @@ -2725,7 +2727,7 @@ |
3502 | bool gfc_is_proc_ptr_comp (gfc_expr *, gfc_component **); |
3503 | |
3504 | bool gfc_is_coindexed (gfc_expr *); |
3505 | -bool gfc_get_corank (gfc_expr *); |
3506 | +int gfc_get_corank (gfc_expr *); |
3507 | bool gfc_has_ultimate_allocatable (gfc_expr *); |
3508 | bool gfc_has_ultimate_pointer (gfc_expr *); |
3509 | |
3510 | |
3511 | === modified file 'gcc/fortran/gfortranspec.c' |
3512 | --- gcc/fortran/gfortranspec.c 2011-01-31 13:52:42 +0000 |
3513 | +++ gcc/fortran/gfortranspec.c 2011-08-13 08:58:15 +0000 |
3514 | @@ -255,6 +255,9 @@ |
3515 | |
3516 | for (i = 1; i < argc; ++i) |
3517 | { |
3518 | + if (decoded_options[i].errors & CL_ERR_MISSING_ARG) |
3519 | + continue; |
3520 | + |
3521 | switch (decoded_options[i].opt_index) |
3522 | { |
3523 | case OPT_SPECIAL_input_file: |
3524 | |
3525 | === modified file 'gcc/fortran/intrinsic.c' |
3526 | --- gcc/fortran/intrinsic.c 2011-01-29 17:36:18 +0000 |
3527 | +++ gcc/fortran/intrinsic.c 2011-08-13 08:58:15 +0000 |
3528 | @@ -2588,7 +2588,7 @@ |
3529 | |
3530 | add_sym_2 ("signal", GFC_ISYM_SIGNAL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, |
3531 | di, GFC_STD_GNU, gfc_check_signal, NULL, gfc_resolve_signal, |
3532 | - num, BT_INTEGER, di, REQUIRED, han, BT_UNKNOWN, 0, REQUIRED); |
3533 | + num, BT_INTEGER, di, REQUIRED, han, BT_VOID, 0, REQUIRED); |
3534 | |
3535 | make_generic ("signal", GFC_ISYM_SIGNAL, GFC_STD_GNU); |
3536 | |
3537 | |
3538 | === modified file 'gcc/fortran/resolve.c' |
3539 | --- gcc/fortran/resolve.c 2011-06-19 21:05:18 +0000 |
3540 | +++ gcc/fortran/resolve.c 2011-08-13 08:58:15 +0000 |
3541 | @@ -950,6 +950,9 @@ |
3542 | } |
3543 | |
3544 | |
3545 | +static gfc_try resolve_fl_derived0 (gfc_symbol *sym); |
3546 | + |
3547 | + |
3548 | /* Resolve all of the elements of a structure constructor and make sure that |
3549 | the types are correct. The 'init' flag indicates that the given |
3550 | constructor is an initializer. */ |
3551 | @@ -965,7 +968,7 @@ |
3552 | t = SUCCESS; |
3553 | |
3554 | if (expr->ts.type == BT_DERIVED) |
3555 | - resolve_symbol (expr->ts.u.derived); |
3556 | + resolve_fl_derived0 (expr->ts.u.derived); |
3557 | |
3558 | cons = gfc_constructor_first (expr->value.constructor); |
3559 | /* A constructor may have references if it is the result of substituting a |
3560 | @@ -6831,7 +6834,7 @@ |
3561 | gfc_find_derived_vtab (ts.u.derived); |
3562 | } |
3563 | |
3564 | - if (pointer || (dimension == 0 && codimension == 0)) |
3565 | + if (dimension == 0 && codimension == 0) |
3566 | goto success; |
3567 | |
3568 | /* Make sure the last reference node is an array specifiction. */ |
3569 | @@ -11242,9 +11245,14 @@ |
3570 | resolve_typebound_procedures (gfc_symbol* derived) |
3571 | { |
3572 | int op; |
3573 | + gfc_symbol* super_type; |
3574 | |
3575 | if (!derived->f2k_derived || !derived->f2k_derived->tb_sym_root) |
3576 | return SUCCESS; |
3577 | + |
3578 | + super_type = gfc_get_derived_super_type (derived); |
3579 | + if (super_type) |
3580 | + resolve_typebound_procedures (super_type); |
3581 | |
3582 | resolve_bindings_derived = derived; |
3583 | resolve_bindings_result = SUCCESS; |
3584 | @@ -11356,28 +11364,17 @@ |
3585 | } |
3586 | |
3587 | |
3588 | -/* Resolve the components of a derived type. */ |
3589 | +/* Resolve the components of a derived type. This does not have to wait until |
3590 | + resolution stage, but can be done as soon as the dt declaration has been |
3591 | + parsed. */ |
3592 | |
3593 | static gfc_try |
3594 | -resolve_fl_derived (gfc_symbol *sym) |
3595 | +resolve_fl_derived0 (gfc_symbol *sym) |
3596 | { |
3597 | gfc_symbol* super_type; |
3598 | gfc_component *c; |
3599 | |
3600 | super_type = gfc_get_derived_super_type (sym); |
3601 | - |
3602 | - if (sym->attr.is_class && sym->ts.u.derived == NULL) |
3603 | - { |
3604 | - /* Fix up incomplete CLASS symbols. */ |
3605 | - gfc_component *data = gfc_find_component (sym, "_data", true, true); |
3606 | - gfc_component *vptr = gfc_find_component (sym, "_vptr", true, true); |
3607 | - if (vptr->ts.u.derived == NULL) |
3608 | - { |
3609 | - gfc_symbol *vtab = gfc_find_derived_vtab (data->ts.u.derived); |
3610 | - gcc_assert (vtab); |
3611 | - vptr->ts.u.derived = vtab->ts.u.derived; |
3612 | - } |
3613 | - } |
3614 | |
3615 | /* F2008, C432. */ |
3616 | if (super_type && sym->attr.coarray_comp && !super_type->attr.coarray_comp) |
3617 | @@ -11389,7 +11386,7 @@ |
3618 | } |
3619 | |
3620 | /* Ensure the extended type gets resolved before we do. */ |
3621 | - if (super_type && resolve_fl_derived (super_type) == FAILURE) |
3622 | + if (super_type && resolve_fl_derived0 (super_type) == FAILURE) |
3623 | return FAILURE; |
3624 | |
3625 | /* An ABSTRACT type must be extensible. */ |
3626 | @@ -11742,14 +11739,6 @@ |
3627 | return FAILURE; |
3628 | } |
3629 | |
3630 | - /* Resolve the type-bound procedures. */ |
3631 | - if (resolve_typebound_procedures (sym) == FAILURE) |
3632 | - return FAILURE; |
3633 | - |
3634 | - /* Resolve the finalizer procedures. */ |
3635 | - if (gfc_resolve_finalizers (sym) == FAILURE) |
3636 | - return FAILURE; |
3637 | - |
3638 | /* If this is a non-ABSTRACT type extending an ABSTRACT one, ensure that |
3639 | all DEFERRED bindings are overridden. */ |
3640 | if (super_type && super_type->attr.abstract && !sym->attr.abstract |
3641 | @@ -11764,6 +11753,42 @@ |
3642 | } |
3643 | |
3644 | |
3645 | +/* The following procedure does the full resolution of a derived type, |
3646 | + including resolution of all type-bound procedures (if present). In contrast |
3647 | + to 'resolve_fl_derived0' this can only be done after the module has been |
3648 | + parsed completely. */ |
3649 | + |
3650 | +static gfc_try |
3651 | +resolve_fl_derived (gfc_symbol *sym) |
3652 | +{ |
3653 | + if (sym->attr.is_class && sym->ts.u.derived == NULL) |
3654 | + { |
3655 | + /* Fix up incomplete CLASS symbols. */ |
3656 | + gfc_component *data = gfc_find_component (sym, "_data", true, true); |
3657 | + gfc_component *vptr = gfc_find_component (sym, "_vptr", true, true); |
3658 | + if (vptr->ts.u.derived == NULL) |
3659 | + { |
3660 | + gfc_symbol *vtab = gfc_find_derived_vtab (data->ts.u.derived); |
3661 | + gcc_assert (vtab); |
3662 | + vptr->ts.u.derived = vtab->ts.u.derived; |
3663 | + } |
3664 | + } |
3665 | + |
3666 | + if (resolve_fl_derived0 (sym) == FAILURE) |
3667 | + return FAILURE; |
3668 | + |
3669 | + /* Resolve the type-bound procedures. */ |
3670 | + if (resolve_typebound_procedures (sym) == FAILURE) |
3671 | + return FAILURE; |
3672 | + |
3673 | + /* Resolve the finalizer procedures. */ |
3674 | + if (gfc_resolve_finalizers (sym) == FAILURE) |
3675 | + return FAILURE; |
3676 | + |
3677 | + return SUCCESS; |
3678 | +} |
3679 | + |
3680 | + |
3681 | static gfc_try |
3682 | resolve_fl_namelist (gfc_symbol *sym) |
3683 | { |
3684 | @@ -12076,6 +12101,8 @@ |
3685 | } |
3686 | } |
3687 | } |
3688 | + else if (mp_flag && sym->attr.flavor == FL_PROCEDURE && sym->attr.function) |
3689 | + gfc_resolve_array_spec (sym->result->as, false); |
3690 | |
3691 | /* Assumed size arrays and assumed shape arrays must be dummy |
3692 | arguments. Array-spec's of implied-shape should have been resolved to |
3693 | @@ -12612,8 +12639,8 @@ |
3694 | mpz_set_ui (size, 0); |
3695 | } |
3696 | |
3697 | - t = gfc_assign_data_value_range (var->expr, values.vnode->expr, |
3698 | - offset, range); |
3699 | + t = gfc_assign_data_value (var->expr, values.vnode->expr, |
3700 | + offset, &range); |
3701 | |
3702 | mpz_add (offset, offset, range); |
3703 | mpz_clear (range); |
3704 | @@ -12628,7 +12655,8 @@ |
3705 | mpz_sub_ui (values.left, values.left, 1); |
3706 | mpz_sub_ui (size, size, 1); |
3707 | |
3708 | - t = gfc_assign_data_value (var->expr, values.vnode->expr, offset); |
3709 | + t = gfc_assign_data_value (var->expr, values.vnode->expr, |
3710 | + offset, NULL); |
3711 | if (t == FAILURE) |
3712 | break; |
3713 | |
3714 | |
3715 | === modified file 'gcc/fortran/trans-array.c' |
3716 | --- gcc/fortran/trans-array.c 2011-06-17 06:11:31 +0000 |
3717 | +++ gcc/fortran/trans-array.c 2011-08-13 08:58:15 +0000 |
3718 | @@ -4490,7 +4490,7 @@ |
3719 | gfc_se se; |
3720 | HOST_WIDE_INT hi; |
3721 | unsigned HOST_WIDE_INT lo; |
3722 | - tree index; |
3723 | + tree index, range; |
3724 | VEC(constructor_elt,gc) *v = NULL; |
3725 | |
3726 | switch (expr->expr_type) |
3727 | @@ -4544,28 +4544,56 @@ |
3728 | else |
3729 | index = NULL_TREE; |
3730 | |
3731 | + if (mpz_cmp_si (c->repeat, 1) > 0) |
3732 | + { |
3733 | + tree tmp1, tmp2; |
3734 | + mpz_t maxval; |
3735 | + |
3736 | + mpz_init (maxval); |
3737 | + mpz_add (maxval, c->offset, c->repeat); |
3738 | + mpz_sub_ui (maxval, maxval, 1); |
3739 | + tmp2 = gfc_conv_mpz_to_tree (maxval, gfc_index_integer_kind); |
3740 | + if (mpz_cmp_si (c->offset, 0) != 0) |
3741 | + { |
3742 | + mpz_add_ui (maxval, c->offset, 1); |
3743 | + tmp1 = gfc_conv_mpz_to_tree (maxval, gfc_index_integer_kind); |
3744 | + } |
3745 | + else |
3746 | + tmp1 = gfc_conv_mpz_to_tree (c->offset, gfc_index_integer_kind); |
3747 | + |
3748 | + range = fold_build2 (RANGE_EXPR, gfc_array_index_type, tmp1, tmp2); |
3749 | + mpz_clear (maxval); |
3750 | + } |
3751 | + else |
3752 | + range = NULL; |
3753 | + |
3754 | gfc_init_se (&se, NULL); |
3755 | switch (c->expr->expr_type) |
3756 | { |
3757 | case EXPR_CONSTANT: |
3758 | gfc_conv_constant (&se, c->expr); |
3759 | - CONSTRUCTOR_APPEND_ELT (v, index, se.expr); |
3760 | break; |
3761 | |
3762 | case EXPR_STRUCTURE: |
3763 | gfc_conv_structure (&se, c->expr, 1); |
3764 | - CONSTRUCTOR_APPEND_ELT (v, index, se.expr); |
3765 | break; |
3766 | |
3767 | - |
3768 | default: |
3769 | /* Catch those occasional beasts that do not simplify |
3770 | for one reason or another, assuming that if they are |
3771 | standard defying the frontend will catch them. */ |
3772 | gfc_conv_expr (&se, c->expr); |
3773 | - CONSTRUCTOR_APPEND_ELT (v, index, se.expr); |
3774 | break; |
3775 | } |
3776 | + |
3777 | + if (range == NULL_TREE) |
3778 | + CONSTRUCTOR_APPEND_ELT (v, index, se.expr); |
3779 | + else |
3780 | + { |
3781 | + if (index != NULL_TREE) |
3782 | + CONSTRUCTOR_APPEND_ELT (v, index, se.expr); |
3783 | + CONSTRUCTOR_APPEND_ELT (v, range, se.expr); |
3784 | + } |
3785 | } |
3786 | break; |
3787 | |
3788 | @@ -4694,7 +4722,7 @@ |
3789 | gcc_assert (GFC_ARRAY_TYPE_P (type)); |
3790 | onstack = TREE_CODE (type) != POINTER_TYPE; |
3791 | |
3792 | - gfc_start_block (&init); |
3793 | + gfc_init_block (&init); |
3794 | |
3795 | /* Evaluate character string length. */ |
3796 | if (sym->ts.type == BT_CHARACTER |
3797 | @@ -6521,18 +6549,22 @@ |
3798 | switch (purpose) |
3799 | { |
3800 | case DEALLOCATE_ALLOC_COMP: |
3801 | + if (cmp_has_alloc_comps && !c->attr.pointer) |
3802 | + { |
3803 | + /* Do not deallocate the components of ultimate pointer |
3804 | + components. */ |
3805 | + comp = fold_build3_loc (input_location, COMPONENT_REF, ctype, |
3806 | + decl, cdecl, NULL_TREE); |
3807 | + rank = c->as ? c->as->rank : 0; |
3808 | + tmp = structure_alloc_comps (c->ts.u.derived, comp, NULL_TREE, |
3809 | + rank, purpose); |
3810 | + gfc_add_expr_to_block (&fnblock, tmp); |
3811 | + } |
3812 | + |
3813 | if (c->attr.allocatable && c->attr.dimension) |
3814 | { |
3815 | comp = fold_build3_loc (input_location, COMPONENT_REF, ctype, |
3816 | decl, cdecl, NULL_TREE); |
3817 | - if (cmp_has_alloc_comps && !c->attr.pointer) |
3818 | - { |
3819 | - /* Do not deallocate the components of ultimate pointer |
3820 | - components. */ |
3821 | - tmp = structure_alloc_comps (c->ts.u.derived, comp, NULL_TREE, |
3822 | - c->as->rank, purpose); |
3823 | - gfc_add_expr_to_block (&fnblock, tmp); |
3824 | - } |
3825 | tmp = gfc_trans_dealloc_allocated (comp); |
3826 | gfc_add_expr_to_block (&fnblock, tmp); |
3827 | } |
3828 | |
3829 | === modified file 'gcc/fortran/trans-stmt.c' |
3830 | --- gcc/fortran/trans-stmt.c 2011-02-27 14:12:31 +0000 |
3831 | +++ gcc/fortran/trans-stmt.c 2011-08-13 08:58:15 +0000 |
3832 | @@ -3095,7 +3095,7 @@ |
3833 | count = gfc_create_var (gfc_array_index_type, "count"); |
3834 | gfc_add_modify (block, count, gfc_index_zero_node); |
3835 | |
3836 | - inner_size = integer_one_node; |
3837 | + inner_size = gfc_index_one_node; |
3838 | lss = gfc_walk_expr (expr1); |
3839 | rss = gfc_walk_expr (expr2); |
3840 | if (lss == gfc_ss_terminator) |
3841 | |
3842 | === modified file 'gcc/fortran/trans-types.c' |
3843 | --- gcc/fortran/trans-types.c 2011-02-20 16:23:50 +0000 |
3844 | +++ gcc/fortran/trans-types.c 2011-08-13 08:58:15 +0000 |
3845 | @@ -2329,6 +2329,9 @@ |
3846 | && !c->attr.proc_pointer) |
3847 | field_type = build_pointer_type (field_type); |
3848 | |
3849 | + if (c->attr.pointer) |
3850 | + field_type = gfc_nonrestricted_type (field_type); |
3851 | + |
3852 | /* vtype fields can point to different types to the base type. */ |
3853 | if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.vtype) |
3854 | field_type = build_pointer_type_for_mode (TREE_TYPE (field_type), |
3855 | |
3856 | === modified file 'gcc/gimple.c' |
3857 | --- gcc/gimple.c 2011-06-02 12:12:00 +0000 |
3858 | +++ gcc/gimple.c 2011-08-13 08:58:15 +0000 |
3859 | @@ -5030,6 +5030,20 @@ |
3860 | && TREE_CODE (OBJ_TYPE_REF_OBJECT (rhs)) == ADDR_EXPR) |
3861 | ret |= visit_addr (stmt, TREE_OPERAND (OBJ_TYPE_REF_OBJECT (rhs), |
3862 | 0), data); |
3863 | + else if (TREE_CODE (rhs) == CONSTRUCTOR) |
3864 | + { |
3865 | + unsigned int ix; |
3866 | + tree val; |
3867 | + |
3868 | + FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (rhs), ix, val) |
3869 | + if (TREE_CODE (val) == ADDR_EXPR) |
3870 | + ret |= visit_addr (stmt, TREE_OPERAND (val, 0), data); |
3871 | + else if (TREE_CODE (val) == OBJ_TYPE_REF |
3872 | + && TREE_CODE (OBJ_TYPE_REF_OBJECT (val)) == ADDR_EXPR) |
3873 | + ret |= visit_addr (stmt, |
3874 | + TREE_OPERAND (OBJ_TYPE_REF_OBJECT (val), |
3875 | + 0), data); |
3876 | + } |
3877 | lhs = gimple_assign_lhs (stmt); |
3878 | if (TREE_CODE (lhs) == TARGET_MEM_REF |
3879 | && TREE_CODE (TMR_BASE (lhs)) == ADDR_EXPR) |
3880 | |
3881 | === modified file 'gcc/gimplify.c' |
3882 | --- gcc/gimplify.c 2011-07-13 13:17:31 +0000 |
3883 | +++ gcc/gimplify.c 2011-08-13 08:58:15 +0000 |
3884 | @@ -2008,8 +2008,14 @@ |
3885 | ret = MIN (ret, tret); |
3886 | } |
3887 | } |
3888 | + else |
3889 | + { |
3890 | + tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, |
3891 | + is_gimple_reg, fb_rvalue); |
3892 | + ret = MIN (ret, tret); |
3893 | + } |
3894 | |
3895 | - if (!TREE_OPERAND (t, 3)) |
3896 | + if (TREE_OPERAND (t, 3) == NULL_TREE) |
3897 | { |
3898 | tree elmt_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0))); |
3899 | tree elmt_size = unshare_expr (array_ref_element_size (t)); |
3900 | @@ -2028,11 +2034,17 @@ |
3901 | ret = MIN (ret, tret); |
3902 | } |
3903 | } |
3904 | + else |
3905 | + { |
3906 | + tret = gimplify_expr (&TREE_OPERAND (t, 3), pre_p, post_p, |
3907 | + is_gimple_reg, fb_rvalue); |
3908 | + ret = MIN (ret, tret); |
3909 | + } |
3910 | } |
3911 | else if (TREE_CODE (t) == COMPONENT_REF) |
3912 | { |
3913 | /* Set the field offset into T and gimplify it. */ |
3914 | - if (!TREE_OPERAND (t, 2)) |
3915 | + if (TREE_OPERAND (t, 2) == NULL_TREE) |
3916 | { |
3917 | tree offset = unshare_expr (component_ref_field_offset (t)); |
3918 | tree field = TREE_OPERAND (t, 1); |
3919 | @@ -2051,6 +2063,12 @@ |
3920 | ret = MIN (ret, tret); |
3921 | } |
3922 | } |
3923 | + else |
3924 | + { |
3925 | + tret = gimplify_expr (&TREE_OPERAND (t, 2), pre_p, post_p, |
3926 | + is_gimple_reg, fb_rvalue); |
3927 | + ret = MIN (ret, tret); |
3928 | + } |
3929 | } |
3930 | } |
3931 | |
3932 | |
3933 | === modified file 'gcc/omp-low.c' |
3934 | --- gcc/omp-low.c 2011-04-13 15:52:17 +0000 |
3935 | +++ gcc/omp-low.c 2011-08-13 08:58:15 +0000 |
3936 | @@ -785,7 +785,7 @@ |
3937 | break; |
3938 | |
3939 | if (c) |
3940 | - return true; |
3941 | + goto maybe_mark_addressable_and_ret; |
3942 | } |
3943 | } |
3944 | |
3945 | @@ -795,7 +795,9 @@ |
3946 | returns, the task hasn't necessarily terminated. */ |
3947 | if (!TREE_READONLY (decl) && is_task_ctx (shared_ctx)) |
3948 | { |
3949 | - tree outer = maybe_lookup_decl_in_outer_ctx (decl, shared_ctx); |
3950 | + tree outer; |
3951 | + maybe_mark_addressable_and_ret: |
3952 | + outer = maybe_lookup_decl_in_outer_ctx (decl, shared_ctx); |
3953 | if (is_gimple_reg (outer)) |
3954 | { |
3955 | /* Taking address of OUTER in lower_send_shared_vars |
3956 | |
3957 | === modified file 'gcc/po/ChangeLog' |
3958 | --- gcc/po/ChangeLog 2011-06-27 20:57:06 +0000 |
3959 | +++ gcc/po/ChangeLog 2011-08-13 08:58:15 +0000 |
3960 | @@ -1,3 +1,21 @@ |
3961 | +2011-07-31 Joseph Myers <joseph@codesourcery.com> |
3962 | + |
3963 | + * de.po: Update. |
3964 | + |
3965 | +2011-07-21 Joseph Myers <joseph@codesourcery.com> |
3966 | + |
3967 | + * de.po, sv.po: Update. |
3968 | + |
3969 | +2011-07-08 Joseph Myers <joseph@codesourcery.com> |
3970 | + |
3971 | + * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po, |
3972 | + nl.po, ru.po, sr.po, sv.po, tr.po, vi.po, zh_CN.po, zh_TW.po: |
3973 | + Update. |
3974 | + |
3975 | +2011-06-30 Joseph Myers <joseph@codesourcery.com> |
3976 | + |
3977 | + * de.po: Update. |
3978 | + |
3979 | 2011-06-27 Joseph Myers <joseph@codesourcery.com> |
3980 | |
3981 | * de.po: Update. |
3982 | |
3983 | === modified file 'gcc/po/be.po' |
3984 | --- gcc/po/be.po 2011-04-03 11:30:58 +0000 |
3985 | +++ gcc/po/be.po 2011-08-13 08:58:15 +0000 |
3986 | @@ -6,7 +6,7 @@ |
3987 | msgstr "" |
3988 | "Project-Id-Version: gcc 3.1\n" |
3989 | "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" |
3990 | -"POT-Creation-Date: 2011-03-24 16:45+0000\n" |
3991 | +"POT-Creation-Date: 2011-06-21 10:27+0000\n" |
3992 | "PO-Revision-Date: 2002-05-17 15:54+0200\n" |
3993 | "Last-Translator: Ales Nyakhaychyk <nyakhaychyk@i18n.linux.by>\n" |
3994 | "Language-Team: Belarusian <i18n@tut.by>\n" |
3995 | @@ -15,8 +15,8 @@ |
3996 | "Content-Type: text/plain; charset=utf-8\n" |
3997 | "Content-Transfer-Encoding: 8bit\n" |
3998 | |
3999 | -#: c-decl.c:4660 c-typeck.c:5851 toplev.c:1013 c-family/c-pretty-print.c:423 |
4000 | -#: cp/error.c:610 cp/error.c:889 |
4001 | +#: c-decl.c:4660 c-typeck.c:5853 toplev.c:1013 c-family/c-pretty-print.c:423 |
4002 | +#: cp/error.c:617 cp/error.c:896 |
4003 | msgid "<anonymous>" |
4004 | msgstr "" |
4005 | |
4006 | @@ -24,7 +24,7 @@ |
4007 | msgid "({anonymous})" |
4008 | msgstr "" |
4009 | |
4010 | -#: c-parser.c:942 cp/parser.c:20965 |
4011 | +#: c-parser.c:942 cp/parser.c:20975 |
4012 | #, gcc-internal-format |
4013 | msgid "expected end of line" |
4014 | msgstr "" |
4015 | @@ -34,7 +34,7 @@ |
4016 | #: c-parser.c:6980 c-parser.c:7016 c-parser.c:7048 c-parser.c:7096 |
4017 | #: c-parser.c:7276 c-parser.c:8042 c-parser.c:8112 c-parser.c:8155 |
4018 | #: c-parser.c:9132 c-parser.c:9277 c-parser.c:9315 c-parser.c:2442 |
4019 | -#: c-parser.c:7269 cp/parser.c:20911 |
4020 | +#: c-parser.c:7269 cp/parser.c:20921 |
4021 | #, gcc-internal-format |
4022 | msgid "expected %<;%>" |
4023 | msgstr "" |
4024 | @@ -46,13 +46,13 @@ |
4025 | #: c-parser.c:6395 c-parser.c:6419 c-parser.c:7566 c-parser.c:7638 |
4026 | #: c-parser.c:8447 c-parser.c:8468 c-parser.c:8518 c-parser.c:8628 |
4027 | #: c-parser.c:8701 c-parser.c:8769 c-parser.c:9240 c-parser.c:8591 |
4028 | -#: cp/parser.c:20914 |
4029 | +#: cp/parser.c:20924 |
4030 | #, gcc-internal-format |
4031 | msgid "expected %<(%>" |
4032 | msgstr "" |
4033 | |
4034 | #: c-parser.c:1804 c-parser.c:6186 c-parser.c:6224 c-parser.c:6309 |
4035 | -#: c-parser.c:6316 c-parser.c:6353 cp/parser.c:20576 cp/parser.c:20929 |
4036 | +#: c-parser.c:6316 c-parser.c:6353 cp/parser.c:20586 cp/parser.c:20939 |
4037 | #, gcc-internal-format |
4038 | msgid "expected %<,%>" |
4039 | msgstr "" |
4040 | @@ -68,13 +68,13 @@ |
4041 | #: c-parser.c:7381 c-parser.c:7589 c-parser.c:7642 c-parser.c:8014 |
4042 | #: c-parser.c:8450 c-parser.c:8471 c-parser.c:8549 c-parser.c:8634 |
4043 | #: c-parser.c:8750 c-parser.c:8832 c-parser.c:9168 c-parser.c:9285 |
4044 | -#: c-parser.c:9326 cp/parser.c:20959 |
4045 | +#: c-parser.c:9326 cp/parser.c:20969 |
4046 | #, gcc-internal-format |
4047 | msgid "expected %<)%>" |
4048 | msgstr "" |
4049 | |
4050 | #: c-parser.c:2997 c-parser.c:3784 c-parser.c:3818 c-parser.c:5089 |
4051 | -#: c-parser.c:6288 c-parser.c:6452 c-parser.c:6559 cp/parser.c:20923 |
4052 | +#: c-parser.c:6288 c-parser.c:6452 c-parser.c:6559 cp/parser.c:20933 |
4053 | #, gcc-internal-format |
4054 | msgid "expected %<]%>" |
4055 | msgstr "" |
4056 | @@ -83,25 +83,25 @@ |
4057 | msgid "expected %<;%>, %<,%> or %<)%>" |
4058 | msgstr "" |
4059 | |
4060 | -#: c-parser.c:3647 cp/parser.c:20917 cp/parser.c:22533 |
4061 | +#: c-parser.c:3647 cp/parser.c:20927 cp/parser.c:22543 |
4062 | #, gcc-internal-format |
4063 | msgid "expected %<}%>" |
4064 | msgstr "" |
4065 | |
4066 | #: c-parser.c:3937 c-parser.c:7609 c-parser.c:9569 c-parser.c:2262 |
4067 | -#: c-parser.c:2462 c-parser.c:7165 cp/parser.c:13540 cp/parser.c:20920 |
4068 | +#: c-parser.c:2462 c-parser.c:7165 cp/parser.c:13548 cp/parser.c:20930 |
4069 | #, gcc-internal-format |
4070 | msgid "expected %<{%>" |
4071 | msgstr "" |
4072 | |
4073 | #: c-parser.c:4156 c-parser.c:4165 c-parser.c:4993 c-parser.c:5334 |
4074 | #: c-parser.c:7374 c-parser.c:7749 c-parser.c:7806 c-parser.c:8739 |
4075 | -#: cp/parser.c:20953 cp/parser.c:21771 |
4076 | +#: cp/parser.c:20963 cp/parser.c:21781 |
4077 | #, gcc-internal-format |
4078 | msgid "expected %<:%>" |
4079 | msgstr "" |
4080 | |
4081 | -#: c-parser.c:4689 cp/parser.c:20853 |
4082 | +#: c-parser.c:4689 cp/parser.c:20863 |
4083 | #, gcc-internal-format |
4084 | msgid "expected %<while%>" |
4085 | msgstr "" |
4086 | @@ -110,33 +110,33 @@ |
4087 | msgid "expected %<.%>" |
4088 | msgstr "" |
4089 | |
4090 | -#: c-parser.c:6854 c-parser.c:6886 c-parser.c:7109 cp/parser.c:22319 |
4091 | -#: cp/parser.c:22392 |
4092 | +#: c-parser.c:6854 c-parser.c:6886 c-parser.c:7109 cp/parser.c:22329 |
4093 | +#: cp/parser.c:22402 |
4094 | #, gcc-internal-format |
4095 | msgid "expected %<@end%>" |
4096 | msgstr "" |
4097 | |
4098 | -#: c-parser.c:7523 cp/parser.c:20938 |
4099 | +#: c-parser.c:7523 cp/parser.c:20948 |
4100 | #, gcc-internal-format |
4101 | msgid "expected %<>%>" |
4102 | msgstr "" |
4103 | |
4104 | -#: c-parser.c:8836 cp/parser.c:20962 |
4105 | +#: c-parser.c:8836 cp/parser.c:20972 |
4106 | #, gcc-internal-format |
4107 | msgid "expected %<,%> or %<)%>" |
4108 | msgstr "" |
4109 | |
4110 | -#: c-parser.c:9266 c-parser.c:3841 cp/parser.c:20941 |
4111 | +#: c-parser.c:9266 c-parser.c:3841 cp/parser.c:20951 |
4112 | #, gcc-internal-format |
4113 | msgid "expected %<=%>" |
4114 | msgstr "" |
4115 | |
4116 | -#: c-parser.c:9626 c-parser.c:9616 cp/parser.c:24857 |
4117 | +#: c-parser.c:9626 c-parser.c:9616 cp/parser.c:24868 |
4118 | #, gcc-internal-format |
4119 | msgid "expected %<#pragma omp section%> or %<}%>" |
4120 | msgstr "" |
4121 | |
4122 | -#: c-typeck.c:6494 |
4123 | +#: c-typeck.c:6496 |
4124 | msgid "(anonymous)" |
4125 | msgstr "" |
4126 | |
4127 | @@ -158,6 +158,7 @@ |
4128 | |
4129 | #: collect2.c:500 |
4130 | #, fuzzy, c-format |
4131 | +#| msgid "abort in %s, at %s:%d" |
4132 | msgid "internal gcc abort in %s, at %s:%d" |
4133 | msgstr "спынена ў %s, ля %s:%d" |
4134 | |
4135 | @@ -188,6 +189,7 @@ |
4136 | |
4137 | #: collect2.c:1797 |
4138 | #, fuzzy, c-format |
4139 | +#| msgid "%d constructor(s) found\n" |
4140 | msgid "%d constructor found\n" |
4141 | msgid_plural "%d constructors found\n" |
4142 | msgstr[0] "%d канструктар(аў) знойдзен(а)\n" |
4143 | @@ -195,6 +197,7 @@ |
4144 | |
4145 | #: collect2.c:1801 |
4146 | #, fuzzy, c-format |
4147 | +#| msgid "%d destructor(s) found\n" |
4148 | msgid "%d destructor found\n" |
4149 | msgid_plural "%d destructors found\n" |
4150 | msgstr[0] "%d дэструктар(аў) знойдзен(а)\n" |
4151 | @@ -234,6 +237,7 @@ |
4152 | |
4153 | #: collect2.c:2076 |
4154 | #, fuzzy, c-format |
4155 | +#| msgid "cannot find `%s'" |
4156 | msgid "cannot find '%s'" |
4157 | msgstr "нельга знайсці \"%s\"" |
4158 | |
4159 | @@ -256,11 +260,13 @@ |
4160 | |
4161 | #: collect2.c:2595 |
4162 | #, fuzzy, c-format |
4163 | +#| msgid "cannot find `nm'" |
4164 | msgid "cannot find 'nm'" |
4165 | msgstr "нельга знайсці \"nm\"" |
4166 | |
4167 | #: collect2.c:2643 |
4168 | #, fuzzy, c-format |
4169 | +#| msgid "can't open output file `%s'" |
4170 | msgid "can't open nm output" |
4171 | msgstr "немагчыма адчыніць файл уводу `%s'" |
4172 | |
4173 | @@ -276,6 +282,7 @@ |
4174 | |
4175 | #: collect2.c:2838 |
4176 | #, fuzzy, c-format |
4177 | +#| msgid "can't open output file `%s'" |
4178 | msgid "can't open ldd output" |
4179 | msgstr "немагчыма адчыніць файл уводу `%s'" |
4180 | |
4181 | @@ -323,11 +330,13 @@ |
4182 | |
4183 | #: diagnostic.c:219 |
4184 | #, fuzzy, c-format |
4185 | +#| msgid "compilation terminated.\n" |
4186 | msgid "compilation terminated due to -Wfatal-errors.\n" |
4187 | msgstr "кампіляцыя завершана.\n" |
4188 | |
4189 | #: diagnostic.c:229 |
4190 | #, fuzzy, c-format |
4191 | +#| msgid "compilation terminated.\n" |
4192 | msgid "compilation terminated due to -fmax-errors=%u.\n" |
4193 | msgstr "кампіляцыя завершана.\n" |
4194 | |
4195 | @@ -358,41 +367,42 @@ |
4196 | msgid "negative insn length" |
4197 | msgstr "" |
4198 | |
4199 | -#: final.c:2643 |
4200 | +#: final.c:2648 |
4201 | msgid "could not split insn" |
4202 | msgstr "" |
4203 | |
4204 | -#: final.c:3079 |
4205 | +#: final.c:3084 |
4206 | #, fuzzy |
4207 | +#| msgid "invalid mask" |
4208 | msgid "invalid 'asm': " |
4209 | msgstr "нерэчаісная маска" |
4210 | |
4211 | -#: final.c:3262 |
4212 | +#: final.c:3267 |
4213 | #, c-format |
4214 | msgid "nested assembly dialect alternatives" |
4215 | msgstr "" |
4216 | |
4217 | -#: final.c:3279 final.c:3291 |
4218 | +#: final.c:3284 final.c:3296 |
4219 | #, c-format |
4220 | msgid "unterminated assembly dialect alternative" |
4221 | msgstr "" |
4222 | |
4223 | -#: final.c:3338 |
4224 | +#: final.c:3343 |
4225 | #, c-format |
4226 | msgid "operand number missing after %%-letter" |
4227 | msgstr "" |
4228 | |
4229 | -#: final.c:3341 final.c:3382 |
4230 | +#: final.c:3346 final.c:3387 |
4231 | #, c-format |
4232 | msgid "operand number out of range" |
4233 | msgstr "" |
4234 | |
4235 | -#: final.c:3399 |
4236 | +#: final.c:3404 |
4237 | #, c-format |
4238 | msgid "invalid %%-code" |
4239 | msgstr "нерэчаісны %%-код" |
4240 | |
4241 | -#: final.c:3429 |
4242 | +#: final.c:3434 |
4243 | #, c-format |
4244 | msgid "'%%l' operand isn't a label" |
4245 | msgstr "" |
4246 | @@ -403,12 +413,12 @@ |
4247 | #. TARGET_PRINT_OPERAND must handle them. |
4248 | #. We can't handle floating point constants; |
4249 | #. PRINT_OPERAND must handle them. |
4250 | -#: final.c:3570 config/i386/i386.c:13149 config/pdp11/pdp11.c:1722 |
4251 | +#: final.c:3575 config/i386/i386.c:13168 config/pdp11/pdp11.c:1722 |
4252 | #, c-format |
4253 | msgid "floating constant misused" |
4254 | msgstr "" |
4255 | |
4256 | -#: final.c:3629 config/i386/i386.c:13247 config/pdp11/pdp11.c:1763 |
4257 | +#: final.c:3634 config/i386/i386.c:13266 config/pdp11/pdp11.c:1763 |
4258 | #, c-format |
4259 | msgid "invalid expression as operand" |
4260 | msgstr "" |
4261 | @@ -491,6 +501,7 @@ |
4262 | |
4263 | #: gcc.c:2921 |
4264 | #, fuzzy |
4265 | +#| msgid " --help Display this information\n" |
4266 | msgid " Display specific types of command line options\n" |
4267 | msgstr " --help Адлюстраваць гэту інфармацыю\n" |
4268 | |
4269 | @@ -500,6 +511,7 @@ |
4270 | |
4271 | #: gcc.c:2924 |
4272 | #, fuzzy |
4273 | +#| msgid " --help Display this information\n" |
4274 | msgid " --version Display compiler version information\n" |
4275 | msgstr " --help Адлюстраваць гэту інфармацыю\n" |
4276 | |
4277 | @@ -547,6 +559,7 @@ |
4278 | |
4279 | #: gcc.c:2937 |
4280 | #, fuzzy |
4281 | +#| msgid " -dumpversion Display the version of the compiler\n" |
4282 | msgid " -print-sysroot Display the target libraries directory\n" |
4283 | msgstr " -dumpversion Адлюстраваць версію кампілятара\n" |
4284 | |
4285 | @@ -708,6 +721,7 @@ |
4286 | |
4287 | #: gcc.c:6579 |
4288 | #, fuzzy, c-format |
4289 | +#| msgid "libraries: %s\n" |
4290 | msgid "Target: %s\n" |
4291 | msgstr "бібліятэкі: %s\n" |
4292 | |
4293 | @@ -723,6 +737,7 @@ |
4294 | |
4295 | #: gcc.c:6605 |
4296 | #, fuzzy, c-format |
4297 | +#| msgid "gcc version %s\n" |
4298 | msgid "gcc version %s %s\n" |
4299 | msgstr "версія gcc %s\n" |
4300 | |
4301 | @@ -837,6 +852,7 @@ |
4302 | |
4303 | #: gcov.c:431 |
4304 | #, fuzzy, c-format |
4305 | +#| msgid " --help Display this information\n" |
4306 | msgid " -d, --display-progress Display progress information\n" |
4307 | msgstr " --help Адлюстраваць гэту інфармацыю\n" |
4308 | |
4309 | @@ -866,21 +882,27 @@ |
4310 | |
4311 | #: gcov.c:546 |
4312 | #, fuzzy, c-format |
4313 | +#| msgid "not found\n" |
4314 | msgid "%s:no functions found\n" |
4315 | msgstr "не знойдзена\n" |
4316 | |
4317 | #: gcov.c:578 gcov.c:606 |
4318 | #, fuzzy, c-format |
4319 | +#| msgid ":\n" |
4320 | msgid "\n" |
4321 | msgstr ":\n" |
4322 | |
4323 | #: gcov.c:593 |
4324 | #, fuzzy, c-format |
4325 | +#| msgid "%s: compiling `%s'\n" |
4326 | msgid "%s:creating '%s'\n" |
4327 | msgstr "%s: кампілюецца \"%s\"\n" |
4328 | |
4329 | #: gcov.c:597 |
4330 | #, fuzzy, c-format |
4331 | +#| msgid "" |
4332 | +#| "\n" |
4333 | +#| "%s: error reading input file `%s': %s\n" |
4334 | msgid "%s:error writing output file '%s'\n" |
4335 | msgstr "" |
4336 | "\n" |
4337 | @@ -888,6 +910,7 @@ |
4338 | |
4339 | #: gcov.c:602 |
4340 | #, fuzzy, c-format |
4341 | +#| msgid "can't open output file `%s'" |
4342 | msgid "%s:could not open output file '%s'\n" |
4343 | msgstr "немагчыма адчыніць файл уводу `%s'" |
4344 | |
4345 | @@ -903,6 +926,7 @@ |
4346 | |
4347 | #: gcov.c:780 |
4348 | #, fuzzy, c-format |
4349 | +#| msgid "can't open output file `%s'" |
4350 | msgid "%s:cannot open graph file\n" |
4351 | msgstr "немагчыма адчыніць файл уводу `%s'" |
4352 | |
4353 | @@ -933,6 +957,7 @@ |
4354 | |
4355 | #: gcov.c:1052 |
4356 | #, fuzzy, c-format |
4357 | +#| msgid "Could not open data file %s.\n" |
4358 | msgid "%s:not a gcov data file\n" |
4359 | msgstr "Немагчыма адчыніць файл з дадзенымі %s.\n" |
4360 | |
4361 | @@ -948,6 +973,7 @@ |
4362 | |
4363 | #: gcov.c:1101 |
4364 | #, fuzzy, c-format |
4365 | +#| msgid "In function `%s':" |
4366 | msgid "%s:unknown function '%u'\n" |
4367 | msgstr "у функцыі \"%s\":" |
4368 | |
4369 | @@ -1023,6 +1049,9 @@ |
4370 | |
4371 | #: gcov.c:1648 |
4372 | #, fuzzy, c-format |
4373 | +#| msgid "" |
4374 | +#| "\n" |
4375 | +#| " Options for %s:\n" |
4376 | msgid "%s:no lines for '%s'\n" |
4377 | msgstr "" |
4378 | "\n" |
4379 | @@ -1060,6 +1089,7 @@ |
4380 | |
4381 | #: gcov.c:1901 |
4382 | #, fuzzy, c-format |
4383 | +#| msgid "cannot find source %s" |
4384 | msgid "%s:cannot open source file\n" |
4385 | msgstr "не магу знайсці крыніцу %s" |
4386 | |
4387 | @@ -1125,6 +1155,7 @@ |
4388 | |
4389 | #: gengtype-state.c:1175 |
4390 | #, fuzzy, c-format |
4391 | +#| msgid "%s: can't open file `%s' for reading: %s\n" |
4392 | msgid "Failed to open file %s for writing state: %s" |
4393 | msgstr "%s: немагчыма адчыніць файл `%s' для чытаньня: %s\n" |
4394 | |
4395 | @@ -1135,6 +1166,7 @@ |
4396 | |
4397 | #: gengtype-state.c:1210 |
4398 | #, fuzzy, c-format |
4399 | +#| msgid "can't close input file %s" |
4400 | msgid "failed to close state file %s [%s]" |
4401 | msgstr "немагчыма зачыніць уваходзячы файл %s" |
4402 | |
4403 | @@ -1145,6 +1177,7 @@ |
4404 | |
4405 | #: gengtype-state.c:2395 |
4406 | #, fuzzy, c-format |
4407 | +#| msgid "%s: can't open file `%s' for reading: %s\n" |
4408 | msgid "Failed to open state file %s for reading [%s]" |
4409 | msgstr "%s: немагчыма адчыніць файл `%s' для чытаньня: %s\n" |
4410 | |
4411 | @@ -1183,7 +1216,7 @@ |
4412 | msgid "End of search list.\n" |
4413 | msgstr "" |
4414 | |
4415 | -#: input.c:39 c-family/c-opts.c:1294 cp/error.c:1046 fortran/cpp.c:568 |
4416 | +#: input.c:39 c-family/c-opts.c:1294 cp/error.c:1053 fortran/cpp.c:568 |
4417 | msgid "<built-in>" |
4418 | msgstr "" |
4419 | |
4420 | @@ -1209,28 +1242,32 @@ |
4421 | msgid "At top level:" |
4422 | msgstr "" |
4423 | |
4424 | -#: langhooks.c:394 cp/error.c:2818 |
4425 | +#: langhooks.c:394 cp/error.c:2837 |
4426 | #, fuzzy, c-format |
4427 | msgid "In member function %qs" |
4428 | msgstr "у функцыі \"%s\":" |
4429 | |
4430 | -#: langhooks.c:398 cp/error.c:2821 |
4431 | +#: langhooks.c:398 cp/error.c:2840 |
4432 | #, fuzzy, c-format |
4433 | +#| msgid "In function `%s':" |
4434 | msgid "In function %qs" |
4435 | msgstr "у функцыі \"%s\":" |
4436 | |
4437 | -#: langhooks.c:449 cp/error.c:2771 |
4438 | +#: langhooks.c:449 cp/error.c:2790 |
4439 | #, fuzzy, c-format |
4440 | +#| msgid "In file included from %s:%d" |
4441 | msgid " inlined from %qs at %s:%d:%d" |
4442 | msgstr "У файле уключаным з %s:%d" |
4443 | |
4444 | -#: langhooks.c:454 cp/error.c:2776 |
4445 | +#: langhooks.c:454 cp/error.c:2795 |
4446 | #, fuzzy, c-format |
4447 | +#| msgid "In file included from %s:%d" |
4448 | msgid " inlined from %qs at %s:%d" |
4449 | msgstr "У файле уключаным з %s:%d" |
4450 | |
4451 | -#: langhooks.c:460 cp/error.c:2782 |
4452 | +#: langhooks.c:460 cp/error.c:2801 |
4453 | #, fuzzy, c-format |
4454 | +#| msgid "In file included from %s:%d" |
4455 | msgid " inlined from %qs" |
4456 | msgstr "У файле уключаным з %s:%d" |
4457 | |
4458 | @@ -1272,11 +1309,13 @@ |
4459 | |
4460 | #: lto-wrapper.c:258 |
4461 | #, fuzzy, c-format |
4462 | +#| msgid "unable to open file '%s'" |
4463 | msgid "failed to open %s" |
4464 | msgstr "немагу адчыніць файл \"%s\"" |
4465 | |
4466 | #: lto-wrapper.c:263 |
4467 | #, fuzzy, c-format |
4468 | +#| msgid "cannot create temporary file" |
4469 | msgid "could not write to temporary file %s" |
4470 | msgstr "немагчыма стварыць часовы файл" |
4471 | |
4472 | @@ -1297,6 +1336,7 @@ |
4473 | |
4474 | #: lto-wrapper.c:484 |
4475 | #, fuzzy, c-format |
4476 | +#| msgid "can't open %s" |
4477 | msgid "fopen: %s" |
4478 | msgstr "немагчыма адчыніць %s" |
4479 | |
4480 | @@ -1402,17 +1442,17 @@ |
4481 | msgstr "" |
4482 | |
4483 | #. It's the compiler's fault. |
4484 | -#: reload1.c:6009 |
4485 | +#: reload1.c:6016 |
4486 | #, fuzzy |
4487 | msgid "could not find a spill register" |
4488 | msgstr "Не выкарыстоўваць рэгістра sb" |
4489 | |
4490 | #. It's the compiler's fault. |
4491 | -#: reload1.c:7852 |
4492 | +#: reload1.c:7849 |
4493 | msgid "VOIDmode on an output" |
4494 | msgstr "" |
4495 | |
4496 | -#: reload1.c:8619 |
4497 | +#: reload1.c:8616 |
4498 | msgid "failure trying to reload:" |
4499 | msgstr "" |
4500 | |
4501 | @@ -1474,11 +1514,16 @@ |
4502 | |
4503 | #: toplev.c:355 |
4504 | #, fuzzy, c-format |
4505 | +#| msgid "internal error" |
4506 | msgid "unrecoverable error" |
4507 | msgstr "унутраная памылка" |
4508 | |
4509 | #: toplev.c:691 |
4510 | #, fuzzy, c-format |
4511 | +#| msgid "" |
4512 | +#| "%s%s%s version %s (%s)\n" |
4513 | +#| "%s\tcompiled by GNU C version %s.\n" |
4514 | +#| "%s%s%s version %s (%s) compiled by CC.\n" |
4515 | msgid "" |
4516 | "%s%s%s %sversion %s (%s)\n" |
4517 | "%s\tcompiled by GNU C version %s, " |
4518 | @@ -1515,11 +1560,11 @@ |
4519 | msgid "options enabled: " |
4520 | msgstr "выбары ўключаны:" |
4521 | |
4522 | -#: tree-vrp.c:6794 |
4523 | +#: tree-vrp.c:6821 |
4524 | msgid "assuming signed overflow does not occur when simplifying && or || to & or |" |
4525 | msgstr "" |
4526 | |
4527 | -#: tree-vrp.c:6798 |
4528 | +#: tree-vrp.c:6825 |
4529 | msgid "assuming signed overflow does not occur when simplifying ==, != or ! to identity or ^" |
4530 | msgstr "" |
4531 | |
4532 | @@ -1588,6 +1633,9 @@ |
4533 | #. Inlining failed because of mismatched options or arguments. |
4534 | #: cif-code.def:81 |
4535 | #, fuzzy |
4536 | +#| msgid "" |
4537 | +#| "\n" |
4538 | +#| "Language specific options:\n" |
4539 | msgid "target specific option mismatch" |
4540 | msgstr "" |
4541 | "\n" |
4542 | @@ -1595,6 +1643,7 @@ |
4543 | |
4544 | #: cif-code.def:82 |
4545 | #, fuzzy |
4546 | +#| msgid "no arguments" |
4547 | msgid "mismatched arguments" |
4548 | msgstr "няма аргументаў" |
4549 | |
4550 | @@ -1653,6 +1702,7 @@ |
4551 | |
4552 | #: diagnostic.def:44 |
4553 | #, fuzzy |
4554 | +#| msgid "parse error" |
4555 | msgid "permerror: " |
4556 | msgstr "граматычная памылка" |
4557 | |
4558 | @@ -2064,107 +2114,111 @@ |
4559 | msgid "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass" |
4560 | msgstr "" |
4561 | |
4562 | -#: params.def:708 |
4563 | +#: params.def:704 |
4564 | +msgid "Maximum number of active local stores in RTL dead store elimination" |
4565 | +msgstr "" |
4566 | + |
4567 | +#: params.def:714 |
4568 | msgid "The number of insns executed before prefetch is completed" |
4569 | msgstr "" |
4570 | |
4571 | -#: params.def:715 |
4572 | +#: params.def:721 |
4573 | msgid "The number of prefetches that can run at the same time" |
4574 | msgstr "" |
4575 | |
4576 | -#: params.def:722 |
4577 | +#: params.def:728 |
4578 | msgid "The size of L1 cache" |
4579 | msgstr "" |
4580 | |
4581 | -#: params.def:729 |
4582 | +#: params.def:735 |
4583 | msgid "The size of L1 cache line" |
4584 | msgstr "" |
4585 | |
4586 | -#: params.def:736 |
4587 | +#: params.def:742 |
4588 | msgid "The size of L2 cache" |
4589 | msgstr "" |
4590 | |
4591 | -#: params.def:747 |
4592 | +#: params.def:753 |
4593 | msgid "Whether to use canonical types" |
4594 | msgstr "" |
4595 | |
4596 | -#: params.def:752 |
4597 | +#: params.def:758 |
4598 | msgid "Maximum length of partial antic set when performing tree pre optimization" |
4599 | msgstr "" |
4600 | |
4601 | -#: params.def:762 |
4602 | +#: params.def:768 |
4603 | msgid "Maximum size of a SCC before SCCVN stops processing a function" |
4604 | msgstr "" |
4605 | |
4606 | -#: params.def:767 |
4607 | +#: params.def:773 |
4608 | msgid "Max loops number for regional RA" |
4609 | msgstr "" |
4610 | |
4611 | -#: params.def:772 |
4612 | +#: params.def:778 |
4613 | msgid "Max size of conflict table in MB" |
4614 | msgstr "" |
4615 | |
4616 | -#: params.def:777 |
4617 | +#: params.def:783 |
4618 | msgid "The number of registers in each class kept unused by loop invariant motion" |
4619 | msgstr "" |
4620 | |
4621 | -#: params.def:785 |
4622 | +#: params.def:791 |
4623 | msgid "The maximum ratio between array size and switch branches for a switch conversion to take place" |
4624 | msgstr "" |
4625 | |
4626 | -#: params.def:793 |
4627 | +#: params.def:799 |
4628 | msgid "size of tiles for loop blocking" |
4629 | msgstr "" |
4630 | |
4631 | -#: params.def:800 |
4632 | +#: params.def:806 |
4633 | msgid "maximum number of parameters in a SCoP" |
4634 | msgstr "" |
4635 | |
4636 | -#: params.def:807 |
4637 | +#: params.def:813 |
4638 | msgid "maximum number of basic blocks per function to be analyzed by Graphite" |
4639 | msgstr "" |
4640 | |
4641 | -#: params.def:814 |
4642 | +#: params.def:820 |
4643 | msgid "Max basic blocks number in loop for loop invariant motion" |
4644 | msgstr "" |
4645 | |
4646 | -#: params.def:820 |
4647 | +#: params.def:826 |
4648 | msgid "Maximum number of instructions in basic block to be considered for SLP vectorization" |
4649 | msgstr "" |
4650 | |
4651 | -#: params.def:825 |
4652 | +#: params.def:831 |
4653 | msgid "Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count" |
4654 | msgstr "" |
4655 | |
4656 | -#: params.def:831 |
4657 | +#: params.def:837 |
4658 | msgid "Min. ratio of insns to mem ops to enable prefetching in a loop" |
4659 | msgstr "" |
4660 | |
4661 | -#: params.def:838 |
4662 | +#: params.def:844 |
4663 | msgid "Max. size of var tracking hash tables" |
4664 | msgstr "" |
4665 | |
4666 | -#: params.def:845 |
4667 | +#: params.def:851 |
4668 | msgid "The minimum UID to be used for a nondebug insn" |
4669 | msgstr "" |
4670 | |
4671 | -#: params.def:850 |
4672 | +#: params.def:856 |
4673 | msgid "Maximum allowed growth of size of new parameters ipa-sra replaces a pointer to an aggregate with" |
4674 | msgstr "" |
4675 | |
4676 | -#: params.def:856 |
4677 | +#: params.def:862 |
4678 | msgid "Maximum size of a type list associated with each parameter for devirtualization" |
4679 | msgstr "" |
4680 | |
4681 | -#: params.def:864 |
4682 | +#: params.def:870 |
4683 | msgid "Number of paritions program should be split to" |
4684 | msgstr "" |
4685 | |
4686 | -#: params.def:869 |
4687 | +#: params.def:875 |
4688 | msgid "Size of minimal paritition for WHOPR (in estimated instructions)" |
4689 | msgstr "" |
4690 | |
4691 | -#: params.def:876 |
4692 | +#: params.def:882 |
4693 | msgid "Maximum number of namespaces to search for alternatives when name lookup fails" |
4694 | msgstr "" |
4695 | |
4696 | @@ -2182,6 +2236,7 @@ |
4697 | |
4698 | #: c-family/c-format.c:484 c-family/c-format.c:508 config/i386/msformat-c.c:49 |
4699 | #, fuzzy |
4700 | +#| msgid "`0' flag" |
4701 | msgid "' ' flag" |
4702 | msgstr "'0' флаг" |
4703 | |
4704 | @@ -2192,6 +2247,7 @@ |
4705 | #: c-family/c-format.c:485 c-family/c-format.c:509 c-family/c-format.c:543 |
4706 | #: c-family/c-format.c:606 config/i386/msformat-c.c:50 |
4707 | #, fuzzy |
4708 | +#| msgid "`0' flag" |
4709 | msgid "'+' flag" |
4710 | msgstr "'0' флаг" |
4711 | |
4712 | @@ -2204,6 +2260,7 @@ |
4713 | #: c-family/c-format.c:582 config/i386/msformat-c.c:51 |
4714 | #: config/i386/msformat-c.c:86 |
4715 | #, fuzzy |
4716 | +#| msgid "`0' flag" |
4717 | msgid "'#' flag" |
4718 | msgstr "'0' флаг" |
4719 | |
4720 | @@ -2215,6 +2272,7 @@ |
4721 | #: c-family/c-format.c:487 c-family/c-format.c:511 c-family/c-format.c:580 |
4722 | #: config/i386/msformat-c.c:52 |
4723 | #, fuzzy |
4724 | +#| msgid "`0' flag" |
4725 | msgid "'0' flag" |
4726 | msgstr "'0' флаг" |
4727 | |
4728 | @@ -2225,6 +2283,7 @@ |
4729 | #: c-family/c-format.c:488 c-family/c-format.c:512 c-family/c-format.c:579 |
4730 | #: c-family/c-format.c:609 config/i386/msformat-c.c:53 |
4731 | #, fuzzy |
4732 | +#| msgid "`0' flag" |
4733 | msgid "'-' flag" |
4734 | msgstr "'0' флаг" |
4735 | |
4736 | @@ -2235,6 +2294,7 @@ |
4737 | #: c-family/c-format.c:489 c-family/c-format.c:562 config/i386/msformat-c.c:54 |
4738 | #: config/i386/msformat-c.c:74 |
4739 | #, fuzzy |
4740 | +#| msgid "`0' flag" |
4741 | msgid "''' flag" |
4742 | msgstr "'0' флаг" |
4743 | |
4744 | @@ -2244,6 +2304,7 @@ |
4745 | |
4746 | #: c-family/c-format.c:490 c-family/c-format.c:563 |
4747 | #, fuzzy |
4748 | +#| msgid "`0' flag" |
4749 | msgid "'I' flag" |
4750 | msgstr "'0' флаг" |
4751 | |
4752 | @@ -2285,6 +2346,7 @@ |
4753 | |
4754 | #: c-family/c-format.c:545 |
4755 | #, fuzzy |
4756 | +#| msgid "`0' flag" |
4757 | msgid "'q' flag" |
4758 | msgstr "'0' флаг" |
4759 | |
4760 | @@ -2302,6 +2364,7 @@ |
4761 | |
4762 | #: c-family/c-format.c:558 config/i386/msformat-c.c:71 |
4763 | #, fuzzy |
4764 | +#| msgid "`0' flag" |
4765 | msgid "'a' flag" |
4766 | msgstr "'0' флаг" |
4767 | |
4768 | @@ -2311,6 +2374,7 @@ |
4769 | |
4770 | #: c-family/c-format.c:559 |
4771 | #, fuzzy |
4772 | +#| msgid "`0' flag" |
4773 | msgid "'m' flag" |
4774 | msgstr "'0' флаг" |
4775 | |
4776 | @@ -2336,6 +2400,7 @@ |
4777 | |
4778 | #: c-family/c-format.c:578 |
4779 | #, fuzzy |
4780 | +#| msgid "`0' flag" |
4781 | msgid "'_' flag" |
4782 | msgstr "'0' флаг" |
4783 | |
4784 | @@ -2353,6 +2418,7 @@ |
4785 | |
4786 | #: c-family/c-format.c:581 c-family/c-format.c:605 |
4787 | #, fuzzy |
4788 | +#| msgid "`0' flag" |
4789 | msgid "'^' flag" |
4790 | msgstr "'0' флаг" |
4791 | |
4792 | @@ -2370,6 +2436,7 @@ |
4793 | |
4794 | #: c-family/c-format.c:584 |
4795 | #, fuzzy |
4796 | +#| msgid "`O' modifier" |
4797 | msgid "'E' modifier" |
4798 | msgstr "'O' мадыфікатар" |
4799 | |
4800 | @@ -2379,6 +2446,7 @@ |
4801 | |
4802 | #: c-family/c-format.c:585 |
4803 | #, fuzzy |
4804 | +#| msgid "`O' modifier" |
4805 | msgid "'O' modifier" |
4806 | msgstr "'O' мадыфікатар" |
4807 | |
4808 | @@ -2388,6 +2456,7 @@ |
4809 | |
4810 | #: c-family/c-format.c:586 |
4811 | #, fuzzy |
4812 | +#| msgid "`O' modifier" |
4813 | msgid "the 'O' modifier" |
4814 | msgstr "'O' мадыфікатар" |
4815 | |
4816 | @@ -2409,6 +2478,7 @@ |
4817 | |
4818 | #: c-family/c-format.c:607 |
4819 | #, fuzzy |
4820 | +#| msgid "`0' flag" |
4821 | msgid "'(' flag" |
4822 | msgstr "'0' флаг" |
4823 | |
4824 | @@ -2418,6 +2488,7 @@ |
4825 | |
4826 | #: c-family/c-format.c:608 |
4827 | #, fuzzy |
4828 | +#| msgid "`0' flag" |
4829 | msgid "'!' flag" |
4830 | msgstr "'0' флаг" |
4831 | |
4832 | @@ -2460,6 +2531,7 @@ |
4833 | |
4834 | #: c-family/c-pretty-print.c:344 |
4835 | #, fuzzy |
4836 | +#| msgid "parse error" |
4837 | msgid "<type-error>" |
4838 | msgstr "граматычная памылка" |
4839 | |
4840 | @@ -2485,6 +2557,7 @@ |
4841 | |
4842 | #: c-family/c-pretty-print.c:418 |
4843 | #, fuzzy |
4844 | +#| msgid "syntax error" |
4845 | msgid "<tag-error>" |
4846 | msgstr "сінтаксічная памылка" |
4847 | |
4848 | @@ -2494,89 +2567,90 @@ |
4849 | |
4850 | #: c-family/c-pretty-print.c:1169 cp/cxx-pretty-print.c:153 |
4851 | #, fuzzy |
4852 | +#| msgid "return" |
4853 | msgid "<return-value>" |
4854 | msgstr "вяртанне" |
4855 | |
4856 | -#: config/alpha/alpha.c:5145 |
4857 | +#: config/alpha/alpha.c:5138 |
4858 | #, c-format |
4859 | msgid "invalid %%H value" |
4860 | msgstr "нерэчаіснае значэньне %%H" |
4861 | |
4862 | -#: config/alpha/alpha.c:5166 config/bfin/bfin.c:1671 |
4863 | +#: config/alpha/alpha.c:5159 config/bfin/bfin.c:1656 |
4864 | #, fuzzy, c-format |
4865 | msgid "invalid %%J value" |
4866 | msgstr "дрэннае %%Q значэнне" |
4867 | |
4868 | -#: config/alpha/alpha.c:5196 config/ia64/ia64.c:5169 |
4869 | +#: config/alpha/alpha.c:5189 config/ia64/ia64.c:5162 |
4870 | #, c-format |
4871 | msgid "invalid %%r value" |
4872 | msgstr "нерэчаіснае значэньне %%r" |
4873 | |
4874 | -#: config/alpha/alpha.c:5206 config/ia64/ia64.c:5123 |
4875 | -#: config/rs6000/rs6000.c:16096 config/xtensa/xtensa.c:2356 |
4876 | +#: config/alpha/alpha.c:5199 config/ia64/ia64.c:5116 |
4877 | +#: config/rs6000/rs6000.c:16116 config/xtensa/xtensa.c:2356 |
4878 | #, c-format |
4879 | msgid "invalid %%R value" |
4880 | msgstr "нерэчаіснае значэньне %%R" |
4881 | |
4882 | -#: config/alpha/alpha.c:5212 config/rs6000/rs6000.c:16015 |
4883 | +#: config/alpha/alpha.c:5205 config/rs6000/rs6000.c:16035 |
4884 | #: config/xtensa/xtensa.c:2323 |
4885 | #, c-format |
4886 | msgid "invalid %%N value" |
4887 | msgstr "нерэчаіснае значэньне %%N" |
4888 | |
4889 | -#: config/alpha/alpha.c:5220 config/rs6000/rs6000.c:16043 |
4890 | +#: config/alpha/alpha.c:5213 config/rs6000/rs6000.c:16063 |
4891 | #, c-format |
4892 | msgid "invalid %%P value" |
4893 | msgstr "нерэчаіснае значэньне %%P" |
4894 | |
4895 | -#: config/alpha/alpha.c:5228 |
4896 | +#: config/alpha/alpha.c:5221 |
4897 | #, c-format |
4898 | msgid "invalid %%h value" |
4899 | msgstr "нерэчаіснае значэньне %%h" |
4900 | |
4901 | -#: config/alpha/alpha.c:5236 config/xtensa/xtensa.c:2349 |
4902 | +#: config/alpha/alpha.c:5229 config/xtensa/xtensa.c:2349 |
4903 | #, c-format |
4904 | msgid "invalid %%L value" |
4905 | msgstr "нерэчаіснае значэньне %%L" |
4906 | |
4907 | -#: config/alpha/alpha.c:5275 config/rs6000/rs6000.c:15997 |
4908 | +#: config/alpha/alpha.c:5268 config/rs6000/rs6000.c:16017 |
4909 | #, c-format |
4910 | msgid "invalid %%m value" |
4911 | msgstr "нерэчаіснае значэньне %%m" |
4912 | |
4913 | -#: config/alpha/alpha.c:5283 config/rs6000/rs6000.c:16005 |
4914 | +#: config/alpha/alpha.c:5276 config/rs6000/rs6000.c:16025 |
4915 | #, c-format |
4916 | msgid "invalid %%M value" |
4917 | msgstr "нерэчаіснае значэньне %%M" |
4918 | |
4919 | -#: config/alpha/alpha.c:5327 |
4920 | +#: config/alpha/alpha.c:5320 |
4921 | #, c-format |
4922 | msgid "invalid %%U value" |
4923 | msgstr "нерэчаіснае значэньне %%U" |
4924 | |
4925 | -#: config/alpha/alpha.c:5339 config/alpha/alpha.c:5353 |
4926 | -#: config/rs6000/rs6000.c:16104 |
4927 | +#: config/alpha/alpha.c:5332 config/alpha/alpha.c:5346 |
4928 | +#: config/rs6000/rs6000.c:16124 |
4929 | #, c-format |
4930 | msgid "invalid %%s value" |
4931 | msgstr "нерэчаіснае значэньне %%v" |
4932 | |
4933 | -#: config/alpha/alpha.c:5376 |
4934 | +#: config/alpha/alpha.c:5369 |
4935 | #, c-format |
4936 | msgid "invalid %%C value" |
4937 | msgstr "нерэчаіснае значэньне %%C" |
4938 | |
4939 | -#: config/alpha/alpha.c:5413 config/rs6000/rs6000.c:15862 |
4940 | +#: config/alpha/alpha.c:5406 config/rs6000/rs6000.c:15882 |
4941 | #, c-format |
4942 | msgid "invalid %%E value" |
4943 | msgstr "нерэчаіснае значэньне %%E" |
4944 | |
4945 | -#: config/alpha/alpha.c:5438 config/alpha/alpha.c:5486 |
4946 | +#: config/alpha/alpha.c:5431 config/alpha/alpha.c:5479 |
4947 | #, c-format |
4948 | msgid "unknown relocation unspec" |
4949 | msgstr "" |
4950 | |
4951 | -#: config/alpha/alpha.c:5447 config/crx/crx.c:1119 |
4952 | -#: config/rs6000/rs6000.c:16470 config/spu/spu.c:1725 |
4953 | +#: config/alpha/alpha.c:5440 config/crx/crx.c:1119 |
4954 | +#: config/rs6000/rs6000.c:16490 config/spu/spu.c:1726 |
4955 | #, c-format |
4956 | msgid "invalid %%xn code" |
4957 | msgstr "нерэчаіснае значэньне %%xn" |
4958 | @@ -2603,7 +2677,7 @@ |
4959 | |
4960 | #. Unknown flag. |
4961 | #. Undocumented flag. |
4962 | -#: config/arc/arc.c:1815 config/m32r/m32r.c:2276 config/sparc/sparc.c:7633 |
4963 | +#: config/arc/arc.c:1815 config/m32r/m32r.c:2276 config/sparc/sparc.c:7637 |
4964 | #, c-format |
4965 | msgid "invalid operand output code" |
4966 | msgstr "" |
4967 | @@ -2620,6 +2694,7 @@ |
4968 | |
4969 | #: config/arm/arm.c:16195 |
4970 | #, fuzzy, c-format |
4971 | +#| msgid "invalid %%f operand" |
4972 | msgid "invalid shift operand" |
4973 | msgstr "нерэчаісны %%f аперанд" |
4974 | |
4975 | @@ -2630,9 +2705,9 @@ |
4976 | #: config/arm/arm.c:16482 config/arm/arm.c:16489 config/arm/arm.c:16497 |
4977 | #: config/arm/arm.c:16518 config/arm/arm.c:16525 config/arm/arm.c:16650 |
4978 | #: config/arm/arm.c:16657 config/arm/arm.c:16675 config/arm/arm.c:16682 |
4979 | -#: config/bfin/bfin.c:1684 config/bfin/bfin.c:1691 config/bfin/bfin.c:1698 |
4980 | -#: config/bfin/bfin.c:1705 config/bfin/bfin.c:1714 config/bfin/bfin.c:1721 |
4981 | -#: config/bfin/bfin.c:1728 config/bfin/bfin.c:1735 |
4982 | +#: config/bfin/bfin.c:1669 config/bfin/bfin.c:1676 config/bfin/bfin.c:1683 |
4983 | +#: config/bfin/bfin.c:1690 config/bfin/bfin.c:1699 config/bfin/bfin.c:1706 |
4984 | +#: config/bfin/bfin.c:1713 config/bfin/bfin.c:1720 |
4985 | #, fuzzy, c-format |
4986 | msgid "invalid operand for code '%c'" |
4987 | msgstr "Нерэчаісны выбар \"%s\"" |
4988 | @@ -2654,72 +2729,74 @@ |
4989 | |
4990 | #: config/arm/arm.c:19134 |
4991 | #, fuzzy |
4992 | +#| msgid "function does not return string type" |
4993 | msgid "functions cannot return __fp16 type" |
4994 | msgstr "функцыя не вяртае тып string" |
4995 | |
4996 | -#: config/avr/avr.c:1165 |
4997 | +#: config/avr/avr.c:1222 |
4998 | #, c-format |
4999 | msgid "address operand requires constraint for X, Y, or Z register" |
5000 | msgstr "" |
cbuild has taken a snapshot of this branch at r106790 and queued it for build.
The snapshot is available at: ex.seabright. co.nz/snapshots /gcc-linaro- 4.6+bzr106790~ michaelh1~ merge-from- fsf-r177703- 4.6.tar. xdelta3. xz
http://
and will be built on the following builders:
a9-builder armv5-builder baremetal i686 x86_64
You can track the build queue at: ex.seabright. co.nz/helpers/ scheduler
http://
cbuild-snapshot: gcc-linaro- 4.6+bzr106790~ michaelh1~ merge-from- fsf-r177703- 4.6
cbuild-ancestor: lp:gcc-linaro/4.6+bzr106786
cbuild-state: check