Merge lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.6-20110506 into lp:gcc-linaro/4.6

Proposed by Andrew Stubbs
Status: Merged
Approved by: Richard Sandiford
Approved revision: no longer in the source branch.
Merged at revision: 106745
Proposed branch: lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.6-20110506
Merge into: lp:gcc-linaro/4.6
Diff against target: 26133 lines (+9116/-3663) (has conflicts)
385 files modified
ChangeLog.linaro (+7/-0)
config/ChangeLog (+4/-0)
config/bootstrap-lto.mk (+2/-3)
gcc/ChangeLog (+421/-5)
gcc/DATESTAMP (+1/-1)
gcc/ada/ChangeLog (+14/-0)
gcc/ada/gcc-interface/Make-lang.in (+1/-1)
gcc/ada/gcc-interface/decl.c (+1/-2)
gcc/ada/gcc-interface/gigi.h (+3/-0)
gcc/ada/gcc-interface/utils2.c (+11/-5)
gcc/c-family/ChangeLog (+11/-0)
gcc/c-family/c-common.c (+19/-10)
gcc/c-family/c-ppoutput.c (+1/-1)
gcc/c-typeck.c (+4/-2)
gcc/cfgexpand.c (+1/-0)
gcc/combine.c (+58/-29)
gcc/common.opt (+9/-0)
gcc/config.gcc (+1/-0)
gcc/config/alpha/osf5.h (+5/-1)
gcc/config/arm/arm.c (+1/-1)
gcc/config/arm/neon.md (+21/-18)
gcc/config/i386/i386.c (+17/-4)
gcc/config/i386/i386.md (+59/-32)
gcc/config/i386/mmx.md (+2/-0)
gcc/config/i386/predicates.md (+1/-6)
gcc/config/i386/sse.md (+72/-32)
gcc/config/pa/pa-protos.h (+0/-2)
gcc/config/pa/pa.c (+27/-19)
gcc/config/pa/pa.md (+5/-10)
gcc/config/pa/pa32-regs.h (+1/-0)
gcc/config/pa/pa64-regs.h (+2/-1)
gcc/config/pa/predicates.md (+9/-5)
gcc/config/rs6000/altivec.md (+8/-8)
gcc/config/rs6000/rs6000.c (+1/-0)
gcc/config/rs6000/vector.md (+2/-2)
gcc/config/s390/s390.md (+3/-3)
gcc/config/sparc/freebsd.h (+19/-4)
gcc/config/v850/v850.c (+3/-3)
gcc/cp/ChangeLog (+124/-0)
gcc/cp/call.c (+2/-0)
gcc/cp/class.c (+12/-1)
gcc/cp/cp-tree.h (+2/-1)
gcc/cp/cvt.c (+7/-1)
gcc/cp/decl.c (+12/-4)
gcc/cp/decl2.c (+10/-4)
gcc/cp/except.c (+5/-0)
gcc/cp/init.c (+1/-1)
gcc/cp/parser.c (+11/-3)
gcc/cp/pt.c (+6/-1)
gcc/cp/semantics.c (+83/-50)
gcc/cp/tree.c (+29/-1)
gcc/cp/typeck.c (+7/-1)
gcc/doc/extend.texi (+36/-21)
gcc/doc/passes.texi (+5/-7)
gcc/dwarf2out.c (+2/-2)
gcc/expmed.c (+31/-16)
gcc/expr.c (+37/-6)
gcc/final.c (+5/-0)
gcc/fold-const.c (+0/-2)
gcc/fortran/ChangeLog (+84/-0)
gcc/fortran/class.c (+3/-3)
gcc/fortran/expr.c (+13/-5)
gcc/fortran/f95-lang.c (+2/-3)
gcc/fortran/gfortran.h (+1/-0)
gcc/fortran/gfortran.texi (+13/-0)
gcc/fortran/interface.c (+6/-0)
gcc/fortran/invoke.texi (+7/-1)
gcc/fortran/lang.opt (+4/-0)
gcc/fortran/module.c (+1/-0)
gcc/fortran/options.c (+6/-0)
gcc/fortran/parse.c (+49/-12)
gcc/fortran/primary.c (+35/-0)
gcc/fortran/resolve.c (+14/-9)
gcc/fortran/trans-array.c (+10/-0)
gcc/fortran/trans-expr.c (+27/-10)
gcc/gcov-io.c (+7/-2)
gcc/gimple-fold.c (+5/-1)
gcc/gimple.c (+7/-2)
gcc/gimple.h (+1/-1)
gcc/gimplify.c (+1/-1)
gcc/ipa-cp.c (+3/-3)
gcc/ipa-inline.c (+4/-5)
gcc/ipa-prop.c (+5/-2)
gcc/lto-cgraph.c (+3/-2)
gcc/lto-streamer-in.c (+1/-3)
gcc/lto-streamer-out.c (+1/-1)
gcc/omp-low.c (+4/-0)
gcc/po/ChangeLog (+28/-0)
gcc/po/de.po (+1310/-1323)
gcc/po/es.po (+163/-175)
gcc/po/sv.po (+163/-256)
gcc/reload1.c (+12/-28)
gcc/sel-sched-ir.c (+28/-17)
gcc/sel-sched-ir.h (+1/-1)
gcc/sel-sched.c (+1/-1)
gcc/stor-layout.c (+1/-1)
gcc/testsuite/ChangeLog (+367/-1)
gcc/testsuite/c-c++-common/raw-string-11.c (+13/-0)
gcc/testsuite/g++.dg/conversion/base1.C (+20/-0)
gcc/testsuite/g++.dg/cpp0x/constexpr-wstring1.C (+34/-0)
gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C (+7/-0)
gcc/testsuite/g++.dg/cpp0x/enum10.C (+9/-0)
gcc/testsuite/g++.dg/cpp0x/enum9.C (+5/-0)
gcc/testsuite/g++.dg/cpp0x/initlist47.C (+9/-0)
gcc/testsuite/g++.dg/cpp0x/initlist48.C (+11/-0)
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this4.C (+13/-0)
gcc/testsuite/g++.dg/cpp0x/noexcept02.C (+3/-1)
gcc/testsuite/g++.dg/cpp0x/regress/call1.C (+13/-0)
gcc/testsuite/g++.dg/cpp0x/regress/template-const2.C (+14/-0)
gcc/testsuite/g++.dg/cpp0x/sfinae10.C (+16/-0)
gcc/testsuite/g++.dg/cpp0x/sfinae11.C (+56/-0)
gcc/testsuite/g++.dg/cpp0x/sfinae7.C (+20/-0)
gcc/testsuite/g++.dg/cpp0x/union4.C (+17/-0)
gcc/testsuite/g++.dg/ext/complex7.C (+6/-0)
gcc/testsuite/g++.dg/gomp/pr48632.C (+22/-0)
gcc/testsuite/g++.dg/gomp/pr48716.C (+24/-0)
gcc/testsuite/g++.dg/init/new30.C (+15/-0)
gcc/testsuite/g++.dg/lookup/koenig13.C (+16/-0)
gcc/testsuite/g++.dg/opt/pr48549.C (+63/-0)
gcc/testsuite/g++.dg/parse/ambig6.C (+12/-0)
gcc/testsuite/g++.dg/template/const4.C (+9/-0)
gcc/testsuite/g++.dg/template/dependent-expr7.C (+22/-0)
gcc/testsuite/g++.dg/template/inherit7.C (+21/-0)
gcc/testsuite/g++.dg/template/member9.C (+21/-0)
gcc/testsuite/g++.dg/template/operator11.C (+25/-0)
gcc/testsuite/g++.dg/torture/pr46364.C (+20/-0)
gcc/testsuite/g++.dg/torture/pr48661.C (+77/-0)
gcc/testsuite/g++.dg/torture/pr48695.C (+38/-0)
gcc/testsuite/gcc.c-torture/compile/pr48335-1.c (+41/-0)
gcc/testsuite/gcc.c-torture/compile/pr48517.c (+13/-0)
gcc/testsuite/gcc.c-torture/compile/pr48734.c (+11/-0)
gcc/testsuite/gcc.c-torture/compile/pr48742.c (+15/-0)
gcc/testsuite/gcc.c-torture/execute/pr48717.c (+26/-0)
gcc/testsuite/gcc.c-torture/execute/pr48809.c (+60/-0)
gcc/testsuite/gcc.dg/20020312-2.c (+2/-0)
gcc/testsuite/gcc.dg/gomp/pr48591.c (+22/-0)
gcc/testsuite/gcc.dg/gomp/pr48716.c (+24/-0)
gcc/testsuite/gcc.dg/guality/pr36977.c (+32/-0)
gcc/testsuite/gcc.dg/guality/pr48466.c (+41/-0)
gcc/testsuite/gcc.dg/ipa/pr48195.c (+24/-0)
gcc/testsuite/gcc.dg/pr48144.c (+16/-0)
gcc/testsuite/gcc.dg/pr48335-1.c (+48/-0)
gcc/testsuite/gcc.dg/pr48335-2.c (+58/-0)
gcc/testsuite/gcc.dg/pr48335-3.c (+48/-0)
gcc/testsuite/gcc.dg/pr48335-4.c (+39/-0)
gcc/testsuite/gcc.dg/pr48335-5.c (+38/-0)
gcc/testsuite/gcc.dg/pr48335-6.c (+46/-0)
gcc/testsuite/gcc.dg/pr48335-7.c (+38/-0)
gcc/testsuite/gcc.dg/pr48335-8.c (+31/-0)
gcc/testsuite/gcc.dg/pr48616.c (+135/-0)
gcc/testsuite/gcc.dg/pr48685.c (+11/-0)
gcc/testsuite/gcc.dg/pr48768.c (+38/-0)
gcc/testsuite/gcc.dg/pr48774.c (+38/-0)
gcc/testsuite/gcc.dg/torture/pr48343.c (+19/-0)
gcc/testsuite/gcc.dg/torture/pr48731.c (+24/-0)
gcc/testsuite/gcc.dg/torture/stackalign/non-local-goto-5.c (+1/-1)
gcc/testsuite/gcc.dg/torture/va-arg-25.c (+2/-0)
gcc/testsuite/gcc.dg/torture/vector-1.c (+2/-0)
gcc/testsuite/gcc.dg/torture/vector-2.c (+2/-0)
gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c (+1/-1)
gcc/testsuite/gcc.dg/vect/pr48377.c (+25/-0)
gcc/testsuite/gcc.target/arm/neon-vset_lanes8.c (+21/-0)
gcc/testsuite/gcc.target/arm/pr48252.c (+31/-0)
gcc/testsuite/gcc.target/i386/avx-vinsertps-3.c (+8/-0)
gcc/testsuite/gcc.target/i386/avx-vinsertps-4.c (+8/-0)
gcc/testsuite/gcc.target/i386/pr46084.c (+1/-1)
gcc/testsuite/gcc.target/i386/pr48335-1.c (+32/-0)
gcc/testsuite/gcc.target/i386/pr48678.c (+16/-0)
gcc/testsuite/gcc.target/i386/pr48708.c (+15/-0)
gcc/testsuite/gcc.target/i386/pr48723.c (+13/-0)
gcc/testsuite/gcc.target/i386/sse4_1-insertps-3.c (+5/-0)
gcc/testsuite/gcc.target/i386/sse4_1-insertps-4.c (+92/-0)
gcc/testsuite/gcc.target/powerpc/pr48192.c (+49/-0)
gcc/testsuite/gcc.target/rx/pack.c (+4/-4)
gcc/testsuite/gfortran.dg/bessel_1.f90 (+2/-2)
gcc/testsuite/gfortran.dg/bessel_6.f90 (+1/-0)
gcc/testsuite/gfortran.dg/bessel_7.f90 (+1/-0)
gcc/testsuite/gfortran.dg/class_42.f03 (+16/-0)
gcc/testsuite/gfortran.dg/erfc_scaled_1.f90 (+4/-0)
gcc/testsuite/gfortran.dg/func_result_6.f90 (+1/-1)
gcc/testsuite/gfortran.dg/gomp/pr48117.f90 (+11/-0)
gcc/testsuite/gfortran.dg/hypot_1.f90 (+2/-2)
gcc/testsuite/gfortran.dg/interface_35.f90 (+79/-0)
gcc/testsuite/gfortran.dg/interface_36.f90 (+28/-0)
gcc/testsuite/gfortran.dg/interface_assignment_4.f90 (+1/-1)
gcc/testsuite/gfortran.dg/proc_ptr_comp_20.f90 (+2/-2)
gcc/testsuite/gfortran.dg/proc_ptr_comp_21.f90 (+1/-1)
gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03 (+129/-0)
gcc/testsuite/gfortran.dg/realloc_on_assign_7.f03 (+84/-0)
gcc/testsuite/gfortran.dg/typebound_proc_22.f90 (+49/-0)
gcc/testsuite/gfortran.dg/whole_file_33.f90 (+50/-0)
gcc/testsuite/gfortran.dg/whole_file_34.f90 (+12/-0)
gcc/testsuite/gnat.dg/discr29.adb (+8/-0)
gcc/testsuite/gnat.dg/discr29.ads (+27/-0)
gcc/testsuite/gnat.dg/discr30.adb (+50/-0)
gcc/testsuite/gnat.dg/volatile5.adb (+16/-0)
gcc/testsuite/gnat.dg/volatile5_pkg.ads (+11/-0)
gcc/testsuite/lib/target-supports.exp (+3/-0)
gcc/tree-eh.c (+2/-0)
gcc/tree-inline.c (+4/-2)
gcc/tree-ssa-alias.c (+22/-7)
gcc/tree-ssa-forwprop.c (+2/-2)
gcc/tree-ssa-reassoc.c (+16/-1)
gcc/tree-ssa.c (+5/-1)
gcc/tree-switch-conversion.c (+18/-42)
gcc/tree-vect-data-refs.c (+4/-1)
gcc/tree-vect-stmts.c (+31/-10)
gcc/tree.c (+4/-0)
libcpp/ChangeLog (+18/-0)
libcpp/directives.c (+12/-2)
libcpp/expr.c (+6/-1)
libcpp/lex.c (+3/-1)
libffi/ChangeLog (+10/-0)
libffi/src/alpha/osf.S (+39/-18)
libgfortran/ChangeLog (+16/-0)
libgfortran/acinclude.m4 (+1/-1)
libgfortran/config.h.in (+3/-0)
libgfortran/configure (+7/-6)
libgfortran/configure.ac (+7/-6)
libgfortran/intrinsics/system_clock.c (+11/-14)
libgfortran/io/read.c (+17/-36)
libgomp/ChangeLog (+17/-0)
libgomp/fortran.c (+11/-8)
libgomp/testsuite/libgomp.c/pr48591.c (+22/-0)
libgomp/testsuite/libgomp.fortran/pr48894.f90 (+23/-0)
libjava/ChangeLog (+5/-0)
libjava/testsuite/libjava.jni/jni.exp (+5/-0)
libstdc++-v3/ChangeLog (+180/-0)
libstdc++-v3/config/abi/pre/gnu.ver (+8/-0)
libstdc++-v3/configure (+1/-1)
libstdc++-v3/configure.ac (+1/-1)
libstdc++-v3/doc/html/api.html (+23/-23)
libstdc++-v3/doc/html/bk02.html (+1/-1)
libstdc++-v3/doc/html/bk03.html (+1/-1)
libstdc++-v3/doc/html/faq.html (+69/-69)
libstdc++-v3/doc/html/manual/abi.html (+17/-17)
libstdc++-v3/doc/html/manual/algorithms.html (+4/-4)
libstdc++-v3/doc/html/manual/api.html (+3/-3)
libstdc++-v3/doc/html/manual/appendix_contributing.html (+11/-11)
libstdc++-v3/doc/html/manual/appendix_free.html (+4/-4)
libstdc++-v3/doc/html/manual/appendix_gfdl.html (+3/-3)
libstdc++-v3/doc/html/manual/appendix_gpl.html (+7/-7)
libstdc++-v3/doc/html/manual/appendix_porting.html (+7/-7)
libstdc++-v3/doc/html/manual/associative.html (+2/-2)
libstdc++-v3/doc/html/manual/atomics.html (+4/-4)
libstdc++-v3/doc/html/manual/backwards.html (+32/-32)
libstdc++-v3/doc/html/manual/bitmap_allocator.html (+2/-2)
libstdc++-v3/doc/html/manual/bk01pt02.html (+2/-2)
libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html (+2/-2)
libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html (+3/-3)
libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html (+7/-7)
libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html (+3/-3)
libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html (+2/-2)
libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html (+3/-3)
libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html (+6/-6)
libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html (+3/-3)
libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html (+3/-3)
libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html (+1/-1)
libstdc++-v3/doc/html/manual/bk01pt03pr01.html (+2/-2)
libstdc++-v3/doc/html/manual/bk01pt04.html (+2/-2)
libstdc++-v3/doc/html/manual/bugs.html (+92/-92)
libstdc++-v3/doc/html/manual/concurrency.html (+4/-4)
libstdc++-v3/doc/html/manual/configure.html (+28/-20)
libstdc++-v3/doc/html/manual/containers.html (+8/-8)
libstdc++-v3/doc/html/manual/containers_and_c.html (+1/-1)
libstdc++-v3/doc/html/manual/debug.html (+8/-8)
libstdc++-v3/doc/html/manual/debug_mode.html (+2/-2)
libstdc++-v3/doc/html/manual/diagnostics.html (+4/-4)
libstdc++-v3/doc/html/manual/documentation_hacking.html (+17/-17)
libstdc++-v3/doc/html/manual/dynamic_memory.html (+1/-1)
libstdc++-v3/doc/html/manual/ext_algorithms.html (+2/-2)
libstdc++-v3/doc/html/manual/ext_allocators.html (+3/-3)
libstdc++-v3/doc/html/manual/ext_compile_checks.html (+3/-3)
libstdc++-v3/doc/html/manual/ext_concurrency.html (+2/-2)
libstdc++-v3/doc/html/manual/ext_containers.html (+3/-3)
libstdc++-v3/doc/html/manual/ext_demangling.html (+3/-3)
libstdc++-v3/doc/html/manual/ext_io.html (+3/-3)
libstdc++-v3/doc/html/manual/ext_iterators.html (+2/-2)
libstdc++-v3/doc/html/manual/ext_numerics.html (+2/-2)
libstdc++-v3/doc/html/manual/ext_utilities.html (+2/-2)
libstdc++-v3/doc/html/manual/extensions.html (+3/-3)
libstdc++-v3/doc/html/manual/facets.html (+28/-28)
libstdc++-v3/doc/html/manual/fstreams.html (+2/-2)
libstdc++-v3/doc/html/manual/generalized_numeric_operations.html (+1/-1)
libstdc++-v3/doc/html/manual/internals.html (+1/-1)
libstdc++-v3/doc/html/manual/intro.html (+3/-3)
libstdc++-v3/doc/html/manual/io.html (+4/-4)
libstdc++-v3/doc/html/manual/io_and_c.html (+1/-1)
libstdc++-v3/doc/html/manual/iterators.html (+4/-4)
libstdc++-v3/doc/html/manual/license.html (+3/-3)
libstdc++-v3/doc/html/manual/localization.html (+11/-11)
libstdc++-v3/doc/html/manual/make.html (+2/-2)
libstdc++-v3/doc/html/manual/memory.html (+30/-30)
libstdc++-v3/doc/html/manual/numerics.html (+5/-5)
libstdc++-v3/doc/html/manual/numerics_and_c.html (+1/-1)
libstdc++-v3/doc/html/manual/pairs.html (+1/-1)
libstdc++-v3/doc/html/manual/parallel_mode.html (+4/-4)
libstdc++-v3/doc/html/manual/profile_mode.html (+4/-4)
libstdc++-v3/doc/html/manual/setup.html (+5/-5)
libstdc++-v3/doc/html/manual/source_code_style.html (+3/-3)
libstdc++-v3/doc/html/manual/source_design_notes.html (+1/-1)
libstdc++-v3/doc/html/manual/source_organization.html (+1/-1)
libstdc++-v3/doc/html/manual/spine.html (+5/-5)
libstdc++-v3/doc/html/manual/status.html (+36/-21)
libstdc++-v3/doc/html/manual/streambufs.html (+4/-4)
libstdc++-v3/doc/html/manual/strings.html (+14/-14)
libstdc++-v3/doc/html/manual/stringstreams.html (+1/-1)
libstdc++-v3/doc/html/manual/support.html (+7/-7)
libstdc++-v3/doc/html/manual/termination.html (+1/-1)
libstdc++-v3/doc/html/manual/test.html (+4/-4)
libstdc++-v3/doc/html/manual/traits.html (+1/-1)
libstdc++-v3/doc/html/manual/using.html (+4/-4)
libstdc++-v3/doc/html/manual/using_concurrency.html (+5/-5)
libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html (+3/-3)
libstdc++-v3/doc/html/manual/using_exceptions.html (+10/-10)
libstdc++-v3/doc/html/manual/using_headers.html (+8/-8)
libstdc++-v3/doc/html/manual/using_macros.html (+1/-1)
libstdc++-v3/doc/html/manual/using_namespaces.html (+2/-2)
libstdc++-v3/doc/html/manual/utilities.html (+5/-5)
libstdc++-v3/doc/html/spine.html (+3/-3)
libstdc++-v3/doc/xml/manual/documentation_hacking.xml (+2/-2)
libstdc++-v3/doc/xml/manual/status_cxx200x.xml (+586/-444)
libstdc++-v3/include/Makefile.am (+1/-0)
libstdc++-v3/include/Makefile.in (+1/-0)
libstdc++-v3/include/bits/unique_ptr.h (+8/-6)
libstdc++-v3/include/ext/algorithm (+4/-0)
libstdc++-v3/include/ext/numeric (+4/-1)
libstdc++-v3/include/ext/sso_string_base.h (+11/-12)
libstdc++-v3/include/ext/vstring.h (+2/-2)
libstdc++-v3/include/ext/vstring.tcc (+5/-5)
libstdc++-v3/include/parallel/losertree.h (+28/-15)
libstdc++-v3/include/parallel/multiway_merge.h (+14/-9)
libstdc++-v3/include/parallel/multiway_mergesort.h (+9/-2)
libstdc++-v3/include/parallel/par_loop.h (+13/-6)
libstdc++-v3/include/parallel/partial_sum.h (+3/-0)
libstdc++-v3/include/parallel/quicksort.h (+3/-1)
libstdc++-v3/include/parallel/random_shuffle.h (+9/-4)
libstdc++-v3/include/std/complex (+30/-0)
libstdc++-v3/include/std/functional (+48/-42)
libstdc++-v3/include/std/future (+12/-6)
libstdc++-v3/include/std/istream (+16/-13)
libstdc++-v3/include/std/tuple (+12/-11)
libstdc++-v3/include/std/type_traits (+83/-3)
libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc (+30/-0)
libstdc++-v3/testsuite/20_util/function/48541.cc (+40/-0)
libstdc++-v3/testsuite/20_util/hash/chi2_quality.cc (+5/-0)
libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc (+11/-1)
libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc (+47/-0)
libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc (+29/-3)
libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc (+44/-0)
libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc (+148/-0)
libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc (+10/-38)
libstdc++-v3/testsuite/20_util/tuple/48476.cc (+51/-0)
libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc (+27/-0)
libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc (+85/-0)
libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc (+78/-0)
libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc (+50/-0)
libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc (+1/-1)
libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc (+70/-0)
libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc (+56/-0)
libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc (+2/-1)
libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc (+2/-2)
libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc (+2/-2)
libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc (+2/-2)
libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc (+2/-2)
libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc (+2/-2)
libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc (+2/-2)
libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc (+2/-2)
libstdc++-v3/testsuite/ext/iota/cxx0x.cc (+28/-0)
libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc (+28/-0)
libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc (+3/-0)
libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc (+2/-1)
libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc (+2/-1)
libstdc++-v3/testsuite/util/testsuite_abi.cc (+1/-0)
libstdc++-v3/testsuite/util/testsuite_common_types.h (+2/-1)
lto-plugin/ChangeLog (+5/-0)
lto-plugin/lto-plugin.c (+3/-3)
Text conflict in ChangeLog.linaro
To merge this branch: bzr merge lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.6-20110506
Reviewer Review Type Date Requested Status
Richard Sandiford Approve
Review via email: mp+60173@code.launchpad.net

This proposal supersedes a proposal from 2011-05-06.

Description of the change

Merge from FSF 4.6 branch.

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 r106744 and queued it for build.

The snapshot is available at:
 http://ex.seabright.co.nz/snapshots/gcc-linaro-4.6+bzr106744~ams-codesourcery~merge-fsf-4.6-20110506.tar.xdelta3.xz

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

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

cbuild-snapshot: gcc-linaro-4.6+bzr106744~ams-codesourcery~merge-fsf-4.6-20110506
cbuild-ancestor: lp:gcc-linaro/4.6+bzr106743
cbuild-state: check

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on i686-lucid-cbuild114-scorpius-i686r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106744~ams-codesourcery~merge-fsf-4.6-20110506/logs/i686-lucid-cbuild114-scorpius-i686r1

The test suite results changed compared to the branch point lp:gcc-linaro/4.6+bzr106743:
 +PASS: c-c++-common/raw-string-11.c -Wc++-compat execution test
 +PASS: c-c++-common/raw-string-11.c -Wc++-compat (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O2 -flto -flto-partition=none (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -Os (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O2 -flto -flto-partition=none (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -Os (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48734.c -O0 (test for excess errors)
 ...and 292 more

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106744~ams-codesourcery~merge-fsf-4.6-20110506/logs/i686-lucid-cbuild114-scorpius-i686r1/gcc-testsuite.txt

cbuild-checked: i686-lucid-cbuild114-scorpius-i686r1

Revision history for this message
Linaro Toolchain Builder (cbuild) wrote :

cbuild successfully built this on armv7l-maverick-cbuild114-ursa4-cortexa9r1.

The build results are available at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106744~ams-codesourcery~merge-fsf-4.6-20110506/logs/armv7l-maverick-cbuild114-ursa4-cortexa9r1

The test suite results changed compared to the branch point lp:gcc-linaro/4.6+bzr106743:
 +PASS: c-c++-common/raw-string-11.c -Wc++-compat execution test
 +PASS: c-c++-common/raw-string-11.c -Wc++-compat (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O2 -flto -flto-partition=none (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48335-1.c -Os (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O0 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O1 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O2 -flto -flto-partition=none (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O2 -flto (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O2 (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O3 -fomit-frame-pointer (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -O3 -g (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48517.c -Os (test for excess errors)
 +PASS: gcc.c-torture/compile/pr48734.c -O0 (test for excess errors)
 ...and 282 more

The full testsuite results are at:
 http://ex.seabright.co.nz/build/gcc-linaro-4.6+bzr106744~ams-codesourcery~merge-fsf-4.6-20110506/logs/armv7l-maverick-cbuild114-ursa4-cortexa9r1/gcc-testsuite.txt

cbuild-checked: armv7l-maverick-cbuild114-ursa4-cortexa9r1

Revision history for this message
Richard Sandiford (rsandifo) wrote :

As for the 4.5 counterpart: a formal OK in
case one is needed.

review: Approve
Revision history for this message
Andrew Stubbs (ams-codesourcery) wrote :

i686 and ARM test results are OK.

Still waiting for x86_64 .....

Revision history for this message
Andrew Stubbs (ams-codesourcery) wrote :

Ok, I'm bored of waiting, the x86_64 machine has been disrupted by UDS, and I want this merged before the very last minute. I'm going to merge it, and if there's a problem, I'll revert it later.

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-05-06 11:33:02 +0000
3+++ ChangeLog.linaro 2011-05-06 12:18:42 +0000
4@@ -1,3 +1,4 @@
5+<<<<<<< TREE
6 2011-05-06 Richard Sandiford <richard.sandiford@linaro.org>
7
8 gcc/
9@@ -6,6 +7,12 @@
10 * config/arm/arm.c (coproc_secondary_reload_class): Return NO_REGS
11 for constant vectors.
12
13+=======
14+2011-05-06 Andrew Stubbs <ams@codesourcery.com>
15+
16+ Merge from FSF GCC 4.6 (svn branches/gcc-4_6-branch 173480).
17+
18+>>>>>>> MERGE-SOURCE
19 2011-04-26 Andrew Stubbs <ams@codesourcery.com>
20
21 Backport from FSF:
22
23=== modified file 'config/ChangeLog'
24--- config/ChangeLog 2011-03-25 16:55:18 +0000
25+++ config/ChangeLog 2011-05-06 12:18:42 +0000
26@@ -1,3 +1,7 @@
27+2011-04-20 Eric Botcazou <ebotcazou@adacore.com>
28+
29+ * bootstrap-lto.mk: Remove obsolete requirement.
30+
31 2011-03-25 Release Manager
32
33 * GCC 4.6.0 released.
34
35=== modified file 'config/bootstrap-lto.mk'
36--- config/bootstrap-lto.mk 2011-01-10 23:43:54 +0000
37+++ config/bootstrap-lto.mk 2011-05-06 12:18:42 +0000
38@@ -1,6 +1,5 @@
39-# This option enables LTO for stage2 and stage3. It requires lto to
40-# be enabled for stage1 with --enable-stage1-languages.
41+# This option enables LTO for stage2 and stage3.
42
43 STAGE2_CFLAGS += -flto=jobserver -frandom-seed=1
44 STAGE3_CFLAGS += -flto=jobserver -frandom-seed=1
45-STAGEprofile_CFLAGS += -fno-lto
46+STAGEprofile_CFLAGS += -fno-lto
47
48=== modified file 'gcc/ChangeLog'
49--- gcc/ChangeLog 2011-05-04 13:20:12 +0000
50+++ gcc/ChangeLog 2011-05-06 12:18:42 +0000
51@@ -1,9 +1,425 @@
52+2011-05-06 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
53+
54+ PR target/48252
55+ * config/arm/neon.md (neon_vtrn<mode>): Fix typo
56+ from earlier commit.
57+
58+2011-05-05 Michael Meissner <meissner@linux.vnet.ibm.com>
59+
60+ * config/rs6000/rs6000.c (rs6000_handle_option): Add missing break
61+ for OPT_mfpu_ case.
62+
63+2011-05-05 Jason Merrill <jason@redhat.com>
64+
65+ PR c++/40975
66+ * tree-inline.c (copy_tree_r): Handle STATEMENT_LIST.
67+
68+2011-05-05 Julian Brown <julian@codesourcery.com>
69+
70+ * config/arm/neon.md (vec_set<mode>_internal): Fix misplaced
71+ parenthesis in D-register case.
72+
73+2011-05-05 Ira Rosen <ira.rosen@linaro.org>
74+
75+ Backport from mainline:
76+ 2011-04-18 Ulrich Weigand <ulrich.weigand@linaro.org>
77+ Ira Rosen <ira.rosen@linaro.org>
78+
79+ PR target/48252
80+ * config/arm/arm.c (neon_emit_pair_result_insn): Swap arguments
81+ to match neon_vzip/vuzp/vtrn_internal.
82+ * config/arm/neon.md (neon_vtrn<mode>_internal): Make both
83+ outputs explicitly dependent on both inputs.
84+ (neon_vzip<mode>_internal, neon_vuzp<mode>_internal): Likewise.
85+
86+2011-05-04 Uros Bizjak <ubizjak@gmail.com>
87+
88+ * config/i386/i386.md (*movdi_internal_rex64) <TYPE_SSEMOV>:
89+ Use %v prefix in insn mnemonic to handle TARGET_AVX.
90+ (*movdi_internal): Use "maybe_vex" instead of "vex" in "prefix"
91+ attribute calculation.
92+ (*movdf_internal): Output AVX mnemonics. Add "prefix" attribute.
93+ * config/i386/sse.md (*sse2_storeq_rex64): Do not emit %v prefix
94+ for mov{q} mnemonic.
95+ (*vec_extractv2di_1_rex64_avx): Ditto.
96+
97+2011-05-03 Uros Bizjak <ubizjak@gmail.com>
98+ Jakub Jelinek <jakub@redhat.com>
99+
100+ PR target/48774
101+ * config/i386/i386.c (ix86_match_ccmode): For CC{A,C,O,S}mode
102+ only succeed if req_mode is the same as set_mode.
103+
104+2011-05-03 Richard Guenther <rguenther@suse.de>
105+
106+ PR lto/48846
107+ * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
108+ Stream decl_common.off_align instead of the derived DECL_OFFSET_ALIGN.
109+ * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
110+
111+2011-05-03 Eric Botcazou <ebotcazou@adacore.com>
112+
113+ PR target/48723
114+ * config/i386/i386.c (ix86_expand_prologue): Do not probe the stack
115+ for -fstack-check if the size to allocate is negative.
116+
117+2011-04-30 Jakub Jelinek <jakub@redhat.com>
118+
119+ PR tree-optimization/48809
120+ * tree-switch-conversion.c (build_arrays): Compute tidx in unsigned
121+ type.
122+ (gen_inbound_check): Don't compute index_expr - range_min in utype
123+ again, instead reuse SSA_NAME initialized in build_arrays.
124+ Remove two useless gsi_for_stmt calls.
125+
126+2011-04-28 Michael Meissner <meissner@linux.vnet.ibm.com>
127+
128+ Backport from mainline
129+ 2011-04-01 Andrew Pinski <pinskia@gmail.com>
130+ Michael Meissner <meissner@linux.vnet.ibm.com>
131+
132+ PR target/48262
133+ * config/rs6000/vector.md (movmisalign<mode>): Allow for memory
134+ operands, as per the specifications.
135+
136+ * config/rs6000/altivec.md (vec_extract_evenv4si): Correct modes.
137+ (vec_extract_evenv4sf): Ditto.
138+ (vec_extract_evenv8hi): Ditto.
139+ (vec_extract_evenv16qi): Ditto.
140+ (vec_extract_oddv4si): Ditto.
141+
142+2011-04-28 Jakub Jelinek <jakub@redhat.com>
143+
144+ PR middle-end/48597
145+ * final.c (final_scan_insn): Call dwarf2out_frame_debug even for
146+ inline asm.
147+
148+2011-04-27 Jakub Jelinek <jakub@redhat.com>
149+
150+ PR c/48742
151+ * c-typeck.c (build_binary_op): Don't wrap arguments if
152+ int_operands is true.
153+
154+2011-04-26 Jakub Jelinek <jakub@redhat.com>
155+
156+ PR debug/48768
157+ * tree-ssa.c (insert_debug_temp_for_var_def): If degenerate_phi_result
158+ is error_mark_node, set value to NULL.
159+
160+ PR tree-optimization/48734
161+ * tree-ssa-reassoc.c (eliminate_redundant_comparison): Give up
162+ if return value from maybe_fold_*_comparsions isn't something
163+ the code is prepared to handle.
164+
165+2011-04-26 Richard Guenther <rguenther@suse.de>
166+
167+ PR tree-optimization/48731
168+ * ipa-inline.c (cgraph_flatten): Test if function is inlinable.
169+
170+2011-04-24 Paolo Carlini <paolo.carlini@oracle.com>
171+
172+ PR other/48748
173+ * doc/extend.texi (Type Traits): Document __is_standard_layout,
174+ __is_literal_type, and __is_trivial; update throughout about
175+ possibly cv-qualified void types.
176+
177+2011-04-23 Jakub Jelinek <jakub@redhat.com>
178+
179+ PR c/48685
180+ * fold-const.c (fold_convert_loc): Add NOP_EXPR when casting
181+ to VOID_TYPE even around MODIFY_EXPR.
182+
183+2011-04-22 Jakub Jelinek <jakub@redhat.com>
184+
185+ PR tree-optimization/48717
186+ * tree-ssa-forwprop.c (associate_plusminus): For A + ~A and
187+ ~A + A optimizations use build_int_cst_type instead of build_int_cst.
188+
189+2011-04-22 Jakub Jelinek <jakub@redhat.com>
190+
191+ PR c/48716
192+ * gimplify.c (gimplify_bind_expr): Mark as GOVD_LOCAL also
193+ TREE_STATIC variables declared inside of some OpenMP construct.
194+
195+2011-04-21 Uros Bizjak <ubizjak@gmail.com>
196+
197+ PR target/48708
198+ * config/i386/i386.c (ix86_expand_vector_set) <V2DImode>: Generate
199+ vec_extract and vec_concat for non-SSE4_1 targets.
200+
201+2011-04-21 Richard Guenther <rguenther@suse.de>
202+
203+ PR middle-end/48695
204+ * tree-ssa-alias.c (aliasing_component_refs_p): Compute base
205+ objects and types here. Adjust for their offset before comparing.
206+
207+2011-04-21 Eric Botcazou <ebotcazou@adacore.com>
208+
209+ * gimple.c (walk_gimple_op) <GIMPLE_CALL>: Fix couple of oversights.
210+
211+2011-04-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
212+
213+ PR target/48288
214+ * config/pa/predicates.md (ior_operand): Delete predicate.
215+ (cint_ior_operand, reg_or_cint_ior_operand): New predicates.
216+ * config/pa/pa.md (iordi3): Use reg_or_cint_ior_operand predicate in
217+ expander. Use cint_ior_operand in unnamed insn.
218+ (iorsi3): Likewise.
219+ * config/pa/pa-protos.h (ior_operand): Delete declarations.
220+
221+2011-04-20 Jakub Jelinek <jakub@redhat.com>
222+
223+ PR tree-optimization/48611
224+ * tree-eh.c (note_eh_region_may_contain_throw): Don't propagate
225+ beyond ERT_MUST_NOT_THROW region.
226+
227+2011-04-20 Eric Botcazou <ebotcazou@adacore.com>
228+
229+ Backport from mainline
230+ 2011-04-19 Eric Botcazou <ebotcazou@adacore.com>
231+
232+ PR lto/48148
233+ * gimple.c (gimple_types_compatible_p_1) <ENUMERAL_TYPE>: Do not merge
234+ the types if they have different enumeration identifiers.
235+
236+ 2011-04-18 Eric Botcazou <ebotcazou@adacore.com>
237+
238+ PR lto/48492
239+ * cfgexpand.c (expand_debug_expr) <VAR_DECL>: Return NULL for a
240+ DECL_IN_CONSTANT_POOL without RTL.
241+
242+2011-04-20 Richard Guenther <rguenther@suse.de>
243+
244+ Backport from mainline
245+ 2011-04-19 Bernd Schmidt <bernds@codesourcery.com>
246+
247+ PR fortran/47976
248+ * reload1.c (inc_for_reload): Return void. All callers changed.
249+ (emit_input_reload_insns): Don't try to delete previous output
250+ reloads to a register, or record spill_reg_store for autoincs.
251+
252+2011-04-19 Jakub Jelinek <jakub@redhat.com>
253+
254+ PR target/48678
255+ * config/i386/i386.md (movstrict<mode>): FAIL if operands[0]
256+ is a SUBREG with non-MODE_INT mode inside of it.
257+
258+2011-04-18 Jakub Jelinek <jakub@redhat.com>
259+
260+ PR middle-end/48661
261+ * gimple-fold.c (gimple_get_virt_method_for_binfo): Return NULL
262+ if TREE_TYPE (v) is non-NULL.
263+
264+ * gimple-fold.c (gimple_get_virt_method_for_binfo): Renamed from
265+ gimple_get_virt_mehtod_for_binfo.
266+ * gimple.h (gimple_get_virt_method_for_binfo): Likewise.
267+ * ipa-cp.c (ipcp_process_devirtualization_opportunities): Adjust
268+ callers.
269+ * ipa-prop.c (try_make_edge_direct_virtual_call): Likewise.
270+
271+2011-04-18 Eric Botcazou <ebotcazou@adacore.com>
272+
273+ * dwarf2out.c (is_redundant_typedef): Add 'inline' to prototype.
274+
275+2011-04-18 Jakub Jelinek <jakub@redhat.com>
276+
277+ PR tree-optimization/48616
278+ * tree-vect-stmts.c (vectorizable_shift): If SLP, determine
279+ whether the shift is by scalar or vector based on whether all SLP
280+ scalar stmts have the same rhs.
281+
282+2011-04-17 Dennis, CHENG Renquan <crquan@fedoraproject.org>
283+
284+ * doc/passes.texi: Fill crossref nodes.
285+
286+2011-04-17 Marius Strobl <marius@FreeBSD.org>
287+
288+ * config/sparc/freebsd.h (CPP_CPU64_DEFAULT_SPEC): Replace with...
289+ (FBSD_TARGET_CPU_CPP_BUILTINS): ...this.
290+ (TARGET_GNU_TLS, TARGET_SUN_TLS): Define.
291+
292+2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
293+
294+ PR lto/48538
295+ * lto-cgraph.c (merge_profile_summaries): Check that lto_file_data
296+ is non-null before accessing it.
297+ (input_cgraph): Remove trailing spaces.
298+
299+2011-04-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
300+
301+ * config/s390/s390.md (popcountdi2, popcountsi2, popcounthi2):
302+ Replace match_operand with match_dup for the third operand in
303+ these expanders.
304+
305+2011-04-15 Jakub Jelinek <jakub@redhat.com>
306+
307+ PR target/48605
308+ * config/i386/sse.md (avx_insertps, sse4_1_insertps): If operands[2]
309+ is a MEM, offset it as needed based on top 2 bits in operands[3],
310+ change MEM mode to SFmode and mask those 2 bits away from operands[3].
311+
312+2011-04-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
313+
314+ Backport from mainline:
315+ 2011-04-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
316+
317+ PR target/48366
318+ * config/pa/pa.c (hppa_register_move_cost): Increase to 18 cost of
319+ move from floating point to shift amount register.
320+ (emit_move_sequence): Remove secondary reload support for floating
321+ point to shift amount amount register copies.
322+ (pa_secondary_reload): Return GENERAL_REGS for floating point/shift
323+ amount register copies.
324+ * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): For shift amount
325+ register, return false if mode isn't a scalar integer mode.
326+ * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Likewise.
327+
328+2011-04-13 Jakub Jelinek <jakub@redhat.com>
329+
330+ PR middle-end/48591
331+ * omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is NULL.
332+ (expand_omp_atomic_pipeline): Return false if cmpxchg is NULL.
333+
334+2011-04-13 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
335+
336+ Backport from mainline:
337+ 2011-04-12 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
338+ PR target/48090
339+ * config/arm/arm.md (*arm_negdi2): Fix early clobber constraints.
340+
341+2011-04-12 Martin Jambor <mjambor@suse.cz>
342+
343+ PR tree-optimization/48195
344+ * ipa-cp.c (ipcp_driver): Call ipa_check_create_node_params and
345+ ipa_check_create_edge_args.
346+ (ipcp_generate_summary): Do not call ipa_check_create_node_params and
347+ ipa_check_create_edge_args.
348+ * ipa-inline.c (inline_generate_summary): Do not call
349+ ipa_check_create_node_params and ipa_check_create_edge_args.
350+ * ipa-prop.c (ipa_analyze_node): Call ipa_check_create_node_params and
351+ ipa_check_create_edge_args.
352+
353+2011-04-12 Jakub Jelinek <jakub@redhat.com>
354+
355+ PR rtl-optimization/48549
356+ * combine.c (propagate_for_debug): Also stop after BB_END of
357+ this_basic_block. Process LAST and just stop processing after it.
358+ (combine_instructions): If last_combined_insn has been deleted,
359+ set last_combined_insn to its PREV_INSN.
360+
361+2011-04-12 Nick Clifton <nickc@redhat.com>
362+
363+ * config/v850/v850.c (expand_prologue): Do not use the CALLT
364+ instruction for interrupt handlers if the target is the basic V850
365+ architecture.
366+ (expand_epilogue): Likewise.
367+
368+2011-04-12 Jakub Jelinek <jakub@redhat.com>
369+
370+ PR c/48517
371+ * c-typeck.c (store_init_value): Set TREE_TYPE (decl) to
372+ qualified type.
373+
374+2011-04-11 Joseph Myers <joseph@codesourcery.com>
375+
376+ * common.opt (Tbss=, Tdata=, Ttext=): New options.
377+
378+2011-04-11 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
379+
380+ Backport from mainline:
381+ 2011-04-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
382+
383+ * config/alpha/osf5.h (MAX_OFILE_ALIGNMENT): Define.
384+
385+2011-04-09 Duncan Sands <baldrick@free.fr>
386+
387+ * tree.c (array_type_nelts): Bail out if TYPE_MAX_VALUE not set.
388+
389+2011-04-08 Steven G. Kargl <kargl@gcc.gnu.org>
390+
391+ PR target/47829
392+ * config.gcc: disable unwind table generation for crtbegin/crtend
393+ on i386-*-freebsd.
394+
395+2011-04-08 Jakub Jelinek <jakub@redhat.com>
396+
397+ PR tree-optimization/48377
398+ * tree-vect-data-refs.c (vector_alignment_reachable_p): Set is_packed
399+ to true even for types with smaller TYPE_ALIGN than TYPE_SIZE.
400+
401+2011-04-07 Uros Bizjak <ubizjak@gmail.com>
402+
403+ * config/i386/sse.md: Update copyright year.
404+ (avx_cmp<ssescalarmodesuffix><mode>3): Add missing output
405+ register constraint.
406+ (*vec_concatv2sf_avx): Fix wrong register constraint in
407+ alternative 3 of operand 1.
408+ (*vec_set<mode>_0_avx): Avoid combining registers from different
409+ units in a single alternative.
410+ (*vec_set<mode>_0_sse4_1): Ditto.
411+ (*vec_set<mode>_0_sse2): Ditto.
412+ (vec_set<mode>_0): Ditto.
413+ (sse2_storehpd): Ditto.
414+ (sse2_loadhpd): Ditto.
415+ (sse4_1_insertps): Use nonimmediate_operand for operand 2.
416+ * config/i386/predicates.md (sse_comparison_operator): Do not
417+ define as special predicate.
418+
419+2011-04-07 Jakub Jelinek <jakub@redhat.com>
420+
421+ PR debug/48343
422+ * combine.c (combine_instructions): Add last_combined_insn,
423+ update it if insn is after it, pass it to all try_combine calls.
424+ (try_combine): Add last_combined_insn parameter, pass it instead of
425+ i3 to propagate_for_debug.
426+
427+2011-04-07 Andrey Belevantsev <abel@ispras.ru>
428+
429+ Backport from mainline
430+ 2011-03-26 Andrey Belevantsev <abel@ispras.ru>
431+
432+ PR rtl-optimization/48144
433+ * sel-sched-ir.c (merge_history_vect): Factor out from ...
434+ (merge_expr_data): ... here.
435+ (av_set_intersect): Rename to av_set_code_motion_filter.
436+ Update all callers. Call merge_history_vect when an
437+ expression is found in both sets.
438+ * sel-sched-ir.h (av_set_code_motion_filter): Add prototype.
439+
440+2011-04-06 Jakub Jelinek <jakub@redhat.com>
441+
442+ PR debug/48466
443+ * dwarf2out.c (based_loc_descr): If drap_reg is INVALID_REGNUM, use
444+ as base_reg whatever register reg has been eliminated to, instead
445+ of hardcoding STACK_POINTER_REGNUM.
446+
447+ Backported from mainline
448+ 2011-04-01 Jakub Jelinek <jakub@redhat.com>
449+
450+ PR middle-end/48335
451+ * expr.c (expand_assignment): Handle all possibilities
452+ if TO_RTX is CONCAT.
453+ * expmed.c (store_bit_field_1): Avoid trying to create
454+ invalid SUBREGs.
455+ (store_split_bit_field): If SUBREG_REG (op0) or
456+ op0 itself has smaller mode than word, return it
457+ for offset 0 and const0_rtx for out-of-bounds stores.
458+ If word is const0_rtx, skip it.
459+
460+2011-04-06 Joseph Myers <joseph@codesourcery.com>
461+
462+ * gcov-io.c: Use GCC Runtime Library Exception.
463+
464+2011-04-05 Eric Botcazou <ebotcazou@adacore.com>
465+
466+ * stor-layout.c (self_referential_size): Fix 2010-07-13 commit.
467+
468 2011-04-01 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
469
470 * config/spu/t-spu-elf (dp-bit.c): Use > instead of >>.
471
472 2011-04-01 Andrey Belevantsev <abel@ispras.ru>
473-
474+
475 Backport from mainline
476 2011-03-22 Andrey Belevantsev <abel@ispras.ru>
477
478@@ -532,10 +948,10 @@
479
480 2011-03-08 Georg-Johann Lay <avr@gjlay.de>
481
482- * config/avr/avr.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
483- * config/avr/avr.c (TARGET_REGISTER_MOVE_COST,
484- TARGET_MEMORY_MOVE_COST): Define.
485- (avr_register_move_cost, avr_memory_move_cost): New Functions.
486+ * config/avr/avr.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
487+ * config/avr/avr.c (TARGET_REGISTER_MOVE_COST)
488+ (TARGET_MEMORY_MOVE_COST): Define.
489+ (avr_register_move_cost, avr_memory_move_cost): New Functions.
490
491 2011-03-08 Jakub Jelinek <jakub@redhat.com>
492
493
494=== modified file 'gcc/DATESTAMP'
495--- gcc/DATESTAMP 2011-04-04 00:17:38 +0000
496+++ gcc/DATESTAMP 2011-05-06 12:18:42 +0000
497@@ -1,1 +1,1 @@
498-20110404
499+20110506
500
501=== modified file 'gcc/ada/ChangeLog'
502--- gcc/ada/ChangeLog 2011-03-25 16:54:59 +0000
503+++ gcc/ada/ChangeLog 2011-05-06 12:18:42 +0000
504@@ -1,3 +1,17 @@
505+2011-05-05 Eric Botcazou <ebotcazou@adacore.com>
506+
507+ PR ada/48844
508+ * gcc-interface/gigi.h (get_variant_part): Declare.
509+ * gcc-interface/decl.c (get_variant_part): Make global.
510+ * gcc-interface/utils2.c (find_common_type): Do not return T1 if the
511+ types have the same constant size, are record types and T1 has a
512+ variant part while T2 doesn't.
513+
514+2011-04-17 Eric Botcazou <ebotcazou@adacore.com>
515+
516+ * gcc-interface/Make-lang.in (gnatbind): Replace $(ALL_CFLAGS) with
517+ $(CFLAGS) on the link line.
518+
519 2011-03-25 Release Manager
520
521 * GCC 4.6.0 released.
522
523=== modified file 'gcc/ada/gcc-interface/Make-lang.in'
524--- gcc/ada/gcc-interface/Make-lang.in 2011-01-26 11:53:51 +0000
525+++ gcc/ada/gcc-interface/Make-lang.in 2011-05-06 12:18:42 +0000
526@@ -485,7 +485,7 @@
527 $(RM) stamp-gnatlib2-rts stamp-tools
528
529 gnatbind$(exeext): ada/b_gnatb.o $(CONFIG_H) $(GNATBIND_OBJS)
530- $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(ALL_CFLAGS) $(LIBS) $(SYSLIBS)
531+ $(GCC_LINK) -o $@ ada/b_gnatb.o $(GNATBIND_OBJS) $(LIBS) $(SYSLIBS) $(CFLAGS)
532
533 # use cross-gcc
534 gnat-cross: force
535
536=== modified file 'gcc/ada/gcc-interface/decl.c'
537--- gcc/ada/gcc-interface/decl.c 2011-01-04 11:33:39 +0000
538+++ gcc/ada/gcc-interface/decl.c 2011-05-06 12:18:42 +0000
539@@ -177,7 +177,6 @@
540 static tree create_field_decl_from (tree, tree, tree, tree, tree,
541 VEC(subst_pair,heap) *);
542 static tree get_rep_part (tree);
543-static tree get_variant_part (tree);
544 static tree create_variant_part_from (tree, VEC(variant_desc,heap) *, tree,
545 tree, VEC(subst_pair,heap) *);
546 static void copy_and_substitute_in_size (tree, tree, VEC(subst_pair,heap) *);
547@@ -8400,7 +8399,7 @@
548
549 /* Return the variant part of RECORD_TYPE, if any. Otherwise return NULL. */
550
551-static tree
552+tree
553 get_variant_part (tree record_type)
554 {
555 tree field;
556
557=== modified file 'gcc/ada/gcc-interface/gigi.h'
558--- gcc/ada/gcc-interface/gigi.h 2011-02-03 13:19:38 +0000
559+++ gcc/ada/gcc-interface/gigi.h 2011-05-06 12:18:42 +0000
560@@ -151,6 +151,9 @@
561 extern void annotate_object (Entity_Id gnat_entity, tree gnu_type, tree size,
562 bool by_ref, bool by_double_ref);
563
564+/* Return the variant part of RECORD_TYPE, if any. Otherwise return NULL. */
565+extern tree get_variant_part (tree record_type);
566+
567 /* Given a type T, a FIELD_DECL F, and a replacement value R, return a new
568 type with all size expressions that contain F updated by replacing F
569 with R. If F is NULL_TREE, always make a new RECORD_TYPE, even if
570
571=== modified file 'gcc/ada/gcc-interface/utils2.c'
572--- gcc/ada/gcc-interface/utils2.c 2011-02-03 13:19:38 +0000
573+++ gcc/ada/gcc-interface/utils2.c 2011-05-06 12:18:42 +0000
574@@ -193,15 +193,21 @@
575 calling into build_binary_op), some others are really expected and we
576 have to be careful. */
577
578- /* We must prevent writing more than what the target may hold if this is for
579+ /* We must avoid writing more than what the target can hold if this is for
580 an assignment and the case of tagged types is handled in build_binary_op
581- so use the lhs type if it is known to be smaller, or of constant size and
582- the rhs type is not, whatever the modes. We also force t1 in case of
583+ so we use the lhs type if it is known to be smaller or of constant size
584+ and the rhs type is not, whatever the modes. We also force t1 in case of
585 constant size equality to minimize occurrences of view conversions on the
586- lhs of assignments. */
587+ lhs of an assignment, except for the case of record types with a variant
588+ part on the lhs but not on the rhs to make the conversion simpler. */
589 if (TREE_CONSTANT (TYPE_SIZE (t1))
590 && (!TREE_CONSTANT (TYPE_SIZE (t2))
591- || !tree_int_cst_lt (TYPE_SIZE (t2), TYPE_SIZE (t1))))
592+ || tree_int_cst_lt (TYPE_SIZE (t1), TYPE_SIZE (t2))
593+ || (TYPE_SIZE (t1) == TYPE_SIZE (t2)
594+ && !(TREE_CODE (t1) == RECORD_TYPE
595+ && TREE_CODE (t2) == RECORD_TYPE
596+ && get_variant_part (t1) != NULL_TREE
597+ && get_variant_part (t2) == NULL_TREE))))
598 return t1;
599
600 /* Otherwise, if the lhs type is non-BLKmode, use it. Note that we know
601
602=== modified file 'gcc/c-family/ChangeLog'
603--- gcc/c-family/ChangeLog 2011-03-29 20:30:06 +0000
604+++ gcc/c-family/ChangeLog 2011-05-06 12:18:42 +0000
605@@ -1,3 +1,14 @@
606+2011-04-19 Richard Guenther <rguenther@suse.de>
607+
608+ PR preprocessor/48248
609+ * c-ppoutput.c (maybe_print_line): Avoid changing -P behavior.
610+
611+2011-04-07 Jason Merrill <jason@redhat.com>
612+
613+ PR c++/48450
614+ * c-common.c (c_common_truthvalue_conversion): Don't ignore
615+ conversion from C++0x scoped enum.
616+
617 2011-03-29 Jakub Jelinek <jakub@redhat.com>
618
619 PR preprocessor/48248
620
621=== modified file 'gcc/c-family/c-common.c'
622--- gcc/c-family/c-common.c 2011-03-26 09:23:01 +0000
623+++ gcc/c-family/c-common.c 2011-05-06 12:18:42 +0000
624@@ -3938,16 +3938,25 @@
625 }
626
627 CASE_CONVERT:
628- /* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
629- since that affects how `default_conversion' will behave. */
630- if (TREE_CODE (TREE_TYPE (expr)) == REFERENCE_TYPE
631- || TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == REFERENCE_TYPE)
632- break;
633- /* If this is widening the argument, we can ignore it. */
634- if (TYPE_PRECISION (TREE_TYPE (expr))
635- >= TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (expr, 0))))
636- return c_common_truthvalue_conversion (location,
637- TREE_OPERAND (expr, 0));
638+ {
639+ tree totype = TREE_TYPE (expr);
640+ tree fromtype = TREE_TYPE (TREE_OPERAND (expr, 0));
641+
642+ /* Don't cancel the effect of a CONVERT_EXPR from a REFERENCE_TYPE,
643+ since that affects how `default_conversion' will behave. */
644+ if (TREE_CODE (totype) == REFERENCE_TYPE
645+ || TREE_CODE (fromtype) == REFERENCE_TYPE)
646+ break;
647+ /* Don't strip a conversion from C++0x scoped enum, since they
648+ don't implicitly convert to other types. */
649+ if (TREE_CODE (fromtype) == ENUMERAL_TYPE
650+ && ENUM_IS_SCOPED (fromtype))
651+ break;
652+ /* If this isn't narrowing the argument, we can ignore it. */
653+ if (TYPE_PRECISION (totype) >= TYPE_PRECISION (fromtype))
654+ return c_common_truthvalue_conversion (location,
655+ TREE_OPERAND (expr, 0));
656+ }
657 break;
658
659 case MODIFY_EXPR:
660
661=== modified file 'gcc/c-family/c-ppoutput.c'
662--- gcc/c-family/c-ppoutput.c 2011-03-29 20:30:06 +0000
663+++ gcc/c-family/c-ppoutput.c 2011-05-06 12:18:42 +0000
664@@ -316,7 +316,7 @@
665
666 if (src_line >= print.src_line
667 && src_line < print.src_line + 8
668- && strcmp (map->to_file, print.src_file) == 0)
669+ && (flag_no_line_commands || strcmp (map->to_file, print.src_file) == 0))
670 {
671 while (src_line > print.src_line)
672 {
673
674=== modified file 'gcc/c-typeck.c'
675--- gcc/c-typeck.c 2011-01-27 02:09:13 +0000
676+++ gcc/c-typeck.c 2011-05-06 12:18:42 +0000
677@@ -5773,11 +5773,13 @@
678 /* For int foo[] = (int [3]){1}; we need to set array size
679 now since later on array initializer will be just the
680 brace enclosed list of the compound literal. */
681+ tree etype = strip_array_types (TREE_TYPE (decl));
682 type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
683- TREE_TYPE (decl) = type;
684 TYPE_DOMAIN (type) = TYPE_DOMAIN (TREE_TYPE (cldecl));
685 layout_type (type);
686 layout_decl (cldecl, 0);
687+ TREE_TYPE (decl)
688+ = c_build_qualified_type (type, TYPE_QUALS (etype));
689 }
690 }
691 }
692@@ -10176,7 +10178,7 @@
693 warn_for_sign_compare (location, orig_op0_folded,
694 orig_op1_folded, op0, op1,
695 result_type, resultcode);
696- if (!in_late_binary_op)
697+ if (!in_late_binary_op && !int_operands)
698 {
699 if (!op0_maybe_const || TREE_CODE (op0) != INTEGER_CST)
700 op0 = c_wrap_maybe_const (op0, !op0_maybe_const);
701
702=== modified file 'gcc/cfgexpand.c'
703--- gcc/cfgexpand.c 2011-03-03 16:06:33 +0000
704+++ gcc/cfgexpand.c 2011-05-06 12:18:42 +0000
705@@ -2492,6 +2492,7 @@
706 || !TREE_STATIC (exp)
707 || !DECL_NAME (exp)
708 || DECL_HARD_REGISTER (exp)
709+ || DECL_IN_CONSTANT_POOL (exp)
710 || mode == VOIDmode)
711 return NULL;
712
713
714=== modified file 'gcc/combine.c'
715--- gcc/combine.c 2011-04-26 17:03:58 +0000
716+++ gcc/combine.c 2011-05-06 12:18:42 +0000
717@@ -387,7 +387,7 @@
718 static int can_combine_p (rtx, rtx, rtx, rtx, rtx, rtx, rtx *, rtx *);
719 static int combinable_i3pat (rtx, rtx *, rtx, rtx, rtx, int, int, rtx *);
720 static int contains_muldiv (rtx);
721-static rtx try_combine (rtx, rtx, rtx, rtx, int *);
722+static rtx try_combine (rtx, rtx, rtx, rtx, int *, rtx);
723 static void undo_all (void);
724 static void undo_commit (void);
725 static rtx *find_split_point (rtx *, rtx, bool);
726@@ -1159,6 +1159,7 @@
727
728 FOR_EACH_BB (this_basic_block)
729 {
730+ rtx last_combined_insn = NULL_RTX;
731 optimize_this_for_speed_p = optimize_bb_for_speed_p (this_basic_block);
732 last_call_luid = 0;
733 mem_last_set = -1;
734@@ -1177,6 +1178,15 @@
735 next = 0;
736 if (NONDEBUG_INSN_P (insn))
737 {
738+ while (last_combined_insn
739+ && INSN_DELETED_P (last_combined_insn))
740+ last_combined_insn = PREV_INSN (last_combined_insn);
741+ if (last_combined_insn == NULL_RTX
742+ || BARRIER_P (last_combined_insn)
743+ || BLOCK_FOR_INSN (last_combined_insn) != this_basic_block
744+ || DF_INSN_LUID (last_combined_insn) <= DF_INSN_LUID (insn))
745+ last_combined_insn = insn;
746+
747 /* See if we know about function return values before this
748 insn based upon SUBREG flags. */
749 check_promoted_subreg (insn, PATTERN (insn));
750@@ -1190,7 +1200,8 @@
751
752 for (links = LOG_LINKS (insn); links; links = XEXP (links, 1))
753 if ((next = try_combine (insn, XEXP (links, 0), NULL_RTX,
754- NULL_RTX, &new_direct_jump_p)) != 0)
755+ NULL_RTX, &new_direct_jump_p,
756+ last_combined_insn)) != 0)
757 goto retry;
758
759 /* Try each sequence of three linked insns ending with this one. */
760@@ -1208,8 +1219,8 @@
761 nextlinks;
762 nextlinks = XEXP (nextlinks, 1))
763 if ((next = try_combine (insn, link, XEXP (nextlinks, 0),
764- NULL_RTX,
765- &new_direct_jump_p)) != 0)
766+ NULL_RTX, &new_direct_jump_p,
767+ last_combined_insn)) != 0)
768 goto retry;
769 }
770
771@@ -1227,14 +1238,15 @@
772 && sets_cc0_p (PATTERN (prev)))
773 {
774 if ((next = try_combine (insn, prev, NULL_RTX, NULL_RTX,
775- &new_direct_jump_p)) != 0)
776+ &new_direct_jump_p,
777+ last_combined_insn)) != 0)
778 goto retry;
779
780 for (nextlinks = LOG_LINKS (prev); nextlinks;
781 nextlinks = XEXP (nextlinks, 1))
782 if ((next = try_combine (insn, prev, XEXP (nextlinks, 0),
783- NULL_RTX,
784- &new_direct_jump_p)) != 0)
785+ NULL_RTX, &new_direct_jump_p,
786+ last_combined_insn)) != 0)
787 goto retry;
788 }
789
790@@ -1247,14 +1259,15 @@
791 && reg_mentioned_p (cc0_rtx, SET_SRC (PATTERN (insn))))
792 {
793 if ((next = try_combine (insn, prev, NULL_RTX, NULL_RTX,
794- &new_direct_jump_p)) != 0)
795+ &new_direct_jump_p,
796+ last_combined_insn)) != 0)
797 goto retry;
798
799 for (nextlinks = LOG_LINKS (prev); nextlinks;
800 nextlinks = XEXP (nextlinks, 1))
801 if ((next = try_combine (insn, prev, XEXP (nextlinks, 0),
802- NULL_RTX,
803- &new_direct_jump_p)) != 0)
804+ NULL_RTX, &new_direct_jump_p,
805+ last_combined_insn)) != 0)
806 goto retry;
807 }
808
809@@ -1269,8 +1282,8 @@
810 && NONJUMP_INSN_P (prev)
811 && sets_cc0_p (PATTERN (prev))
812 && (next = try_combine (insn, XEXP (links, 0),
813- prev, NULL_RTX,
814- &new_direct_jump_p)) != 0)
815+ prev, NULL_RTX, &new_direct_jump_p,
816+ last_combined_insn)) != 0)
817 goto retry;
818 #endif
819
820@@ -1281,7 +1294,8 @@
821 nextlinks = XEXP (nextlinks, 1))
822 if ((next = try_combine (insn, XEXP (links, 0),
823 XEXP (nextlinks, 0), NULL_RTX,
824- &new_direct_jump_p)) != 0)
825+ &new_direct_jump_p,
826+ last_combined_insn)) != 0)
827 goto retry;
828
829 /* Try four-instruction combinations. */
830@@ -1305,14 +1319,16 @@
831 nextlinks = XEXP (nextlinks, 1))
832 if ((next = try_combine (insn, link, link1,
833 XEXP (nextlinks, 0),
834- &new_direct_jump_p)) != 0)
835+ &new_direct_jump_p,
836+ last_combined_insn)) != 0)
837 goto retry;
838 /* I0, I1 -> I2, I2 -> I3. */
839 for (nextlinks = XEXP (next1, 1); nextlinks;
840 nextlinks = XEXP (nextlinks, 1))
841 if ((next = try_combine (insn, link, link1,
842 XEXP (nextlinks, 0),
843- &new_direct_jump_p)) != 0)
844+ &new_direct_jump_p,
845+ last_combined_insn)) != 0)
846 goto retry;
847 }
848
849@@ -1326,14 +1342,16 @@
850 nextlinks = XEXP (nextlinks, 1))
851 if ((next = try_combine (insn, link, link1,
852 XEXP (nextlinks, 0),
853- &new_direct_jump_p)) != 0)
854+ &new_direct_jump_p,
855+ last_combined_insn)) != 0)
856 goto retry;
857 /* I0 -> I1; I1, I2 -> I3. */
858 for (nextlinks = LOG_LINKS (link1); nextlinks;
859 nextlinks = XEXP (nextlinks, 1))
860 if ((next = try_combine (insn, link, link1,
861 XEXP (nextlinks, 0),
862- &new_direct_jump_p)) != 0)
863+ &new_direct_jump_p,
864+ last_combined_insn)) != 0)
865 goto retry;
866 }
867 }
868@@ -1362,7 +1380,8 @@
869 i2mod_old_rhs = copy_rtx (orig);
870 i2mod_new_rhs = copy_rtx (note);
871 next = try_combine (insn, i2mod, NULL_RTX, NULL_RTX,
872- &new_direct_jump_p);
873+ &new_direct_jump_p,
874+ last_combined_insn);
875 i2mod = NULL_RTX;
876 if (next)
877 goto retry;
878@@ -2421,19 +2440,21 @@
879 }
880
881 /* Replace all the occurrences of DEST with SRC in DEBUG_INSNs between INSN
882- and LAST. */
883+ and LAST, not including INSN, but including LAST. Also stop at the end
884+ of THIS_BASIC_BLOCK. */
885
886 static void
887 propagate_for_debug (rtx insn, rtx last, rtx dest, rtx src)
888 {
889- rtx next, loc;
890+ rtx next, loc, end = NEXT_INSN (BB_END (this_basic_block));
891
892 struct rtx_subst_pair p;
893 p.to = src;
894 p.adjusted = false;
895
896 next = NEXT_INSN (insn);
897- while (next != last)
898+ last = NEXT_INSN (last);
899+ while (next != last && next != end)
900 {
901 insn = next;
902 next = NEXT_INSN (insn);
903@@ -2501,10 +2522,15 @@
904 resume scanning.
905
906 Set NEW_DIRECT_JUMP_P to a nonzero value if try_combine creates a
907- new direct jump instruction. */
908+ new direct jump instruction.
909+
910+ LAST_COMBINED_INSN is either I3, or some insn after I3 that has
911+ been I3 passed to an earlier try_combine within the same basic
912+ block. */
913
914 static rtx
915-try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
916+try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p,
917+ rtx last_combined_insn)
918 {
919 /* New patterns for I3 and I2, respectively. */
920 rtx newpat, newi2pat = 0;
921@@ -3853,7 +3879,7 @@
922 i2src while its original mode is temporarily
923 restored, and then clear i2scratch so that we don't
924 do it again later. */
925- propagate_for_debug (i2, i3, reg, i2src);
926+ propagate_for_debug (i2, last_combined_insn, reg, i2src);
927 i2scratch = false;
928 /* Put back the new mode. */
929 adjust_reg_mode (reg, new_mode);
930@@ -3866,13 +3892,16 @@
931 if (reg == i2dest)
932 {
933 first = i2;
934- last = i3;
935+ last = last_combined_insn;
936 }
937 else
938 {
939 first = i3;
940 last = undobuf.other_insn;
941 gcc_assert (last);
942+ if (DF_INSN_LUID (last)
943+ < DF_INSN_LUID (last_combined_insn))
944+ last = last_combined_insn;
945 }
946
947 /* We're dealing with a reg that changed mode but not
948@@ -4101,14 +4130,14 @@
949 if (newi2pat)
950 {
951 if (MAY_HAVE_DEBUG_INSNS && i2scratch)
952- propagate_for_debug (i2, i3, i2dest, i2src);
953+ propagate_for_debug (i2, last_combined_insn, i2dest, i2src);
954 INSN_CODE (i2) = i2_code_number;
955 PATTERN (i2) = newi2pat;
956 }
957 else
958 {
959 if (MAY_HAVE_DEBUG_INSNS && i2src)
960- propagate_for_debug (i2, i3, i2dest, i2src);
961+ propagate_for_debug (i2, last_combined_insn, i2dest, i2src);
962 SET_INSN_DELETED (i2);
963 }
964
965@@ -4117,7 +4146,7 @@
966 LOG_LINKS (i1) = 0;
967 REG_NOTES (i1) = 0;
968 if (MAY_HAVE_DEBUG_INSNS)
969- propagate_for_debug (i1, i3, i1dest, i1src);
970+ propagate_for_debug (i1, last_combined_insn, i1dest, i1src);
971 SET_INSN_DELETED (i1);
972 }
973
974@@ -4126,7 +4155,7 @@
975 LOG_LINKS (i0) = 0;
976 REG_NOTES (i0) = 0;
977 if (MAY_HAVE_DEBUG_INSNS)
978- propagate_for_debug (i0, i3, i0dest, i0src);
979+ propagate_for_debug (i0, last_combined_insn, i0dest, i0src);
980 SET_INSN_DELETED (i0);
981 }
982
983
984=== modified file 'gcc/common.opt'
985--- gcc/common.opt 2011-03-06 00:38:13 +0000
986+++ gcc/common.opt 2011-05-06 12:18:42 +0000
987@@ -456,12 +456,21 @@
988 Tbss
989 Driver Separate
990
991+Tbss=
992+Driver Joined
993+
994 Tdata
995 Driver Separate
996
997+Tdata=
998+Driver Joined
999+
1000 Ttext
1001 Driver Separate
1002
1003+Ttext=
1004+Driver Joined
1005+
1006 W
1007 Common RejectNegative Warning Alias(Wextra)
1008 This switch is deprecated; use -Wextra instead
1009
1010=== modified file 'gcc/config.gcc'
1011--- gcc/config.gcc 2011-03-14 06:05:29 +0000
1012+++ gcc/config.gcc 2011-05-06 12:18:42 +0000
1013@@ -1212,6 +1212,7 @@
1014 ;;
1015 i[34567]86-*-freebsd*)
1016 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
1017+ tmake_file="${tmake_file} i386/t-crtstuff"
1018 ;;
1019 x86_64-*-freebsd*)
1020 tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
1021
1022=== modified file 'gcc/config/alpha/osf5.h'
1023--- gcc/config/alpha/osf5.h 2010-11-21 00:54:14 +0000
1024+++ gcc/config/alpha/osf5.h 2011-05-06 12:18:42 +0000
1025@@ -1,7 +1,7 @@
1026 /* Definitions of target machine for GNU compiler, for DEC Alpha on
1027 Tru64 UNIX V5.1.
1028 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
1029- 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
1030+ 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
1031 Free Software Foundation, Inc.
1032 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
1033
1034@@ -223,6 +223,10 @@
1035 #define LD_INIT_SWITCH "-init"
1036 #define LD_FINI_SWITCH "-fini"
1037
1038+/* From Tru64 UNIX Object File and Symbol Table Format Specification,
1039+ 2.3.5 Alignment, p.19. */
1040+#define MAX_OFILE_ALIGNMENT (64 * 1024 * BITS_PER_UNIT)
1041+
1042 /* Select a format to encode pointers in exception handling data. CODE
1043 is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
1044 true if the symbol may be affected by dynamic relocations.
1045
1046=== modified file 'gcc/config/arm/arm.c'
1047--- gcc/config/arm/arm.c 2011-05-06 11:33:02 +0000
1048+++ gcc/config/arm/arm.c 2011-05-06 12:18:42 +0000
1049@@ -19706,7 +19706,7 @@
1050 rtx tmp1 = gen_reg_rtx (mode);
1051 rtx tmp2 = gen_reg_rtx (mode);
1052
1053- emit_insn (intfn (tmp1, op1, tmp2, op2));
1054+ emit_insn (intfn (tmp1, op1, op2, tmp2));
1055
1056 emit_move_insn (mem, tmp1);
1057 mem = adjust_address (mem, mode, GET_MODE_SIZE (mode));
1058
1059=== modified file 'gcc/config/arm/neon.md'
1060--- gcc/config/arm/neon.md 2011-05-03 15:14:56 +0000
1061+++ gcc/config/arm/neon.md 2011-05-06 12:18:42 +0000
1062@@ -425,7 +425,7 @@
1063 (match_operand:SI 2 "immediate_operand" "i")))]
1064 "TARGET_NEON"
1065 {
1066- int elt = ffs ((int) INTVAL (operands[2]) - 1);
1067+ int elt = ffs ((int) INTVAL (operands[2])) - 1;
1068 if (BYTES_BIG_ENDIAN)
1069 elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
1070 operands[2] = GEN_INT (elt);
1071@@ -4079,13 +4079,14 @@
1072
1073 (define_insn "neon_vtrn<mode>_internal"
1074 [(set (match_operand:VDQW 0 "s_register_operand" "=w")
1075- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")]
1076- UNSPEC_VTRN1))
1077- (set (match_operand:VDQW 2 "s_register_operand" "=w")
1078- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")]
1079- UNSPEC_VTRN2))]
1080+ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
1081+ (match_operand:VDQW 2 "s_register_operand" "w")]
1082+ UNSPEC_VTRN1))
1083+ (set (match_operand:VDQW 3 "s_register_operand" "=2")
1084+ (unspec:VDQW [(match_dup 1) (match_dup 2)]
1085+ UNSPEC_VTRN2))]
1086 "TARGET_NEON"
1087- "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
1088+ "vtrn.<V_sz_elem>\t%<V_reg>0, %<V_reg>3"
1089 [(set (attr "neon_type")
1090 (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
1091 (const_string "neon_bp_simple")
1092@@ -4105,13 +4106,14 @@
1093
1094 (define_insn "neon_vzip<mode>_internal"
1095 [(set (match_operand:VDQW 0 "s_register_operand" "=w")
1096- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")]
1097- UNSPEC_VZIP1))
1098- (set (match_operand:VDQW 2 "s_register_operand" "=w")
1099- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")]
1100- UNSPEC_VZIP2))]
1101+ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
1102+ (match_operand:VDQW 2 "s_register_operand" "w")]
1103+ UNSPEC_VZIP1))
1104+ (set (match_operand:VDQW 3 "s_register_operand" "=2")
1105+ (unspec:VDQW [(match_dup 1) (match_dup 2)]
1106+ UNSPEC_VZIP2))]
1107 "TARGET_NEON"
1108- "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
1109+ "vzip.<V_sz_elem>\t%<V_reg>0, %<V_reg>3"
1110 [(set (attr "neon_type")
1111 (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
1112 (const_string "neon_bp_simple")
1113@@ -4131,13 +4133,14 @@
1114
1115 (define_insn "neon_vuzp<mode>_internal"
1116 [(set (match_operand:VDQW 0 "s_register_operand" "=w")
1117- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")]
1118+ (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
1119+ (match_operand:VDQW 2 "s_register_operand" "w")]
1120 UNSPEC_VUZP1))
1121- (set (match_operand:VDQW 2 "s_register_operand" "=w")
1122- (unspec:VDQW [(match_operand:VDQW 3 "s_register_operand" "2")]
1123- UNSPEC_VUZP2))]
1124+ (set (match_operand:VDQW 3 "s_register_operand" "=2")
1125+ (unspec:VDQW [(match_dup 1) (match_dup 2)]
1126+ UNSPEC_VUZP2))]
1127 "TARGET_NEON"
1128- "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>2"
1129+ "vuzp.<V_sz_elem>\t%<V_reg>0, %<V_reg>3"
1130 [(set (attr "neon_type")
1131 (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
1132 (const_string "neon_bp_simple")
1133
1134=== modified file 'gcc/config/i386/i386.c'
1135--- gcc/config/i386/i386.c 2011-03-31 11:14:41 +0000
1136+++ gcc/config/i386/i386.c 2011-05-06 12:18:42 +0000
1137@@ -10566,8 +10566,8 @@
1138 }
1139
1140 /* The stack has already been decremented by the instruction calling us
1141- so we need to probe unconditionally to preserve the protection area. */
1142- if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK)
1143+ so probe if the size is non-negative to preserve the protection area. */
1144+ if (allocate >= 0 && flag_stack_check == STATIC_BUILTIN_STACK_CHECK)
1145 {
1146 /* We expect the registers to be saved when probes are used. */
1147 gcc_assert (int_registers_saved);
1148@@ -17194,11 +17194,15 @@
1149 if (req_mode == CCZmode)
1150 return false;
1151 /* FALLTHRU */
1152+ case CCZmode:
1153+ break;
1154+
1155 case CCAmode:
1156 case CCCmode:
1157 case CCOmode:
1158 case CCSmode:
1159- case CCZmode:
1160+ if (set_mode != req_mode)
1161+ return false;
1162 break;
1163
1164 default:
1165@@ -31213,10 +31217,19 @@
1166 break;
1167
1168 case V2DImode:
1169- use_vec_merge = TARGET_SSE4_1;
1170+ use_vec_merge = TARGET_SSE4_1 && TARGET_64BIT;
1171 if (use_vec_merge)
1172 break;
1173
1174+ tmp = gen_reg_rtx (GET_MODE_INNER (mode));
1175+ ix86_expand_vector_extract (false, tmp, target, 1 - elt);
1176+ if (elt == 0)
1177+ tmp = gen_rtx_VEC_CONCAT (mode, tmp, val);
1178+ else
1179+ tmp = gen_rtx_VEC_CONCAT (mode, val, tmp);
1180+ emit_insn (gen_rtx_SET (VOIDmode, target, tmp));
1181+ return;
1182+
1183 case V2DFmode:
1184 {
1185 rtx op0, op1;
1186
1187=== modified file 'gcc/config/i386/i386.md'
1188--- gcc/config/i386/i386.md 2011-03-26 18:41:02 +0000
1189+++ gcc/config/i386/i386.md 2011-05-06 12:18:42 +0000
1190@@ -1974,21 +1974,15 @@
1191 return "movdq2q\t{%1, %0|%0, %1}";
1192
1193 case TYPE_SSEMOV:
1194- if (TARGET_AVX)
1195- {
1196- if (get_attr_mode (insn) == MODE_TI)
1197- return "vmovdqa\t{%1, %0|%0, %1}";
1198- else
1199- return "vmovq\t{%1, %0|%0, %1}";
1200- }
1201-
1202 if (get_attr_mode (insn) == MODE_TI)
1203- return "movdqa\t{%1, %0|%0, %1}";
1204- /* FALLTHRU */
1205+ return "%vmovdqa\t{%1, %0|%0, %1}";
1206+ /* Handle broken assemblers that require movd instead of movq. */
1207+ if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
1208+ return "%vmovd\t{%1, %0|%0, %1}";
1209+ return "%vmovq\t{%1, %0|%0, %1}";
1210
1211 case TYPE_MMXMOV:
1212- /* Moves from and into integer register is done using movd
1213- opcode with REX prefix. */
1214+ /* Handle broken assemblers that require movd instead of movq. */
1215 if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
1216 return "movd\t{%1, %0|%0, %1}";
1217 return "movq\t{%1, %0|%0, %1}";
1218@@ -2108,7 +2102,7 @@
1219 [(set_attr "type" "*,*,mmx,mmxmov,mmxmov,sselog1,ssemov,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov")
1220 (set (attr "prefix")
1221 (if_then_else (eq_attr "alternative" "5,6,7,8")
1222- (const_string "vex")
1223+ (const_string "maybe_vex")
1224 (const_string "orig")))
1225 (set_attr "mode" "DI,DI,DI,DI,DI,TI,DI,TI,DI,V4SF,V2SF,V4SF,V2SF")])
1226
1227@@ -2408,6 +2402,9 @@
1228 {
1229 if (TARGET_PARTIAL_REG_STALL && optimize_function_for_speed_p (cfun))
1230 FAIL;
1231+ if (GET_CODE (operands[0]) == SUBREG
1232+ && GET_MODE_CLASS (GET_MODE (SUBREG_REG (operands[0]))) != MODE_INT)
1233+ FAIL;
1234 /* Don't generate memory->memory moves, go through a register */
1235 if (MEM_P (operands[0]) && MEM_P (operands[1]))
1236 operands[1] = force_reg (<MODE>mode, operands[1]);
1237@@ -2994,7 +2991,8 @@
1238
1239 case 11:
1240 case 12:
1241- return "%vmovd\t{%1, %0|%0, %1}";
1242+ /* Handle broken assemblers that require movd instead of movq. */
1243+ return "%vmovd\t{%1, %0|%0, %1}";
1244
1245 default:
1246 gcc_unreachable();
1247@@ -3103,17 +3101,17 @@
1248 switch (get_attr_mode (insn))
1249 {
1250 case MODE_V4SF:
1251- return "xorps\t%0, %0";
1252+ return "%vxorps\t%0, %d0";
1253 case MODE_V2DF:
1254 if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL)
1255- return "xorps\t%0, %0";
1256+ return "%vxorps\t%0, %d0";
1257 else
1258- return "xorpd\t%0, %0";
1259+ return "%vxorpd\t%0, %d0";
1260 case MODE_TI:
1261 if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL)
1262- return "xorps\t%0, %0";
1263+ return "%vxorps\t%0, %d0";
1264 else
1265- return "pxor\t%0, %0";
1266+ return "%vpxor\t%0, %d0";
1267 default:
1268 gcc_unreachable ();
1269 }
1270@@ -3123,34 +3121,62 @@
1271 switch (get_attr_mode (insn))
1272 {
1273 case MODE_V4SF:
1274- return "movaps\t{%1, %0|%0, %1}";
1275+ return "%vmovaps\t{%1, %0|%0, %1}";
1276 case MODE_V2DF:
1277 if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL)
1278- return "movaps\t{%1, %0|%0, %1}";
1279+ return "%vmovaps\t{%1, %0|%0, %1}";
1280 else
1281- return "movapd\t{%1, %0|%0, %1}";
1282+ return "%vmovapd\t{%1, %0|%0, %1}";
1283 case MODE_TI:
1284 if (TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL)
1285- return "movaps\t{%1, %0|%0, %1}";
1286+ return "%vmovaps\t{%1, %0|%0, %1}";
1287 else
1288- return "movdqa\t{%1, %0|%0, %1}";
1289+ return "%vmovdqa\t{%1, %0|%0, %1}";
1290 case MODE_DI:
1291- return "movq\t{%1, %0|%0, %1}";
1292+ return "%vmovq\t{%1, %0|%0, %1}";
1293 case MODE_DF:
1294- return "movsd\t{%1, %0|%0, %1}";
1295+ if (TARGET_AVX)
1296+ {
1297+ if (REG_P (operands[0]) && REG_P (operands[1]))
1298+ return "vmovsd\t{%1, %0, %0|%0, %0, %1}";
1299+ else
1300+ return "vmovsd\t{%1, %0|%0, %1}";
1301+ }
1302+ else
1303+ return "movsd\t{%1, %0|%0, %1}";
1304 case MODE_V1DF:
1305- return "movlpd\t{%1, %0|%0, %1}";
1306+ if (TARGET_AVX)
1307+ {
1308+ if (REG_P (operands[0]))
1309+ return "vmovlpd\t{%1, %0, %0|%0, %0, %1}";
1310+ else
1311+ return "vmovlpd\t{%1, %0|%0, %1}";
1312+ }
1313+ else
1314+ return "movlpd\t{%1, %0|%0, %1}";
1315 case MODE_V2SF:
1316- return "movlps\t{%1, %0|%0, %1}";
1317+ if (TARGET_AVX)
1318+ {
1319+ if (REG_P (operands[0]))
1320+ return "vmovlps\t{%1, %0, %0|%0, %0, %1}";
1321+ else
1322+ return "vmovlps\t{%1, %0|%0, %1}";
1323+ }
1324+ else
1325+ return "movlps\t{%1, %0|%0, %1}";
1326 default:
1327 gcc_unreachable ();
1328 }
1329
1330 default:
1331- gcc_unreachable();
1332+ gcc_unreachable ();
1333 }
1334 }
1335 [(set_attr "type" "fmov,fmov,fmov,multi,multi,sselog1,ssemov,ssemov,ssemov")
1336+ (set (attr "prefix")
1337+ (if_then_else (eq_attr "alternative" "0,1,2,3,4")
1338+ (const_string "orig")
1339+ (const_string "maybe_vex")))
1340 (set (attr "prefix_data16")
1341 (if_then_else (eq_attr "mode" "V1DF")
1342 (const_string "1")
1343@@ -3438,12 +3464,13 @@
1344
1345 case 9: case 10: case 14: case 15:
1346 return "movd\t{%1, %0|%0, %1}";
1347+
1348+ case 11:
1349+ return "movq\t{%1, %0|%0, %1}";
1350+
1351 case 12: case 13:
1352 return "%vmovd\t{%1, %0|%0, %1}";
1353
1354- case 11:
1355- return "movq\t{%1, %0|%0, %1}";
1356-
1357 default:
1358 gcc_unreachable ();
1359 }
1360
1361=== modified file 'gcc/config/i386/mmx.md'
1362--- gcc/config/i386/mmx.md 2011-01-03 20:52:22 +0000
1363+++ gcc/config/i386/mmx.md 2011-05-06 12:18:42 +0000
1364@@ -63,6 +63,7 @@
1365 DONE;
1366 })
1367
1368+;; movd instead of movq is required to handle broken assemblers.
1369 (define_insn "*mov<mode>_internal_rex64"
1370 [(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
1371 "=rm,r,!?y,!y,!?y,m ,!y ,*Y2,x,x ,m,r ,Yi")
1372@@ -196,6 +197,7 @@
1373 (const_string "orig")))
1374 (set_attr "mode" "DI,DI,DI,DI,DI,DI,DI,DI,V4SF,V4SF,V2SF,V2SF,DI,DI")])
1375
1376+;; movd instead of movq is required to handle broken assemblers.
1377 (define_insn "*movv2sf_internal_rex64"
1378 [(set (match_operand:V2SF 0 "nonimmediate_operand"
1379 "=rm,r,!?y,!y,!?y,m ,!y ,*Y2,x,x,x,m,r ,Yi")
1380
1381=== modified file 'gcc/config/i386/predicates.md'
1382--- gcc/config/i386/predicates.md 2011-01-03 20:52:22 +0000
1383+++ gcc/config/i386/predicates.md 2011-05-06 12:18:42 +0000
1384@@ -969,13 +969,8 @@
1385 ;; Return true if OP is a comparison that can be used in the CMPSS/CMPPS insns.
1386 ;; The first set are supported directly; the second set can't be done with
1387 ;; full IEEE support, i.e. NaNs.
1388-;;
1389-;; ??? It would seem that we have a lot of uses of this predicate that pass
1390-;; it the wrong mode. We got away with this because the old function didn't
1391-;; check the mode at all. Mirror that for now by calling this a special
1392-;; predicate.
1393
1394-(define_special_predicate "sse_comparison_operator"
1395+(define_predicate "sse_comparison_operator"
1396 (match_code "eq,lt,le,unordered,ne,unge,ungt,ordered"))
1397
1398 ;; Return true if OP is a comparison operator that can be issued by
1399
1400=== modified file 'gcc/config/i386/sse.md'
1401--- gcc/config/i386/sse.md 2011-04-01 11:07:44 +0000
1402+++ gcc/config/i386/sse.md 2011-05-06 12:18:42 +0000
1403@@ -1,5 +1,5 @@
1404 ;; GCC machine description for SSE instructions
1405-;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
1406+;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
1407 ;; Free Software Foundation, Inc.
1408 ;;
1409 ;; This file is part of GCC.
1410@@ -1557,7 +1557,7 @@
1411 (set_attr "mode" "<MODE>")])
1412
1413 (define_insn "avx_cmp<ssescalarmodesuffix><mode>3"
1414- [(set (match_operand:SSEMODEF2P 0 "register_operand" "")
1415+ [(set (match_operand:SSEMODEF2P 0 "register_operand" "=x")
1416 (vec_merge:SSEMODEF2P
1417 (unspec:SSEMODEF2P
1418 [(match_operand:SSEMODEF2P 1 "register_operand" "x")
1419@@ -3846,7 +3846,7 @@
1420 (define_insn "*vec_concatv2sf_avx"
1421 [(set (match_operand:V2SF 0 "register_operand" "=x,x,x,*y ,*y")
1422 (vec_concat:V2SF
1423- (match_operand:SF 1 "nonimmediate_operand" " x,x,m, x , m")
1424+ (match_operand:SF 1 "nonimmediate_operand" " x,x,m, 0 , m")
1425 (match_operand:SF 2 "vector_move_operand" " x,m,C,*ym, C")))]
1426 "TARGET_AVX"
1427 "@
1428@@ -3935,13 +3935,15 @@
1429 DONE;
1430 })
1431
1432+;; Avoid combining registers from different units in a single alternative,
1433+;; see comment above inline_secondary_memory_needed function in i386.c
1434 (define_insn "*vec_set<mode>_0_avx"
1435- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x,m")
1436+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x,m, m,m")
1437 (vec_merge:SSEMODE4S
1438 (vec_duplicate:SSEMODE4S
1439 (match_operand:<ssescalarmode> 2
1440- "general_operand" " x,m,*r,x,*rm,x*rfF"))
1441- (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,x, x,0")
1442+ "general_operand" " x,m,*r,x,*rm,x,*r,fF"))
1443+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,x, x,0, 0,0")
1444 (const_int 1)))]
1445 "TARGET_AVX"
1446 "@
1447@@ -3950,20 +3952,24 @@
1448 vmovd\t{%2, %0|%0, %2}
1449 vmovss\t{%2, %1, %0|%0, %1, %2}
1450 vpinsrd\t{$0, %2, %1, %0|%0, %1, %2, 0}
1451+ #
1452+ #
1453 #"
1454- [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*")
1455- (set_attr "prefix_extra" "*,*,*,*,1,*")
1456- (set_attr "length_immediate" "*,*,*,*,1,*")
1457+ [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*,*,*")
1458+ (set_attr "prefix_extra" "*,*,*,*,1,*,*,*")
1459+ (set_attr "length_immediate" "*,*,*,*,1,*,*,*")
1460 (set_attr "prefix" "vex")
1461- (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*")])
1462+ (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*,*,*")])
1463
1464+;; Avoid combining registers from different units in a single alternative,
1465+;; see comment above inline_secondary_memory_needed function in i386.c
1466 (define_insn "*vec_set<mode>_0_sse4_1"
1467- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x,m")
1468+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x, x,x, x, m,m")
1469 (vec_merge:SSEMODE4S
1470 (vec_duplicate:SSEMODE4S
1471 (match_operand:<ssescalarmode> 2
1472- "general_operand" " x,m,*r,x,*rm,*rfF"))
1473- (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,0, 0,0")
1474+ "general_operand" " x,m,*r,x,*rm,*r,fF"))
1475+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C,C, C,0, 0, 0,0")
1476 (const_int 1)))]
1477 "TARGET_SSE4_1"
1478 "@
1479@@ -3972,44 +3978,53 @@
1480 movd\t{%2, %0|%0, %2}
1481 movss\t{%2, %0|%0, %2}
1482 pinsrd\t{$0, %2, %0|%0, %2, 0}
1483+ #
1484 #"
1485- [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*")
1486- (set_attr "prefix_extra" "*,*,*,*,1,*")
1487- (set_attr "length_immediate" "*,*,*,*,1,*")
1488- (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*")])
1489+ [(set_attr "type" "sselog,ssemov,ssemov,ssemov,sselog,*,*")
1490+ (set_attr "prefix_extra" "*,*,*,*,1,*,*")
1491+ (set_attr "length_immediate" "*,*,*,*,1,*,*")
1492+ (set_attr "mode" "SF,<ssescalarmode>,SI,SF,TI,*,*")])
1493
1494+;; Avoid combining registers from different units in a single alternative,
1495+;; see comment above inline_secondary_memory_needed function in i386.c
1496 (define_insn "*vec_set<mode>_0_sse2"
1497- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x, x,x,m")
1498+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x, x,x,m, m,m")
1499 (vec_merge:SSEMODE4S
1500 (vec_duplicate:SSEMODE4S
1501 (match_operand:<ssescalarmode> 2
1502- "general_operand" " m,*r,x,x*rfF"))
1503- (match_operand:SSEMODE4S 1 "vector_move_operand" " C, C,0,0")
1504+ "general_operand" " m,*r,x,x,*r,fF"))
1505+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C, C,0,0, 0,0")
1506 (const_int 1)))]
1507 "TARGET_SSE2"
1508 "@
1509 mov<ssescalarmodesuffix>\t{%2, %0|%0, %2}
1510 movd\t{%2, %0|%0, %2}
1511 movss\t{%2, %0|%0, %2}
1512+ #
1513+ #
1514 #"
1515 [(set_attr "type" "ssemov")
1516- (set_attr "mode" "<ssescalarmode>,SI,SF,*")])
1517+ (set_attr "mode" "<ssescalarmode>,SI,SF,*,*,*")])
1518
1519+;; Avoid combining registers from different units in a single alternative,
1520+;; see comment above inline_secondary_memory_needed function in i386.c
1521 (define_insn "vec_set<mode>_0"
1522- [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x,m")
1523+ [(set (match_operand:SSEMODE4S 0 "nonimmediate_operand" "=x,x,m, m,m")
1524 (vec_merge:SSEMODE4S
1525 (vec_duplicate:SSEMODE4S
1526 (match_operand:<ssescalarmode> 2
1527- "general_operand" " m,x,x*rfF"))
1528- (match_operand:SSEMODE4S 1 "vector_move_operand" " C,0,0")
1529+ "general_operand" " m,x,x,*r,fF"))
1530+ (match_operand:SSEMODE4S 1 "vector_move_operand" " C,0,0, 0,0")
1531 (const_int 1)))]
1532 "TARGET_SSE"
1533 "@
1534 movss\t{%2, %0|%0, %2}
1535 movss\t{%2, %0|%0, %2}
1536+ #
1537+ #
1538 #"
1539 [(set_attr "type" "ssemov")
1540- (set_attr "mode" "SF,SF,*")])
1541+ (set_attr "mode" "SF,SF,*,*,*")])
1542
1543 ;; A subset is vec_setv4sf.
1544 (define_insn "*vec_setv4sf_avx"
1545@@ -4055,7 +4070,16 @@
1546 (match_operand:SI 3 "const_0_to_255_operand" "n")]
1547 UNSPEC_INSERTPS))]
1548 "TARGET_AVX"
1549- "vinsertps\t{%3, %2, %1, %0|%0, %1, %2, %3}";
1550+{
1551+ if (MEM_P (operands[2]))
1552+ {
1553+ unsigned count_s = INTVAL (operands[3]) >> 6;
1554+ if (count_s)
1555+ operands[3] = GEN_INT (INTVAL (operands[3]) & 0x3f);
1556+ operands[2] = adjust_address_nv (operands[2], SFmode, count_s * 4);
1557+ }
1558+ return "vinsertps\t{%3, %2, %1, %0|%0, %1, %2, %3}";
1559+}
1560 [(set_attr "type" "sselog")
1561 (set_attr "prefix" "vex")
1562 (set_attr "prefix_extra" "1")
1563@@ -4064,12 +4088,21 @@
1564
1565 (define_insn "sse4_1_insertps"
1566 [(set (match_operand:V4SF 0 "register_operand" "=x")
1567- (unspec:V4SF [(match_operand:V4SF 2 "register_operand" "x")
1568+ (unspec:V4SF [(match_operand:V4SF 2 "nonimmediate_operand" "xm")
1569 (match_operand:V4SF 1 "register_operand" "0")
1570 (match_operand:SI 3 "const_0_to_255_operand" "n")]
1571 UNSPEC_INSERTPS))]
1572 "TARGET_SSE4_1"
1573- "insertps\t{%3, %2, %0|%0, %2, %3}";
1574+{
1575+ if (MEM_P (operands[2]))
1576+ {
1577+ unsigned count_s = INTVAL (operands[3]) >> 6;
1578+ if (count_s)
1579+ operands[3] = GEN_INT (INTVAL (operands[3]) & 0x3f);
1580+ operands[2] = adjust_address_nv (operands[2], SFmode, count_s * 4);
1581+ }
1582+ return "insertps\t{%3, %2, %0|%0, %2, %3}";
1583+}
1584 [(set_attr "type" "sselog")
1585 (set_attr "prefix_data16" "1")
1586 (set_attr "prefix_extra" "1")
1587@@ -4811,6 +4844,8 @@
1588 (set_attr "prefix" "vex")
1589 (set_attr "mode" "V1DF,V2DF,DF,DF,DF")])
1590
1591+;; Avoid combining registers from different units in a single alternative,
1592+;; see comment above inline_secondary_memory_needed function in i386.c
1593 (define_insn "sse2_storehpd"
1594 [(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x,*f,r")
1595 (vec_select:DF
1596@@ -4912,6 +4947,8 @@
1597 (set_attr "prefix" "vex")
1598 (set_attr "mode" "V1DF,V2DF,DF,DF,DF")])
1599
1600+;; Avoid combining registers from different units in a single alternative,
1601+;; see comment above inline_secondary_memory_needed function in i386.c
1602 (define_insn "sse2_loadhpd"
1603 [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,o,o,o")
1604 (vec_concat:V2DF
1605@@ -4983,6 +5020,8 @@
1606 (set_attr "prefix" "vex")
1607 (set_attr "mode" "DF,V1DF,V1DF,V1DF,DF,DF,DF")])
1608
1609+;; Avoid combining registers from different units in a single alternative,
1610+;; see comment above inline_secondary_memory_needed function in i386.c
1611 (define_insn "sse2_loadlpd"
1612 [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,x,x,m,m,m")
1613 (vec_concat:V2DF
1614@@ -7395,9 +7434,8 @@
1615 "@
1616 #
1617 #
1618- %vmov{q}\t{%1, %0|%0, %1}"
1619+ mov{q}\t{%1, %0|%0, %1}"
1620 [(set_attr "type" "*,*,imov")
1621- (set_attr "prefix" "*,*,maybe_vex")
1622 (set_attr "mode" "*,*,DI")])
1623
1624 (define_insn "*sse2_storeq"
1625@@ -7433,11 +7471,11 @@
1626 vmovhps\t{%1, %0|%0, %1}
1627 vpsrldq\t{$8, %1, %0|%0, %1, 8}
1628 vmovq\t{%H1, %0|%0, %H1}
1629- vmov{q}\t{%H1, %0|%0, %H1}"
1630+ mov{q}\t{%H1, %0|%0, %H1}"
1631 [(set_attr "type" "ssemov,sseishft1,ssemov,imov")
1632 (set_attr "length_immediate" "*,1,*,*")
1633 (set_attr "memory" "*,none,*,*")
1634- (set_attr "prefix" "vex")
1635+ (set_attr "prefix" "vex,vex,vex,orig")
1636 (set_attr "mode" "V2SF,TI,TI,DI")])
1637
1638 (define_insn "*vec_extractv2di_1_rex64"
1639@@ -7715,6 +7753,7 @@
1640 (const_string "vex")))
1641 (set_attr "mode" "TI,TI,TI,TI,TI,V2SF")])
1642
1643+;; movd instead of movq is required to handle broken assemblers.
1644 (define_insn "*vec_concatv2di_rex64_sse4_1"
1645 [(set (match_operand:V2DI 0 "register_operand" "=x ,x ,Yi,!x,x,x,x")
1646 (vec_concat:V2DI
1647@@ -7735,6 +7774,7 @@
1648 (set_attr "length_immediate" "1,*,*,*,*,*,*")
1649 (set_attr "mode" "TI,TI,TI,TI,TI,V4SF,V2SF")])
1650
1651+;; movd instead of movq is required to handle broken assemblers.
1652 (define_insn "*vec_concatv2di_rex64_sse"
1653 [(set (match_operand:V2DI 0 "register_operand" "=Y2 ,Yi,!Y2,Y2,x,x")
1654 (vec_concat:V2DI
1655
1656=== modified file 'gcc/config/pa/pa-protos.h'
1657--- gcc/config/pa/pa-protos.h 2010-10-09 14:21:10 +0000
1658+++ gcc/config/pa/pa-protos.h 2011-05-06 12:18:42 +0000
1659@@ -80,7 +80,6 @@
1660 extern int prefetch_cc_operand (rtx, enum machine_mode);
1661 extern int prefetch_nocc_operand (rtx, enum machine_mode);
1662 extern int and_operand (rtx, enum machine_mode);
1663-extern int ior_operand (rtx, enum machine_mode);
1664 extern int arith32_operand (rtx, enum machine_mode);
1665 extern int uint32_operand (rtx, enum machine_mode);
1666 extern int reg_before_reload_operand (rtx, enum machine_mode);
1667@@ -95,7 +94,6 @@
1668 extern int fmpyaddoperands (rtx *);
1669 extern int fmpysuboperands (rtx *);
1670 extern int call_operand_address (rtx, enum machine_mode);
1671-extern int ior_operand (rtx, enum machine_mode);
1672 extern void emit_bcond_fp (rtx[]);
1673 extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
1674 extern int emit_hpdiv_const (rtx *, int);
1675
1676=== modified file 'gcc/config/pa/pa.c'
1677--- gcc/config/pa/pa.c 2011-01-18 21:53:47 +0000
1678+++ gcc/config/pa/pa.c 2011-05-06 12:18:42 +0000
1679@@ -1467,6 +1467,8 @@
1680 {
1681 if (from == SHIFT_REGS)
1682 return 0x100;
1683+ else if (to == SHIFT_REGS && FP_REG_CLASS_P (from))
1684+ return 18;
1685 else if ((FP_REG_CLASS_P (from) && ! FP_REG_CLASS_P (to))
1686 || (FP_REG_CLASS_P (to) && ! FP_REG_CLASS_P (from)))
1687 return 16;
1688@@ -1810,15 +1812,12 @@
1689 return 1;
1690 }
1691 /* Handle secondary reloads for SAR. These occur when trying to load
1692- the SAR from memory, FP register, or with a constant. */
1693+ the SAR from memory or a constant. */
1694 else if (scratch_reg
1695 && GET_CODE (operand0) == REG
1696 && REGNO (operand0) < FIRST_PSEUDO_REGISTER
1697 && REGNO_REG_CLASS (REGNO (operand0)) == SHIFT_REGS
1698- && (GET_CODE (operand1) == MEM
1699- || GET_CODE (operand1) == CONST_INT
1700- || (GET_CODE (operand1) == REG
1701- && FP_REG_CLASS_P (REGNO_REG_CLASS (REGNO (operand1))))))
1702+ && (GET_CODE (operand1) == MEM || GET_CODE (operand1) == CONST_INT))
1703 {
1704 /* D might not fit in 14 bits either; for such cases load D into
1705 scratch reg. */
1706@@ -5883,6 +5882,10 @@
1707 fputc ('\n', asm_out_file);
1708 }
1709
1710
1711+/* Inform reload about cases where moving X with a mode MODE to a register in
1712+ RCLASS requires an extra scratch or immediate register. Return the class
1713+ needed for the immediate register. */
1714+
1715 static reg_class_t
1716 pa_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
1717 enum machine_mode mode, secondary_reload_info *sri)
1718@@ -5985,24 +5988,29 @@
1719 return NO_REGS;
1720 }
1721
1722- /* We need a secondary register (GPR) for copies between the SAR
1723- and anything other than a general register. */
1724- if (rclass == SHIFT_REGS && (regno <= 0 || regno >= 32))
1725+ /* A SAR<->FP register copy requires an intermediate general register
1726+ and secondary memory. We need a secondary reload with a general
1727+ scratch register for spills. */
1728+ if (rclass == SHIFT_REGS)
1729 {
1730- sri->icode = (in_p
1731- ? direct_optab_handler (reload_in_optab, mode)
1732- : direct_optab_handler (reload_out_optab, mode));
1733- return NO_REGS;
1734+ /* Handle spill. */
1735+ if (regno >= FIRST_PSEUDO_REGISTER || regno < 0)
1736+ {
1737+ sri->icode = (in_p
1738+ ? direct_optab_handler (reload_in_optab, mode)
1739+ : direct_optab_handler (reload_out_optab, mode));
1740+ return NO_REGS;
1741+ }
1742+
1743+ /* Handle FP copy. */
1744+ if (FP_REG_CLASS_P (REGNO_REG_CLASS (regno)))
1745+ return GENERAL_REGS;
1746 }
1747
1748- /* A SAR<->FP register copy requires a secondary register (GPR) as
1749- well as secondary memory. */
1750 if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER
1751- && (REGNO_REG_CLASS (regno) == SHIFT_REGS
1752- && FP_REG_CLASS_P (rclass)))
1753- sri->icode = (in_p
1754- ? direct_optab_handler (reload_in_optab, mode)
1755- : direct_optab_handler (reload_out_optab, mode));
1756+ && REGNO_REG_CLASS (regno) == SHIFT_REGS
1757+ && FP_REG_CLASS_P (rclass))
1758+ return GENERAL_REGS;
1759
1760 return NO_REGS;
1761 }
1762
1763=== modified file 'gcc/config/pa/pa.md'
1764--- gcc/config/pa/pa.md 2011-03-03 21:56:58 +0000
1765+++ gcc/config/pa/pa.md 2011-05-06 12:18:42 +0000
1766@@ -5686,7 +5686,7 @@
1767 (define_expand "iordi3"
1768 [(set (match_operand:DI 0 "register_operand" "")
1769 (ior:DI (match_operand:DI 1 "register_operand" "")
1770- (match_operand:DI 2 "ior_operand" "")))]
1771+ (match_operand:DI 2 "reg_or_cint_ior_operand" "")))]
1772 ""
1773 "
1774 {
1775@@ -5707,7 +5707,7 @@
1776 (define_insn ""
1777 [(set (match_operand:DI 0 "register_operand" "=r,r")
1778 (ior:DI (match_operand:DI 1 "register_operand" "0,0")
1779- (match_operand:DI 2 "ior_operand" "M,i")))]
1780+ (match_operand:DI 2 "cint_ior_operand" "M,i")))]
1781 "TARGET_64BIT"
1782 "* return output_64bit_ior (operands); "
1783 [(set_attr "type" "binary,shift")
1784@@ -5726,19 +5726,14 @@
1785 (define_expand "iorsi3"
1786 [(set (match_operand:SI 0 "register_operand" "")
1787 (ior:SI (match_operand:SI 1 "register_operand" "")
1788- (match_operand:SI 2 "arith32_operand" "")))]
1789+ (match_operand:SI 2 "reg_or_cint_ior_operand" "")))]
1790 ""
1791- "
1792-{
1793- if (! (ior_operand (operands[2], SImode)
1794- || register_operand (operands[2], SImode)))
1795- operands[2] = force_reg (SImode, operands[2]);
1796-}")
1797+ "")
1798
1799 (define_insn ""
1800 [(set (match_operand:SI 0 "register_operand" "=r,r")
1801 (ior:SI (match_operand:SI 1 "register_operand" "0,0")
1802- (match_operand:SI 2 "ior_operand" "M,i")))]
1803+ (match_operand:SI 2 "cint_ior_operand" "M,i")))]
1804 ""
1805 "* return output_ior (operands); "
1806 [(set_attr "type" "binary,shift")
1807
1808=== modified file 'gcc/config/pa/pa32-regs.h'
1809--- gcc/config/pa/pa32-regs.h 2010-11-22 01:57:50 +0000
1810+++ gcc/config/pa/pa32-regs.h 2011-05-06 12:18:42 +0000
1811@@ -209,6 +209,7 @@
1812 registers. */
1813 #define HARD_REGNO_MODE_OK(REGNO, MODE) \
1814 ((REGNO) == 0 ? (MODE) == CCmode || (MODE) == CCFPmode \
1815+ : (REGNO) == 88 ? SCALAR_INT_MODE_P (MODE) \
1816 : !TARGET_PA_11 && FP_REGNO_P (REGNO) \
1817 ? (VALID_FP_MODE_P (MODE) \
1818 && (GET_MODE_SIZE (MODE) <= 8 \
1819
1820=== modified file 'gcc/config/pa/pa64-regs.h'
1821--- gcc/config/pa/pa64-regs.h 2010-11-22 01:57:50 +0000
1822+++ gcc/config/pa/pa64-regs.h 2011-05-06 12:18:42 +0000
1823@@ -149,10 +149,11 @@
1824
1825 /* Value is 1 if hard register REGNO can hold a value of machine-mode MODE.
1826 On the HP-PA, the cpu registers can hold any mode. We
1827- force this to be an even register is it cannot hold the full mode. */
1828+ force this to be an even register if it cannot hold the full mode. */
1829 #define HARD_REGNO_MODE_OK(REGNO, MODE) \
1830 ((REGNO) == 0 \
1831 ? (MODE) == CCmode || (MODE) == CCFPmode \
1832+ : (REGNO) == 60 ? SCALAR_INT_MODE_P (MODE) \
1833 /* Make wide modes be in aligned registers. */ \
1834 : FP_REGNO_P (REGNO) \
1835 ? (VALID_FP_MODE_P (MODE) \
1836
1837=== modified file 'gcc/config/pa/predicates.md'
1838--- gcc/config/pa/predicates.md 2011-01-03 20:52:22 +0000
1839+++ gcc/config/pa/predicates.md 2011-05-06 12:18:42 +0000
1840@@ -411,11 +411,15 @@
1841
1842 ;; True iff depi can be used to compute (reg | OP).
1843
1844-(define_predicate "ior_operand"
1845- (match_code "const_int")
1846-{
1847- return (GET_CODE (op) == CONST_INT && ior_mask_p (INTVAL (op)));
1848-})
1849+(define_predicate "cint_ior_operand"
1850+ (and (match_code "const_int")
1851+ (match_test "ior_mask_p (INTVAL (op))")))
1852+
1853+;; True iff OP can be used to compute (reg | OP).
1854+
1855+(define_predicate "reg_or_cint_ior_operand"
1856+ (ior (match_operand 0 "register_operand")
1857+ (match_operand 0 "cint_ior_operand")))
1858
1859 ;; True iff OP is a CONST_INT of the forms 0...0xxxx or
1860 ;; 0...01...1xxxx. Such values can be the left hand side x in (x <<
1861
1862=== modified file 'gcc/config/rs6000/altivec.md'
1863--- gcc/config/rs6000/altivec.md 2011-02-03 05:42:19 +0000
1864+++ gcc/config/rs6000/altivec.md 2011-05-06 12:18:42 +0000
1865@@ -2430,7 +2430,7 @@
1866
1867 (define_expand "vec_extract_evenv4si"
1868 [(set (match_operand:V4SI 0 "register_operand" "")
1869- (unspec:V8HI [(match_operand:V4SI 1 "register_operand" "")
1870+ (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "")
1871 (match_operand:V4SI 2 "register_operand" "")]
1872 UNSPEC_EXTEVEN_V4SI))]
1873 "TARGET_ALTIVEC"
1874@@ -2463,7 +2463,7 @@
1875
1876 (define_expand "vec_extract_evenv4sf"
1877 [(set (match_operand:V4SF 0 "register_operand" "")
1878- (unspec:V8HI [(match_operand:V4SF 1 "register_operand" "")
1879+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "")
1880 (match_operand:V4SF 2 "register_operand" "")]
1881 UNSPEC_EXTEVEN_V4SF))]
1882 "TARGET_ALTIVEC"
1883@@ -2495,7 +2495,7 @@
1884 }")
1885
1886 (define_expand "vec_extract_evenv8hi"
1887- [(set (match_operand:V4SI 0 "register_operand" "")
1888+ [(set (match_operand:V8HI 0 "register_operand" "")
1889 (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "")
1890 (match_operand:V8HI 2 "register_operand" "")]
1891 UNSPEC_EXTEVEN_V8HI))]
1892@@ -2528,9 +2528,9 @@
1893 }")
1894
1895 (define_expand "vec_extract_evenv16qi"
1896- [(set (match_operand:V4SI 0 "register_operand" "")
1897- (unspec:V8HI [(match_operand:V16QI 1 "register_operand" "")
1898- (match_operand:V16QI 2 "register_operand" "")]
1899+ [(set (match_operand:V16QI 0 "register_operand" "")
1900+ (unspec:V16QI [(match_operand:V16QI 1 "register_operand" "")
1901+ (match_operand:V16QI 2 "register_operand" "")]
1902 UNSPEC_EXTEVEN_V16QI))]
1903 "TARGET_ALTIVEC"
1904 "
1905@@ -2562,7 +2562,7 @@
1906
1907 (define_expand "vec_extract_oddv4si"
1908 [(set (match_operand:V4SI 0 "register_operand" "")
1909- (unspec:V8HI [(match_operand:V4SI 1 "register_operand" "")
1910+ (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "")
1911 (match_operand:V4SI 2 "register_operand" "")]
1912 UNSPEC_EXTODD_V4SI))]
1913 "TARGET_ALTIVEC"
1914@@ -2595,7 +2595,7 @@
1915
1916 (define_expand "vec_extract_oddv4sf"
1917 [(set (match_operand:V4SF 0 "register_operand" "")
1918- (unspec:V8HI [(match_operand:V4SF 1 "register_operand" "")
1919+ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "")
1920 (match_operand:V4SF 2 "register_operand" "")]
1921 UNSPEC_EXTODD_V4SF))]
1922 "TARGET_ALTIVEC"
1923
1924=== modified file 'gcc/config/rs6000/rs6000.c'
1925--- gcc/config/rs6000/rs6000.c 2011-03-15 12:57:37 +0000
1926+++ gcc/config/rs6000/rs6000.c 2011-05-06 12:18:42 +0000
1927@@ -4630,6 +4630,7 @@
1928 target_flags_explicit |= MASK_SOFT_FLOAT;
1929 rs6000_single_float = rs6000_double_float = 0;
1930 }
1931+ break;
1932
1933 case OPT_mrecip:
1934 rs6000_recip_name = (value) ? "default" : "none";
1935
1936=== modified file 'gcc/config/rs6000/vector.md'
1937--- gcc/config/rs6000/vector.md 2011-02-03 05:42:19 +0000
1938+++ gcc/config/rs6000/vector.md 2011-05-06 12:18:42 +0000
1939@@ -872,8 +872,8 @@
1940 ;; Under VSX, vectors of 4/8 byte alignments do not need to be aligned
1941 ;; since the load already handles it.
1942 (define_expand "movmisalign<mode>"
1943- [(set (match_operand:VEC_N 0 "vfloat_operand" "")
1944- (match_operand:VEC_N 1 "vfloat_operand" ""))]
1945+ [(set (match_operand:VEC_N 0 "nonimmediate_operand" "")
1946+ (match_operand:VEC_N 1 "any_operand" ""))]
1947 "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_ALLOW_MOVMISALIGN"
1948 "")
1949
1950
1951=== modified file 'gcc/config/s390/s390.md'
1952--- gcc/config/s390/s390.md 2010-12-09 08:41:21 +0000
1953+++ gcc/config/s390/s390.md 2011-05-06 12:18:42 +0000
1954@@ -9330,7 +9330,7 @@
1955 (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (match_dup 2)))
1956 (clobber (reg:CC CC_REGNUM))])
1957 ; sllg op2, op0, 16
1958- (set (match_operand:DI 2 "register_operand" "")
1959+ (set (match_dup 2)
1960 (ashift:DI (match_dup 0) (const_int 16)))
1961 ; agr op0, op2
1962 (parallel [(set (match_dup 0) (plus:DI (match_dup 0) (match_dup 2)))
1963@@ -9352,7 +9352,7 @@
1964 UNSPEC_POPCNT))
1965 (clobber (reg:CC CC_REGNUM))])
1966 ; sllk op2, op0, 16
1967- (set (match_operand:SI 2 "register_operand" "")
1968+ (set (match_dup 2)
1969 (ashift:SI (match_dup 0) (const_int 16)))
1970 ; ar op0, op2
1971 (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
1972@@ -9374,7 +9374,7 @@
1973 UNSPEC_POPCNT))
1974 (clobber (reg:CC CC_REGNUM))])
1975 ; sllk op2, op0, 8
1976- (set (match_operand:SI 2 "register_operand" "")
1977+ (set (match_dup 2)
1978 (ashift:SI (match_dup 0) (const_int 8)))
1979 ; ar op0, op2
1980 (parallel [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))
1981
1982=== modified file 'gcc/config/sparc/freebsd.h'
1983--- gcc/config/sparc/freebsd.h 2011-02-06 18:23:06 +0000
1984+++ gcc/config/sparc/freebsd.h 2011-05-06 12:18:42 +0000
1985@@ -24,11 +24,19 @@
1986 { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
1987
1988 /* FreeBSD needs the platform name (sparc64) defined.
1989- Emacs needs to know if the arch is 64 or 32-bits. */
1990+ Emacs etc needs to know if the arch is 64 or 32-bits.
1991+ This also selects which targets are available via -mcpu. */
1992
1993-#undef CPP_CPU64_DEFAULT_SPEC
1994-#define CPP_CPU64_DEFAULT_SPEC \
1995- "-D__sparc64__ -D__sparc_v9__ -D__sparcv9 -D__arch64__"
1996+#undef FBSD_TARGET_CPU_CPP_BUILTINS
1997+#define FBSD_TARGET_CPU_CPP_BUILTINS() \
1998+ do \
1999+ { \
2000+ builtin_define ("__sparc64__"); \
2001+ builtin_define ("__sparc__"); \
2002+ builtin_define ("__sparc_v9__"); \
2003+ builtin_define ("__sparcv9"); \
2004+ } \
2005+ while (0)
2006
2007 #undef ASM_SPEC
2008 #define ASM_SPEC "%{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu)"
2009@@ -152,6 +160,13 @@
2010
2011 /* #define DWARF_OFFSET_SIZE PTR_SIZE */
2012
2013+#ifdef HAVE_AS_TLS
2014+#undef TARGET_SUN_TLS
2015+#undef TARGET_GNU_TLS
2016+#define TARGET_SUN_TLS 0
2017+#define TARGET_GNU_TLS 1
2018+#endif
2019+
2020 #undef ENDFILE_SPEC
2021 #define ENDFILE_SPEC \
2022 "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} " \
2023
2024=== modified file 'gcc/config/v850/v850.c'
2025--- gcc/config/v850/v850.c 2010-12-01 13:46:36 +0000
2026+++ gcc/config/v850/v850.c 2011-05-06 12:18:42 +0000
2027@@ -1686,7 +1686,7 @@
2028 /* Save/setup global registers for interrupt functions right now. */
2029 if (interrupt_handler)
2030 {
2031- if (! TARGET_DISABLE_CALLT)
2032+ if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
2033 emit_insn (gen_callt_save_interrupt ());
2034 else
2035 emit_insn (gen_save_interrupt ());
2036@@ -1768,7 +1768,7 @@
2037 /* Special case interrupt functions that save all registers for a call. */
2038 if (interrupt_handler && ((1L << LINK_POINTER_REGNUM) & reg_saved) != 0)
2039 {
2040- if (! TARGET_DISABLE_CALLT)
2041+ if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
2042 emit_insn (gen_callt_save_all_interrupt ());
2043 else
2044 emit_insn (gen_save_all_interrupt ());
2045@@ -2019,7 +2019,7 @@
2046 /* And return or use reti for interrupt handlers. */
2047 if (interrupt_handler)
2048 {
2049- if (! TARGET_DISABLE_CALLT)
2050+ if (! TARGET_DISABLE_CALLT && (TARGET_V850E || TARGET_V850E2_ALL))
2051 emit_insn (gen_callt_return_interrupt ());
2052 else
2053 emit_jump_insn (gen_return_interrupt ());
2054
2055=== modified file 'gcc/cp/ChangeLog'
2056--- gcc/cp/ChangeLog 2011-03-31 20:33:07 +0000
2057+++ gcc/cp/ChangeLog 2011-05-06 12:18:42 +0000
2058@@ -1,3 +1,127 @@
2059+2011-05-06 Dodji Seketeli <dodji@redhat.com>
2060+
2061+ PR c++/48838
2062+ * cp-tree.h (non_static_member_function_p): Declare new function.
2063+ * tree.c (non_static_member_function_p): Define it.
2064+ * semantics.c (finish_call_expr): Use it.
2065+
2066+2011-05-04 Jason Merrill <jason@redhat.com>
2067+
2068+ PR c++/48749
2069+ * class.c (resolves_to_fixed_type_p): Don't look closely
2070+ in templates.
2071+
2072+2011-04-28 Dodji Seketeli <dodji@redhat.com>
2073+
2074+ PR c++/48656
2075+ * semantics.c (finish_call_expr): Don't forget BASELINK nodes when
2076+ considering call expressions involving a member function.
2077+
2078+2011-04-27 Jason Merrill <jason@redhat.com>
2079+
2080+ PR c++/48046
2081+ * parser.c (cp_parser_diagnose_invalid_type_name): Commit
2082+ to tentative parse sooner.
2083+
2084+2011-04-26 Jason Merrill <jason@redhat.com>
2085+
2086+ PR c++/42687
2087+ * parser.c (cp_parser_primary_expression): Set *idk to
2088+ CP_ID_KIND_NONE for a parenthesized identifier.
2089+
2090+2011-04-26 Jason Merrill <jason@redhat.com>
2091+
2092+ PR c++/48726
2093+ * call.c (convert_like_real): Correct TREE_CONSTANT on CONSTRUCTOR.
2094+ * decl.c (reshape_init_array_1): Likewise.
2095+
2096+2011-04-25 Jason Merrill <jason@redhat.com>
2097+
2098+ PR c++/48707
2099+ * pt.c (value_dependent_expression_p): Handle type-dependent
2100+ expression.
2101+
2102+2011-04-20 Jason Merrill <jason@redhat.com>
2103+
2104+ * semantics.c (finish_compound_literal): Don't put an array
2105+ with a dtor in a static variable.
2106+
2107+2011-04-20 Jason Merrill <jason@redhat.com>
2108+
2109+ PR c++/48594
2110+ * decl2.c (build_offset_ref_call_from_tree): Move
2111+ non-dependency of object outside condition.
2112+
2113+ PR c++/48657
2114+ * decl.c (cp_finish_decl): Handle non-member constant variables
2115+ in templates, too.
2116+
2117+2011-04-19 Jason Merrill <jason@redhat.com>
2118+
2119+ PR c++/46304
2120+ * typeck.c (cp_build_binary_op): Fold COMPLEX_EXPR.
2121+
2122+2011-04-18 Jason Merrill <jason@redhat.com>
2123+
2124+ PR c++/48537
2125+ * init.c (build_value_init): Handle UNION_TYPE the same.
2126+
2127+2011-04-18 Jakub Jelinek <jakub@redhat.com>
2128+
2129+ PR c++/48632
2130+ * parser.c (cp_parser_omp_for_loop): Don't use cp_parser_omp_for_incr
2131+ for type dependent pointers.
2132+
2133+2011-04-13 Jason Merrill <jason@redhat.com>
2134+
2135+ PR c++/48594
2136+ * decl2.c (build_offset_ref_call_from_tree): Fix calling a functor
2137+ or pointer to (non-member) function.
2138+
2139+2011-04-13 Jakub Jelinek <jakub@redhat.com>
2140+
2141+ PR c++/48570
2142+ * semantics.c (cxx_eval_array_reference): Handle reading from
2143+ wchar_t, char16_t and char32_t STRING_CST.
2144+
2145+2011-04-13 Dodji Seketeli <dodji@redhat.com>
2146+
2147+ PR c++/48574
2148+ * class.c (fixed_type_or_null): We cannot determine the dynamic
2149+ type of a reference variable if its initializer is dependent.
2150+
2151+2011-04-11 Jason Merrill <jason@redhat.com>
2152+
2153+ PR c++/48534
2154+ * cvt.c (ocp_convert): Use build_nop to convert to underlying type
2155+ of scoped enum.
2156+
2157+ PR c++/48523
2158+ * tree.c (maybe_dummy_object): Use build_x_indirect_ref rather
2159+ than cp_build_indirect_ref.
2160+
2161+2011-04-07 Jason Merrill <jason@redhat.com>
2162+
2163+ PR c++/48500
2164+ * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Check
2165+ arguments even if we don't know the function.
2166+
2167+ PR c++/48468
2168+ * except.c (build_noexcept_spec): Propagate error_mark_node.
2169+ (finish_noexcept_expr): Likewise.
2170+
2171+ PR c++/48452
2172+ * typeck.c (build_x_compound_expr_from_list): Return error_mark_node
2173+ in SFINAE context.
2174+
2175+ * semantics.c (finish_decltype_type): Add complain parm.
2176+ * cp-tree.h: Adjust.
2177+ * parser.c (cp_parser_decltype): Adjust.
2178+ * pt.c (tsubst): Adjust.
2179+
2180+ PR c++/48450
2181+ * cvt.c (ocp_convert): Handle converting scoped enum to bool.
2182+
2183 2011-03-31 Jason Merrill <jason@redhat.com>
2184
2185 PR c++/48280
2186
2187=== modified file 'gcc/cp/call.c'
2188--- gcc/cp/call.c 2011-03-29 14:26:10 +0000
2189+++ gcc/cp/call.c 2011-05-06 12:18:42 +0000
2190@@ -5481,6 +5481,8 @@
2191 if (!BRACE_ENCLOSED_INITIALIZER_P (val))
2192 check_narrowing (TREE_TYPE (sub), val);
2193 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_ctor), NULL_TREE, sub);
2194+ if (!TREE_CONSTANT (sub))
2195+ TREE_CONSTANT (new_ctor) = false;
2196 }
2197 /* Build up the array. */
2198 elttype = cp_build_qualified_type
2199
2200=== modified file 'gcc/cp/class.c'
2201--- gcc/cp/class.c 2011-03-29 14:26:33 +0000
2202+++ gcc/cp/class.c 2011-05-06 12:18:42 +0000
2203@@ -5937,6 +5937,7 @@
2204 itself. */
2205 if (TREE_CODE (instance) == VAR_DECL
2206 && DECL_INITIAL (instance)
2207+ && !type_dependent_expression_p (DECL_INITIAL (instance))
2208 && !htab_find (ht, instance))
2209 {
2210 tree type;
2211@@ -5977,7 +5978,17 @@
2212 {
2213 tree t = TREE_TYPE (instance);
2214 int cdtorp = 0;
2215- tree fixed = fixed_type_or_null (instance, nonnull, &cdtorp);
2216+ tree fixed;
2217+
2218+ if (processing_template_decl)
2219+ {
2220+ /* In a template we only care about the type of the result. */
2221+ if (nonnull)
2222+ *nonnull = true;
2223+ return true;
2224+ }
2225+
2226+ fixed = fixed_type_or_null (instance, nonnull, &cdtorp);
2227 if (fixed == NULL_TREE)
2228 return 0;
2229 if (POINTER_TYPE_P (t))
2230
2231=== modified file 'gcc/cp/cp-tree.h'
2232--- gcc/cp/cp-tree.h 2011-03-03 02:49:19 +0000
2233+++ gcc/cp/cp-tree.h 2011-05-06 12:18:42 +0000
2234@@ -5344,7 +5344,7 @@
2235 extern void finish_static_assert (tree, tree, location_t,
2236 bool);
2237 extern tree describable_type (tree);
2238-extern tree finish_decltype_type (tree, bool);
2239+extern tree finish_decltype_type (tree, bool, tsubst_flags_t);
2240 extern tree finish_trait_expr (enum cp_trait_kind, tree, tree);
2241 extern tree build_lambda_expr (void);
2242 extern tree build_lambda_object (tree);
2243@@ -5409,6 +5409,7 @@
2244 extern tree get_first_fn (tree);
2245 extern tree ovl_cons (tree, tree);
2246 extern tree build_overload (tree, tree);
2247+extern bool non_static_member_function_p (tree);
2248 extern const char *cxx_printable_name (tree, int);
2249 extern const char *cxx_printable_name_translate (tree, int);
2250 extern tree build_exception_variant (tree, tree);
2251
2252=== modified file 'gcc/cp/cvt.c'
2253--- gcc/cp/cvt.c 2011-02-17 20:44:14 +0000
2254+++ gcc/cp/cvt.c 2011-05-06 12:18:42 +0000
2255@@ -727,7 +727,13 @@
2256 return error_mark_node;
2257 }
2258 if (code == BOOLEAN_TYPE)
2259- return cp_truthvalue_conversion (e);
2260+ {
2261+ /* We can't implicitly convert a scoped enum to bool, so convert
2262+ to the underlying type first. */
2263+ if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC))
2264+ e = build_nop (ENUM_UNDERLYING_TYPE (intype), e);
2265+ return cp_truthvalue_conversion (e);
2266+ }
2267
2268 converted = fold_if_not_in_template (convert_to_integer (type, e));
2269
2270
2271=== modified file 'gcc/cp/decl.c'
2272--- gcc/cp/decl.c 2011-03-29 16:07:15 +0000
2273+++ gcc/cp/decl.c 2011-05-06 12:18:42 +0000
2274@@ -4904,6 +4904,8 @@
2275 return error_mark_node;
2276 CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init),
2277 size_int (index), elt_init);
2278+ if (!TREE_CONSTANT (elt_init))
2279+ TREE_CONSTANT (new_init) = false;
2280 }
2281
2282 return new_init;
2283@@ -5862,11 +5864,9 @@
2284 then it can be used in future constant expressions, so its value
2285 must be available. */
2286 if (!(init
2287- && DECL_CLASS_SCOPE_P (decl)
2288- /* We just set TREE_CONSTANT appropriately; see above. */
2289- && TREE_CONSTANT (decl)
2290+ && init_const_expr_p
2291 && !type_dependent_p
2292- /* FIXME non-value-dependent constant expression */
2293+ && decl_maybe_constant_var_p (decl)
2294 && !value_dependent_init_p (init)))
2295 {
2296 if (init)
2297@@ -5878,6 +5878,14 @@
2298 goto finish_end;
2299 }
2300
2301+ if (!DECL_CLASS_SCOPE_P (decl))
2302+ {
2303+ tree init_code = check_initializer (decl, init, flags, &cleanup);
2304+ if (init_code)
2305+ DECL_INITIAL (decl) = init;
2306+ goto finish_end;
2307+ }
2308+
2309 if (TREE_CODE (init) == TREE_LIST)
2310 {
2311 /* If the parenthesized-initializer form was used (e.g.,
2312
2313=== modified file 'gcc/cp/decl2.c'
2314--- gcc/cp/decl2.c 2011-03-29 14:24:59 +0000
2315+++ gcc/cp/decl2.c 2011-05-06 12:18:42 +0000
2316@@ -4080,9 +4080,12 @@
2317 because we depend on the form of FN. */
2318 make_args_non_dependent (*args);
2319 object = build_non_dependent_expr (object);
2320- if (TREE_CODE (fn) == DOTSTAR_EXPR)
2321- object = cp_build_addr_expr (object, tf_warning_or_error);
2322- VEC_safe_insert (tree, gc, *args, 0, object);
2323+ if (TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE)
2324+ {
2325+ if (TREE_CODE (fn) == DOTSTAR_EXPR)
2326+ object = cp_build_addr_expr (object, tf_warning_or_error);
2327+ VEC_safe_insert (tree, gc, *args, 0, object);
2328+ }
2329 /* Now that the arguments are done, transform FN. */
2330 fn = build_non_dependent_expr (fn);
2331 }
2332@@ -4101,7 +4104,10 @@
2333 VEC_safe_insert (tree, gc, *args, 0, object_addr);
2334 }
2335
2336- expr = cp_build_function_call_vec (fn, args, tf_warning_or_error);
2337+ if (CLASS_TYPE_P (TREE_TYPE (fn)))
2338+ expr = build_op_call (fn, args, tf_warning_or_error);
2339+ else
2340+ expr = cp_build_function_call_vec (fn, args, tf_warning_or_error);
2341 if (processing_template_decl && expr != error_mark_node)
2342 expr = build_min_non_dep_call_vec (expr, orig_fn, orig_args);
2343
2344
2345=== modified file 'gcc/cp/except.c'
2346--- gcc/cp/except.c 2011-03-29 14:24:30 +0000
2347+++ gcc/cp/except.c 2011-05-06 12:18:42 +0000
2348@@ -1125,6 +1125,9 @@
2349 {
2350 tree fn;
2351
2352+ if (expr == error_mark_node)
2353+ return error_mark_node;
2354+
2355 if (processing_template_decl)
2356 return build_min (NOEXCEPT_EXPR, boolean_type_node, expr);
2357
2358@@ -1212,6 +1215,8 @@
2359 return noexcept_true_spec;
2360 else if (expr == boolean_false_node)
2361 return noexcept_false_spec;
2362+ else if (expr == error_mark_node)
2363+ return error_mark_node;
2364 else
2365 {
2366 gcc_assert (processing_template_decl || expr == error_mark_node);
2367
2368=== modified file 'gcc/cp/init.c'
2369--- gcc/cp/init.c 2011-03-11 15:43:37 +0000
2370+++ gcc/cp/init.c 2011-05-06 12:18:42 +0000
2371@@ -343,7 +343,7 @@
2372 build_special_member_call (NULL_TREE, complete_ctor_identifier,
2373 NULL, type, LOOKUP_NORMAL,
2374 complain));
2375- else if (TREE_CODE (type) != UNION_TYPE && TYPE_NEEDS_CONSTRUCTING (type))
2376+ else if (TYPE_NEEDS_CONSTRUCTING (type))
2377 {
2378 /* This is a class that needs constructing, but doesn't have
2379 a user-provided constructor. So we need to zero-initialize
2380
2381=== modified file 'gcc/cp/parser.c'
2382--- gcc/cp/parser.c 2011-03-11 22:47:59 +0000
2383+++ gcc/cp/parser.c 2011-05-06 12:18:42 +0000
2384@@ -2699,6 +2699,7 @@
2385 location_t location)
2386 {
2387 tree decl, old_scope;
2388+ cp_parser_commit_to_tentative_parse (parser);
2389 /* Try to lookup the identifier. */
2390 old_scope = parser->scope;
2391 parser->scope = scope;
2392@@ -2792,7 +2793,6 @@
2393 else
2394 gcc_unreachable ();
2395 }
2396- cp_parser_commit_to_tentative_parse (parser);
2397 }
2398
2399 /* Check for a common situation where a type-name should be present,
2400@@ -3696,6 +3696,12 @@
2401 `&A::B' might be a pointer-to-member, but `&(A::B)' is
2402 not. */
2403 finish_parenthesized_expr (expr);
2404+ /* DR 705: Wrapping an unqualified name in parentheses
2405+ suppresses arg-dependent lookup. We want to pass back
2406+ CP_ID_KIND_QUALIFIED for suppressing vtable lookup
2407+ (c++/37862), but none of the others. */
2408+ if (*idk != CP_ID_KIND_QUALIFIED)
2409+ *idk = CP_ID_KIND_NONE;
2410 }
2411 /* The `>' token might be the end of a template-id or
2412 template-parameter-list now. */
2413@@ -10457,7 +10463,8 @@
2414 return error_mark_node;
2415 }
2416
2417- return finish_decltype_type (expr, id_expression_or_member_access_p);
2418+ return finish_decltype_type (expr, id_expression_or_member_access_p,
2419+ tf_warning_or_error);
2420 }
2421
2422 /* Special member functions [gram.special] */
2423@@ -24631,7 +24638,8 @@
2424 /* If decl is an iterator, preserve the operator on decl
2425 until finish_omp_for. */
2426 if (decl
2427- && (type_dependent_expression_p (decl)
2428+ && ((type_dependent_expression_p (decl)
2429+ && !POINTER_TYPE_P (TREE_TYPE (decl)))
2430 || CLASS_TYPE_P (TREE_TYPE (decl))))
2431 incr = cp_parser_omp_for_incr (parser, decl);
2432 else
2433
2434=== modified file 'gcc/cp/pt.c'
2435--- gcc/cp/pt.c 2011-03-30 02:16:37 +0000
2436+++ gcc/cp/pt.c 2011-05-06 12:18:42 +0000
2437@@ -11025,7 +11025,7 @@
2438 type = lambda_return_type (type);
2439 else
2440 type = finish_decltype_type
2441- (type, DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t));
2442+ (type, DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t), complain);
2443 return cp_build_qualified_type_real (type,
2444 cp_type_quals (t)
2445 | cp_type_quals (type),
2446@@ -18068,6 +18068,11 @@
2447 if (DECL_P (expression) && type_dependent_expression_p (expression))
2448 return true;
2449
2450+ /* We shouldn't have gotten here for a type-dependent expression, but
2451+ let's handle it properly anyway. */
2452+ if (TREE_TYPE (expression) == NULL_TREE)
2453+ return true;
2454+
2455 switch (TREE_CODE (expression))
2456 {
2457 case IDENTIFIER_NODE:
2458
2459=== modified file 'gcc/cp/semantics.c'
2460--- gcc/cp/semantics.c 2011-03-30 20:29:43 +0000
2461+++ gcc/cp/semantics.c 2011-05-06 12:18:42 +0000
2462@@ -2041,7 +2041,7 @@
2463 is not included in *ARGS even though it is considered to
2464 be part of the list of arguments. Note that this is
2465 related to CWG issues 515 and 1005. */
2466- || ((TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE)
2467+ || (non_static_member_function_p (fn)
2468 && current_class_ref
2469 && type_dependent_expression_p (current_class_ref)))
2470 {
2471@@ -2333,6 +2333,7 @@
2472 represent class temporaries with TARGET_EXPR so we elide copies. */
2473 if ((!at_function_scope_p () || CP_TYPE_CONST_P (type))
2474 && TREE_CODE (type) == ARRAY_TYPE
2475+ && !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)
2476 && initializer_constant_valid_p (compound_literal, type))
2477 {
2478 tree decl = create_temporary_var (type);
2479@@ -4785,7 +4786,8 @@
2480 a full expression. */
2481
2482 tree
2483-finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
2484+finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
2485+ tsubst_flags_t complain)
2486 {
2487 tree orig_expr = expr;
2488 tree type = NULL_TREE;
2489@@ -4798,7 +4800,8 @@
2490 || (TREE_CODE (expr) == BIT_NOT_EXPR
2491 && TYPE_P (TREE_OPERAND (expr, 0))))
2492 {
2493- error ("argument to decltype must be an expression");
2494+ if (complain & tf_error)
2495+ error ("argument to decltype must be an expression");
2496 return error_mark_node;
2497 }
2498
2499@@ -4865,7 +4868,9 @@
2500 if (OVL_CHAIN (expr)
2501 || TREE_CODE (OVL_FUNCTION (expr)) == TEMPLATE_DECL)
2502 {
2503- error ("%qE refers to a set of overloaded functions", orig_expr);
2504+ if (complain & tf_error)
2505+ error ("%qE refers to a set of overloaded functions",
2506+ orig_expr);
2507 return error_mark_node;
2508 }
2509 else
2510@@ -4917,7 +4922,8 @@
2511 default:
2512 gcc_assert (TYPE_P (expr) || DECL_P (expr)
2513 || TREE_CODE (expr) == SCOPE_REF);
2514- error ("argument to decltype must be an expression");
2515+ if (complain & tf_error)
2516+ error ("argument to decltype must be an expression");
2517 return error_mark_node;
2518 }
2519 }
2520@@ -5012,7 +5018,8 @@
2521
2522 if (!type || type == unknown_type_node)
2523 {
2524- error ("type of %qE is unknown", expr);
2525+ if (complain & tf_error)
2526+ error ("type of %qE is unknown", expr);
2527 return error_mark_node;
2528 }
2529
2530@@ -6273,7 +6280,7 @@
2531 non_constant_p);
2532 tree index, oldidx;
2533 HOST_WIDE_INT i;
2534- unsigned len;
2535+ unsigned len, elem_nchars = 1;
2536 if (*non_constant_p)
2537 return t;
2538 oldidx = TREE_OPERAND (t, 1);
2539@@ -6285,9 +6292,14 @@
2540 return t;
2541 else if (addr)
2542 return build4 (ARRAY_REF, TREE_TYPE (t), ary, index, NULL, NULL);
2543- len = (TREE_CODE (ary) == CONSTRUCTOR
2544- ? CONSTRUCTOR_NELTS (ary)
2545- : (unsigned)TREE_STRING_LENGTH (ary));
2546+ if (TREE_CODE (ary) == CONSTRUCTOR)
2547+ len = CONSTRUCTOR_NELTS (ary);
2548+ else
2549+ {
2550+ elem_nchars = (TYPE_PRECISION (TREE_TYPE (TREE_TYPE (ary)))
2551+ / TYPE_PRECISION (char_type_node));
2552+ len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars;
2553+ }
2554 if (compare_tree_int (index, len) >= 0)
2555 {
2556 if (!allow_non_constant)
2557@@ -6298,9 +6310,16 @@
2558 i = tree_low_cst (index, 0);
2559 if (TREE_CODE (ary) == CONSTRUCTOR)
2560 return VEC_index (constructor_elt, CONSTRUCTOR_ELTS (ary), i)->value;
2561- else
2562+ else if (elem_nchars == 1)
2563 return build_int_cst (cv_unqualified (TREE_TYPE (TREE_TYPE (ary))),
2564 TREE_STRING_POINTER (ary)[i]);
2565+ else
2566+ {
2567+ tree type = cv_unqualified (TREE_TYPE (TREE_TYPE (ary)));
2568+ return native_interpret_expr (type, (const unsigned char *)
2569+ TREE_STRING_POINTER (ary)
2570+ + i * elem_nchars, elem_nchars);
2571+ }
2572 /* Don't VERIFY_CONSTANT here. */
2573 }
2574
2575@@ -7368,6 +7387,8 @@
2576 class member access expression, including the result of the
2577 implicit transformation in the body of the non-static
2578 member function (9.3.1); */
2579+ /* FIXME this restriction seems pointless since the standard dropped
2580+ "potential constant expression". */
2581 if (is_this_parameter (t))
2582 {
2583 if (flags & tf_error)
2584@@ -7383,51 +7404,63 @@
2585 {
2586 tree fun = get_function_named_in_call (t);
2587 const int nargs = call_expr_nargs (t);
2588- if (TREE_CODE (fun) != FUNCTION_DECL)
2589+ i = 0;
2590+
2591+ if (is_overloaded_fn (fun))
2592+ {
2593+ if (TREE_CODE (fun) == FUNCTION_DECL)
2594+ {
2595+ if (builtin_valid_in_constant_expr_p (fun))
2596+ return true;
2597+ if (!DECL_DECLARED_CONSTEXPR_P (fun)
2598+ && !morally_constexpr_builtin_function_p (fun))
2599+ {
2600+ if (flags & tf_error)
2601+ error ("%qD is not %<constexpr%>", fun);
2602+ return false;
2603+ }
2604+ /* A call to a non-static member function takes the address
2605+ of the object as the first argument. But in a constant
2606+ expression the address will be folded away, so look
2607+ through it now. */
2608+ if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fun)
2609+ && !DECL_CONSTRUCTOR_P (fun))
2610+ {
2611+ tree x = get_nth_callarg (t, 0);
2612+ if (is_this_parameter (x))
2613+ /* OK. */;
2614+ else if (!potential_constant_expression_1 (x, rval, flags))
2615+ {
2616+ if (flags & tf_error)
2617+ error ("object argument is not a potential "
2618+ "constant expression");
2619+ return false;
2620+ }
2621+ i = 1;
2622+ }
2623+ }
2624+ else
2625+ fun = get_first_fn (fun);
2626+ /* Skip initial arguments to base constructors. */
2627+ if (DECL_BASE_CONSTRUCTOR_P (fun))
2628+ i = num_artificial_parms_for (fun);
2629+ fun = DECL_ORIGIN (fun);
2630+ }
2631+ else
2632 {
2633 if (potential_constant_expression_1 (fun, rval, flags))
2634- /* Might end up being a constant function pointer. */
2635- return true;
2636- if (flags & tf_error)
2637- error ("%qE is not a function name", fun);
2638- return false;
2639- }
2640- /* Skip initial arguments to base constructors. */
2641- if (DECL_BASE_CONSTRUCTOR_P (fun))
2642- i = num_artificial_parms_for (fun);
2643- else
2644- i = 0;
2645- fun = DECL_ORIGIN (fun);
2646- if (builtin_valid_in_constant_expr_p (fun))
2647- return true;
2648- if (!DECL_DECLARED_CONSTEXPR_P (fun)
2649- && !morally_constexpr_builtin_function_p (fun))
2650- {
2651- if (flags & tf_error)
2652- error ("%qD is not %<constexpr%>", fun);
2653- return false;
2654+ /* Might end up being a constant function pointer. */;
2655+ else
2656+ {
2657+ if (flags & tf_error)
2658+ error ("%qE is not a function name", fun);
2659+ return false;
2660+ }
2661 }
2662 for (; i < nargs; ++i)
2663 {
2664 tree x = get_nth_callarg (t, i);
2665- /* A call to a non-static member function takes the
2666- address of the object as the first argument.
2667- But in a constant expression the address will be folded
2668- away, so look through it now. */
2669- if (i == 0 && DECL_NONSTATIC_MEMBER_P (fun)
2670- && !DECL_CONSTRUCTOR_P (fun))
2671- {
2672- if (is_this_parameter (x))
2673- /* OK. */;
2674- else if (!potential_constant_expression_1 (x, rval, flags))
2675- {
2676- if (flags & tf_error)
2677- error ("object argument is not a potential constant "
2678- "expression");
2679- return false;
2680- }
2681- }
2682- else if (!potential_constant_expression_1 (x, rval, flags))
2683+ if (!potential_constant_expression_1 (x, rval, flags))
2684 {
2685 if (flags & tf_error)
2686 error ("argument in position %qP is not a "
2687
2688=== modified file 'gcc/cp/tree.c'
2689--- gcc/cp/tree.c 2011-03-03 02:49:19 +0000
2690+++ gcc/cp/tree.c 2011-05-06 12:18:42 +0000
2691@@ -1465,6 +1465,34 @@
2692 return ovl_cons (decl, chain);
2693 }
2694
2695+/* Return TRUE if FN is a non-static member function, FALSE otherwise.
2696+ This function looks into BASELINK and OVERLOAD nodes. */
2697+
2698+bool
2699+non_static_member_function_p (tree fn)
2700+{
2701+ if (fn == NULL_TREE)
2702+ return false;
2703+
2704+ if (BASELINK_P (fn))
2705+ {
2706+ tree type = TREE_TYPE (fn);
2707+
2708+ if (type && TREE_CODE (type) == METHOD_TYPE)
2709+ return true;
2710+ else if (type && TREE_CODE (type) == FUNCTION_TYPE)
2711+ return false;
2712+ /* This is an overload. Lets look into its current value. */
2713+ fn = get_fns (BASELINK_FUNCTIONS (fn));
2714+ }
2715+
2716+ if (TREE_CODE (fn) == OVERLOAD)
2717+ fn = OVL_CURRENT (fn);
2718+
2719+ return (DECL_P (fn)
2720+ && DECL_NONSTATIC_MEMBER_FUNCTION_P (fn));
2721+}
2722+
2723
2724
2725 #define PRINT_RING_SIZE 4
2726
2727@@ -2421,7 +2449,7 @@
2728 else if (current != current_class_type
2729 && context == nonlambda_method_basetype ())
2730 /* In a lambda, need to go through 'this' capture. */
2731- decl = (cp_build_indirect_ref
2732+ decl = (build_x_indirect_ref
2733 ((lambda_expr_this_capture
2734 (CLASSTYPE_LAMBDA_EXPR (current_class_type))),
2735 RO_NULL, tf_warning_or_error));
2736
2737=== modified file 'gcc/cp/typeck.c'
2738--- gcc/cp/typeck.c 2011-03-29 14:25:10 +0000
2739+++ gcc/cp/typeck.c 2011-05-06 12:18:42 +0000
2740@@ -4354,7 +4354,11 @@
2741 gcc_unreachable();
2742 }
2743 }
2744- return build2 (COMPLEX_EXPR, result_type, real, imag);
2745+ real = fold_if_not_in_template (real);
2746+ imag = fold_if_not_in_template (imag);
2747+ result = build2 (COMPLEX_EXPR, result_type, real, imag);
2748+ result = fold_if_not_in_template (result);
2749+ return result;
2750 }
2751
2752 /* For certain operations (which identify themselves by shorten != 0)
2753@@ -5469,6 +5473,8 @@
2754 default:
2755 gcc_unreachable ();
2756 }
2757+ else
2758+ return error_mark_node;
2759
2760 for (list = TREE_CHAIN (list); list; list = TREE_CHAIN (list))
2761 expr = build_x_compound_expr (expr, TREE_VALUE (list),
2762
2763=== modified file 'gcc/doc/extend.texi'
2764--- gcc/doc/extend.texi 2011-03-27 20:08:35 +0000
2765+++ gcc/doc/extend.texi 2011-05-06 12:18:42 +0000
2766@@ -14266,63 +14266,63 @@
2767 false. Otherwise if @code{__has_trivial_assign (type)} is true then the trait
2768 is true, else if @code{type} is a cv class or union type with copy assignment
2769 operators that are known not to throw an exception then the trait is true,
2770-else it is false. Requires: @code{type} shall be a complete type, an array
2771-type of unknown bound, or is a @code{void} type.
2772+else it is false. Requires: @code{type} shall be a complete type,
2773+(possibly cv-qualified) @code{void}, or an array of unknown bound.
2774
2775 @item __has_nothrow_copy (type)
2776 If @code{__has_trivial_copy (type)} is true then the trait is true, else if
2777 @code{type} is a cv class or union type with copy constructors that
2778 are known not to throw an exception then the trait is true, else it is false.
2779-Requires: @code{type} shall be a complete type, an array type of
2780-unknown bound, or is a @code{void} type.
2781+Requires: @code{type} shall be a complete type, (possibly cv-qualified)
2782+@code{void}, or an array of unknown bound.
2783
2784 @item __has_nothrow_constructor (type)
2785 If @code{__has_trivial_constructor (type)} is true then the trait is
2786 true, else if @code{type} is a cv class or union type (or array
2787 thereof) with a default constructor that is known not to throw an
2788-exception then the trait is true, else it is false. Requires:
2789-@code{type} shall be a complete type, an array type of unknown bound,
2790-or is a @code{void} type.
2791+exception then the trait is true, else it is false. Requires:
2792+@code{type} shall be a complete type, (possibly cv-qualified)
2793+@code{void}, or an array of unknown bound.
2794
2795 @item __has_trivial_assign (type)
2796 If @code{type} is const qualified or is a reference type then the trait is
2797 false. Otherwise if @code{__is_pod (type)} is true then the trait is
2798 true, else if @code{type} is a cv class or union type with a trivial
2799 copy assignment ([class.copy]) then the trait is true, else it is
2800-false. Requires: @code{type} shall be a complete type, an array type
2801-of unknown bound, or is a @code{void} type.
2802+false. Requires: @code{type} shall be a complete type, (possibly
2803+cv-qualified) @code{void}, or an array of unknown bound.
2804
2805 @item __has_trivial_copy (type)
2806 If @code{__is_pod (type)} is true or @code{type} is a reference type
2807 then the trait is true, else if @code{type} is a cv class or union type
2808 with a trivial copy constructor ([class.copy]) then the trait
2809 is true, else it is false. Requires: @code{type} shall be a complete
2810-type, an array type of unknown bound, or is a @code{void} type.
2811+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2812
2813 @item __has_trivial_constructor (type)
2814 If @code{__is_pod (type)} is true then the trait is true, else if
2815 @code{type} is a cv class or union type (or array thereof) with a
2816 trivial default constructor ([class.ctor]) then the trait is true,
2817-else it is false. Requires: @code{type} shall be a complete type, an
2818-array type of unknown bound, or is a @code{void} type.
2819+else it is false. Requires: @code{type} shall be a complete
2820+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2821
2822 @item __has_trivial_destructor (type)
2823 If @code{__is_pod (type)} is true or @code{type} is a reference type then
2824 the trait is true, else if @code{type} is a cv class or union type (or
2825 array thereof) with a trivial destructor ([class.dtor]) then the trait
2826 is true, else it is false. Requires: @code{type} shall be a complete
2827-type, an array type of unknown bound, or is a @code{void} type.
2828+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2829
2830 @item __has_virtual_destructor (type)
2831 If @code{type} is a class type with a virtual destructor
2832 ([class.dtor]) then the trait is true, else it is false. Requires:
2833-@code{type} shall be a complete type, an array type of unknown bound,
2834-or is a @code{void} type.
2835+@code{type} shall be a complete type, (possibly cv-qualified)
2836+@code{void}, or an array of unknown bound.
2837
2838 @item __is_abstract (type)
2839 If @code{type} is an abstract class ([class.abstract]) then the trait
2840 is true, else it is false. Requires: @code{type} shall be a complete
2841-type, an array type of unknown bound, or is a @code{void} type.
2842+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2843
2844 @item __is_base_of (base_type, derived_type)
2845 If @code{base_type} is a base class of @code{derived_type}
2846@@ -14347,22 +14347,37 @@
2847 members, and @code{type} has no virtual base classes, and @code{type}
2848 has no base classes @code{base_type} for which
2849 @code{__is_empty (base_type)} is false. Requires: @code{type} shall
2850-be a complete type, an array type of unknown bound, or is a
2851-@code{void} type.
2852+be a complete type, (possibly cv-qualified) @code{void}, or an array
2853+of unknown bound.
2854
2855 @item __is_enum (type)
2856 If @code{type} is a cv enumeration type ([basic.compound]) the trait is
2857 true, else it is false.
2858
2859+@item __is_literal_type (type)
2860+If @code{type} is a literal type ([basic.types]) the trait is
2861+true, else it is false. Requires: @code{type} shall be a complete type,
2862+(possibly cv-qualified) @code{void}, or an array of unknown bound.
2863+
2864 @item __is_pod (type)
2865 If @code{type} is a cv POD type ([basic.types]) then the trait is true,
2866-else it is false. Requires: @code{type} shall be a complete type,
2867-an array type of unknown bound, or is a @code{void} type.
2868+else it is false. Requires: @code{type} shall be a complete type,
2869+(possibly cv-qualified) @code{void}, or an array of unknown bound.
2870
2871 @item __is_polymorphic (type)
2872 If @code{type} is a polymorphic class ([class.virtual]) then the trait
2873 is true, else it is false. Requires: @code{type} shall be a complete
2874-type, an array type of unknown bound, or is a @code{void} type.
2875+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2876+
2877+@item __is_standard_layout (type)
2878+If @code{type} is a standard-layout type ([basic.types]) the trait is
2879+true, else it is false. Requires: @code{type} shall be a complete
2880+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2881+
2882+@item __is_trivial (type)
2883+If @code{type} is a trivial type ([basic.types]) the trait is
2884+true, else it is false. Requires: @code{type} shall be a complete
2885+type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
2886
2887 @item __is_union (type)
2888 If @code{type} is a cv union type ([basic.compound]) the trait is
2889
2890=== modified file 'gcc/doc/passes.texi'
2891--- gcc/doc/passes.texi 2011-01-03 20:52:22 +0000
2892+++ gcc/doc/passes.texi 2011-05-06 12:18:42 +0000
2893@@ -1,4 +1,4 @@
2894-@c markers: CROSSREF BUG TODO
2895+@c markers: BUG TODO
2896
2897 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2898 @c 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
2899@@ -32,7 +32,7 @@
2900 The language front end is invoked only once, via
2901 @code{lang_hooks.parse_file}, to parse the entire input. The language
2902 front end may use any intermediate language representation deemed
2903-appropriate. The C front end uses GENERIC trees (CROSSREF), plus
2904+appropriate. The C front end uses GENERIC trees (@pxref{GENERIC}), plus
2905 a double handful of language specific tree codes defined in
2906 @file{c-common.def}. The Fortran front end uses a completely different
2907 private representation.
2908@@ -46,10 +46,9 @@
2909 At some point the front end must translate the representation used in the
2910 front end to a representation understood by the language-independent
2911 portions of the compiler. Current practice takes one of two forms.
2912-The C front end manually invokes the gimplifier (CROSSREF) on each function,
2913+The C front end manually invokes the gimplifier (@pxref{GIMPLE}) on each function,
2914 and uses the gimplifier callbacks to convert the language-specific tree
2915-nodes directly to GIMPLE (CROSSREF) before passing the function off to
2916-be compiled.
2917+nodes directly to GIMPLE before passing the function off to be compiled.
2918 The Fortran front end converts from a private representation to GENERIC,
2919 which is later lowered to GIMPLE when the function is compiled. Which
2920 route to choose probably depends on how well GENERIC (plus extensions)
2921@@ -111,11 +110,10 @@
2922 @cindex GIMPLE
2923 @dfn{Gimplification} is a whimsical term for the process of converting
2924 the intermediate representation of a function into the GIMPLE language
2925-(CROSSREF). The term stuck, and so words like ``gimplification'',
2926+(@pxref{GIMPLE}). The term stuck, and so words like ``gimplification'',
2927 ``gimplify'', ``gimplifier'' and the like are sprinkled throughout this
2928 section of code.
2929
2930-@cindex GENERIC
2931 While a front end may certainly choose to generate GIMPLE directly if
2932 it chooses, this can be a moderately complex process unless the
2933 intermediate language used by the front end is already fairly simple.
2934
2935=== modified file 'gcc/dwarf2out.c'
2936--- gcc/dwarf2out.c 2011-05-04 13:20:12 +0000
2937+++ gcc/dwarf2out.c 2011-05-06 12:18:42 +0000
2938@@ -6509,7 +6509,7 @@
2939 static void gen_type_die (tree, dw_die_ref);
2940 static void gen_block_die (tree, dw_die_ref, int);
2941 static void decls_for_scope (tree, dw_die_ref, int);
2942-static int is_redundant_typedef (const_tree);
2943+static inline int is_redundant_typedef (const_tree);
2944 static bool is_naming_typedef_decl (const_tree);
2945 static inline dw_die_ref get_context_die (tree);
2946 static void gen_namespace_die (tree, dw_die_ref);
2947@@ -13581,7 +13581,7 @@
2948 int base_reg
2949 = DWARF_FRAME_REGNUM ((fde && fde->drap_reg != INVALID_REGNUM)
2950 ? HARD_FRAME_POINTER_REGNUM
2951- : STACK_POINTER_REGNUM);
2952+ : REGNO (elim));
2953 return new_reg_loc_descr (base_reg, offset);
2954 }
2955
2956
2957=== modified file 'gcc/expmed.c'
2958--- gcc/expmed.c 2011-03-04 10:31:33 +0000
2959+++ gcc/expmed.c 2011-05-06 12:18:42 +0000
2960@@ -457,8 +457,10 @@
2961 && bitsize == GET_MODE_BITSIZE (fieldmode)
2962 && (!MEM_P (op0)
2963 ? ((GET_MODE_SIZE (fieldmode) >= UNITS_PER_WORD
2964- || GET_MODE_SIZE (GET_MODE (op0)) == GET_MODE_SIZE (fieldmode))
2965- && byte_offset % GET_MODE_SIZE (fieldmode) == 0)
2966+ || GET_MODE_SIZE (GET_MODE (op0)) == GET_MODE_SIZE (fieldmode))
2967+ && ((GET_MODE (op0) == fieldmode && byte_offset == 0)
2968+ || validate_subreg (fieldmode, GET_MODE (op0), op0,
2969+ byte_offset)))
2970 : (! SLOW_UNALIGNED_ACCESS (fieldmode, MEM_ALIGN (op0))
2971 || (offset * BITS_PER_UNIT % bitsize == 0
2972 && MEM_ALIGN (op0) % GET_MODE_BITSIZE (fieldmode) == 0))))
2973@@ -519,6 +521,7 @@
2974 rtx insn;
2975 rtx start = get_last_insn ();
2976 rtx arg0 = op0;
2977+ unsigned HOST_WIDE_INT subreg_off;
2978
2979 /* Get appropriate low part of the value being stored. */
2980 if (CONST_INT_P (value) || REG_P (value))
2981@@ -542,15 +545,17 @@
2982 arg0 = SUBREG_REG (op0);
2983 }
2984
2985- insn = (GEN_FCN (icode)
2986- (gen_rtx_SUBREG (fieldmode, arg0,
2987- (bitnum % BITS_PER_WORD) / BITS_PER_UNIT
2988- + (offset * UNITS_PER_WORD)),
2989- value));
2990- if (insn)
2991+ subreg_off = (bitnum % BITS_PER_WORD) / BITS_PER_UNIT
2992+ + (offset * UNITS_PER_WORD);
2993+ if (validate_subreg (fieldmode, GET_MODE (arg0), arg0, subreg_off))
2994 {
2995- emit_insn (insn);
2996- return true;
2997+ insn = (GEN_FCN (icode) (gen_rtx_SUBREG (fieldmode, arg0,
2998+ subreg_off), value));
2999+ if (insn)
3000+ {
3001+ emit_insn (insn);
3002+ return true;
3003+ }
3004 }
3005 delete_insns_since (start);
3006 }
3007@@ -1106,22 +1111,32 @@
3008 if (GET_CODE (op0) == SUBREG)
3009 {
3010 int word_offset = (SUBREG_BYTE (op0) / UNITS_PER_WORD) + offset;
3011- word = operand_subword_force (SUBREG_REG (op0), word_offset,
3012- GET_MODE (SUBREG_REG (op0)));
3013+ enum machine_mode sub_mode = GET_MODE (SUBREG_REG (op0));
3014+ if (sub_mode != BLKmode && GET_MODE_SIZE (sub_mode) < UNITS_PER_WORD)
3015+ word = word_offset ? const0_rtx : op0;
3016+ else
3017+ word = operand_subword_force (SUBREG_REG (op0), word_offset,
3018+ GET_MODE (SUBREG_REG (op0)));
3019 offset = 0;
3020 }
3021 else if (REG_P (op0))
3022 {
3023- word = operand_subword_force (op0, offset, GET_MODE (op0));
3024+ enum machine_mode op0_mode = GET_MODE (op0);
3025+ if (op0_mode != BLKmode && GET_MODE_SIZE (op0_mode) < UNITS_PER_WORD)
3026+ word = offset ? const0_rtx : op0;
3027+ else
3028+ word = operand_subword_force (op0, offset, GET_MODE (op0));
3029 offset = 0;
3030 }
3031 else
3032 word = op0;
3033
3034 /* OFFSET is in UNITs, and UNIT is in bits.
3035- store_fixed_bit_field wants offset in bytes. */
3036- store_fixed_bit_field (word, offset * unit / BITS_PER_UNIT, thissize,
3037- thispos, part);
3038+ store_fixed_bit_field wants offset in bytes. If WORD is const0_rtx,
3039+ it is just an out-of-bounds access. Ignore it. */
3040+ if (word != const0_rtx)
3041+ store_fixed_bit_field (word, offset * unit / BITS_PER_UNIT, thissize,
3042+ thispos, part);
3043 bitsdone += thissize;
3044 }
3045 }
3046
3047=== modified file 'gcc/expr.c'
3048--- gcc/expr.c 2011-05-03 15:17:25 +0000
3049+++ gcc/expr.c 2011-05-06 12:18:42 +0000
3050@@ -4292,16 +4292,47 @@
3051 /* Handle expand_expr of a complex value returning a CONCAT. */
3052 else if (GET_CODE (to_rtx) == CONCAT)
3053 {
3054- if (COMPLEX_MODE_P (TYPE_MODE (TREE_TYPE (from))))
3055+ unsigned short mode_bitsize = GET_MODE_BITSIZE (GET_MODE (to_rtx));
3056+ if (COMPLEX_MODE_P (TYPE_MODE (TREE_TYPE (from)))
3057+ && bitpos == 0
3058+ && bitsize == mode_bitsize)
3059+ result = store_expr (from, to_rtx, false, nontemporal);
3060+ else if (bitsize == mode_bitsize / 2
3061+ && (bitpos == 0 || bitpos == mode_bitsize / 2))
3062+ result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
3063+ nontemporal);
3064+ else if (bitpos + bitsize <= mode_bitsize / 2)
3065+ result = store_field (XEXP (to_rtx, 0), bitsize, bitpos,
3066+ mode1, from, TREE_TYPE (tem),
3067+ get_alias_set (to), nontemporal);
3068+ else if (bitpos >= mode_bitsize / 2)
3069+ result = store_field (XEXP (to_rtx, 1), bitsize,
3070+ bitpos - mode_bitsize / 2, mode1, from,
3071+ TREE_TYPE (tem), get_alias_set (to),
3072+ nontemporal);
3073+ else if (bitpos == 0 && bitsize == mode_bitsize)
3074 {
3075- gcc_assert (bitpos == 0);
3076- result = store_expr (from, to_rtx, false, nontemporal);
3077+ rtx from_rtx;
3078+ result = expand_normal (from);
3079+ from_rtx = simplify_gen_subreg (GET_MODE (to_rtx), result,
3080+ TYPE_MODE (TREE_TYPE (from)), 0);
3081+ emit_move_insn (XEXP (to_rtx, 0),
3082+ read_complex_part (from_rtx, false));
3083+ emit_move_insn (XEXP (to_rtx, 1),
3084+ read_complex_part (from_rtx, true));
3085 }
3086 else
3087 {
3088- gcc_assert (bitpos == 0 || bitpos == GET_MODE_BITSIZE (mode1));
3089- result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
3090- nontemporal);
3091+ rtx temp = assign_stack_temp (GET_MODE (to_rtx),
3092+ GET_MODE_SIZE (GET_MODE (to_rtx)),
3093+ 0);
3094+ write_complex_part (temp, XEXP (to_rtx, 0), false);
3095+ write_complex_part (temp, XEXP (to_rtx, 1), true);
3096+ result = store_field (temp, bitsize, bitpos, mode1, from,
3097+ TREE_TYPE (tem), get_alias_set (to),
3098+ nontemporal);
3099+ emit_move_insn (XEXP (to_rtx, 0), read_complex_part (temp, false));
3100+ emit_move_insn (XEXP (to_rtx, 1), read_complex_part (temp, true));
3101 }
3102 }
3103 else
3104
3105=== modified file 'gcc/final.c'
3106--- gcc/final.c 2011-02-28 18:23:25 +0000
3107+++ gcc/final.c 2011-05-06 12:18:42 +0000
3108@@ -2238,6 +2238,11 @@
3109 location_t loc;
3110 expanded_location expanded;
3111
3112+ /* Make sure we flush any queued register saves in case this
3113+ clobbers affected registers. */
3114+ if (dwarf2out_do_frame ())
3115+ dwarf2out_frame_debug (insn, false);
3116+
3117 /* There's no telling what that did to the condition codes. */
3118 CC_STATUS_INIT;
3119
3120
3121=== modified file 'gcc/fold-const.c'
3122--- gcc/fold-const.c 2011-03-28 10:14:34 +0000
3123+++ gcc/fold-const.c 2011-05-06 12:18:42 +0000
3124@@ -2020,8 +2020,6 @@
3125
3126 case VOID_TYPE:
3127 tem = fold_ignored_result (arg);
3128- if (TREE_CODE (tem) == MODIFY_EXPR)
3129- goto fold_convert_exit;
3130 return fold_build1_loc (loc, NOP_EXPR, type, tem);
3131
3132 default:
3133
3134=== modified file 'gcc/fortran/ChangeLog'
3135--- gcc/fortran/ChangeLog 2011-03-25 16:54:10 +0000
3136+++ gcc/fortran/ChangeLog 2011-05-06 12:18:42 +0000
3137@@ -1,3 +1,87 @@
3138+2011-05-04 Steven G. Kargl <kargl@gcc.gnu.org>
3139+
3140+ PR fortran/48720
3141+ * gfortran.texi: Document the 'Q' exponent-letter extension.
3142+ * invoke.texi: Document -Wreal-q-constant.
3143+ * lang.opt: Add -Wreal-q-constant option.
3144+ * gfortran.h: Add warn_real_q_constant to option struct.
3145+ * primary.c (match_real_constant): Use it. Accept 'Q' as
3146+ exponent-letter for REAL(16) real-literal-constant with a
3147+ fallback to REAL(10) or error if REAL(10) is not available.
3148+ * options.c (gfc_init_options, set_Wall) Set it.
3149+ (gfc_handle_option): Handle new option.
3150+
3151+2011-04-30 Paul Thomas <pault@gcc.gnu.org>
3152+
3153+ PR fortran/48462
3154+ PR fortran/48746
3155+ * trans-expr.c ( arrayfunc_assign_needs_temporary): Need a temp
3156+ if automatic reallocation on assignement is active, the lhs is a
3157+ target and the rhs an intrinsic function.
3158+ (realloc_lhs_bounds_for_intrinsic_call): Rename as next.
3159+ (fcncall_realloc_result): Renamed version of above function.
3160+ Free the original descriptor data after the function call.Set the bounds and the
3161+ offset so that the lbounds are one.
3162+ (gfc_trans_arrayfunc_assign): Call renamed function.
3163+
3164+2011-04-29 Tobias Burnus <burnus@net-b.de>
3165+
3166+ PR fortran/48810
3167+ * resolve.c (resolve_typebound_generic_call): Don't check access
3168+ flags of the specific function.
3169+
3170+ PR fortran/48800
3171+ * resolve.c (resolve_formal_arglist): Don't change AS_DEFERRED
3172+ to AS_ASSUMED_SHAPE for function results.
3173+ (resolve_fl_var_and_proc): Print also for function results with
3174+ AS_DEFERRED an error, if they are not a pointer or allocatable.
3175+ (resolve_types): Make sure arguments of procedures in interface
3176+ blocks are resolved.
3177+
3178+2011-04-28 Tobias Burnus <burnus@net-b.de>
3179+
3180+ PR fortran/48112
3181+ * resolve.c (resolve_fl_var_and_proc): Print diagnostic of
3182+ function results only once.
3183+ (resolve_symbol): Always resolve function results.
3184+
3185+ PR fortran/48279
3186+ * expr.c (gfc_check_vardef_context): Fix handling of generic
3187+ EXPR_FUNCTION.
3188+ * interface.c (check_interface0): Reject internal functions
3189+ in generic interfaces, unless -std=gnu.
3190+
3191+2011-04-28 Tobias Burnus <burnus@net-b.de>
3192+
3193+ PR fortran/48788
3194+ * resolve.c (resolve_global_procedure): Error recovery -
3195+ avoid segfault for (non)character-returning functions.
3196+
3197+2011-04-26 Tobias Burnus <burnus@net-b.de>
3198+
3199+ PR fortran/48588
3200+ * parse.c (resolve_all_program_units): Skip modules.
3201+ (translate_all_program_units): Handle modules.
3202+ (gfc_parse_file): Defer code generation for modules.
3203+ * module.c (fix_mio_expr): Commit created symbol.
3204+
3205+2011-04-13 Paul Thomas <pault@gcc.gnu.org>
3206+
3207+ PR fortran/48360
3208+ PR fortran/48456
3209+ * trans-array.c (get_std_lbound): For derived type variables
3210+ return array valued component lbound.
3211+
3212+2011-04-05 Duncan Sands <baldrick@free.fr>
3213+
3214+ * f95-lang.c (build_builtin_fntypes): Swap frexp parameter types.
3215+
3216+2011-04-04 Janus Weil <janus@gcc.gnu.org>
3217+
3218+ PR fortran/48291
3219+ * class.c (get_unique_hashed_string): Adjust maximum allowable length
3220+ for unique type string.
3221+
3222 2011-03-25 Release Manager
3223
3224 * GCC 4.6.0 released.
3225
3226=== modified file 'gcc/fortran/class.c'
3227--- gcc/fortran/class.c 2011-02-16 20:51:56 +0000
3228+++ gcc/fortran/class.c 2011-05-06 12:18:42 +0000
3229@@ -137,9 +137,9 @@
3230 {
3231 char tmp[2*GFC_MAX_SYMBOL_LEN+2];
3232 get_unique_type_string (&tmp[0], derived);
3233- /* If string is too long, use hash value in hex representation
3234- (allow for extra decoration, cf. gfc_build_class_symbol)*/
3235- if (strlen (tmp) > GFC_MAX_SYMBOL_LEN - 10)
3236+ /* If string is too long, use hash value in hex representation (allow for
3237+ extra decoration, cf. gfc_build_class_symbol & gfc_find_derived_vtab). */
3238+ if (strlen (tmp) > GFC_MAX_SYMBOL_LEN - 11)
3239 {
3240 int h = gfc_hash_value (derived);
3241 sprintf (string, "%X", h);
3242
3243=== modified file 'gcc/fortran/expr.c'
3244--- gcc/fortran/expr.c 2011-03-06 20:15:38 +0000
3245+++ gcc/fortran/expr.c 2011-05-06 12:18:42 +0000
3246@@ -4367,15 +4367,26 @@
3247 gfc_try
3248 gfc_check_vardef_context (gfc_expr* e, bool pointer, const char* context)
3249 {
3250- gfc_symbol* sym;
3251+ gfc_symbol* sym = NULL;
3252 bool is_pointer;
3253 bool check_intentin;
3254 bool ptr_component;
3255 symbol_attribute attr;
3256 gfc_ref* ref;
3257
3258+ if (e->expr_type == EXPR_VARIABLE)
3259+ {
3260+ gcc_assert (e->symtree);
3261+ sym = e->symtree->n.sym;
3262+ }
3263+ else if (e->expr_type == EXPR_FUNCTION)
3264+ {
3265+ gcc_assert (e->symtree);
3266+ sym = e->value.function.esym ? e->value.function.esym : e->symtree->n.sym;
3267+ }
3268+
3269 if (!pointer && e->expr_type == EXPR_FUNCTION
3270- && e->symtree->n.sym->result->attr.pointer)
3271+ && sym->result->attr.pointer)
3272 {
3273 if (!(gfc_option.allow_std & GFC_STD_F2008))
3274 {
3275@@ -4393,9 +4404,6 @@
3276 return FAILURE;
3277 }
3278
3279- gcc_assert (e->symtree);
3280- sym = e->symtree->n.sym;
3281-
3282 if (!pointer && sym->attr.flavor == FL_PARAMETER)
3283 {
3284 if (context)
3285
3286=== modified file 'gcc/fortran/f95-lang.c'
3287--- gcc/fortran/f95-lang.c 2011-02-24 09:53:26 +0000
3288+++ gcc/fortran/f95-lang.c 2011-05-06 12:18:42 +0000
3289@@ -695,10 +695,9 @@
3290 type, integer_type_node, NULL_TREE);
3291 /* type (*) (void) */
3292 fntype[3] = build_function_type_list (type, NULL_TREE);
3293- /* type (*) (&int, type) */
3294- fntype[4] = build_function_type_list (type,
3295+ /* type (*) (type, &int) */
3296+ fntype[4] = build_function_type_list (type, type,
3297 build_pointer_type (integer_type_node),
3298- type,
3299 NULL_TREE);
3300 /* type (*) (int, type) */
3301 fntype[5] = build_function_type_list (type,
3302
3303=== modified file 'gcc/fortran/gfortran.h'
3304--- gcc/fortran/gfortran.h 2011-02-18 19:52:16 +0000
3305+++ gcc/fortran/gfortran.h 2011-05-06 12:18:42 +0000
3306@@ -2190,6 +2190,7 @@
3307 int warn_character_truncation;
3308 int warn_array_temp;
3309 int warn_align_commons;
3310+ int warn_real_q_constant;
3311 int warn_unused_dummy_argument;
3312 int max_errors;
3313
3314
3315=== modified file 'gcc/fortran/gfortran.texi'
3316--- gcc/fortran/gfortran.texi 2011-02-07 19:19:51 +0000
3317+++ gcc/fortran/gfortran.texi 2011-05-06 12:18:42 +0000
3318@@ -1237,6 +1237,7 @@
3319 * Missing period in FORMAT specifications::
3320 * I/O item lists::
3321 * BOZ literal constants::
3322+* @code{Q} exponent-letter::
3323 * Real array indices::
3324 * Unary operators::
3325 * Implicitly convert LOGICAL and INTEGER values::
3326@@ -1427,6 +1428,18 @@
3327 of the @code{READ} statement, and the output item lists of the
3328 @code{WRITE} and @code{PRINT} statements, to start with a comma.
3329
3330+@node @code{Q} exponent-letter
3331+@subsection @code{Q} exponent-letter
3332+@cindex @code{Q} exponent-letter
3333+
3334+GNU Fortran accepts real literal constants with an exponent-letter
3335+of @code{Q}, for example, @code{1.23Q45}. The constant is interpreted
3336+as a @code{REAL(16)} entity on targets that suppports this type. If
3337+the target does not support @code{REAL(16)} but has a @code{REAL(10)}
3338+type, then the real-literal-constant will be interpreted as a
3339+@code{REAL(10)} entity. In the absence of @code{REAL(16)} and
3340+@code{REAL(10)}, an error will occur.
3341+
3342 @node BOZ literal constants
3343 @subsection BOZ literal constants
3344 @cindex BOZ literal constants
3345
3346=== modified file 'gcc/fortran/interface.c'
3347--- gcc/fortran/interface.c 2011-02-16 20:51:56 +0000
3348+++ gcc/fortran/interface.c 2011-05-06 12:18:42 +0000
3349@@ -1128,6 +1128,12 @@
3350 " or all FUNCTIONs", interface_name, &p->sym->declared_at);
3351 return 1;
3352 }
3353+
3354+ if (p->sym->attr.proc == PROC_INTERNAL
3355+ && gfc_notify_std (GFC_STD_GNU, "Extension: Internal procedure '%s' "
3356+ "in %s at %L", p->sym->name, interface_name,
3357+ &p->sym->declared_at) == FAILURE)
3358+ return 1;
3359 }
3360 p = psave;
3361
3362
3363=== modified file 'gcc/fortran/invoke.texi'
3364--- gcc/fortran/invoke.texi 2011-03-03 04:14:29 +0000
3365+++ gcc/fortran/invoke.texi 2011-05-06 12:18:42 +0000
3366@@ -692,7 +692,7 @@
3367 This currently includes @option{-Waliasing}, @option{-Wampersand},
3368 @option{-Wconversion}, @option{-Wsurprising}, @option{-Wintrinsics-std},
3369 @option{-Wno-tabs}, @option{-Wintrinsic-shadow}, @option{-Wline-truncation},
3370-and @option{-Wunused}.
3371+@option{-Wreal-q-constant} and @option{-Wunused}.
3372
3373 @item -Waliasing
3374 @opindex @code{Waliasing}
3375@@ -780,6 +780,12 @@
3376 be used to never trigger this behavior and always link to the intrinsic
3377 regardless of the selected standard.
3378
3379+@item -Wreal-q-constant
3380+@opindex @code{Wreal-q-constant}
3381+@cindex warnings, @code{q} exponent-letter
3382+Produce a warning if a real-literal-constant contains a @code{q}
3383+exponent-letter.
3384+
3385 @item -Wsurprising
3386 @opindex @code{Wsurprising}
3387 @cindex warnings, suspicious code
3388
3389=== modified file 'gcc/fortran/lang.opt'
3390--- gcc/fortran/lang.opt 2010-11-28 13:47:26 +0000
3391+++ gcc/fortran/lang.opt 2011-05-06 12:18:42 +0000
3392@@ -238,6 +238,10 @@
3393 Fortran Warning
3394 Warn on intrinsics not part of the selected standard
3395
3396+Wreal-q-constant
3397+Fortran Warning
3398+Warn about real-literal-constants with 'q' exponent-letter
3399+
3400 Wreturn-type
3401 Fortran Warning
3402 ; Documented in C
3403
3404=== modified file 'gcc/fortran/module.c'
3405--- gcc/fortran/module.c 2011-03-11 14:13:49 +0000
3406+++ gcc/fortran/module.c 2011-05-06 12:18:42 +0000
3407@@ -3011,6 +3011,7 @@
3408 sym->attr.flavor = FL_PROCEDURE;
3409 sym->attr.generic = 1;
3410 e->symtree = gfc_find_symtree (gfc_current_ns->sym_root, fname);
3411+ gfc_commit_symbol (sym);
3412 }
3413 }
3414
3415
3416=== modified file 'gcc/fortran/options.c'
3417--- gcc/fortran/options.c 2011-01-27 07:02:58 +0000
3418+++ gcc/fortran/options.c 2011-05-06 12:18:42 +0000
3419@@ -107,6 +107,7 @@
3420 gfc_option.warn_intrinsic_shadow = 0;
3421 gfc_option.warn_intrinsics_std = 0;
3422 gfc_option.warn_align_commons = 1;
3423+ gfc_option.warn_real_q_constant = 0;
3424 gfc_option.warn_unused_dummy_argument = 0;
3425 gfc_option.max_errors = 25;
3426
3427@@ -445,6 +446,7 @@
3428 gfc_option.warn_intrinsic_shadow = setting;
3429 gfc_option.warn_intrinsics_std = setting;
3430 gfc_option.warn_character_truncation = setting;
3431+ gfc_option.warn_real_q_constant = setting;
3432 gfc_option.warn_unused_dummy_argument = setting;
3433
3434 warn_unused = setting;
3435@@ -643,6 +645,10 @@
3436 gfc_option.warn_align_commons = value;
3437 break;
3438
3439+ case OPT_Wreal_q_constant:
3440+ gfc_option.warn_real_q_constant = value;
3441+ break;
3442+
3443 case OPT_Wunused_dummy_argument:
3444 gfc_option.warn_unused_dummy_argument = value;
3445 break;
3446
3447=== modified file 'gcc/fortran/parse.c'
3448--- gcc/fortran/parse.c 2011-02-14 22:17:44 +0000
3449+++ gcc/fortran/parse.c 2011-05-06 12:18:42 +0000
3450@@ -4191,6 +4191,10 @@
3451 gfc_current_ns = gfc_global_ns_list;
3452 for (; gfc_current_ns; gfc_current_ns = gfc_current_ns->sibling)
3453 {
3454+ if (gfc_current_ns->proc_name
3455+ && gfc_current_ns->proc_name->attr.flavor == FL_MODULE)
3456+ continue; /* Already resolved. */
3457+
3458 if (gfc_current_ns->proc_name)
3459 gfc_current_locus = gfc_current_ns->proc_name->declared_at;
3460 gfc_resolve (gfc_current_ns);
3461@@ -4231,8 +4235,28 @@
3462 gfc_current_ns = gfc_global_ns_list;
3463 gfc_get_errors (NULL, &errors);
3464
3465- for (; !errors && gfc_current_ns; gfc_current_ns = gfc_current_ns->sibling)
3466- {
3467+ /* We first translate all modules to make sure that later parts
3468+ of the program can use the decl. Then we translate the nonmodules. */
3469+
3470+ for (; !errors && gfc_current_ns; gfc_current_ns = gfc_current_ns->sibling)
3471+ {
3472+ if (!gfc_current_ns->proc_name
3473+ || gfc_current_ns->proc_name->attr.flavor != FL_MODULE)
3474+ continue;
3475+
3476+ gfc_current_locus = gfc_current_ns->proc_name->declared_at;
3477+ gfc_derived_types = gfc_current_ns->derived_types;
3478+ gfc_generate_module_code (gfc_current_ns);
3479+ gfc_current_ns->translated = 1;
3480+ }
3481+
3482+ gfc_current_ns = gfc_global_ns_list;
3483+ for (; !errors && gfc_current_ns; gfc_current_ns = gfc_current_ns->sibling)
3484+ {
3485+ if (gfc_current_ns->proc_name
3486+ && gfc_current_ns->proc_name->attr.flavor == FL_MODULE)
3487+ continue;
3488+
3489 gfc_current_locus = gfc_current_ns->proc_name->declared_at;
3490 gfc_derived_types = gfc_current_ns->derived_types;
3491 gfc_generate_code (gfc_current_ns);
3492@@ -4243,7 +4267,16 @@
3493 gfc_current_ns = gfc_global_ns_list;
3494 for (;gfc_current_ns;)
3495 {
3496- gfc_namespace *ns = gfc_current_ns->sibling;
3497+ gfc_namespace *ns;
3498+
3499+ if (gfc_current_ns->proc_name
3500+ && gfc_current_ns->proc_name->attr.flavor == FL_MODULE)
3501+ {
3502+ gfc_current_ns = gfc_current_ns->sibling;
3503+ continue;
3504+ }
3505+
3506+ ns = gfc_current_ns->sibling;
3507 gfc_derived_types = gfc_current_ns->derived_types;
3508 gfc_done_2 ();
3509 gfc_current_ns = ns;
3510@@ -4375,16 +4408,18 @@
3511 if (s.state == COMP_MODULE)
3512 {
3513 gfc_dump_module (s.sym->name, errors_before == errors);
3514- if (errors == 0)
3515- gfc_generate_module_code (gfc_current_ns);
3516- pop_state ();
3517 if (!gfc_option.flag_whole_file)
3518- gfc_done_2 ();
3519+ {
3520+ if (errors == 0)
3521+ gfc_generate_module_code (gfc_current_ns);
3522+ pop_state ();
3523+ gfc_done_2 ();
3524+ }
3525 else
3526 {
3527 gfc_current_ns->derived_types = gfc_derived_types;
3528 gfc_derived_types = NULL;
3529- gfc_current_ns = NULL;
3530+ goto prog_units;
3531 }
3532 }
3533 else
3534@@ -4429,10 +4464,12 @@
3535 = gfc_option.dump_fortran_original ? gfc_global_ns_list : NULL;
3536
3537 for (; gfc_current_ns; gfc_current_ns = gfc_current_ns->sibling)
3538- {
3539- gfc_dump_parse_tree (gfc_current_ns, stdout);
3540- fputs ("------------------------------------------\n\n", stdout);
3541- }
3542+ if (!gfc_current_ns->proc_name
3543+ || gfc_current_ns->proc_name->attr.flavor != FL_MODULE)
3544+ {
3545+ gfc_dump_parse_tree (gfc_current_ns, stdout);
3546+ fputs ("------------------------------------------\n\n", stdout);
3547+ }
3548
3549 /* Do the translation. */
3550 translate_all_program_units (gfc_global_ns_list);
3551
3552=== modified file 'gcc/fortran/primary.c'
3553--- gcc/fortran/primary.c 2011-02-18 22:34:34 +0000
3554+++ gcc/fortran/primary.c 2011-05-06 12:18:42 +0000
3555@@ -541,6 +541,17 @@
3556 goto done;
3557 exp_char = c;
3558
3559+
3560+ if (c == 'q')
3561+ {
3562+ if (gfc_notify_std (GFC_STD_GNU, "Extension: exponent-letter 'q' in "
3563+ "real-literal-constant at %C") == FAILURE)
3564+ return MATCH_ERROR;
3565+ else if (gfc_option.warn_real_q_constant)
3566+ gfc_warning("Extension: exponent-letter 'q' in real-literal-constant "
3567+ "at %C");
3568+ }
3569+
3570 /* Scan exponent. */
3571 c = gfc_next_ascii_char ();
3572 count++;
3573@@ -616,6 +627,30 @@
3574 kind = gfc_default_double_kind;
3575 break;
3576
3577+ case 'q':
3578+ if (kind != -2)
3579+ {
3580+ gfc_error ("Real number at %C has a 'q' exponent and an explicit "
3581+ "kind");
3582+ goto cleanup;
3583+ }
3584+
3585+ /* The maximum possible real kind type parameter is 16. First, try
3586+ that for the kind, then fallback to trying kind=10 (Intel 80 bit)
3587+ extended precision. If neither value works, just given up. */
3588+ kind = 16;
3589+ if (gfc_validate_kind (BT_REAL, kind, true) < 0)
3590+ {
3591+ kind = 10;
3592+ if (gfc_validate_kind (BT_REAL, kind, true) < 0)
3593+ {
3594+ gfc_error ("Invalid exponent-letter 'q' in "
3595+ "real-literal-constant at %C");
3596+ goto cleanup;
3597+ }
3598+ }
3599+ break;
3600+
3601 default:
3602 if (kind == -2)
3603 kind = gfc_default_real_kind;
3604
3605=== modified file 'gcc/fortran/resolve.c'
3606--- gcc/fortran/resolve.c 2011-02-18 12:23:56 +0000
3607+++ gcc/fortran/resolve.c 2011-05-06 12:18:42 +0000
3608@@ -315,7 +315,8 @@
3609 shape until we know if it has the pointer or allocatable attributes.
3610 */
3611 if (sym->as && sym->as->rank > 0 && sym->as->type == AS_DEFERRED
3612- && !(sym->attr.pointer || sym->attr.allocatable))
3613+ && !(sym->attr.pointer || sym->attr.allocatable)
3614+ && sym->attr.flavor != FL_PROCEDURE)
3615 {
3616 sym->as->type = AS_ASSUMED_SHAPE;
3617 for (i = 0; i < sym->as->rank; i++)
3618@@ -2187,7 +2188,7 @@
3619
3620 /* F2003, 12.3.1.1 (3c); F2008, 12.4.2.2 (3c) */
3621 if (sym->ts.type == BT_CHARACTER && sym->attr.if_source != IFSRC_IFBODY
3622- && def_sym->ts.u.cl->length != NULL)
3623+ && def_sym->ts.type == BT_CHARACTER && def_sym->ts.u.cl->length != NULL)
3624 {
3625 gfc_charlen *cl = sym->ts.u.cl;
3626
3627@@ -5674,7 +5675,7 @@
3628 /* Make sure that we have the right specific instance for the name. */
3629 derived = get_declared_from_expr (NULL, NULL, e);
3630
3631- st = gfc_find_typebound_proc (derived, NULL, genname, false, &e->where);
3632+ st = gfc_find_typebound_proc (derived, NULL, genname, true, &e->where);
3633 if (st)
3634 e->value.compcall.tbp = st->n.tb;
3635
3636@@ -9858,6 +9859,11 @@
3637 static gfc_try
3638 resolve_fl_var_and_proc (gfc_symbol *sym, int mp_flag)
3639 {
3640+ /* Avoid double diagnostics for function result symbols. */
3641+ if ((sym->result || sym->attr.result) && !sym->attr.dummy
3642+ && (sym->ns != gfc_current_ns))
3643+ return SUCCESS;
3644+
3645 /* Constraints on deferred shape variable. */
3646 if (sym->as == NULL || sym->as->type != AS_DEFERRED)
3647 {
3648@@ -9885,7 +9891,7 @@
3649 else
3650 {
3651 if (!mp_flag && !sym->attr.allocatable && !sym->attr.pointer
3652- && !sym->attr.dummy && sym->ts.type != BT_CLASS && !sym->assoc)
3653+ && sym->ts.type != BT_CLASS && !sym->assoc)
3654 {
3655 gfc_error ("Array '%s' at %L cannot have a deferred shape",
3656 sym->name, &sym->declared_at);
3657@@ -11946,11 +11952,6 @@
3658 gfc_namespace *ns;
3659 gfc_component *c;
3660
3661- /* Avoid double resolution of function result symbols. */
3662- if ((sym->result || sym->attr.result) && !sym->attr.dummy
3663- && (sym->ns != gfc_current_ns))
3664- return;
3665-
3666 if (sym->attr.flavor == FL_UNKNOWN)
3667 {
3668
3669@@ -13505,6 +13506,10 @@
3670
3671 resolve_contained_functions (ns);
3672
3673+ if (ns->proc_name && ns->proc_name->attr.flavor == FL_PROCEDURE
3674+ && ns->proc_name->attr.if_source == IFSRC_IFBODY)
3675+ resolve_formal_arglist (ns->proc_name);
3676+
3677 gfc_traverse_ns (ns, resolve_bind_c_derived_types);
3678
3679 for (cl = ns->cl_list; cl; cl = cl->next)
3680
3681=== modified file 'gcc/fortran/trans-array.c'
3682--- gcc/fortran/trans-array.c 2011-02-23 22:38:27 +0000
3683+++ gcc/fortran/trans-array.c 2011-05-06 12:18:42 +0000
3684@@ -6707,6 +6707,8 @@
3685 tree stride;
3686 tree cond, cond1, cond3, cond4;
3687 tree tmp;
3688+ gfc_ref *ref;
3689+
3690 if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))
3691 {
3692 tmp = gfc_rank_cst[dim];
3693@@ -6740,6 +6742,14 @@
3694 else if (expr->expr_type == EXPR_VARIABLE)
3695 {
3696 tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
3697+ for (ref = expr->ref; ref; ref = ref->next)
3698+ {
3699+ if (ref->type == REF_COMPONENT
3700+ && ref->u.c.component->as
3701+ && ref->next
3702+ && ref->next->u.ar.type == AR_FULL)
3703+ tmp = TREE_TYPE (ref->u.c.component->backend_decl);
3704+ }
3705 return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
3706 }
3707 else if (expr->expr_type == EXPR_FUNCTION)
3708
3709=== modified file 'gcc/fortran/trans-expr.c'
3710--- gcc/fortran/trans-expr.c 2011-03-12 16:58:33 +0000
3711+++ gcc/fortran/trans-expr.c 2011-05-06 12:18:42 +0000
3712@@ -5444,9 +5444,12 @@
3713 return true;
3714
3715 /* If we have reached here with an intrinsic function, we do not
3716- need a temporary. */
3717+ need a temporary except in the particular case that reallocation
3718+ on assignment is active and the lhs is allocatable and a target. */
3719 if (expr2->value.function.isym)
3720- return false;
3721+ return (gfc_option.flag_realloc_lhs
3722+ && sym->attr.allocatable
3723+ && sym->attr.target);
3724
3725 /* If the LHS is a dummy, we need a temporary if it is not
3726 INTENT(OUT). */
3727@@ -5528,23 +5531,38 @@
3728 }
3729
3730
3731+/* For Assignment to a reallocatable lhs from intrinsic functions,
3732+ replace the se.expr (ie. the result) with a temporary descriptor.
3733+ Null the data field so that the library allocates space for the
3734+ result. Free the data of the original descriptor after the function,
3735+ in case it appears in an argument expression and transfer the
3736+ result to the original descriptor. */
3737+
3738 static void
3739-realloc_lhs_bounds_for_intrinsic_call (gfc_se *se, int rank)
3740+fcncall_realloc_result (gfc_se *se, int rank)
3741 {
3742 tree desc;
3743+ tree res_desc;
3744 tree tmp;
3745 tree offset;
3746 int n;
3747
3748- /* Use the allocation done by the library. */
3749+ /* Use the allocation done by the library. Substitute the lhs
3750+ descriptor with a copy, whose data field is nulled.*/
3751 desc = build_fold_indirect_ref_loc (input_location, se->expr);
3752- tmp = gfc_conv_descriptor_data_get (desc);
3753- tmp = gfc_call_free (fold_convert (pvoid_type_node, tmp));
3754- gfc_add_expr_to_block (&se->pre, tmp);
3755- gfc_conv_descriptor_data_set (&se->pre, desc, null_pointer_node);
3756 /* Unallocated, the descriptor does not have a dtype. */
3757 tmp = gfc_conv_descriptor_dtype (desc);
3758 gfc_add_modify (&se->pre, tmp, gfc_get_dtype (TREE_TYPE (desc)));
3759+ res_desc = gfc_evaluate_now (desc, &se->pre);
3760+ gfc_conv_descriptor_data_set (&se->pre, res_desc, null_pointer_node);
3761+ se->expr = gfc_build_addr_expr (TREE_TYPE (se->expr), res_desc);
3762+
3763+ /* Free the lhs after the function call and copy the result to
3764+ the lhs descriptor. */
3765+ tmp = gfc_conv_descriptor_data_get (desc);
3766+ tmp = gfc_call_free (fold_convert (pvoid_type_node, tmp));
3767+ gfc_add_expr_to_block (&se->post, tmp);
3768+ gfc_add_modify (&se->post, desc, res_desc);
3769
3770 offset = gfc_index_zero_node;
3771 tmp = gfc_index_one_node;
3772@@ -5580,7 +5598,6 @@
3773 }
3774
3775
3776-
3777 /* Try to translate array(:) = func (...), where func is a transformational
3778 array function, without using a temporary. Returns NULL if this isn't the
3779 case. */
3780@@ -5645,7 +5662,7 @@
3781 ss->is_alloc_lhs = 1;
3782 }
3783 else
3784- realloc_lhs_bounds_for_intrinsic_call (&se, expr1->rank);
3785+ fcncall_realloc_result (&se, expr1->rank);
3786 }
3787
3788 gfc_conv_function_expr (&se, expr2);
3789
3790=== modified file 'gcc/gcov-io.c'
3791--- gcc/gcov-io.c 2009-11-25 10:55:54 +0000
3792+++ gcc/gcov-io.c 2011-05-06 12:18:42 +0000
3793@@ -16,8 +16,13 @@
3794 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3795 for more details.
3796
3797-You should have received a copy of the GNU General Public License
3798-along with GCC; see the file COPYING3. If not see
3799+Under Section 7 of GPL version 3, you are granted additional
3800+permissions described in the GCC Runtime Library Exception, version
3801+3.1, as published by the Free Software Foundation.
3802+
3803+You should have received a copy of the GNU General Public License and
3804+a copy of the GCC Runtime Library Exception along with this program;
3805+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
3806 <http://www.gnu.org/licenses/>. */
3807
3808 /* Routines declared in gcov-io.h. This file should be #included by
3809
3810=== modified file 'gcc/gimple-fold.c'
3811--- gcc/gimple-fold.c 2011-01-25 17:08:47 +0000
3812+++ gcc/gimple-fold.c 2011-05-06 12:18:42 +0000
3813@@ -1374,7 +1374,7 @@
3814 is a thunk (other than a this adjustment which is dealt with by DELTA). */
3815
3816 tree
3817-gimple_get_virt_mehtod_for_binfo (HOST_WIDE_INT token, tree known_binfo,
3818+gimple_get_virt_method_for_binfo (HOST_WIDE_INT token, tree known_binfo,
3819 tree *delta, bool refuse_thunks)
3820 {
3821 HOST_WIDE_INT i;
3822@@ -1393,6 +1393,10 @@
3823 v = TREE_CHAIN (v);
3824 }
3825
3826+ /* If BV_VCALL_INDEX is non-NULL, give up. */
3827+ if (TREE_TYPE (v))
3828+ return NULL_TREE;
3829+
3830 fndecl = TREE_VALUE (v);
3831 node = cgraph_get_node_or_alias (fndecl);
3832 if (refuse_thunks
3833
3834=== modified file 'gcc/gimple.c'
3835--- gcc/gimple.c 2010-12-02 12:24:46 +0000
3836+++ gcc/gimple.c 2011-05-06 12:18:42 +0000
3837@@ -1405,7 +1405,8 @@
3838 for (i = 0; i < gimple_call_num_args (stmt); i++)
3839 {
3840 if (wi)
3841- wi->val_only = is_gimple_reg_type (gimple_call_arg (stmt, i));
3842+ wi->val_only
3843+ = is_gimple_reg_type (TREE_TYPE (gimple_call_arg (stmt, i)));
3844 ret = walk_tree (gimple_call_arg_ptr (stmt, i), callback_op, wi,
3845 pset);
3846 if (ret)
3847@@ -1417,7 +1418,8 @@
3848 if (wi)
3849 {
3850 wi->is_lhs = true;
3851- wi->val_only = is_gimple_reg_type (gimple_call_lhs (stmt));
3852+ wi->val_only
3853+ = is_gimple_reg_type (TREE_TYPE (gimple_call_lhs (stmt)));
3854 }
3855
3856 ret = walk_tree (gimple_call_lhs_ptr (stmt), callback_op, wi, pset);
3857@@ -3742,6 +3744,9 @@
3858
3859 if (tree_int_cst_equal (c1, c2) != 1)
3860 goto different_types;
3861+
3862+ if (mode == GTC_MERGE && TREE_PURPOSE (v1) != TREE_PURPOSE (v2))
3863+ goto different_types;
3864 }
3865
3866 /* If one enumeration has more values than the other, they
3867
3868=== modified file 'gcc/gimple.h'
3869--- gcc/gimple.h 2010-12-22 12:56:54 +0000
3870+++ gcc/gimple.h 2011-05-06 12:18:42 +0000
3871@@ -892,7 +892,7 @@
3872 gimple gimple_alloc_stat (enum gimple_code, unsigned MEM_STAT_DECL);
3873 const char *gimple_decl_printable_name (tree, int);
3874 bool gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace);
3875-tree gimple_get_virt_mehtod_for_binfo (HOST_WIDE_INT, tree, tree *, bool);
3876+tree gimple_get_virt_method_for_binfo (HOST_WIDE_INT, tree, tree *, bool);
3877 void gimple_adjust_this_by_delta (gimple_stmt_iterator *, tree);
3878 /* Returns true iff T is a valid GIMPLE statement. */
3879 extern bool is_gimple_stmt (tree);
3880
3881=== modified file 'gcc/gimplify.c'
3882--- gcc/gimplify.c 2011-03-07 15:28:50 +0000
3883+++ gcc/gimplify.c 2011-05-06 12:18:42 +0000
3884@@ -1138,7 +1138,7 @@
3885 struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp;
3886
3887 /* Mark variable as local. */
3888- if (ctx && !is_global_var (t)
3889+ if (ctx && !DECL_EXTERNAL (t)
3890 && (! DECL_SEEN_IN_BIND_EXPR_P (t)
3891 || splay_tree_lookup (ctx->variables,
3892 (splay_tree_key) t) == NULL))
3893
3894=== modified file 'gcc/ipa-cp.c'
3895--- gcc/ipa-cp.c 2011-03-04 23:07:20 +0000
3896+++ gcc/ipa-cp.c 2011-05-06 12:18:42 +0000
3897@@ -1242,7 +1242,7 @@
3898 {
3899 tree binfo = VEC_index (tree, info->params[param_index].types, j);
3900 tree d;
3901- tree t = gimple_get_virt_mehtod_for_binfo (token, binfo, &d, true);
3902+ tree t = gimple_get_virt_method_for_binfo (token, binfo, &d, true);
3903
3904 if (!t)
3905 {
3906@@ -1516,6 +1516,8 @@
3907 ipa_print_all_params (dump_file);
3908 ipa_print_all_jump_functions (dump_file);
3909 }
3910+ ipa_check_create_node_params ();
3911+ ipa_check_create_edge_args ();
3912 /* 2. Do the interprocedural propagation. */
3913 ipcp_iterate_stage ();
3914 /* 3. Insert the constants found to the functions. */
3915@@ -1543,8 +1545,6 @@
3916
3917 if (dump_file)
3918 fprintf (dump_file, "\nIPA constant propagation start:\n");
3919- ipa_check_create_node_params ();
3920- ipa_check_create_edge_args ();
3921 ipa_register_cgraph_hooks ();
3922
3923 for (node = cgraph_nodes; node; node = node->next)
3924
3925=== modified file 'gcc/ipa-inline.c'
3926--- gcc/ipa-inline.c 2011-03-11 10:04:30 +0000
3927+++ gcc/ipa-inline.c 2011-05-06 12:18:42 +0000
3928@@ -1337,6 +1337,9 @@
3929 continue;
3930 }
3931
3932+ if (!e->callee->local.inlinable)
3933+ continue;
3934+
3935 /* We've hit cycle? It is time to give up. */
3936 if (e->callee->aux)
3937 {
3938@@ -2091,11 +2094,7 @@
3939 cgraph_add_function_insertion_hook (&add_new_function, NULL);
3940
3941 if (flag_indirect_inlining)
3942- {
3943- ipa_register_cgraph_hooks ();
3944- ipa_check_create_node_params ();
3945- ipa_check_create_edge_args ();
3946- }
3947+ ipa_register_cgraph_hooks ();
3948
3949 for (node = cgraph_nodes; node; node = node->next)
3950 if (node->analyzed)
3951
3952=== modified file 'gcc/ipa-prop.c'
3953--- gcc/ipa-prop.c 2011-02-11 15:16:46 +0000
3954+++ gcc/ipa-prop.c 2011-05-06 12:18:42 +0000
3955@@ -1522,10 +1522,13 @@
3956 void
3957 ipa_analyze_node (struct cgraph_node *node)
3958 {
3959- struct ipa_node_params *info = IPA_NODE_REF (node);
3960+ struct ipa_node_params *info;
3961 struct param_analysis_info *parms_info;
3962 int i, param_count;
3963
3964+ ipa_check_create_node_params ();
3965+ ipa_check_create_edge_args ();
3966+ info = IPA_NODE_REF (node);
3967 push_cfun (DECL_STRUCT_FUNCTION (node->decl));
3968 current_function_decl = node->decl;
3969 ipa_initialize_node_params (node);
3970@@ -1727,7 +1730,7 @@
3971 type = ie->indirect_info->otr_type;
3972 binfo = get_binfo_at_offset (binfo, ie->indirect_info->anc_offset, type);
3973 if (binfo)
3974- target = gimple_get_virt_mehtod_for_binfo (token, binfo, &delta, true);
3975+ target = gimple_get_virt_method_for_binfo (token, binfo, &delta, true);
3976 else
3977 return NULL;
3978
3979
3980=== modified file 'gcc/lto-cgraph.c'
3981--- gcc/lto-cgraph.c 2011-03-04 18:49:23 +0000
3982+++ gcc/lto-cgraph.c 2011-05-06 12:18:42 +0000
3983@@ -1501,7 +1501,8 @@
3984 During LTRANS we already have values of count_materialization_scale
3985 computed, so just update them. */
3986 for (node = cgraph_nodes; node; node = node->next)
3987- if (node->local.lto_file_data->profile_info.runs)
3988+ if (node->local.lto_file_data
3989+ && node->local.lto_file_data->profile_info.runs)
3990 {
3991 int scale;
3992
3993@@ -1573,8 +1574,8 @@
3994 VEC_free (cgraph_node_ptr, heap, nodes);
3995 VEC_free (varpool_node_ptr, heap, varpool);
3996 }
3997+
3998 merge_profile_summaries (file_data_vec);
3999-
4000
4001 /* Clear out the aux field that was used to store enough state to
4002 tell which nodes should be overwritten. */
4003
4004=== modified file 'gcc/lto-streamer-in.c'
4005--- gcc/lto-streamer-in.c 2011-03-01 09:45:05 +0000
4006+++ gcc/lto-streamer-in.c 2011-05-06 12:18:42 +0000
4007@@ -1596,11 +1596,9 @@
4008
4009 if (TREE_CODE (expr) == FIELD_DECL)
4010 {
4011- unsigned HOST_WIDE_INT off_align;
4012 DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1);
4013 DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1);
4014- off_align = (unsigned HOST_WIDE_INT) bp_unpack_value (bp, 8);
4015- SET_DECL_OFFSET_ALIGN (expr, off_align);
4016+ expr->decl_common.off_align = bp_unpack_value (bp, 8);
4017 }
4018
4019 if (TREE_CODE (expr) == RESULT_DECL
4020
4021=== modified file 'gcc/lto-streamer-out.c'
4022--- gcc/lto-streamer-out.c 2011-03-01 09:45:05 +0000
4023+++ gcc/lto-streamer-out.c 2011-05-06 12:18:42 +0000
4024@@ -414,7 +414,7 @@
4025 {
4026 bp_pack_value (bp, DECL_PACKED (expr), 1);
4027 bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1);
4028- bp_pack_value (bp, DECL_OFFSET_ALIGN (expr), 8);
4029+ bp_pack_value (bp, expr->decl_common.off_align, 8);
4030 }
4031
4032 if (TREE_CODE (expr) == RESULT_DECL
4033
4034=== modified file 'gcc/omp-low.c'
4035--- gcc/omp-low.c 2010-11-30 16:36:19 +0000
4036+++ gcc/omp-low.c 2011-05-06 12:18:42 +0000
4037@@ -5005,6 +5005,8 @@
4038 return false;
4039
4040 decl = built_in_decls[base + index + 1];
4041+ if (decl == NULL_TREE)
4042+ return false;
4043 itype = TREE_TYPE (TREE_TYPE (decl));
4044
4045 if (direct_optab_handler (optab, TYPE_MODE (itype)) == CODE_FOR_nothing)
4046@@ -5056,6 +5058,8 @@
4047 edge e;
4048
4049 cmpxchg = built_in_decls[BUILT_IN_VAL_COMPARE_AND_SWAP_N + index + 1];
4050+ if (cmpxchg == NULL_TREE)
4051+ return false;
4052 type = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (addr)));
4053 itype = TREE_TYPE (TREE_TYPE (cmpxchg));
4054
4055
4056=== modified file 'gcc/po/ChangeLog'
4057--- gcc/po/ChangeLog 2011-04-03 11:30:58 +0000
4058+++ gcc/po/ChangeLog 2011-05-06 12:18:42 +0000
4059@@ -1,3 +1,31 @@
4060+2011-04-26 Joseph Myers <joseph@codesourcery.com>
4061+
4062+ * de.po: Update.
4063+
4064+2011-04-21 Joseph Myers <joseph@codesourcery.com>
4065+
4066+ * de.po: Update.
4067+
4068+2011-04-13 Joseph Myers <joseph@codesourcery.com>
4069+
4070+ * sv.po: Update.
4071+
4072+2011-04-08 Joseph Myers <joseph@codesourcery.com>
4073+
4074+ * de.po: Update.
4075+
4076+2011-04-07 Joseph Myers <joseph@codesourcery.com>
4077+
4078+ * de.po: Update.
4079+
4080+2011-04-05 Joseph Myers <joseph@codesourcery.com>
4081+
4082+ * de.po: Update.
4083+
4084+2011-04-04 Joseph Myers <joseph@codesourcery.com>
4085+
4086+ * es.po: Update.
4087+
4088 2011-04-03 Joseph Myers <joseph@codesourcery.com>
4089
4090 * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po,
4091
4092=== modified file 'gcc/po/de.po'
4093--- gcc/po/de.po 2011-04-03 11:30:58 +0000
4094+++ gcc/po/de.po 2011-05-06 12:18:42 +0000
4095@@ -6,10 +6,10 @@
4096 # Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011.
4097 msgid ""
4098 msgstr ""
4099-"Project-Id-Version: gcc 4.6-b20101218\n"
4100+"Project-Id-Version: gcc 4.6.0\n"
4101 "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
4102 "POT-Creation-Date: 2011-03-24 16:45+0000\n"
4103-"PO-Revision-Date: 2011-03-05 19:50+0100\n"
4104+"PO-Revision-Date: 2011-04-25 19:50+0100\n"
4105 "Last-Translator: Roland Stigge <stigge@antcom.de>\n"
4106 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
4107 "Language: de\n"
4108@@ -1815,9 +1815,8 @@
4109 msgstr "Maximalbetrag des von GCSE zu belegenden Speichers"
4110
4111 #: params.def:222
4112-#, fuzzy
4113 msgid "The maximum ratio of insertions to deletions of expressions in GCSE"
4114-msgstr "Die Höchstzahl der zum Abrollen von Schleifen zu betrachtenden Anweisungen"
4115+msgstr "Das größte Verhältnis von Einfügungen zu Löschungen von Ausdrücken in GCSE"
4116
4117 #: params.def:233
4118 msgid "The threshold ratio for performing partial redundancy elimination after reload"
4119@@ -1992,9 +1991,8 @@
4120 msgstr "Schranke für Größe von Ausdrücken im skalaren Evolutions-Analysierer verwendet"
4121
4122 #: params.def:488
4123-#, fuzzy
4124 msgid "Bound on the complexity of the expressions in the scalar evolutions analyzer"
4125-msgstr "Schranke für Größe von Ausdrücken im skalaren Evolutions-Analysierer verwendet"
4126+msgstr "Schranke für die Komplexität von Ausdrücken im skalaren Evolutions-Analysierer"
4127
4128 #: params.def:493
4129 msgid "Bound on the number of variables in Omega constraint systems"
4130@@ -3442,7 +3440,7 @@
4131 #: config/s390/s390.c:5206
4132 #, c-format
4133 msgid "symbolic memory references are only supported on z10 or later"
4134-msgstr ""
4135+msgstr "symbolische Speicherreferenzen werden nur auf z10 oder neuer unterstützt"
4136
4137 #: config/s390/s390.c:5217
4138 #, c-format
4139@@ -3450,74 +3448,74 @@
4140 msgstr "Adresse kann nicht zerlegt werden"
4141
4142 #: config/s390/s390.c:5276
4143-#, fuzzy, c-format
4144+#, c-format
4145 msgid "invalid comparison operator for 'E' output modifier"
4146-msgstr "ungültiger Operand für Modifizierer »b«"
4147+msgstr "ungültiger Vergleichsoperator für Ausgabemodifizierer »E«"
4148
4149 #: config/s390/s390.c:5297
4150-#, fuzzy, c-format
4151+#, c-format
4152 msgid "invalid reference for 'J' output modifier"
4153-msgstr "ungültiger Operand für Modifizierer »b«"
4154+msgstr "ungültige Referenz für Ausgabemodifizierer »J«"
4155
4156 #: config/s390/s390.c:5311
4157 #, c-format
4158 msgid "memory reference expected for 'O' output modifier"
4159-msgstr ""
4160+msgstr "Speicherreferenz für Ausgabemodifizierer »O« erwartet"
4161
4162 #: config/s390/s390.c:5322
4163-#, fuzzy, c-format
4164+#, c-format
4165 msgid "invalid address for 'O' output modifier"
4166-msgstr "ungültiger Operand für Modifizierer »O«"
4167+msgstr "ungültige Adresse für Ausgabemodifizierer »O«"
4168
4169 #: config/s390/s390.c:5340
4170 #, c-format
4171 msgid "memory reference expected for 'R' output modifier"
4172-msgstr ""
4173+msgstr "Speicherreferenz für Ausgabemodifizierer »R« erwartet"
4174
4175 #: config/s390/s390.c:5351
4176-#, fuzzy, c-format
4177+#, c-format
4178 msgid "invalid address for 'R' output modifier"
4179-msgstr "ungültiger Operand für Modifizierer »b«"
4180+msgstr "ungültige Adresse für Ausgabemodifizierer »R«"
4181
4182 #: config/s390/s390.c:5369
4183 #, c-format
4184 msgid "memory reference expected for 'S' output modifier"
4185-msgstr ""
4186+msgstr "Speicherreferenz für Ausgabemodifizierer »S« erwartet"
4187
4188 #: config/s390/s390.c:5379
4189-#, fuzzy, c-format
4190+#, c-format
4191 msgid "invalid address for 'S' output modifier"
4192-msgstr "ungültiger Operand für Modifizierer »b«"
4193+msgstr "ungültige Adresse für Ausgabemodifizierer »S«"
4194
4195 #: config/s390/s390.c:5399
4196 #, c-format
4197 msgid "register or memory expression expected for 'N' output modifier"
4198-msgstr ""
4199+msgstr "Register oder Speicherausdruck für Ausgabemodifizierer »N« erwartet"
4200
4201 #: config/s390/s390.c:5409
4202 #, c-format
4203 msgid "register or memory expression expected for 'M' output modifier"
4204-msgstr ""
4205+msgstr "Register oder Speicherausdruck für Ausgabemodifizierer »M« erwartet"
4206
4207 #: config/s390/s390.c:5474
4208-#, fuzzy, c-format
4209+#, c-format
4210 msgid "invalid constant - try using an output modifier"
4211-msgstr "Ungültiger Operanden-Ausgabecode"
4212+msgstr "Ungültige Konstante - anderen Ausgabemodifizierer probieren"
4213
4214 #: config/s390/s390.c:5477
4215-#, fuzzy, c-format
4216+#, c-format
4217 msgid "invalid constant for output modifier '%c'"
4218-msgstr "ungültiger Operand für Modifizierer »o«"
4219+msgstr "ungültige Konstante für Ausgabemodifizierer »%c«"
4220
4221 #: config/s390/s390.c:5484
4222-#, fuzzy, c-format
4223+#, c-format
4224 msgid "invalid expression - try using an output modifier"
4225-msgstr "ungültiger Ausdruck für Min-L-Wert"
4226+msgstr "ungültiger Ausdruck - anderen Ausgabemodifizierer probieren"
4227
4228 #: config/s390/s390.c:5487
4229-#, fuzzy, c-format
4230+#, c-format
4231 msgid "invalid expression for output modifier '%c'"
4232-msgstr "ungültiger Operand für Modifizierer »o«"
4233+msgstr "ungültiger Ausdruck für Ausgabemodifizierer »%c«"
4234
4235 #: config/score/score7.c:1207
4236 #, c-format
4237@@ -5556,9 +5554,8 @@
4238 msgstr "Zeiger sowohl in a0 als auch in d0 zurück geben"
4239
4240 #: config/mn10300/mn10300.opt:56
4241-#, fuzzy
4242 msgid "Allow gcc to generate LIW instructions"
4243-msgstr "GCC erlauben, den repeat/erepeat-Befehl zu verwenden"
4244+msgstr "GCC erlauben, LIW-Befehle zu verwenden"
4245
4246 #: config/s390/tpf.opt:23
4247 msgid "Enable TPF-OS tracing code"
4248@@ -6372,9 +6369,8 @@
4249 msgstr "Eingebaute SSE4.1- und SSE4.2-Funktionen und Codeerzeugung nicht unterstützen"
4250
4251 #: config/i386/i386.opt:328
4252-#, fuzzy
4253 msgid "%<-msse5%> was removed"
4254-msgstr "»-msse5« wurde entfernt"
4255+msgstr "%<-msse5%> wurde entfernt"
4256
4257 #: config/i386/i386.opt:333
4258 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation"
4259@@ -8180,13 +8176,12 @@
4260 msgstr "Maximalgröße der für den TDA-Bereich geeigneten Daten setzen"
4261
4262 #: config/v850/v850.opt:71
4263-#, fuzzy
4264 msgid "Do not enforce strict alignment"
4265-msgstr "Genaue Ausrichtung erzwingen"
4266+msgstr "Genaue Ausrichtung nicht erzwingen"
4267
4268 #: config/v850/v850.opt:75
4269 msgid "Put jump tables for switch statements into the .data section rather than the .code section"
4270-msgstr ""
4271+msgstr "Sprungtabellen für »switch«-Anweisungen in den .data-Abschnitt statt in den .code-Abschnitt einfügen"
4272
4273 #: config/v850/v850.opt:82
4274 msgid "Compile for the v850 processor"
4275@@ -8201,9 +8196,8 @@
4276 msgstr "Für v850e1-Prozessor übersetzen"
4277
4278 #: config/v850/v850.opt:94
4279-#, fuzzy
4280 msgid "Compile for the v850es variant of the v850e1"
4281-msgstr "Für v850e-Prozessor übersetzen"
4282+msgstr "Für die v850es-Variante des v850e1 übersetzen"
4283
4284 #: config/v850/v850.opt:98
4285 msgid "Compile for the v850e2 processor"
4286@@ -8726,13 +8720,12 @@
4287 msgstr "Verwendet »multiply high«-Befehle für den oberen Teil einer 32x32 Multiplikation"
4288
4289 #: config/microblaze/microblaze.opt:92
4290-#, fuzzy
4291 msgid "Use hardware floating point conversion instructions"
4292-msgstr "Hardware-Fließkommakonvertierungbefehle verwenden"
4293+msgstr "Hardware-Gleitkommakonvertierungbefehle verwenden"
4294
4295 #: config/microblaze/microblaze.opt:96
4296 msgid "Use hardware floating point square root instruction"
4297-msgstr "Verwendet Hardware Fließkomma Wurzel-Instruktion"
4298+msgstr "Verwendet Hardware-Gleitkomma-Wurzel-Instruktion"
4299
4300 #: config/microblaze/microblaze.opt:100
4301 msgid "Description for mxl-mode-executable"
4302@@ -10035,9 +10028,8 @@
4303 msgstr "Nur die zweite Kompilierung von -fcompare-debug laufen lassen"
4304
4305 #: common.opt:875
4306-#, fuzzy
4307 msgid "Perform comparison elimination after register allocation has finished"
4308-msgstr "Beseitigung globaler gemeinsamer Teilausdrücke nach Registerreservierung durchführen"
4309+msgstr "Beseitigung von Vergleichen nach Registerreservierung durchführen"
4310
4311 #: common.opt:879
4312 msgid "Do not perform optimizations increasing noticeably stack usage"
4313@@ -10092,9 +10084,8 @@
4314 msgstr "Unnötige Nullzeigerprügungen löschen"
4315
4316 #: common.opt:937
4317-#, fuzzy
4318 msgid "Try to convert virtual calls to direct ones."
4319-msgstr "Dem Linker erlauben, PIC-Aufrufe in direkte Aufrufe umzuwandeln"
4320+msgstr "Versuchen, virtuelle Sprünge in direkte umzuwandeln."
4321
4322 #: common.opt:941
4323 msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics"
4324@@ -10930,9 +10921,8 @@
4325 msgstr "Bewegung der Schleifeninvariante auf Bäumen einschalten"
4326
4327 #: common.opt:1924
4328-#, fuzzy
4329 msgid "Enable loop interchange transforms. Same as -floop-interchange"
4330-msgstr "Transformation des Loop Interchange einschalten"
4331+msgstr "Umwandlungen mit Schleifenaustausch einschalten. Das Gleiche wie -floop-interchange"
4332
4333 #: common.opt:1928
4334 msgid "Create canonical induction variables in loops"
4335@@ -11297,14 +11287,12 @@
4336 msgstr "Argument muss komplexen Typen haben"
4337
4338 #: go/gofrontend/expressions.cc:7578
4339-#, fuzzy
4340 msgid "complex arguments must have identical types"
4341-msgstr "cmplx-Argumente müssen identische Typen haben"
4342+msgstr "komplexe Argumente müssen identische Typen haben"
4343
4344 #: go/gofrontend/expressions.cc:7580
4345-#, fuzzy
4346 msgid "complex arguments must have floating-point type"
4347-msgstr "cmplx-Argumente müssen Gleitkommatypen haben"
4348+msgstr "komplexe Argumente müssen Gleitkommatyp haben"
4349
4350 #: go/gofrontend/expressions.cc:8560
4351 msgid "expected function"
4352@@ -11920,9 +11908,9 @@
4353 msgstr "Redefinition des typedef %q+D mit anderem Typ"
4354
4355 #: c-decl.c:1818
4356-#, fuzzy, gcc-internal-format
4357+#, gcc-internal-format
4358 msgid "redefinition of typedef %q+D with variably modified type"
4359-msgstr "Redefinition des typedef %q+D mit anderem Typ"
4360+msgstr "Redefinition des typedef %q+D mit variabel modifiziertem Typ"
4361
4362 #: c-decl.c:1825
4363 #, gcc-internal-format
4364@@ -13299,9 +13287,9 @@
4365 msgstr "Präfixattribute werden für Implementierungen ignoriert"
4366
4367 #: c-parser.c:1554
4368-#, fuzzy, gcc-internal-format
4369+#, gcc-internal-format
4370 msgid "unexpected attribute"
4371-msgstr "Attributbitname erwartet"
4372+msgstr "unerwartetes Attribut"
4373
4374 #: c-parser.c:1596
4375 #, gcc-internal-format
4376@@ -13650,14 +13638,14 @@
4377 msgstr "unbekanntes Eigenschaftsattribut"
4378
4379 #: c-parser.c:7964 cp/parser.c:23157
4380-#, fuzzy, gcc-internal-format
4381+#, gcc-internal-format
4382 msgid "missing %<=%> (after %<getter%> attribute)"
4383-msgstr "fehlendes %<(%> hinter %<#pragma pack%> - ignoriert"
4384+msgstr "fehlendes %<=%> (hinter Attribut %<getter%>)"
4385
4386 #: c-parser.c:7967 cp/parser.c:23160
4387-#, fuzzy, gcc-internal-format
4388+#, gcc-internal-format
4389 msgid "missing %<=%> (after %<setter%> attribute)"
4390-msgstr "fehlendes %<(%> hinter %<#pragma pack%> - ignoriert"
4391+msgstr "fehlendes %<=%> (hinter Attribut %<setter%>)"
4392
4393 #: c-parser.c:7981 cp/parser.c:23174
4394 #, gcc-internal-format
4395@@ -13705,9 +13693,9 @@
4396 msgstr "zu viele %qs-Klauseln"
4397
4398 #: c-parser.c:8481 cp/parser.c:23550
4399-#, fuzzy, gcc-internal-format
4400+#, gcc-internal-format
4401 msgid "collapse argument needs positive constant integer expression"
4402-msgstr "Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken"
4403+msgstr "Collapse-Argument erfordert positiven konstanten Ganzzahlausdruck"
4404
4405 #: c-parser.c:8547 cp/parser.c:23601
4406 #, gcc-internal-format
4407@@ -13720,9 +13708,9 @@
4408 msgstr "Ganzzahlausdruck erwartet"
4409
4410 #: c-parser.c:8650
4411-#, fuzzy, gcc-internal-format
4412+#, gcc-internal-format
4413 msgid "%<num_threads%> value must be positive"
4414-msgstr "%HWert %<num_threads%> muss positiv sein"
4415+msgstr "Wert von %<num_threads%> muss positiv sein"
4416
4417 #: c-parser.c:8733 cp/parser.c:23753
4418 #, gcc-internal-format
4419@@ -13735,9 +13723,9 @@
4420 msgstr "Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>"
4421
4422 #: c-parser.c:8825 cp/parser.c:23841
4423-#, fuzzy, gcc-internal-format
4424+#, gcc-internal-format
4425 msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
4426-msgstr "Ablauf %<runtime%> akzeptiert keinen Parameter %<chunk_size%>"
4427+msgstr "Ablauf %<auto%> akzeptiert keinen Parameter %<chunk_size%>"
4428
4429 #: c-parser.c:8843 cp/parser.c:23857
4430 #, gcc-internal-format
4431@@ -13777,22 +13765,22 @@
4432 #: c-parser.c:9363
4433 #, gcc-internal-format
4434 msgid "not enough perfectly nested loops"
4435-msgstr ""
4436+msgstr "nicht genügend perfekt geschachtelte Schleifen"
4437
4438 #: c-parser.c:9416 cp/parser.c:24720
4439 #, gcc-internal-format
4440 msgid "collapsed loops not perfectly nested"
4441-msgstr ""
4442+msgstr "zusammengelegte Schleifen sind nicht perfekt geschachtelt"
4443
4444 #: c-parser.c:9454 cp/parser.c:24564 cp/parser.c:24602 cp/pt.c:11892
4445-#, fuzzy, gcc-internal-format
4446+#, gcc-internal-format
4447 msgid "iteration variable %qD should not be firstprivate"
4448-msgstr "Schleifenvariable %qs sollte nicht »firstprivate« sein"
4449+msgstr "Schleifenvariable %qD sollte nicht »firstprivate« sein"
4450
4451 #: c-parser.c:9899
4452-#, fuzzy, gcc-internal-format
4453+#, gcc-internal-format
4454 msgid "%qD is not a variable"
4455-msgstr "»%s« bei %C ist keine Variable"
4456+msgstr "%qD ist keine Variable"
4457
4458 #: c-parser.c:9901 cp/semantics.c:4002
4459 #, gcc-internal-format
4460@@ -13843,7 +13831,7 @@
4461 #: c-typeck.c:319
4462 #, gcc-internal-format
4463 msgid "%qT and %qT are in disjoint named address spaces"
4464-msgstr ""
4465+msgstr "%qT und %qT sind in disjunkt benannten Adressräumen"
4466
4467 #: c-typeck.c:561 c-typeck.c:586
4468 #, gcc-internal-format
4469@@ -13871,9 +13859,9 @@
4470 msgstr "Typen nicht ganz kompatibel"
4471
4472 #: c-typeck.c:1220
4473-#, fuzzy, gcc-internal-format
4474+#, gcc-internal-format
4475 msgid "pointer target types incompatible in C++"
4476-msgstr "Zeiger auf Elementtyp %qT mit Objekttyp %qT inkompatibel"
4477+msgstr "Zeiger-Zieltypen sind in C++ inkompatibel"
4478
4479 #: c-typeck.c:1552
4480 #, gcc-internal-format
4481@@ -13906,9 +13894,9 @@
4482 msgstr "Dereferenzierung eines %<void *%>-Zeigers"
4483
4484 #: c-typeck.c:2307
4485-#, fuzzy, gcc-internal-format
4486+#, gcc-internal-format
4487 msgid "subscripted value is neither array nor pointer nor vector"
4488-msgstr "indizierter Wert ist weder ein Feld noch ein Zeiger"
4489+msgstr "indizierter Wert ist weder Feld noch Zeiger noch Vektor"
4490
4491 #: c-typeck.c:2319 cp/typeck.c:2854 cp/typeck.c:2948
4492 #, gcc-internal-format
4493@@ -13921,9 +13909,9 @@
4494 msgstr "indizierter Wert ist Zeiger auf Funktion"
4495
4496 #: c-typeck.c:2350
4497-#, fuzzy, gcc-internal-format
4498+#, gcc-internal-format
4499 msgid "index value is out of bound"
4500-msgstr "Index in Dimension %d ist außerhalb der Grenzen bei %L"
4501+msgstr "Indexwert ist außerhalb der Grenzen"
4502
4503 #: c-typeck.c:2394
4504 #, gcc-internal-format
4505@@ -13938,7 +13926,7 @@
4506 #: c-typeck.c:2505
4507 #, gcc-internal-format
4508 msgid "enum constant defined here"
4509-msgstr ""
4510+msgstr "enum-Konstante hier definiert"
4511
4512 #: c-typeck.c:2736
4513 #, gcc-internal-format
4514@@ -13954,14 +13942,14 @@
4515 msgstr "Funktion über nicht kompatiblen Typen aufgerufen"
4516
4517 #: c-typeck.c:2786 c-typeck.c:2840
4518-#, fuzzy, gcc-internal-format
4519+#, gcc-internal-format
4520 msgid "function with qualified void return type called"
4521-msgstr "Funktionsdefinition hat qualifizierten void-Rückgabetypen"
4522+msgstr "Funktion mit qualifiziertem void-Rückgabetypen aufgerufen"
4523
4524 #: c-typeck.c:2930
4525-#, fuzzy, gcc-internal-format
4526+#, gcc-internal-format
4527 msgid "too many arguments to method %qE"
4528-msgstr "zu viele Argumente für Funktion %qE"
4529+msgstr "zu viele Argumente für Methode %qE"
4530
4531 #: c-typeck.c:2933 c-family/c-common.c:8039
4532 #, gcc-internal-format
4533@@ -13969,9 +13957,9 @@
4534 msgstr "zu viele Argumente für Funktion %qE"
4535
4536 #: c-typeck.c:2936 c-typeck.c:3170 cp/decl2.c:4169 cp/typeck.c:3304
4537-#, fuzzy, gcc-internal-format
4538+#, gcc-internal-format
4539 msgid "declared here"
4540-msgstr "%q+D hier deklariert"
4541+msgstr "hier deklariert"
4542
4543 #: c-typeck.c:2971
4544 #, gcc-internal-format, gfc-internal-format
4545@@ -14034,9 +14022,9 @@
4546 msgstr "Ãœbergabe des Arguments %d von %qE als vorzeichenbehaftet aufgrund des Prototyps"
4547
4548 #: c-typeck.c:3135 cp/call.c:5666
4549-#, fuzzy, gcc-internal-format
4550+#, gcc-internal-format
4551 msgid "implicit conversion from %qT to %qT when passing argument to function"
4552-msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
4553+msgstr "implizite Umwandlung von %qT in %qT bei Ãœbergabe von Argument an Funktion"
4554
4555 #: c-typeck.c:3168 c-family/c-common.c:8877 c-family/c-common.c:8926
4556 #, gcc-internal-format
4557@@ -14049,9 +14037,9 @@
4558 msgstr "Vergleich mit Zeichenkettenliteral führt zu unspezifiziertem Verhalten"
4559
4560 #: c-typeck.c:3269
4561-#, fuzzy, gcc-internal-format
4562+#, gcc-internal-format
4563 msgid "comparison between %qT and %qT"
4564-msgstr "Vergleich zwischen %q#T und %q#T"
4565+msgstr "Vergleich zwischen %qT und %qT"
4566
4567 #: c-typeck.c:3321
4568 #, gcc-internal-format
4569@@ -14076,12 +14064,12 @@
4570 #: c-typeck.c:3578
4571 #, gcc-internal-format
4572 msgid "increment of enumeration value is invalid in C++"
4573-msgstr ""
4574+msgstr "Schrittweite von Aufzählungswerten (enum) ist in C++ ungültig"
4575
4576 #: c-typeck.c:3581
4577 #, gcc-internal-format
4578 msgid "decrement of enumeration value is invalid in C++"
4579-msgstr ""
4580+msgstr "Verringerung von Aufzählungswerten (enum) ist in C++ ungültig"
4581
4582 #: c-typeck.c:3594
4583 #, gcc-internal-format
4584@@ -14109,9 +14097,9 @@
4585 msgstr "Verminderung eines Zeigers auf unbekannte Struktur"
4586
4587 #: c-typeck.c:3722
4588-#, fuzzy, gcc-internal-format
4589+#, gcc-internal-format
4590 msgid "taking address of expression of type %<void%>"
4591-msgstr "statischer Zugriff auf Objekt des Typs %<id%>"
4592+msgstr "Adresse des Ausdrucks des Typs %<void%> wird genommen"
4593
4594 #: c-typeck.c:3892 c-family/c-common.c:8633
4595 #, gcc-internal-format
4596@@ -14159,9 +14147,9 @@
4597 msgstr "Nicht-L-Wert-Feld in bedingtem Ausdruck"
4598
4599 #: c-typeck.c:4127 cp/call.c:4337
4600-#, fuzzy, gcc-internal-format
4601+#, gcc-internal-format
4602 msgid "implicit conversion from %qT to %qT to match other result of conditional"
4603-msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
4604+msgstr "implizite Umwandlung von %qT in %qT um an anderes Ergebnis von Bedingung anzupassen"
4605
4606 #: c-typeck.c:4201
4607 #, gcc-internal-format
4608@@ -14169,9 +14157,9 @@
4609 msgstr "ISO-C verbietet bedingten Ausdruck mit nur einer void-Seite"
4610
4611 #: c-typeck.c:4218
4612-#, fuzzy, gcc-internal-format
4613+#, gcc-internal-format
4614 msgid "pointers to disjoint address spaces used in conditional expression"
4615-msgstr "Zeigertyp passt nicht in bedingtem Ausdruck"
4616+msgstr "Zeiger auf disjunkte Adressräume in bedingtem Ausdruck verwendet"
4617
4618 #: c-typeck.c:4226 c-typeck.c:4235
4619 #, gcc-internal-format
4620@@ -14199,19 +14187,17 @@
4621 msgstr "linker Operand des Komma-Ausdrucks hat keinen Effekt"
4622
4623 #: c-typeck.c:4446
4624-#, fuzzy
4625 msgid "cast adds %q#v qualifier to function type"
4626-msgstr "Typkonvertierung fügt neue Typqualifizierer zu Funktionstyp hinzu"
4627+msgstr "Typumwandlung fügt Qualifizierer %q#v zu Funktionstyp hinzu"
4628
4629 #: c-typeck.c:4452
4630-#, fuzzy
4631 msgid "cast discards %q#v qualifier from pointer target type"
4632-msgstr "Typkonvertierung streicht Qualifizierer von Zeiger-Zieltyp"
4633+msgstr "Typumwandlung streicht Qualifizierer %q#v von Zeiger-Zieltyp"
4634
4635 #: c-typeck.c:4487
4636 #, gcc-internal-format
4637 msgid "to be safe all intermediate pointers in cast from %qT to %qT must be %<const%> qualified"
4638-msgstr ""
4639+msgstr "zur Sicherheit müssen alle vorübergehenden Zeiger in Umwandlung von %qT in %qT mit %<const%> qualifiziert sein"
4640
4641 #: c-typeck.c:4524
4642 #, gcc-internal-format
4643@@ -14286,12 +14272,12 @@
4644 #: c-typeck.c:4769
4645 #, gcc-internal-format
4646 msgid "defining a type in a cast is invalid in C++"
4647-msgstr ""
4648+msgstr "Definition eines Typs in einer Umwandlung ist in C++ ungültig"
4649
4650 #: c-typeck.c:4908 c-typeck.c:5205
4651 #, gcc-internal-format
4652 msgid "enum conversion in assignment is invalid in C++"
4653-msgstr ""
4654+msgstr "enum-Umwandlung in Zuweisung ist in C++ ungültig"
4655
4656 #. This macro is used to emit diagnostics to ensure that all format
4657 #. strings are complete sentences, visible to gettext and checked at
4658@@ -14301,24 +14287,24 @@
4659 #. compile time. It is the same as WARN_FOR_ASSIGNMENT but with an
4660 #. extra parameter to enumerate qualifiers.
4661 #: c-typeck.c:5113 c-typeck.c:5143 c-typeck.c:5670
4662-#, fuzzy, gcc-internal-format
4663+#, gcc-internal-format
4664 msgid "expected %qT but argument is of type %qT"
4665-msgstr "format %q.*s erwartet Typ %<%T%s%>, aber Argument %d hat Typ %qT"
4666+msgstr "%qT erwartet, aber Argument hat Typ %qT"
4667
4668 #: c-typeck.c:5203
4669-#, fuzzy, gcc-internal-format
4670+#, gcc-internal-format
4671 msgid "enum conversion when passing argument %d of %qE is invalid in C++"
4672-msgstr "Zeigerziele bei Ãœbergabe des Arguments %d von %qE unterscheiden sich im Vorzeichenbesitz"
4673+msgstr "Enum-Umwandlung bei Übergabe des Arguments %d von %qE ist in C++ ungültig"
4674
4675 #: c-typeck.c:5207 c-typeck.c:7762
4676 #, gcc-internal-format
4677 msgid "enum conversion in initialization is invalid in C++"
4678-msgstr ""
4679+msgstr "enum-Umwandlung in Initialisierung ist in C++ ungültig"
4680
4681 #: c-typeck.c:5209
4682 #, gcc-internal-format
4683 msgid "enum conversion in return is invalid in C++"
4684-msgstr ""
4685+msgstr "enum-Umwandlung in Rückgabe ist in C++ ungültig"
4686
4687 #: c-typeck.c:5238
4688 #, gcc-internal-format
4689@@ -14326,44 +14312,36 @@
4690 msgstr "R-Wert kann nicht an Referenzparameter übergeben werden"
4691
4692 #: c-typeck.c:5368 c-typeck.c:5591
4693-#, fuzzy
4694 msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified"
4695-msgstr "Ãœbergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
4696+msgstr "Ãœbergabe des Arguments %d von %qE erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
4697
4698 #: c-typeck.c:5371 c-typeck.c:5594
4699-#, fuzzy
4700 msgid "assignment makes %q#v qualified function pointer from unqualified"
4701-msgstr "Zuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
4702+msgstr "Zuweisung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
4703
4704 #: c-typeck.c:5374 c-typeck.c:5596
4705-#, fuzzy
4706 msgid "initialization makes %q#v qualified function pointer from unqualified"
4707-msgstr "Initialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
4708+msgstr "Initialisierung erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
4709
4710 #: c-typeck.c:5377 c-typeck.c:5598
4711-#, fuzzy
4712 msgid "return makes %q#v qualified function pointer from unqualified"
4713-msgstr "return erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger"
4714+msgstr "return erzeugt aus unqualifiziertem einen qualifizierten Funktionszeiger %q#v"
4715
4716 #: c-typeck.c:5384 c-typeck.c:5554
4717-#, fuzzy
4718 msgid "passing argument %d of %qE discards %qv qualifier from pointer target type"
4719-msgstr "Ãœbergabe des Arguments %d von %qE entfernt Kennzeichner von Zeiger-Ziel-Typ"
4720+msgstr "Ãœbergabe des Arguments %d von %qE entfernt Kennzeichner %qv von Zeiger-Ziel-Typ"
4721
4722 #: c-typeck.c:5386 c-typeck.c:5556
4723-#, fuzzy
4724 msgid "assignment discards %qv qualifier from pointer target type"
4725-msgstr "Zuweisung streicht Qualifizierer von Zeiger-Zieltyp"
4726+msgstr "Zuweisung streicht Qualifizierer %qv von Zeiger-Zieltyp"
4727
4728 #: c-typeck.c:5388 c-typeck.c:5558
4729-#, fuzzy
4730 msgid "initialization discards %qv qualifier from pointer target type"
4731-msgstr "Initialisierung streicht Qualifizierer von Zeiger-Zieltyp"
4732+msgstr "Initialisierung streicht Qualifizierer %qv von Zeiger-Zieltyp"
4733
4734 #: c-typeck.c:5390 c-typeck.c:5560
4735-#, fuzzy
4736 msgid "return discards %qv qualifier from pointer target type"
4737-msgstr "return streicht Qualifizierer von Zeiger-Zieltyp"
4738+msgstr "return streicht Qualifizierer %qv von Zeiger-Zieltyp"
4739
4740 #: c-typeck.c:5399
4741 #, gcc-internal-format
4742@@ -14376,24 +14354,24 @@
4743 msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
4744
4745 #: c-typeck.c:5466
4746-#, fuzzy, gcc-internal-format
4747+#, gcc-internal-format
4748 msgid "passing argument %d of %qE from pointer to non-enclosed address space"
4749-msgstr "Ãœbergabe des Arguments %d von %qE von inkompatiblem Zeigertyp"
4750+msgstr "Ãœbergabe des Arguments %d von %qE von Zeiger auf nicht eingeschlossenen Adressbereich"
4751
4752 #: c-typeck.c:5470
4753-#, fuzzy, gcc-internal-format
4754+#, gcc-internal-format
4755 msgid "assignment from pointer to non-enclosed address space"
4756-msgstr "Typkonvertierung von Zeiger auf Ganzzahl anderer Breite"
4757+msgstr "Zuweisung von Zeiger auf nicht eingeschlossenen Adressbereich"
4758
4759 #: c-typeck.c:5474
4760-#, fuzzy, gcc-internal-format
4761+#, gcc-internal-format
4762 msgid "initialization from pointer to non-enclosed address space"
4763-msgstr "Initialisierung von inkompatiblem Zeigertyp"
4764+msgstr "Initialisierung von Zeiger auf nicht enthaltenen Adressraum"
4765
4766 #: c-typeck.c:5478
4767 #, gcc-internal-format
4768 msgid "return from pointer to non-enclosed address space"
4769-msgstr ""
4770+msgstr "Rückgabe von Pointer auf nicht enthaltenen Adressraum"
4771
4772 #: c-typeck.c:5496
4773 #, gcc-internal-format
4774@@ -14528,19 +14506,19 @@
4775 msgstr "Inkompatibler Typ für Argument %d von %qE"
4776
4777 #: c-typeck.c:5673
4778-#, fuzzy, gcc-internal-format
4779+#, gcc-internal-format
4780 msgid "incompatible types when assigning to type %qT from type %qT"
4781-msgstr "unverträgliche Typen in Zuweisung von %qT an %qT"
4782+msgstr "unverträgliche Typen bei Zuweisung an Typ %qT von Typ %qT"
4783
4784 #: c-typeck.c:5678
4785-#, fuzzy, gcc-internal-format
4786+#, gcc-internal-format
4787 msgid "incompatible types when initializing type %qT using type %qT"
4788-msgstr "inkompatible Typen in Initialisierung"
4789+msgstr "inkompatible Typen bei Initialisierung von Typ %qT mit Typ %qT"
4790
4791 #: c-typeck.c:5683
4792-#, fuzzy, gcc-internal-format
4793+#, gcc-internal-format
4794 msgid "incompatible types when returning type %qT but %qT was expected"
4795-msgstr "unverträgliche Typen in Zuweisung von %qT an %qT"
4796+msgstr "unverträgliche Typen bei Rückgabe von Typ %qT, aber %qT wurde erwartet"
4797
4798 #: c-typeck.c:5747
4799 #, gcc-internal-format
4800@@ -14568,14 +14546,14 @@
4801 msgstr "char-Feld mit wide-Zeichenkette initialisiert"
4802
4803 #: c-typeck.c:6062
4804-#, fuzzy, gcc-internal-format
4805+#, gcc-internal-format
4806 msgid "wide character array initialized from non-wide string"
4807-msgstr "wchar_t-Feld mit Nicht-wide-Zeichenkette initialisiert"
4808+msgstr "Feld von wide character mit Nicht-wide-Zeichenkette initialisiert"
4809
4810 #: c-typeck.c:6068
4811-#, fuzzy, gcc-internal-format
4812+#, gcc-internal-format
4813 msgid "wide character array initialized from incompatible wide string"
4814-msgstr "wchar_t-Feld mit Nicht-wide-Zeichenkette initialisiert"
4815+msgstr "Feld von wide character mit unverträglicher wide-Zeichenkette initialisiert"
4816
4817 #: c-typeck.c:6102
4818 #, gcc-internal-format
4819@@ -14594,7 +14572,7 @@
4820 msgstr "Initialisierungselement ist nicht konstant"
4821
4822 #: c-typeck.c:6226 c-typeck.c:6272 c-typeck.c:7745
4823-#, fuzzy, gcc-internal-format
4824+#, gcc-internal-format
4825 msgid "initializer element is not a constant expression"
4826 msgstr "Initialisierungselement ist nicht konstant"
4827
4828@@ -14664,9 +14642,9 @@
4829 msgstr "Feldindex in Initialisierung hat nicht Ganzzahltyp"
4830
4831 #: c-typeck.c:7148 c-typeck.c:7157
4832-#, fuzzy, gcc-internal-format
4833+#, gcc-internal-format
4834 msgid "array index in initializer is not an integer constant expression"
4835-msgstr "Feldindex in Initialisierung hat nicht Ganzzahltyp"
4836+msgstr "Feldindex in Initialisierung ist kein konstanter Ganzzahlausdruck"
4837
4838 #: c-typeck.c:7162 c-typeck.c:7164
4839 #, gcc-internal-format
4840@@ -14784,9 +14762,9 @@
4841 msgstr "%<long%> switch-Ausdruck nicht nach »int« konvertiert in ISO C"
4842
4843 #: c-typeck.c:8817 c-typeck.c:8825
4844-#, fuzzy, gcc-internal-format
4845+#, gcc-internal-format
4846 msgid "case label is not an integer constant expression"
4847-msgstr "Größe des Feldes ist kein konstanter Ganzzahlausdruck"
4848+msgstr "»case«-Marke ist kein konstanter Ganzzahlausdruck"
4849
4850 #: c-typeck.c:8831 cp/parser.c:8261
4851 #, gcc-internal-format
4852@@ -14799,9 +14777,9 @@
4853 msgstr "%<default%>-Marke nicht innerhalb einer switch-Anweisung"
4854
4855 #: c-typeck.c:8916 cp/parser.c:8557
4856-#, fuzzy, gcc-internal-format
4857+#, gcc-internal-format
4858 msgid "suggest explicit braces to avoid ambiguous %<else%>"
4859-msgstr "%Hes wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeiden"
4860+msgstr "es wird empfohlen, explizite geschweifte Klammern zu setzen, um mehrdeutiges %<else%> zu vermeiden"
4861
4862 #: c-typeck.c:9025 cp/cp-gimplify.c:91 cp/parser.c:9149
4863 #, gcc-internal-format
4864@@ -14864,9 +14842,9 @@
4865 msgstr ""
4866
4867 #: c-typeck.c:9830 c-typeck.c:9905
4868-#, fuzzy, gcc-internal-format
4869+#, gcc-internal-format
4870 msgid "comparison of pointers to disjoint address spaces"
4871-msgstr "in Vergleich verschiedener Zeigertypen fehlt Typkonvertierung"
4872+msgstr "Vergleich von Zeigern auf disjunkte Adressräume"
4873
4874 #: c-typeck.c:9837 c-typeck.c:9843
4875 #, gcc-internal-format
4876@@ -14894,9 +14872,9 @@
4877 msgstr "ISO-C verbietet geordnete Vergleiche zwischen Zeigern auf Funktionen"
4878
4879 #: c-typeck.c:9900
4880-#, fuzzy, gcc-internal-format
4881+#, gcc-internal-format
4882 msgid "ordered comparison of pointer with null pointer"
4883-msgstr "geordneter Vergleich von Zeiger mit Ganzzahlnull"
4884+msgstr "geordneter Vergleich von Zeiger mit Null-Zeiger"
4885
4886 #: c-typeck.c:9923 c-typeck.c:9926 c-typeck.c:9933 c-typeck.c:9936
4887 #, gcc-internal-format
4888@@ -14904,9 +14882,9 @@
4889 msgstr "geordneter Vergleich von Zeiger mit Ganzzahlnull"
4890
4891 #: c-typeck.c:9980 cp/typeck.c:4251
4892-#, fuzzy, gcc-internal-format
4893+#, gcc-internal-format
4894 msgid "implicit conversion from %qT to %qT to match other operand of binary expression"
4895-msgstr "Anfrage zur impliziten für Umwandlung von %qT in %qT ist in C++ nicht erlaubt"
4896+msgstr "implizite Umwandlung von %qT in %qT zur Anpassung an anderen Operanden des Binärausdrucks"
4897
4898 #: c-typeck.c:10262
4899 #, gcc-internal-format
4900@@ -14979,14 +14957,14 @@
4901 msgstr "Größe der Variablen %q+D ist zu hoch"
4902
4903 #: cfgexpand.c:4025
4904-#, fuzzy, gcc-internal-format
4905+#, gcc-internal-format
4906 msgid "stack protector not protecting local variables: variable length buffer"
4907-msgstr "Lokale Variablen werden nicht geschützt: Puffer variabler Größe"
4908+msgstr "Stack-Schutz schützt nicht lokale Variablen: Puffer variabler Größe"
4909
4910 #: cfgexpand.c:4029
4911-#, fuzzy, gcc-internal-format, gfc-internal-format
4912+#, gcc-internal-format, gfc-internal-format
4913 msgid "stack protector not protecting function: all local arrays are less than %d bytes long"
4914-msgstr "Funktion wird nicht geschützt: Kein Puffer mit mindestens %d Bytes"
4915+msgstr "Stack-Schutz schützt nicht Funktion: Alle lokalen Felder sind kleiner als %d Bytes"
4916
4917 #: cfghooks.c:110
4918 #, gcc-internal-format, gfc-internal-format
4919@@ -15164,32 +15142,32 @@
4920 msgstr "BB %d gehört nicht zur Schleife %d"
4921
4922 #: cfgloop.c:1363
4923-#, fuzzy, gcc-internal-format
4924+#, gcc-internal-format
4925 msgid "loop %d%'s header does not have exactly 2 entries"
4926 msgstr "Kopf der Schleife %d hat nicht genau 2 Einträge"
4927
4928 #: cfgloop.c:1370
4929-#, fuzzy, gcc-internal-format
4930+#, gcc-internal-format
4931 msgid "loop %d%'s latch does not have exactly 1 successor"
4932 msgstr "Falle der Schleife %d hat nicht genau einen Nachfolger"
4933
4934 #: cfgloop.c:1375
4935-#, fuzzy, gcc-internal-format
4936+#, gcc-internal-format
4937 msgid "loop %d%'s latch does not have header as successor"
4938 msgstr "Falle der Schleife %d hat nicht den Kopf als Nachfolger"
4939
4940 #: cfgloop.c:1380
4941-#, fuzzy, gcc-internal-format
4942+#, gcc-internal-format
4943 msgid "loop %d%'s latch does not belong directly to it"
4944 msgstr "Falle der Schleife %d gehört nicht direkt zu ihr"
4945
4946 #: cfgloop.c:1386
4947-#, fuzzy, gcc-internal-format
4948+#, gcc-internal-format
4949 msgid "loop %d%'s header does not belong directly to it"
4950 msgstr "Kopf der Schleife %d gehört nicht direkt zu ihr"
4951
4952 #: cfgloop.c:1392
4953-#, fuzzy, gcc-internal-format
4954+#, gcc-internal-format
4955 msgid "loop %d%'s latch is marked as part of irreducible region"
4956 msgstr "Falle der Schleife %d ist als Teil einer irreduziblen Region markiert"
4957
4958@@ -15229,17 +15207,17 @@
4959 msgstr "Nichtleere Ausgangsliste der Schleife %d, aber Ausgänge werden nicht aufgezeichnet"
4960
4961 #: cfgloop.c:1514
4962-#, fuzzy, gcc-internal-format, gfc-internal-format
4963+#, gcc-internal-format, gfc-internal-format
4964 msgid "exit %d->%d not recorded"
4965 msgstr "Ausgang %d->%d nicht aufgezeichnet"
4966
4967 #: cfgloop.c:1532
4968-#, fuzzy, gcc-internal-format, gfc-internal-format
4969+#, gcc-internal-format, gfc-internal-format
4970 msgid "wrong list of exited loops for edge %d->%d"
4971 msgstr "Falsche Liste der beendeten Schleifen für Kante %d->%d"
4972
4973 #: cfgloop.c:1541
4974-#, fuzzy, gcc-internal-format
4975+#, gcc-internal-format
4976 msgid "too many loop exits recorded"
4977 msgstr "Zu viele Schleifenausgänge aufgezeichnet"
4978
4979@@ -15284,9 +15262,9 @@
4980 msgstr "fehlender Vermerk von REG_EH_REGION am Ende vom bb %i"
4981
4982 #: cfgrtl.c:1932
4983-#, fuzzy, gcc-internal-format, gfc-internal-format
4984+#, gcc-internal-format, gfc-internal-format
4985 msgid "too many eh edges %i"
4986-msgstr "zu viele abgehende Zweig-Kanten vom bb %i"
4987+msgstr "zu viele eh-Kanten %i"
4988
4989 #: cfgrtl.c:1940
4990 #, gcc-internal-format, gfc-internal-format
4991@@ -15299,9 +15277,9 @@
4992 msgstr "Fallthru-Kante nach unbedingtem Sprung %i"
4993
4994 #: cfgrtl.c:1950
4995-#, fuzzy, gcc-internal-format, gfc-internal-format
4996+#, gcc-internal-format, gfc-internal-format
4997 msgid "wrong number of branch edges after unconditional jump %i"
4998-msgstr "falscher Betrag der Zweig-Kanten nach unbedingtem Sprung %i"
4999+msgstr "falsche Anzahl der Zweig-Kanten nach unbedingtem Sprung %i"
5000
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches