Merge lp:~michaelh1/gcc-linaro/merge-from-fsf-r177703-4.6 into lp:gcc-linaro/4.6

Proposed by Michael Hope
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
Reviewer Review Type Date Requested Status
Linaro Toolchain Developers Pending
Review via email: mp+71445@code.launchpad.net

Description of the change

Merge from FSF GCC 4.6.1 (svn branches/gcc-4_6-branch r177703)

To post a comment you must log in.
Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild has taken a snapshot of this branch at r106790 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.6+bzr106790~michaelh1~merge-from-fsf-r177703-4.6.tar.xdelta3.xz

and will be built on the following builders:
 a9-builder armv5-builder baremetal i686 x86_64

You can track the build queue at:
 http://ex.seabright.co.nz/helpers/scheduler

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

Revision history for this message
Michael Hope (michaelh1) wrote :
Download full text (3.5 KiB)

cbuild successfully built this on x86_64-natty-cbuild161-oort1-x86_64r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106790~michaelh1~merge-from-fsf-r177703-4.6/logs/x86_64-natty-cbuild161-oort1-x86_64r1

+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 44)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 45)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 49)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 50)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for errors, line 36)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for warnings, line 31)
+PASS: g++.dg/cpp0x/constexpr-array4.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C execution test
+PASS: g++.dg/cpp0x/decltype31.C (test for errors, line 11)
+PASS: g++.dg/cpp0x/decltype31.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-defarg2.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-variadic1.C (test for excess errors)
+PASS: g++.dg/cpp0x/regress/regress5.C (test for excess errors)
+PASS: g++.dg/cpp0x/union5.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic114.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic115.C (test for excess errors)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 15)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 9)
+PASS: g++.dg/diagnostic/aka1.C (test for excess errors)
-UNSUPPORTED: g++.dg/ext/attr-ifunc-1.C
-UNSUPPORTED: g++.dg/ext/attr-ifunc-2.C
-UNSUPPORTED: g++.dg/ext/attr-ifunc-3.C
-UNSUPPORTED: g++.dg/ext/attr-ifunc-4.C
+PASS: g++.dg/ext/attr-ifunc-1.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-1.C execution test
+PASS: g++.dg/ext/attr-ifunc-2.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-2.C execution test
+PASS: g++.dg/ext/attr-ifunc-3.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-3.C execution test
+PASS: g++.dg/ext/attr-ifunc-4.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-4.C execution test
+PASS: g++.dg/init/array28.C (test for errors, line 5)
+PASS: g++.dg/init/array28.C (test for excess errors)
-PASS: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE"
+PASS: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE
+PASS: g++.dg/template/template-id-4.C (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O0 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O1 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto -flto-partition=none (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -fomit-frame-pointer (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -g (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -Os (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O0 (t...

Read more...

Revision history for this message
Michael Hope (michaelh1) wrote :
Download full text (3.5 KiB)

cbuild successfully built this on i686-natty-cbuild161-oort2-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106790~michaelh1~merge-from-fsf-r177703-4.6/logs/i686-natty-cbuild161-oort2-i686r1

+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 44)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 45)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 49)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 50)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for errors, line 36)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for warnings, line 31)
+PASS: g++.dg/cpp0x/constexpr-array4.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C execution test
+PASS: g++.dg/cpp0x/decltype31.C (test for errors, line 11)
+PASS: g++.dg/cpp0x/decltype31.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-defarg2.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-variadic1.C (test for excess errors)
+PASS: g++.dg/cpp0x/regress/regress5.C (test for excess errors)
+PASS: g++.dg/cpp0x/union5.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic114.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic115.C (test for excess errors)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 15)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 9)
+PASS: g++.dg/diagnostic/aka1.C (test for excess errors)
-UNSUPPORTED: g++.dg/ext/attr-ifunc-1.C
-UNSUPPORTED: g++.dg/ext/attr-ifunc-2.C
-UNSUPPORTED: g++.dg/ext/attr-ifunc-3.C
-UNSUPPORTED: g++.dg/ext/attr-ifunc-4.C
+PASS: g++.dg/ext/attr-ifunc-1.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-1.C execution test
+PASS: g++.dg/ext/attr-ifunc-2.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-2.C execution test
+PASS: g++.dg/ext/attr-ifunc-3.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-3.C execution test
+PASS: g++.dg/ext/attr-ifunc-4.C (test for excess errors)
+PASS: g++.dg/ext/attr-ifunc-4.C execution test
+PASS: g++.dg/init/array28.C (test for errors, line 5)
+PASS: g++.dg/init/array28.C (test for excess errors)
-PASS: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE"
+PASS: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE
+PASS: g++.dg/template/template-id-4.C (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O0 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O1 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto -flto-partition=none (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -fomit-frame-pointer (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -g (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -Os (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O0 (test for ...

Read more...

Revision history for this message
Michael Hope (michaelh1) wrote :
Download full text (3.8 KiB)

cbuild successfully built this on armv7l-natty-cbuild161-ursa2-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106790~michaelh1~merge-from-fsf-r177703-4.6/logs/armv7l-natty-cbuild161-ursa2-cortexa9r1

+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 44)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 45)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 49)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 50)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for errors, line 36)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for warnings, line 31)
+PASS: g++.dg/cpp0x/constexpr-array4.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C execution test
+PASS: g++.dg/cpp0x/decltype31.C (test for errors, line 11)
+PASS: g++.dg/cpp0x/decltype31.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-defarg2.C (test for excess errors)
-FAIL: g++.dg/cpp0x/lambda/lambda-eh2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-eh2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-variadic1.C (test for excess errors)
+PASS: g++.dg/cpp0x/regress/regress5.C (test for excess errors)
+PASS: g++.dg/cpp0x/union5.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic114.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic115.C (test for excess errors)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 15)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 9)
+PASS: g++.dg/diagnostic/aka1.C (test for excess errors)
+PASS: g++.dg/init/array28.C (test for errors, line 5)
+PASS: g++.dg/init/array28.C (test for excess errors)
-FAIL: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE"
+PASS: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE
+PASS: g++.dg/template/template-id-4.C (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O0 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O1 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto -flto-partition=none (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -fomit-frame-pointer (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -g (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -Os (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O0 (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O1 (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O2 (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O2 -flto (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O2 -flto -flto-partition=none (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O3 -fomit-frame-pointer (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O3 -fomit-frame-pointer -funroll-all-loops -finl...

Read more...

Revision history for this message
Michael Hope (michaelh1) wrote :
Download full text (3.8 KiB)

cbuild successfully built this on armv7l-natty-cbuild161-ursa4-armv5r2.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106790~michaelh1~merge-from-fsf-r177703-4.6/logs/armv7l-natty-cbuild161-ursa4-armv5r2

+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 44)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 45)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 49)
+XFAIL: g++.dg/cpp0x/constexpr-48089.C (test for bogus messages, line 50)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for errors, line 36)
+PASS: g++.dg/cpp0x/constexpr-48089.C (test for warnings, line 31)
+PASS: g++.dg/cpp0x/constexpr-array4.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C (test for excess errors)
+PASS: g++.dg/cpp0x/constexpr-non-const-arg3.C execution test
+PASS: g++.dg/cpp0x/decltype31.C (test for errors, line 11)
+PASS: g++.dg/cpp0x/decltype31.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-defarg2.C (test for excess errors)
-FAIL: g++.dg/cpp0x/lambda/lambda-eh2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-eh2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C (test for excess errors)
+PASS: g++.dg/cpp0x/lambda/lambda-ref2.C execution test
+PASS: g++.dg/cpp0x/lambda/lambda-variadic1.C (test for excess errors)
+PASS: g++.dg/cpp0x/regress/regress5.C (test for excess errors)
+PASS: g++.dg/cpp0x/union5.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic114.C (test for excess errors)
+PASS: g++.dg/cpp0x/variadic115.C (test for excess errors)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 15)
+PASS: g++.dg/diagnostic/aka1.C (test for errors, line 9)
+PASS: g++.dg/diagnostic/aka1.C (test for excess errors)
+PASS: g++.dg/init/array28.C (test for errors, line 5)
+PASS: g++.dg/init/array28.C (test for excess errors)
-FAIL: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE"
+PASS: g++.dg/rtti/anon-ns1.C scan-assembler "*N[^"]+1AE
+PASS: g++.dg/template/template-id-4.C (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O0 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O1 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O2 -flto -flto-partition=none (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -fomit-frame-pointer (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -O3 -g (test for excess errors)
+PASS: g++.dg/torture/pr49309.C -Os (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O0 (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O1 (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O2 (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O2 -flto (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O2 -flto -flto-partition=none (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O3 -fomit-frame-pointer (test for excess errors)
+PASS: g++.dg/torture/pr49615.C -O3 -fomit-frame-pointer -funroll-all-loops -finline-fu...

Read more...

Revision history for this message
Michael Hope (michaelh1) wrote :
Revision history for this message
Michael Hope (michaelh1) wrote :

I've checked the cortexa9 differences at:
 http://builds.linaro.org/toolchain/gcc-linaro-4.6+bzr106790~michaelh1~merge-from-fsf-r177703-4.6/logs/armv7l-natty-cbuild161-ursa2-cortexa9r1/testsuite-diff.txt

The new fails are:

-PASS: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr calf_.*D.->green with ISRA"
-PASS: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr calf_.*D.->red with \*ISRA"
-PASS: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr cow_.*D.->green with ISRA"
-PASS: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr cow_.*D.->red with \*ISRA"
+FAIL: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr calf_.*D.->green with ISRA"
+FAIL: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr calf_.*D.->red with \*ISRA"
+FAIL: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr cow_.*D.->green with ISRA"
+FAIL: gcc.dg/ipa/ipa-sra-2.c scan-tree-dump eipa_sra "About to replace expr cow_.*D.->red with \*ISRA"
-PASS: gcc.dg/ipa/ipa-sra-6.c scan-tree-dump-times eipa_sra "foo " 1
+FAIL: gcc.dg/ipa/ipa-sra-6.c scan-tree-dump-times eipa_sra "foo " 1

These faults also exist in trunk. See:
 http://ex.seabright.co.nz/helpers/testlog/gcc-4.6+svn177688/logs/armv7l-natty-cbuild161-ursa2-cortexa9r1/gcc-testsuite.txt

...so it's not specific to us.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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 ""
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches