Merge lp:~ams-codesourcery/gcc-linaro/merge-fsf-4.6-20110506 into lp:gcc-linaro/4.6
- merge-fsf-4.6-20110506
- Merge into 4.6
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 |
Related bugs: |
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.
Commit message
Description of the change
Merge from FSF 4.6 branch.
Linaro Toolchain Builder (cbuild) wrote : | # |
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on i686-lucid-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro/4.6+bzr106743:
+PASS: c-c++-common/
+PASS: c-c++-common/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
...and 292 more
The full testsuite results are at:
http://
cbuild-checked: i686-lucid-
Linaro Toolchain Builder (cbuild) wrote : | # |
cbuild successfully built this on armv7l-
The build results are available at:
http://
The test suite results changed compared to the branch point lp:gcc-linaro/4.6+bzr106743:
+PASS: c-c++-common/
+PASS: c-c++-common/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
+PASS: gcc.c-torture/
...and 282 more
The full testsuite results are at:
http://
cbuild-checked: armv7l-
Richard Sandiford (rsandifo) wrote : | # |
As for the 4.5 counterpart: a formal OK in
case one is needed.
Andrew Stubbs (ams-codesourcery) wrote : | # |
i686 and ARM test results are OK.
Still waiting for x86_64 .....
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
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 |
cbuild has taken a snapshot of this branch at r106744 and queued it for build.
The snapshot is available at: ex.seabright. co.nz/snapshots /gcc-linaro- 4.6+bzr106744~ ams-codesourcer y~merge- fsf-4.6- 20110506. tar.xdelta3. xz
http://
and will be built on the following builders:
a9-builder i686 x86_64
You can track the build queue at: ex.seabright. co.nz/helpers/ scheduler
http://
cbuild-snapshot: gcc-linaro- 4.6+bzr106744~ ams-codesourcer y~merge- fsf-4.6- 20110506
cbuild-ancestor: lp:gcc-linaro/4.6+bzr106743
cbuild-state: check