diff options
author | Ben Cheng <bccheng@google.com> | 2014-04-22 13:33:12 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2014-04-22 13:33:12 -0700 |
commit | e3cc64dec20832769406aa38cde83c7dd4194bf4 (patch) | |
tree | ef8e39be37cfe0cb69d850043b7924389ff17164 /gcc-4.9/gcc/testsuite | |
parent | f33c7b3122b1d7950efa88067c9a156229ba647b (diff) | |
download | toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.zip toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.tar.gz toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.tar.bz2 |
[4.9] GCC 4.9.0 official release refresh
Change-Id: Ic99a7da8b44b789a48aeec93b33e93944d6e6767
Diffstat (limited to 'gcc-4.9/gcc/testsuite')
206 files changed, 4665 insertions, 314 deletions
diff --git a/gcc-4.9/gcc/testsuite/ChangeLog b/gcc-4.9/gcc/testsuite/ChangeLog index 9f9422a..4c09a1e 100644 --- a/gcc-4.9/gcc/testsuite/ChangeLog +++ b/gcc-4.9/gcc/testsuite/ChangeLog @@ -1,3 +1,621 @@ +2014-04-22 Release Manager + + * GCC 4.9.0 released. + +2014-04-17 Jakub Jelinek <jakub@redhat.com> + + PR target/60847 + Forward port from 4.8 branch + 2013-07-19 Kirill Yukhin <kirill.yukhin@intel.com> + + * gcc.target/i386/bmi-1.c: Extend with new instrinsics. + Fix scan patterns. + * gcc.target/i386/bmi-2.c: Ditto. + +2014-04-15 Igor Zamyatin <igor.zamyatin@intel.com> + + PR middle-end/60467 + * c-c++-common/cilk-plus/CK/invalid_spawns.c: Add new invalid + case to check. + +2014-04-15 Igor Zamyatin <igor.zamyatin@intel.com> + + PR middle-end/60469 + * c-c++-common/cilk-plus/CK/pr60469.c: New test. + +2014-04-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * gcc.dg/lto/pr55113_0.c: Skip on i?86-*-solaris2.1[0-1]*. + +2014-04-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * lib/target-supports.exp + (check_effective_target_vect_widen_mult_si_to_di_pattern): + Initialize et_vect_widen_mult_si_to_di_pattern_saved. + Fix formatting. + +2014-04-14 Jason Merrill <jason@redhat.com> + + Revert: + * lib/gcc-dg.exp (dg-build-dso): New. + (gcc-dg-test-1): Handle dg-do-what "dso". + +2014-04-13 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/60717 + * gfortran.dg/unlimited_polymorphic_17.f90: New test. + + PR fortran/58085 + * gfortran.dg/associate_15.f90: New test. + +2014-04-12 Jerry DeLisle <jvdelisle@gcc.gnu> + + PR libfortran/60810 + gfortran.dg/arrayio_13.f90: New test. + +2014-04-11 Steve Ellcey <sellcey@mips.com> + Jakub Jelinek <jakub@redhat.com> + + PR middle-end/60556 + * gcc.c-torture/compile/pr60556.c: New test. + +2014-04-11 Richard Biener <rguenther@suse.de> + + PR middle-end/60797 + * gcc.dg/pr60797.c: New testcase. + +2014-04-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.target/s390/htm-nofloat-1.c: Rename to ... + * gcc.target/s390/htm-nofloat-compile-1.c: ... this one. + * gcc.target/s390/htm-nofloat-2.c: Add check for htm target and + rename to ... + * gcc.target/s390/htm-nofloat-1.c: ... this one. + * gcc.target/s390/s390.exp: Make sure the assembler supports htm + instructions as well. + +2014-04-11 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/60663 + * gcc.target/arm/pr60663.c: New test. + +2014-04-10 Jason Merrill <jason@redhat.com> + + * g++.dg/dso/dlclose1.C: Disable for 4.9. + +2014-04-10 Jakub Jelinek <jakub@redhat.com> + + PR lto/60567 + * g++.dg/lto/pr60567_0.C: New test. + +2014-04-10 Bernd Edlinger <bernd.edlinger@hotmail.de> + + * gfortran.dg/class_nameclash.f90: New test. + +2014-04-10 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/52844 + * g++.dg/cpp0x/variadic156.C: New. + +2014-04-10 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.target/s390/htm-builtins-compile-1.c: Replace long long with + long. + +2014-04-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + PR debug/60655 + * gcc.c-torture/compile/pr60655-2.c: Copy from pr60655-1.c without + -fdata-sections. + +2014-04-09 Steve Ellcey <sellcey@mips.com> + + * gcc.dg/tree-ssa/ssa-ifcombine-13.c: Remove mips*-*-* from option + and scan lists. + +2014-04-09 Cong Hou <congh@google.com> + + PR testsuite/60773 + * lib/target-supports.exp: + (check_effective_target_vect_widen_si_to_di_pattern): New. + * gcc.dg/vect/pr60656.c: Require vect_long effective target. + Use scan-tree-dump-times for vect_widen_mult_si_to_di_pattern + targets only. + (foo): Fix up formatting. + (main): Call check_vect. + +2014-04-08 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/59115 + * g++.dg/template/crash119.C: New. + +2014-04-08 Pat Haugen <pthaugen@us.ibm.com> + + * gcc.target/powerpc/atomic_load_store-p8.c: New. + +2014-04-08 Jason Merrill <jason@redhat.com> + + * lib/gcc-dg.exp (dg-build-dso): Reset dg-do-what-default to + compile. + +2014-04-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + PR rtl-optimization/60776 + * gcc.dg/builtin-bswap-6.c: Use -mbranch-cost=0 for s390. + * gcc.dg/builtin-bswap-7.c: Likewise. + * gcc.dg/builtin-bswap-6a.c: New testcase. + * gcc.dg/builtin-bswap-7a.c: New testcase. + + Revert + 2014-04-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.dg/builtin-bswap-6.c: Adjust return value to disable GCC + optimization. + * gcc.dg/builtin-bswap-7.c: Likewise. + +2014-04-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/60785 + * gcc.dg/graphite/pr60785.c: New testcase. + +2014-04-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR target/60602 + * gcc.c-torture/compile/pr28865.c: XFAIL on sparc*-*-solaris2.9* + with as at -O0. + +2014-04-08 Nathan Sidwell <nathan@codesourcery.com> + + * g++.dg/warn/Wnvdtor-2.C: Add more cases. + * g++.dg/warn/Wnvdtor-3.C: Likewise. + * g++.dg/warn/Wnvdtor-4.C: Likewise. + +2014-04-07 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/test_raise_from_pure.adb: UnXFAIL for ARM. + +2014-04-07 Charles Baylis <charles.baylis@linaro.org> + + PR target/60609 + * g++.dg/torture/pr60609.C: New test. + +2014-04-07 Richard Biener <rguenther@suse.de> + + PR tree-optimization/60766 + * gcc.dg/torture/pr60766.c: New testcase. + +2014-04-07 Jason Merrill <jason@redhat.com> + + * lib/gcc-dg.exp (dg-build-dso): New. + (gcc-dg-test-1): Handle dg-do-what "dso". + * lib/target-supports.exp (add_options_for_dlopen): New. + (check_effective_target_dlopen): Use it. + +2014-04-07 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + * gcc.target/arm/pr60657.c: Fix missing curly brace. + +2014-04-07 Richard Biener <rguenther@suse.de> + + PR middle-end/60750 + * g++.dg/torture/pr60750.C: New testcase. + * gcc.dg/tree-ssa/20040517-1.c: Adjust. + +2014-04-06 Andreas Schwab <schwab@linux-m68k.org> + + * gcc.c-torture/compile/pr60655-1.c: Use __SIZE_TYPE__ for size_t. + +2014-04-06 John David Anglin <danglin@gcc.gnu.org> + + PR testsuite/60671 + g++.dg/pr49718.C: Adjust scan-assembler-times for hppa*-*-hpux*. + +2014-04-06 John David Anglin <danglin@gcc.gnu.org> + + PR testsuite/60672 + * g++.dg/cpp1y/auto-fn25.C: Require lto. + + * gcc.dg/atomic/stdatomic-flag.c: xfail on hppa*-*-hpux*. + +2014-04-05 Dominique d'Humieres <dominiq@lps.ens.fr> + + * gfortran.dg/warn_conversion_4.f90: Adjust test. + +2014-05-04 Pitchumani Sivanupandi <Pitchumani.S@atmel.com> + + * gcc.target/avr/dev-specific-rmw.c: New test. + +2014-04-04 Cong Hou <congh@google.com> + + PR tree-optimization/60656 + * gcc.dg/vect/pr60656.c: New test. + +2014-04-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.dg/builtin-bswap-6.c: Adjust return value to disable GCC + optimization. + * gcc.dg/builtin-bswap-7.c: Likewise. + +2014-04-04 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/58207 + * g++.dg/cpp0x/constexpr-ice15.C: New. + +2014-04-04 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/59626 + testcase by Richard Biener + * gcc.dg/lto/pr59626_0.c: New testcase. + * gcc.dg/lto/pr59626_1.c: New testcase. + +2014-04-04 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + PR debug/60655 + * gcc.c-torture/compile/pr60655-1.c: New test. + +2014-04-04 Martin Jambor <mjambor@suse.cz> + + PR ipa/60640 + * g++.dg/ipa/pr60640-1.C: New test. + * g++.dg/ipa/pr60640-2.C: Likewise. + * g++.dg/ipa/pr60640-3.C: Likewise. + * g++.dg/ipa/pr60640-4.C: Likewise. + +2014-04-04 Jeff Law <law@redhat.com> + + PR target/60657 + * gcc.target/arm/pr60657.c: New test. + +2014-04-04 Richard Biener <rguenther@suse.de> + + PR ipa/60746 + * g++.dg/torture/pr60746.C: New testcase. + +2014-04-04 Fabien Chêne <fabien@gcc.gnu.org> + + * g++.old-deja/g++.robertl/eb121.C: Adjust. + * g++.old-deja/g++.jason/overload21.C: Likewise. + * g++.old-deja/g++.law/init5.C: Likewise. + +2014-04-03 Cong Hou <congh@google.com> + + PR tree-optimization/60505 + * gcc.dg/vect/pr60505.c: New test. + +2014-04-03 Richard Biener <rguenther@suse.de> + + PR tree-optimization/60740 + * gcc.dg/graphite/pr60740.c: New testcase. + +2014-04-03 Nathan Sidwell <nathan@codesourcery.com> + + * g++.dg/warn/Wnvdtor.C: Add non-polymorphic case. + * g++.dg/warn/Wnvdtor-2.C: New. + * g++.dg/warn/Wnvdtor-3.C: New. + * g++.dg/warn/Wnvdtor-4.C: New. + * g++.dg/warn/Weff1.C: Delete. + * g++.old-deja/g++.benjamin/15309-1.C: Delete. + * g++.old-deja/g++.benjamin/15309-2.C: Delete. + +2014-04-02 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/60659 + * testsuite/g++.dg/torture/pr60659.C: New testcase. + +2014-04-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + + PR tree-optimization/60733 + * gcc.dg/torture/pr60733.c: New test. + +2014-04-02 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/60650 + * gcc.target/arm/pr60650-2.c: New. + +2014-04-02 Joseph Myers <joseph@codesourcery.cmo> + + * gcc.target/i386/avx2-vpand-3.c, + gcc.target/i386/avx256-unaligned-load-2.c: Use -mno-prefer-avx128. + +2014-04-02 Joseph Myers <joseph@codesourcery.com> + + * gcc.target/i386/funcspec-2.c, gcc.target/i386/funcspec-3.c, + gcc.target/i386/funcspec-9.c, gcc.target/i386/isa-1.c, + gcc.target/i386/memcpy-strategy-1.c, + gcc.target/i386/memcpy-strategy-2.c, + gcc.target/i386/memcpy-vector_loop-1.c, + gcc.target/i386/memcpy-vector_loop-2.c, + gcc.target/i386/memset-vector_loop-1.c, + gcc.target/i386/memset-vector_loop-2.c, + gcc.target/i386/sse2-init-v2di-2.c, gcc.target/i386/ssetype-1.c, + gcc.target/i386/ssetype-2.c, gcc.target/i386/ssetype-5.c: Skip for + -march= options different from those in dg-options. + +2014-04-02 Joseph Myers <joseph@codesourcery.com> + + * gcc.target/i386/387-3.c, gcc.target/i386/387-4.c, + gcc.target/i386/pr30970.c: Use -mtune=generic. + * gcc.target/i386/avx2-vpaddb-3.c, + gcc.target/i386/avx2-vpaddd-3.c, gcc.target/i386/avx2-vpaddq-3.c, + gcc.target/i386/avx2-vpaddw-3.c, gcc.target/i386/avx2-vpmulld-3.c, + gcc.target/i386/avx2-vpmullw-3.c, gcc.target/i386/avx2-vpsrad-3.c, + gcc.target/i386/avx2-vpsraw-3.c, gcc.target/i386/avx2-vpsrld-3.c, + gcc.target/i386/avx2-vpsrlw-3.c, gcc.target/i386/avx2-vpsubb-3.c, + gcc.target/i386/avx2-vpsubd-3.c, gcc.target/i386/avx2-vpsubq-3.c, + gcc.target/i386/avx2-vpsubw-3.c, + gcc.target/i386/avx256-unaligned-load-1.c, + gcc.target/i386/avx256-unaligned-load-4.c, + gcc.target/i386/avx256-unaligned-store-1.c, + gcc.target/i386/avx256-unaligned-store-2.c, + gcc.target/i386/avx256-unaligned-store-4.c: Use + -mno-prefer-avx128. + +2014-03-26 Dominique d'Humieres <dominiq@lps.ens.fr> + Iain Sandoe <iain@codesourcery.com> + + PR target/54083 + * gcc.dg/attr-weakref-1.c: Allow the test on darwin + with the additional options -Wl,-undefined,dynamic_lookup + and -Wl,-flat_namespace. + * gcc.dg/torture/pr53922.c: Additional option + -Wl,-flat_namespace for darwin[89]. + * gcc.dg/torture/pr60092.c: Additional options + -Wl,-undefined,dynamic_lookup and -Wl,-flat_namespace + for darwin[89]. + +2014-03-26 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR target/43751 + * lib/prune.exp: Modify the regular express to prune + the new warnings introduced by r205679 on darwin9. + +2014-04-01 Fabien Chêne <fabien@gcc.gnu.org> + + * g++.dg/init/ctor4.C: Adjust. + * g++.dg/init/ctor4-1.C: New. + * g++.dg/cpp0x/defaulted2.C: Adjust. + +2014-04-01 Richard Henderson <rth@redhat.com> + + PR target/60704 + * gcc.dg/pr60704.c: New file. + +2014-04-01 Bin Cheng <bin.cheng@arm.com> + + PR target/60363 + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Xfail for + logical_op_short_circuit targets. + +2014-04-01 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR libfortran/60128 + * gfortran.dg/fmt_en.f90: Skip unsupported rounding tests. + XFAIL for i?86-*-solaris2.9* and hppa*-*-hpux*. + +2014-03-31 H.J. Lu <hongjiu.lu@intel.com> + + PR rtl-optimization/60700 + * gcc.target/i386/pr60700.c: New test. + +2014-03-31 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + PR target/60650 + * gcc.target/arm/pr60650.c: Adjust command line options. + +2014-03-31 Martin Jambor <mjambor@suse.cz> + + PR middle-end/60647 + * gcc.dg/pr60647-1.c: New test. + * gcc.dg/pr60647-2.c: Likewise. + +2014-03-31 Richard Biener <rguenther@suse.de> + + * gcc.dg/lto/pr55113_0.c: Skip also for 32bit multilib on x86_64. + +2014-03-31 Kugan Vivekanandarajah <kuganv@linaro.org> + + PR target/60034 + * gcc.target/aarch64/pr60034.c: New file. + +2014-03-29 Adam Butcher <adam@jessamine.co.uk> + + PR c++/60626 + * g++.dg/cpp1y/pr60626.C: New testcase. + +2014-03-29 Joseph Myers <joseph@codesourcery.com> + + * gcc.dg/pr45416.c: Allow bextr on x86. + * gcc.target/i386/fma4-builtin.c, gcc.target/i386/fma4-fma-2.c, + gcc.target/i386/fma4-fma.c, gcc.target/i386/fma4-vector-2.c, + gcc.target/i386/fma4-vector.c: Use -mno-fma. + * gcc.target/i386/l_fma_double_1.c, + gcc.target/i386/l_fma_double_2.c, + gcc.target/i386/l_fma_double_3.c, + gcc.target/i386/l_fma_double_4.c, + gcc.target/i386/l_fma_double_5.c, + gcc.target/i386/l_fma_double_6.c, gcc.target/i386/l_fma_float_1.c, + gcc.target/i386/l_fma_float_2.c, gcc.target/i386/l_fma_float_3.c, + gcc.target/i386/l_fma_float_4.c, gcc.target/i386/l_fma_float_5.c, + gcc.target/i386/l_fma_float_6.c: Use -mno-fma4. + * gcc.target/i386/pr27971.c: Use -mno-tbm. + * gcc.target/i386/pr42542-4a.c: Use -mno-avx. + * gcc.target/i386/pr59390.c: Use -mno-fma -mno-fma4. + +2014-03-29 Jakub Jelinek <jakub@redhat.com> + + PR target/60648 + * g++.dg/pr60648.C: Move test to... + * g++.dg/torture/pr60648.C: ... here. Run on all targets, remove + dg-options, add for fpic targets dg-additional-options -fPIC. + +2014-03-28 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/opt33.adb: New testcase. + +2014-03-28 Vladimir Makarov <vmakarov@redhat.com> + + PR target/60697 + * gcc.target/aarch64/pr60697.c: New. + +2014-03-27 Jeff Law <law@redhat.com> + + PR target/60648 + * g++.dg/pr60648.C: New test. + +2014-03-28 Adam Butcher <adam@jessamine.co.uk> + + PR c++/60573 + * g++.dg/cpp1y/pr60573.C: New testcase. + +2014-03-28 Jakub Jelinek <jakub@redhat.com> + + PR target/60693 + * gcc.target/i386/pr60693.c: New test. + +2014-03-28 Vishnu K S <Vishnu.k_s@atmel.com> + + * gcc.dg/pr59940.c (si): Use 32-bit SI mode instead of int. + +2014-03-28 Jakub Jelinek <jakub@redhat.com> + + PR c++/60689 + * c-c++-common/pr60689.c: New test. + + PR c++/58678 + * g++.dg/abi/thunk6.C: Scan assembler for _ZTv0_n32_N1CD1Ev + only for lp64 targets and scan for _ZTv0_n16_N1CD1Ev for ilp32 + targets. + +2014-03-28 Vladimir Makarov <vmakarov@redhat.com> + + PR target/60675 + * gcc.target/aarch64/pr60675.C: New. + +2014-03-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special + option. + * lib/target-supports.exp: Return true for s390 + in check_effective_logical_op_short_circuit. + +2014-03-28 Kirill Yukhin <kirill.yukhin@intel.com> + + * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization + of second source operand. + * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto. + +2014-03-28 Jakub Jelinek <jakub@redhat.com> + + PR ipa/60315 + * g++.dg/torture/pr60315.C: Add -std=c++11 to dg-options. + +2014-03-28 Tobias Burnus <burnus@net-b.de> + + * lib/cilk-plus-dg.exp: New. + * g++.dg/cilk-plus/cilk-plus.exp: Use it. + * gcc.dg/cilk-plus/cilk-plus.exp: Use it. + +2014-03-27 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/60522 + * gfortran.dg/where_4.f90: New test case. + +2014-03-27 Tobias Burnus <burnus@net-b.de> + + PR fortran/58880 + * gfortran.dg/finalize_24.f90: New. + +2014-03-27 Michael Meissner <meissner@linux.vnet.ibm.com> + + * gcc.target/powerpc/p8vector-vbpermq.c: New test to test the + vbpermq builtin. + + * gcc.target/powerpc/vsx-extract-1.c: New test to test VSX + vec_select optimizations. + * gcc.target/powerpc/vsx-extract-2.c: Likewise. + * gcc.target/powerpc/vsx-extract-3.c: Likewise. + + PR target/60672 + * gcc.target/powerpc/pr60676.c: New file, make sure xxsldwi and + xxpermdi builtins are supported. + +2014-03-27 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/60650 + * gcc.target/arm/pr60650.c: New. + +2014-03-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * gcc.target/s390/20140327-1.c: New testcase. + +2014-03-27 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/60682 + * g++.dg/gomp/pr60682.C: New test. + +2014-03-27 John David Anglin <danglin@gcc.gnu.org> + + * gcc.dg/torture/pr60092.c: Remove default dg-skip-if arguments. + +2014-03-27 Marcus Shawcroft <marcus.shawcroft@arm.com> + + PR target/60580 + * gcc.target/aarch64/pr60580_1.c: New. + * gcc.target/aarch64/test_fp_attribute_1.c: New. + * gcc.target/aarch64/test_fp_attribute_2.c: New. + +2014-03-26 Dehao Chen <dehao@google.com> + + * gcc.dg/predict-8.c: New test. + +2014-03-26 Fabien Chêne <fabien@gcc.gnu.org> + + PR c++/52369 + * g++.dg/init/const10.C: New. + * g++.dg/init/const11.C: New. + * g++.dg/init/pr25811.C: Adjust. + * g++.dg/init/pr29043.C: Likewise. + * g++.dg/init/pr43719.C: Likewise. + * g++.dg/init/pr44086.C: Likewise. + * g++.dg/init/ctor8.C: Likewise. + * g++.dg/init/uninitialized1.C: Likewise. + +2014-03-26 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/60636 + * c-c++-common/ubsan/pr60636.c: New test. + +2014-03-26 Andreas Schwab <schwab@suse.de> + + * g++.dg/torture/pr60315.C: Remove duplication. + +2014-03-26 Eric Botcazou <ebotcazou@adacore.com> + + * gcc.c-torture/execute/20140326-1.c: New test. + +2014-03-25 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/60315 + * g++.dg/torture/pr60315.C: New testcase. + +2014-03-25 Martin Jambor <mjambor@suse.cz> + + PR ipa/60600 + * g++.dg/ipa/pr60600.C: New test. + +2014-03-25 John David Anglin <danglin@gcc.gnu.org> + + PR testsuite/58013 + * g++.dg/opt/pr56999.C: Pop hidden visibility. + +2014-03-25 Richard Biener <rguenther@suse.de> + + PR middle-end/60635 + * gfortran.dg/lto/pr60635_0.f90: New testcase. + * gfortran.dg/lto/pr60635_1.c: Likewise. + 2014-03-24 Adam Butcher <adam@jessamine.co.uk> PR c++/60627 diff --git a/gcc-4.9/gcc/testsuite/ChangeLog-2008 b/gcc-4.9/gcc/testsuite/ChangeLog-2008 index ca95319..2c354ff 100644 --- a/gcc-4.9/gcc/testsuite/ChangeLog-2008 +++ b/gcc-4.9/gcc/testsuite/ChangeLog-2008 @@ -1814,7 +1814,7 @@ * gcc.dg/Warray-bounds-5.c: New test. * gcc.dg/Warray-bounds-6.c: New test. -2008-11-05 Fabien Chene <fabien.chene@gmail.com> +2008-11-05 Fabien Chene <fabien@gcc.gnu.org> PR c++/32519 * g++.dg/template/pr32519.C: New test. diff --git a/gcc-4.9/gcc/testsuite/ChangeLog-2010 b/gcc-4.9/gcc/testsuite/ChangeLog-2010 index b8d9464..47f39a3 100644 --- a/gcc-4.9/gcc/testsuite/ChangeLog-2010 +++ b/gcc-4.9/gcc/testsuite/ChangeLog-2010 @@ -11264,7 +11264,7 @@ * g++.dg/cpp0x/initlist26.C: Adjust. * g++.dg/cpp0x/initlist28.C: Adjust. -2010-05-10 Fabien Chêne <fabien.chene@gmail.com> +2010-05-10 Fabien Chêne <fabien@gcc.gnu.org> PR c++/43719 * g++.dg/init/pr43719.C: New. @@ -11389,7 +11389,7 @@ * gnat.dg/sizetype3.ad[sb]: New test. * gnat.dg/sizetype3_pkg.ads: New helper. -2010-05-07 Fabien Chêne <fabien.chene@gmail.com> +2010-05-07 Fabien Chêne <fabien@gcc.gnu.org> PR c++/43951 * g++.dg/init/new29.C: New. @@ -11738,12 +11738,6 @@ * gcc.dg/tree-ssa/builtin-free.c: New testcase. -2010-04-29 Fabien Chêne <fabien.chene@gmail.com> - - PR c++/43890 - * init.c (diagnose_uninitialized_cst_or_ref_member): check for - user-provided constructor while recursing. - 2010-04-29 Janus Weil <janus@gcc.gnu.org> PR fortran/42274 @@ -11866,7 +11860,7 @@ * g++.dg/template/pr23510.C: Update. * lib/prune.exp: Filter out 'recursively instantiated'. -2010-04-27 Fabien Chêne <fabien.chene@gmail.com> +2010-04-27 Fabien Chêne <fabien@gcc.gnu.org> PR c++/29043 * g++.dg/init/pr29043.C: New. @@ -11898,7 +11892,7 @@ * g++.dg/template/sfinae17.C: New. * g++.dg/template/sfinae18.C: New. -2010-04-27 Fabien Chêne <fabien.chene@gmail.com> +2010-04-27 Fabien Chêne <fabien@gcc.gnu.org> * g++.dg/init/pr42844.C: New. * g++.dg/cpp0x/pr42844-2.C: New. @@ -12500,7 +12494,7 @@ * g++.dg/cpp0x/lambda/lambda-conv4.C: New. * g++.dg/cpp0x/lambda/lambda-deduce2.C: New. -2010-04-12 Fabien Chene <fabien.chene@gmail.com> +2010-04-12 Fabien Chene <fabien@gcc.gnu.org> PR c++/25811 * g++.dg/init/pr25811.C: New test. diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c index ba9e619..5b43be7 100644 --- a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c @@ -8,6 +8,7 @@ int main (void) { int x; + _Cilk_spawn foo; /* { dg-error "only function calls can be spawned" } */ _Cilk_spawn x; /* { dg-error "only function calls can be spawned" } */ return x; } diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c new file mode 100644 index 0000000..ca0cf7f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/cilk-plus/CK/pr60469.c @@ -0,0 +1,15 @@ +/* PR middle-end/60469 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +void foo() {} + +#define ALEN 1024 + +int main(int argc, char* argv[]) +{ + int b[ALEN]; + b[:] = 100; + _Cilk_spawn foo(); + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c b/gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c new file mode 100644 index 0000000..9475bd8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/pr60689.c @@ -0,0 +1,10 @@ +/* PR c++/60689 */ +/* { dg-do compile } */ + +struct S { char x[9]; }; + +void +foo (struct S *x, struct S *y, struct S *z) +{ + __atomic_exchange (x, y, z, __ATOMIC_SEQ_CST); +} diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c b/gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c new file mode 100644 index 0000000..4164341 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/ubsan/pr60636.c @@ -0,0 +1,15 @@ +/* PR sanitizer/60636 */ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined" } */ + +volatile long long int a; + +int +main () +{ + long long int u = -__LONG_LONG_MAX__ - 1; + a = u > 0 ? u : -u; + return 0; +} + +/* { dg-output "negation of -9223372036854775808 cannot be represented in type 'long long int'" } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C index 05fd58e..13cb3c2 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C @@ -1,5 +1,4 @@ -// An explicit specialization doesn't get the tag from its template unless -// it is specified there, too. +// An explicit specialization gets the tag from its template. // { dg-final { scan-assembler "_ZN3FooB5cxx11IcE1fEv" } } template<typename T> @@ -12,12 +11,12 @@ struct __attribute ((abi_tag("cxx11"))) Foo template<> struct __attribute ((abi_tag("cxx11"))) -Foo<int> +Foo<int> // { dg-warning "attribute" } { int f(); }; -// { dg-final { scan-assembler "_ZN3FooIdE1fEv" } } +// { dg-final { scan-assembler "_ZN3FooB5cxx11IdE1fEv" } } template<> struct Foo<double> diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C new file mode 100644 index 0000000..94ea2f3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C @@ -0,0 +1,25 @@ +// PR c++/60642 + +struct __attribute((abi_tag("test"))) foo +{ + void f(); + virtual ~foo(); +}; + +template<typename> +struct __attribute((abi_tag("test"))) bar +{ + void f(); + virtual ~bar(); +}; + +int main() +{ + foo f; + f.f(); + + bar<int> b; + b.f(); +} + +// { dg-final { scan-assembler "_ZTV3barB4testIiE" } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C new file mode 100644 index 0000000..4c47725 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C @@ -0,0 +1,9 @@ +// PR c++/60642 + +template<typename T> +class __attribute((abi_tag("foo"))) test{ }; + +template class __attribute((abi_tag("foo"))) test<int>; // { dg-warning "attribute" } + +void f(test<char>*) {} +// { dg-final { scan-assembler "_Z1fP4testB3fooIcE" } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C new file mode 100644 index 0000000..6df51c2 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C @@ -0,0 +1,19 @@ +// PR c++/60566 +// We need to emit the construction vtable thunk for ~C even if we aren't +// going to use it. + +struct A +{ + virtual void f() = 0; + virtual ~A() {} +}; + +struct B: virtual A { int i; }; +struct C: virtual A { int i; ~C(); }; + +C::~C() {} + +int main() {} + +// { dg-final { scan-assembler "_ZTv0_n32_N1CD1Ev" { target lp64 } } } +// { dg-final { scan-assembler "_ZTv0_n16_N1CD1Ev" { target ilp32 } } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp b/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp index 204a754..0cb6539 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp +++ b/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp @@ -17,62 +17,55 @@ # Written by Balaji V. Iyer <balaji.v.iyer@intel.com> load_lib g++-dg.exp +load_lib cilk-plus-dg.exp if { ![check_effective_target_cilkplus] } { return; } -set library_var [get_multilibs] -# Pointing the ld_library_path to the Cilk Runtime library binaries. -append ld_library_path ":${library_var}/libcilkrts/.libs" -set_ld_library_path_env_vars - -global TEST_EXTRA_LIBS -set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs" - dg-init -# Run the tests that are shared with C. -g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] "" -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " " -# Run the C++ only tests. -g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" -dg-finish +if [cilkplus_init] { + # Run the tests that are shared with C. + g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] "" + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " " + # Run the C++ only tests. + g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" -dg-init -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " " -if { [check_libcilkrts_available] } { - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " " + if { [check_libcilkrts_available] } { + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " " - } + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " " + } +} +cilkplus_finish dg-finish -unset TEST_EXTRA_LIBS diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C new file mode 100644 index 0000000..fea4c28 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C @@ -0,0 +1,9 @@ +// PR c++/60628 +// { dg-do compile { target c++11 } } + +#include <initializer_list> + +void foo(int i) +{ + auto x[1] = { 0 }; // { dg-error "array of .auto" } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C new file mode 100644 index 0000000..576fd41 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C @@ -0,0 +1,12 @@ +// PR c++/58207 +// { dg-do compile { target c++11 } } + +struct A +{ + virtual bool foo (); +}; + +struct B : public A +{ + constexpr B () : A (&::n) {} // { dg-error "declared" } +}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C index bd83c7f..63be997 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C @@ -35,7 +35,7 @@ struct D: public C struct E { - const B b; + const B b; // { dg-message "should be initialized" } E() { } // { dg-error "uninitialized" } }; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C new file mode 100644 index 0000000..5978c63 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C @@ -0,0 +1,25 @@ +// PR c++/60713 +// { dg-options "-O" } +// { dg-do compile { target c++11 } } + +template < class x0, class x1, class x2, class x3, class x4 > +int *x5 (x0 *, x2 (x1::*)(x3, x4)); + +class x6 +{ + void x7 (); + struct x8 + { + int *x9; + }; + void x10 (x8); + void x11 (int *, int *); +}; + +void +x6::x7 () +{ + x10 ({ + x5 (this, &x6::x11) + }); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C new file mode 100644 index 0000000..3b9ccad --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C @@ -0,0 +1,20 @@ +// PR c++/60708 +// { dg-do compile { target c++11 } } + +template <class T, class U> struct mypair { + mypair(T, U) {} +}; + +template<typename T> struct S { + mypair<T *, int> get_pair() noexcept { + return mypair<T*,int>(nullptr, 0); + } +}; + +static void foo(const mypair<char *, int> (&a)[2]) noexcept { } + +int main() +{ + S<char> s; + foo({s.get_pair(), s.get_pair()}); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C index 898f685..dcea169 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C @@ -5,3 +5,5 @@ template <class T> struct A { }; A<decltype([]{ return 1; }())> a; // { dg-error "lambda.*unevaluated context" } +// { dg-prune-output "template argument" } +// { dg-prune-output "invalid type" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C new file mode 100644 index 0000000..14cb298 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C @@ -0,0 +1,7 @@ +// PR c++/60375 +// { dg-do compile { target c++11 } } + +struct A +{ + decltype( [](){ return this; }() ) x; // { dg-error "unevaluated" } +}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C index f753735..df50e41 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C @@ -1,7 +1,7 @@ // { dg-do compile { target c++11 } } template<typename...> struct A; -template<char> struct A<> {}; // { dg-error "not used in partial specialization|anonymous|declaration" } +template<char> struct A<> {}; // { dg-error "not deducible|anonymous|declaration" } template<typename T, typename... U> struct A<T, U...> : A<U...> {}; // { dg-error "incomplete type" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C new file mode 100644 index 0000000..198f9c5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C @@ -0,0 +1,8 @@ +// PR c++/60374 +// { dg-do compile { target c++11 } } + +template<typename> struct A {}; + +template<typename...T> struct A<T::T...> {}; // { dg-error "typename|partial|T" } + +A<int> a; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C new file mode 100644 index 0000000..d912317 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C @@ -0,0 +1,4 @@ +// { dg-do compile { target c++11 } } + +template <typename T> struct A {}; +template <int... I> struct B: A<I...> {}; // { dg-error "type" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C new file mode 100644 index 0000000..7d3c97d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C @@ -0,0 +1,6 @@ +// PR c++/52844 +// { dg-do compile { target c++11 } } + +template < class > struct V { }; +template < int...Is > void f ( V < Is...>) { } // { dg-error "mismatch|type" } +auto g ( ) -> decltype ( f ( V < long > ( ) ) ) ; // { dg-error "matching" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C index 9e40737..8cbc0d6 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C @@ -6,7 +6,7 @@ struct foo }; template<typename ... Args> -struct foo< typename Args::is_applied... > // { dg-error "not used|Args" } +struct foo< typename Args::is_applied... > // { dg-error "not deducible|Args" } { static bool const value = false; }; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C index 628a685..24680f1 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C @@ -1,6 +1,7 @@ // PR c++/60574 -// { dg-options "-flto" } // { dg-do compile { target c++1y } } +// { dg-require-effective-target lto } +// { dg-options "-flto" } struct A { diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C new file mode 100644 index 0000000..2f60707 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C @@ -0,0 +1,28 @@ +// PR c++/60573 +// { dg-do compile { target c++1y } } +// { dg-options "" } + +struct A +{ + struct B + { + void foo(auto); + }; + + void B::foo(auto) {} // { dg-error "cannot define" } + + struct X + { + struct Y + { + struct Z + { + void foo(auto); + }; + }; + + void Y::Z::foo(auto) {} // { dg-error "cannot define" } + }; + + void X::Y::Z::foo(auto) {} // { dg-error "cannot define" } +}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C new file mode 100644 index 0000000..39ea438 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C @@ -0,0 +1,7 @@ +// PR c++/60626 +// { dg-do compile { target c++1y } } +// { dg-options "" } + +struct A {}; + +void (*A::p)(auto) = 0; // { dg-error "static member|non-template" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C new file mode 100644 index 0000000..278cb63 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C @@ -0,0 +1,23 @@ +// PR c++/21113 +// { dg-options "" } + +void +f (int n) +{ + goto label; // { dg-error "from here" } + int a[n]; // { dg-error "crosses initialization" } +label: // { dg-error "jump to label" } + ; +} + +void +g (int n) +{ + switch (1) + { + case 1: + int (*a)[n]; // { dg-error "crosses initialization" } + default: // { dg-error "jump to case label" } + ; + } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C new file mode 100644 index 0000000..feeb49f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C @@ -0,0 +1,20 @@ +// PR c++/44613 +// { dg-do run } +// { dg-options "" } + +void *volatile p; + +int +main (void) +{ + int n = 0; + lab:; + int x[n % 1000 + 1]; + x[0] = 1; + x[n % 1000] = 2; + p = x; + n++; + if (n < 1000000) + goto lab; + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C b/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C new file mode 100644 index 0000000..fdd7a20 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C @@ -0,0 +1,44 @@ +// PR middle-end/60682 +// { dg-do compile } +// { dg-options "-O2 -fopenmp-simd" } + +struct A +{ + float a; + A () {} + A (const A &x) { a = x.a; } +}; + +struct B +{ + A a[16]; +}; + +struct C +{ + float a[1]; + C () {} + C (const C &x) { a[0] = x.a[0]; } +}; + +struct D +{ + C a[16]; +}; + +void +foo (int x, B &y, D &z) +{ +#pragma omp simd + for (int i = 0; i < x; ++i) + { + A a; + y.a[i] = a; + } +#pragma omp simd + for (int i = 0; i < x; ++i) + { + C a; + z.a[i] = a; + } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C b/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C new file mode 100644 index 0000000..ecd0db4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C @@ -0,0 +1,33 @@ +// PR C++/52369 +// { dg-do compile { target c++11 } } + +class B // { dg-message "implicitly deleted" } + // { dg-error "uninitialized" "" { target c++11 } 4 } +{ + int const v_; // { dg-message "should be initialized" } +}; + +struct D : B {}; // { dg-error "deleted" } + +class A // { dg-message "implicitly deleted" } + // { dg-error "uninitialized" "" { target c++11 } 12 } +{ + int& ref; // { dg-message "should be initialized" } +}; + +struct C : A {}; // { dg-error "deleted" } + +void f() +{ + D d; // { dg-error "use of deleted" } + new D; // { dg-error "use of deleted" } + D(); // { dg-error "use of deleted" } + new D(); // { dg-error "use of deleted" } + + C c; // { dg-error "use of deleted" } + new C; // { dg-error "use of deleted" } + C(); // { dg-error "use of deleted" } + new C(); // { dg-error "use of deleted" } +} + + diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C b/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C new file mode 100644 index 0000000..08d5185 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C @@ -0,0 +1,29 @@ +// PR C++/52369 +// { dg-do compile { target { ! c++11 } } } + +class B +{ + int const v_; // { dg-message "should be initialized" } +}; + +struct D : B {}; + +class A +{ + int& ref; // { dg-message "should be initialized" } +}; + +struct C : A {}; + +void f() +{ + D d; // { dg-error "uninitialized" } + new D; // { dg-error "uninitialized" } + D(); + new D(); + + C c; // { dg-error "uninitialized" } + new C; // { dg-error "uninitialized" } + C(); // { dg-error "value-initialization" } + new C(); // { dg-error "value-initialization" } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C new file mode 100644 index 0000000..1333b35 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C @@ -0,0 +1,21 @@ +// { dg-do compile } + +class foo { +public: + foo(); +}; + +class bar: public foo { // { dg-error "uninitialized" } + // { dg-message "implicitly deleted" "" { target c++11 } 8 } +private: + int const a; // { dg-message "should be initialized" } +}; + +foo::foo() { +} + +int main(int argc, char **argv) +{ + bar x; // { dg-error "deleted" "" { target c++11 } } + // { dg-message "synthesized" "" { target { ! c++11 } } 19 } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C index 1c92bb9..21034b6 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C @@ -6,9 +6,10 @@ public: foo(); }; -class bar: public foo { // { dg-error "reference|bar::bar" } +class bar: public foo { // { dg-error "uninitialized" } + // { dg-message "implicitly deleted" "" { target c++11 } 9 } private: - int &a; + int &a; // { dg-message "should be initialized" } }; foo::foo() { @@ -16,5 +17,6 @@ foo::foo() { int main(int argc, char **argv) { - bar x; // { dg-message "synthesized|deleted" } + bar x; // { dg-error "deleted" "" { target c++11 } } + // { dg-message "synthesized" "" { target { ! c++11 } } 20 } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C index 7eb72eb..3c37790 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C @@ -1,6 +1,6 @@ // PR c++/29039 -typedef struct S { // { dg-error "reference" "" { target c++11 } } +typedef struct S { // { dg-error "reference" "" { target c++11 } } int &r; }; // { dg-warning "'typedef' was ignored" } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C index 0a462be..c29f406 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C @@ -1,51 +1,60 @@ // PR c++/25811 // { dg-do compile } -struct A1 // { dg-error "uninitialized" "" { target c++11 } } +struct A1 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 4 } { - int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const j; // { dg-message "should be initialized" } }; -struct A2 // { dg-error "uninitialized" "" { target c++11 } } +struct A2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 10 } { - int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const volatile i; // { dg-message "should be initialized" } }; -struct A3 // { dg-error "uninitialized" "" { target c++11 } } +struct A3 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 16 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct A4 // { dg-error "uninitialized" "" { target c++11 } } +struct A4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 22 } { - int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const& ref; // { dg-message "should be initialized" } }; -struct A5 // { dg-error "uninitialized" "" { target c++11 } } +struct A5 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 28 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } + int const i; // { dg-message "should be initialized" } }; -template <class T> struct S1 // { dg-error "uninitialized" "" { target c++11 } } +template <class T> struct S1 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 35 } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } }; -template <class T> struct S2 // { dg-error "uninitialized" "" { target c++11 } } +template <class T> struct S2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 41 } { - T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const volatile i; // { dg-message "should be initialized" } }; -template <class T> struct S3 // { dg-error "uninitialized" "" { target c++11 } } +template <class T> struct S3 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 47 } { - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T& ref; // { dg-message "should be initialized" } }; -template <class T> struct S4 // { dg-error "uninitialized" "" { target c++11 } } +template <class T> struct S4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 53 } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } + T& ref; // { dg-message "should be initialized" } }; struct X @@ -55,44 +64,50 @@ struct X int const& r; }; -struct Y11 // { dg-error "uninitialized" "" { target c++11 } } +struct Y11 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 67 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Y1 // { dg-error "deleted" "" { target c++11 } } +struct Y1 // { dg-error "deleted" "" { target c++11 } } { Y11 a[1]; }; -struct Y22 // { dg-error "uninitialized" "" { target c++11 } } +struct Y22 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 78 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct Y2 // { dg-error "deleted" "" { target c++11 } } +struct Y2 // { dg-error "deleted" "" { target c++11 } } { Y22 a[1]; }; -struct Z1 // { dg-error "uninitialized" "" { target c++11 } } +struct Z1 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 89 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z2 // { dg-error "uninitialized" "" { target c++11 } } +struct Z2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 95 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct Z3 // { dg-error "uninitialized" "" { target c++11 } } +struct Z3 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 101 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z4 // { dg-error "uninitialized" "" { target c++11 } } +struct Z4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 107 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; struct Z5 @@ -100,7 +115,7 @@ struct Z5 int i; }; -struct Z // { dg-error "deleted" "" { target c++11 } } +struct Z // { dg-error "deleted" "" { target c++11 } } { Z1 z1; Z2 z2; @@ -109,9 +124,10 @@ struct Z // { dg-error "deleted" "" { target c++11 } } Z5 z5; }; -union U // { dg-error "uninitialized" "" { target c++11 } } +union U // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 127 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; void f1 () diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C index f341f8c..c81c39c 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C @@ -1,9 +1,10 @@ // PR c++/29043 // { dg-do compile } -struct S // { dg-error "uninitialized" "" { target c++11 } } +struct S // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 4 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; class C @@ -13,9 +14,10 @@ public: S s; }; -struct S2 // { dg-error "uninitialized" "" { target c++11 } } +struct S2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 17 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; class C2 @@ -33,9 +35,10 @@ class C3 }; }; -struct S4 // { dg-error "uninitialized" "" { target c++11 } } +struct S4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 38 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; struct C4 @@ -46,7 +49,7 @@ struct C4 struct C5 { - C5() {} // { dg-message "uninitialized" } + C5() {} // { dg-error "uninitialized" } int const iit[ 1 ]; }; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C index 81930d0..c8cebc2 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C @@ -1,51 +1,51 @@ // PR c++/43719 // { dg-do compile } -struct A1 // { dg-error "uninitialized" "" { target c++11 } } +struct A1 // { dg-error "uninitialized" "" { target c++11 } } { - int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const j; // { dg-message "should be initialized" } }; -struct A2 // { dg-error "uninitialized" "" { target c++11 } } +struct A2 // { dg-error "uninitialized" "" { target c++11 } } { - int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const volatile i; // { dg-message "should be initialized" } }; -struct A3 // { dg-error "uninitialized" "" { target c++11 } } +struct A3 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct A4 // { dg-error "uninitialized" "" { target c++11 } } +struct A4 // { dg-error "uninitialized" "" { target c++11 } } { - int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const& ref; // { dg-message "should be initialized" } }; -struct A5 // { dg-error "uninitialized" "" { target c++11 } } +struct A5 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } + int const i; // { dg-message "should be initialized" } }; template <class T> struct S1 // { dg-error "uninitialized" "" { target c++11 } } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } }; template <class T> struct S2 // { dg-error "uninitialized" "" { target c++11 } } { - T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const volatile i; // { dg-message "should be initialized" } }; template <class T> struct S3 // { dg-error "uninitialized" "" { target c++11 } } { - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T& ref; // { dg-message "should be initialized" } }; template <class T> struct S4 // { dg-error "uninitialized" "" { target c++11 } } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } + T& ref; // { dg-message "should be initialized" } }; struct X @@ -55,9 +55,9 @@ struct X int const& r; }; -struct Y11 // { dg-error "uninitialized" "" { target c++11 } } +struct Y11 // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; struct Y1 // { dg-error "deleted" "" { target c++11 } } @@ -65,9 +65,9 @@ struct Y1 // { dg-error "deleted" "" { target c++11 } } Y11 a[1]; }; -struct Y22 // { dg-error "uninitialized" "" { target c++11 } } +struct Y22 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; struct Y2 // { dg-error "deleted" "" { target c++11 } } @@ -75,24 +75,24 @@ struct Y2 // { dg-error "deleted" "" { target c++11 } } Y22 a[1]; }; -struct Z1 // { dg-error "uninitialized" "" { target c++11 } } +struct Z1 // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z2 // { dg-error "uninitialized" "" { target c++11 } } +struct Z2 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct Z3 // { dg-error "uninitialized" "" { target c++11 } } +struct Z3 // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z4 // { dg-error "uninitialized" "" { target c++11 } } +struct Z4 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; struct Z5 @@ -109,9 +109,9 @@ struct Z // { dg-error "deleted" "" { target c++11 } } Z5 z5; }; -union U // { dg-error "uninitialized" "" { target c++11 } } +union U // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C index 96b5bef..c3e9d4e 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C @@ -1,9 +1,9 @@ // PR c++/44086 // { dg-do compile } -struct A // { dg-error "uninitialized" "" { target c++11 } } +struct A // { dg-error "uninitialized" "" { target c++11 } } { - int const i : 2; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i : 2; // { dg-message "should be initialized" } }; void f() diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C b/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C index 1e4f7ae..e8509ff 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C @@ -1,8 +1,8 @@ // PR c++/58126 -struct A { // { dg-error "uninitialized" "" { target c++11 } } - const int value1; - int& value2; +struct A { // { dg-error "uninitialized" "" { target c++11 } } + const int value1; // { dg-message "should be initialized" } + int& value2; // { dg-message "should be initialized" } }; struct B : A { }; // { dg-error "deleted" "" { target c++11 } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C index 99f60af..675bd08 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C @@ -37,5 +37,5 @@ main() { class C c; } -/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */ +/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */ /* { dg-final { cleanup-ipa-dump "cp" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C index a32c7d6..98d86ae 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C @@ -45,5 +45,5 @@ main() { class C c; } -/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */ +/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */ /* { dg-final { cleanup-ipa-dump "cp" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C new file mode 100644 index 0000000..00c368e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fdump-ipa-cp" } */ + +struct data { + data(int); +}; + +struct top { + virtual int topf(); +}; + +struct intermediate: top { + int topf() /* override */ { return 0; } +}; + +struct child1: top { + void childf() + { + data d(topf()); + } +}; + +struct child2: intermediate {}; + +void test(top& t) +{ + child1& c = static_cast<child1&>(t); + c.childf(); + child2 d; + test(d); +} + +/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */ +/* { dg-final { cleanup-ipa-dump "cp" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C new file mode 100644 index 0000000..7a0b918 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C @@ -0,0 +1,50 @@ +// { dg-do compile } +// { dg-options "-O3" } + +class ASN1Object +{ +public: + virtual ~ASN1Object (); +}; +class A +{ + virtual unsigned m_fn1 () const; +}; +class B +{ +public: + ASN1Object Element; + virtual unsigned m_fn1 (bool) const; +}; +template <class BASE> class C : public BASE +{ +}; + +class D : ASN1Object, public B +{ +}; +class G : public D +{ + unsigned m_fn1 (bool) const {} +}; +class F : A +{ +public: + F (A); + unsigned m_fn1 () const + { + int a; + a = m_fn2 ().m_fn1 (0); + return a; + } + const B &m_fn2 () const { return m_groupParameters; } + C<G> m_groupParameters; +}; +template <class D> void BenchMarkKeyAgreement (int *, int *, int) +{ + A f; + D d (f); +} + +void BenchmarkAll2 () { BenchMarkKeyAgreement<F>(0, 0, 0); } + diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C new file mode 100644 index 0000000..c6e614c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C @@ -0,0 +1,15 @@ +// { dg-do compile } +// { dg-options "-O3" } + +struct B { virtual unsigned f () const; }; +struct C { virtual void f (); }; +struct F { virtual unsigned f (bool) const; ~F (); }; +struct J : C, F {}; +struct G : J { unsigned f (bool) const { return 0; } }; +struct H : B +{ + H (int); + unsigned f () const { return ((const F &) h).f (0); } + G h; +}; +H h (0); diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C new file mode 100644 index 0000000..21b1f58 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C @@ -0,0 +1,81 @@ +// { dg-do run } +// { dg-options "-O3" } + +struct Distraction +{ + char fc[8]; + virtual Distraction * return_self () + { return this; } +}; + +namespace { + +struct A; +static A * __attribute__ ((noinline, noclone)) get_an_A (); + +static int go; + +struct A +{ + int fi; + + A () : fi(777) {} + A (int pi) : fi (pi) {} + virtual A * foo (int p) = 0; +}; + +struct B; +static B * __attribute__ ((noinline, noclone)) get_a_B (); + +struct B : public Distraction, A +{ + B () : Distraction(), A() { } + B (int pi) : Distraction (), A (pi) {} + virtual B * foo (int p) + { + int o = fi; + for (int i = 0; i < p; i++) + o += i + i * i; + go = o; + + return get_a_B (); + } +}; + + +struct B gb1 (1111), gb2 (2); +static B * __attribute__ ((noinline, noclone)) +get_a_B () +{ + return &gb1; +} + +static A * __attribute__ ((noinline, noclone)) +get_an_A () +{ + return &gb2; +} + +} + +static int __attribute__ ((noinline, noclone)) +get_a_number () +{ + return 5; +} + +extern "C" void abort (void); + +int main (int argc, char *argv[]) +{ + for (int i = 0; i < get_a_number (); i++) + { + struct A *p = get_an_A (); + struct A *r = p->foo (4); + if (r->fi != 1111) + abort (); + if (go != 22) + abort (); + } + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C new file mode 100644 index 0000000..eb9eb62 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C @@ -0,0 +1,85 @@ +// { dg-do run } +// { dg-options "-O3 -fdump-ipa-cp" } + +struct Distraction +{ + char fc[8]; + virtual Distraction * return_self () + { return this; } +}; + +namespace { + +struct A; +static A * __attribute__ ((noinline, noclone)) get_an_A (); + +static int go; + +struct A +{ + int fi; + + A () : fi(777) {} + A (int pi) : fi (pi) {} + virtual void foo (int p) = 0; +}; + +struct B : public Distraction, A +{ + B () : Distraction(), A() { } + B (int pi) : Distraction (), A (pi) {} + virtual void foo (int p) + { + int o = fi; + for (int i = 0; i < p; i++) + o += i + i * i; + go = o; + } +}; + + +struct B gb (2); +static A * __attribute__ ((noinline, noclone)) +get_an_A () +{ + return &gb; +} + +} + +static int __attribute__ ((noinline, noclone)) +get_a_number () +{ + return 5; +} + +extern "C" void abort (void); + +static void __attribute__ ((noinline, noclone)) +bar () +{ + for (int i = 0; i < get_a_number (); i++) + { + struct A *p = get_an_A (); + p->foo (4); + if (go != 22) + abort (); + } +} + +int main (int argc, char *argv[]) +{ + for (int i = 0; i < get_a_number (); i++) + { + struct A *p = get_an_A (); + p->foo (4); + if (go != 22) + abort (); + } + + bar (); + return 0; +} + +/* { dg-final { scan-ipa-dump-times "Thunk fixed offset" 2 "cp"} } */ +/* { dg-final { cleanup-ipa-dump "cp" } } */ diff --git a/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C b/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C new file mode 100644 index 0000000..966a3c3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C @@ -0,0 +1,23 @@ +// PR lto/60567 +// { dg-lto-do link } +// { dg-lto-options { { -flto -fno-use-linker-plugin } } } +// { dg-extra-ld-options "-r -nostdlib" } + +#pragma implementation +struct S {}; + +#pragma interface +struct T +{ + virtual void foo (const S &) = 0; +}; + +struct U +{ + virtual void bar (const S &) = 0; +}; + +struct V : public T, public U +{ + virtual void bar (const S &) {} +}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C index 6db2f27..8d89ffa 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C @@ -159,6 +159,7 @@ TypeCompartment::addPendingRecompile (JSContext *cx, const RecompileInfo & info) pendingRecompiles->append (info); } volatile JITScript *JSScript::JITScriptHandle::UNJITTABLE; +#pragma GCC visibility pop int main () { diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C b/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C index d7f2710..b1cc5de 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C @@ -2,7 +2,8 @@ /* { dg-options "-O2 -finstrument-functions" } */ /* { dg-additional-options "-mno-explicit-relocs" { target alpha*-*-* } } */ /* { dg-additional-options "-mno-relax-pic-calls" { target mips*-*-* } } */ -/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1} } */ +/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1 { target { ! { hppa*-*-hpux* } } } } } */ +/* { dg-final { scan-assembler-times "__cyg_profile_func_enter,%r" 1 { target hppa*-*-hpux* } } } */ #define NOINSTR __attribute__((no_instrument_function)) diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C new file mode 100644 index 0000000..95d80a8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C @@ -0,0 +1,8 @@ +// PR c++/59115 + +template<typename T, float, int, typename U> void foo(T, U) {} // { dg-error "valid type" } + +void bar() +{ + foo(0, 0); // { dg-error "matching" } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C index 3d177f4..7d2161f 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C @@ -2,7 +2,7 @@ template<typename> struct A {}; -template<typename> struct A<int> // { dg-error "not used|template\\-parameter" } +template<typename> struct A<int> // { dg-error "not deducible|template\\-parameter" } { template<int> void foo(); }; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C index a79ab02..9d7d2ec 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C @@ -2,7 +2,7 @@ template < typename > struct A; -template < typename > struct A < int > // { dg-error "not used|template\\-parameter|declaration" } +template < typename > struct A < int > // { dg-error "not deducible|template\\-parameter|declaration" } { int i; int f (); diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C b/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C index aa32e3b..979e4c6 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C @@ -4,7 +4,7 @@ template<typename T> struct X { }; template<typename T> -struct X<typename T::foo> { }; // { dg-error "not used|T" } +struct X<typename T::foo> { }; // { dg-error "not deducible|T" } template<int N> struct X<int[N]> {}; // okay @@ -14,7 +14,7 @@ template<typename T, typename T::foo V> struct Y { }; template<typename T, typename U, U v> -struct Y<T, v> { }; // { dg-error "not used|U" } +struct Y<T, v> { }; // { dg-error "not deducible|U" } template<typename T, T V> diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C new file mode 100644 index 0000000..05575c4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C @@ -0,0 +1,19 @@ +// PR ipa/60315 +// { dg-do compile } +// { dg-options "-std=c++11" } + +struct Base { + virtual int f() = 0; +}; + +struct Derived : public Base { + virtual int f() final override { + return 42; + } +}; + +extern Base* b; + +int main() { + return (static_cast<Derived*>(b)->*(&Derived::f))(); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C new file mode 100644 index 0000000..9ddec0b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C @@ -0,0 +1,252 @@ +/* { dg-do assemble } */ + +class exception +{ +}; +class bad_alloc:exception +{ +}; +class logic_error:exception +{ +}; +class domain_error:logic_error +{ +}; +class invalid_argument:logic_error +{ +}; +class length_error:logic_error +{ +}; +class overflow_error:exception +{ +}; +typedef int mpz_t[]; +template < class > class __gmp_expr; +template <> class __gmp_expr < mpz_t > +{ + ~__gmp_expr (); +}; + +class PIP_Solution_Node; +class internal_exception +{ + ~internal_exception (); +}; +class not_an_integer:internal_exception +{ +}; +class not_a_variable:internal_exception +{ +}; +class not_an_optimization_mode:internal_exception +{ +}; +class not_a_bounded_integer_type_width:internal_exception +{ +}; +class not_a_bounded_integer_type_representation:internal_exception +{ +}; +class not_a_bounded_integer_type_overflow:internal_exception +{ +}; +class not_a_complexity_class:internal_exception +{ +}; +class not_a_control_parameter_name:internal_exception +{ +}; +class not_a_control_parameter_value:internal_exception +{ +}; +class not_a_pip_problem_control_parameter_name:internal_exception +{ +}; +class not_a_pip_problem_control_parameter_value:internal_exception +{ +}; +class not_a_relation:internal_exception +{ +}; +class ppl_handle_mismatch:internal_exception +{ +}; +class timeout_exception +{ + ~timeout_exception (); +}; +class deterministic_timeout_exception:timeout_exception +{ +}; +void __assert_fail (const char *, const char *, int, int *) +__attribute__ ((__noreturn__)); +void PL_get_pointer (void *); +int Prolog_is_address (); +inline int +Prolog_get_address (void **p1) +{ + Prolog_is_address ()? static_cast < + void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0); + PL_get_pointer (p1); + return 0; +} + +class non_linear:internal_exception +{ +}; +class not_unsigned_integer:internal_exception +{ +}; +class not_universe_or_empty:internal_exception +{ +}; +class not_a_nil_terminated_list:internal_exception +{ +}; +class PPL_integer_out_of_range +{ + __gmp_expr < mpz_t > n; +}; +void handle_exception (); +template < typename T > T * term_to_handle (int, const char *) +{ + if (Prolog_is_address ()) + { + void *p; + Prolog_get_address (&p); + return static_cast < T * >(0); + } + throw; +} + +void +ppl_new_MIP_Problem_from_MIP_Problem () +try +{ + term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2"); +} + +catch (exception &) +{ +} + +int +ppl_PIP_Tree_Node_parametric_values () +{ + try + { + PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0); + (void)a; + return 1; + } + catch (internal_exception &) + { + } + catch (not_unsigned_integer &) + { + handle_exception (); + } + catch (non_linear &) + { + handle_exception (); + } + catch (not_a_variable &) + { + handle_exception (); + } + catch (not_an_integer &) + { + handle_exception (); + } + catch (ppl_handle_mismatch &) + { + handle_exception (); + } + catch (not_an_optimization_mode &) + { + handle_exception (); + } + catch (not_a_complexity_class &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_width &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_representation &) + { + handle_exception (); + } + catch (not_a_bounded_integer_type_overflow &) + { + handle_exception (); + } + catch (not_a_control_parameter_name &) + { + handle_exception (); + } + catch (not_a_control_parameter_value &) + { + handle_exception (); + } + catch (not_a_pip_problem_control_parameter_name &) + { + handle_exception (); + } + catch (not_a_pip_problem_control_parameter_value &) + { + handle_exception (); + } + catch (not_universe_or_empty &) + { + handle_exception (); + } + catch (not_a_relation &) + { + handle_exception (); + } + catch (not_a_nil_terminated_list &) + { + handle_exception (); + } + catch (PPL_integer_out_of_range &) + { + handle_exception (); + } + catch (int &) + { + } catch (timeout_exception &) + { + handle_exception (); + } catch (deterministic_timeout_exception &) + { + handle_exception (); + } catch (overflow_error &) + { + handle_exception (); + } catch (domain_error &) + { + handle_exception (); + } catch (length_error &) + { + handle_exception (); + } catch (invalid_argument &) + { + handle_exception (); + } catch (logic_error &) + { + handle_exception (); + } catch (bad_alloc &) + { + handle_exception (); + } catch (exception &) + { + handle_exception (); + } catch ( ...) + { + handle_exception (); + } + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C new file mode 100644 index 0000000..48cf0af --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C @@ -0,0 +1,70 @@ +// PR target/60648 +// { dg-do compile } +// { dg-additional-options "-fPIC" { target fpic } } + +enum component +{ + Ex, + Ez, + Hy, + Permeability +}; +enum derived_component +{}; +enum direction +{ + X, + Y, + Z, + R, + P, + NO_DIRECTION +}; +derived_component a; +component *b; +component c; +direction d; +inline direction fn1 (component p1) +{ + switch (p1) + { + case 0: + return Y; + case 1: + return Z; + case Permeability: + return NO_DIRECTION; + } + return X; +} + +inline component fn2 (direction p1) +{ + switch (p1) + { + case 0: + case 1: + return component (); + case Z: + case R: + return component (1); + case P: + return component (3); + } +} + +void fn3 () +{ + direction e; + switch (0) + case 0: + switch (a) + { + case 0: + c = Ex; + b[1] = Hy; + } + e = fn1 (b[1]); + b[1] = fn2 (e); + d = fn1 (c); +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C new file mode 100644 index 0000000..f0158a5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C @@ -0,0 +1,58 @@ +// { dg-do compile } +template <typename _InputIterator> void __distance (_InputIterator); +template <typename _InputIterator> +void distance (_InputIterator, _InputIterator p2) +{ + __distance (p2); +} + +namespace boost +{ +template <class Iterator> struct A +{ + typedef typename Iterator::difference_type type; +}; +template <class T> typename T::const_iterator end (T &); +template <class T> typename T::const_iterator begin (T &); +template <class T> struct D : A<typename T::const_iterator> +{ +}; +template <class T> typename D<T>::type distance (const T &p1) +{ + distance (boost::begin (p1), boost::end (p1)); + return 0; +} +template <class IteratorT> class B +{ +public: + typedef B type; + typedef IteratorT const_iterator; +}; +} + +typedef int storage_t[]; +struct F; +template <template <typename> class> struct G +{ + G (const G &p1) { p1.m_fn1 ().m_fn1 (0); } + const F &m_fn1 () const + { + const void *a; + a = &data_m; + return *static_cast<const F *>(a); + } + storage_t *data_m; +}; + +struct F +{ + virtual F *m_fn1 (void *) const; +}; +template <typename> struct H; +struct C : G<H> +{ + typedef int difference_type; +}; +boost::B<C> AllTransVideos (); +int b = boost::distance (AllTransVideos ()); + diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C new file mode 100644 index 0000000..7ce6ebe --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C @@ -0,0 +1,23 @@ +// { dg-do compile } + +class One +{ +public: + virtual unsigned long getSize () const; +}; + +class Two +{ + virtual int run (); +}; + +int +Two::run () +{ + One list_arry[5][2]; + int orig = 0; + if (list_arry[3][orig].getSize () > 0 + || list_arry[4][orig].getSize () > 0) + { + } +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C new file mode 100644 index 0000000..a344bd7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C @@ -0,0 +1,21 @@ +// { dg-do run } +// { dg-options "-std=c++11" } + +#include <string> +#include <stdexcept> + +const std::string err_prefix = "Problem: "; +void thrower (std::string msg) +{ + throw std::runtime_error(err_prefix + std::move(msg)); +} + +int main(int argc, char **argv) +{ + try { + std::string base = "hello"; + thrower(std::move(base)); + } catch (const std::runtime_error &e) { + } + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc new file mode 100644 index 0000000..fd472c5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc @@ -0,0 +1,10 @@ +// { dg-do compile } +// { dg-additional-options "-ftrapv" } + +void doSomething(int dim, double *Y, double *A) +{ + for (int k=0; k<dim; k++) + Y[k] += __builtin_fabs (A[k]); +} + +// { dg-final { cleanup-tree-dump "vect" } } diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C index d40de3d..9f2e4be 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C @@ -6,18 +6,18 @@ // destructor, in which case it would be possible but unsafe to delete // an instance of a derived class through a pointer to the base class. -struct A // { dg-bogus "non-virtual destructor" } +struct A { protected: - ~A(); + ~A(); // inaccessible - no warning public: virtual void f() = 0; }; -struct B // { dg-bogus "non-virtual destructor" } +struct B { private: - ~B(); + ~B(); // inaccessible - no warning public: virtual void f() = 0; }; @@ -52,3 +52,25 @@ private: public: virtual void f() = 0; }; + +struct H {}; + +struct I1 : H +{}; +struct I2 : private H +{}; + +struct J1 : H +{ virtual ~J1 ();}; +struct J2 : private H +{ virtual ~J2 ();}; + +struct K // { dg-warning "accessible non-virtual destructor" } +{ + virtual void k (); +}; + +struct L1 : K // { dg-warning "accessible non-virtual destructor" } +{virtual ~L1 ();}; +struct L2 : private K +{virtual ~L2 ();}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C new file mode 100644 index 0000000..e83134b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C @@ -0,0 +1,75 @@ +// { dg-do compile } +// { dg-options "-Weffc++" } + +// Warn when a class has virtual functions and accessible non-virtual +// destructor, in which case it would be possible but unsafe to delete +// an instance of a derived class through a pointer to the base class. + +struct A +{ +protected: + ~A(); // inaccessible - no warning +public: + virtual void f() = 0; +}; + +struct B +{ +private: + ~B(); // inaccessible - no warning +public: + virtual void f() = 0; +}; + +struct C // { dg-warning "non-virtual destructor" } +{ + virtual void f() = 0; +}; + +struct D // { dg-warning "non-virtual destructor" } +{ + ~D(); + virtual void f() = 0; +}; + +struct E; + +struct F // { dg-warning "non-virtual destructor" } +{ +protected: + friend class E; + ~F(); +public: + virtual void f() = 0; +}; + +struct G // { dg-warning "non-virtual destructor" } +{ +private: + friend class E; + ~G(); +public: + virtual void f() = 0; +}; + +struct H {}; + +struct I1 : H +{}; +struct I2 : private H +{}; + +struct J1 : H // { dg-warning "accessible non-virtual destructor" } +{ virtual ~J1 ();}; +struct J2 : private H +{ virtual ~J2 ();}; + +struct K // { dg-warning "accessible non-virtual destructor" } +{ + virtual void k (); +}; + +struct L1 : K // { dg-warning "accessible non-virtual destructor" } +{virtual ~L1 ();}; +struct L2 : private K +{virtual ~L2 ();}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C new file mode 100644 index 0000000..dd6d9d7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C @@ -0,0 +1,75 @@ +// { dg-do compile } +// { dg-options "-Weffc++ -Wno-non-virtual-dtor" } + +// Warn when a class has virtual functions and accessible non-virtual +// destructor, in which case it would be possible but unsafe to delete +// an instance of a derived class through a pointer to the base class. + +struct A +{ +protected: + ~A(); +public: + virtual void f() = 0; +}; + +struct B +{ +private: + ~B(); +public: + virtual void f() = 0; +}; + +struct C +{ + virtual void f() = 0; +}; + +struct D +{ + ~D(); + virtual void f() = 0; +}; + +struct E; + +struct F +{ +protected: + friend class E; + ~F(); +public: + virtual void f() = 0; +}; + +struct G +{ +private: + friend class E; + ~G(); +public: + virtual void f() = 0; +}; + +struct H {}; + +struct I1 : H +{}; +struct I2 : private H +{}; + +struct J1 : H +{ virtual ~J1 ();}; +struct J2 : private H +{ virtual ~J2 ();}; + +struct K +{ + virtual void k (); +}; + +struct L1 : K +{virtual ~L1 ();}; +struct L2 : private K +{virtual ~L2 ();}; diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C index b04fdcb..f03cff5 100644 --- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C +++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C @@ -8,3 +8,4 @@ extern "Java" virtual void bar( void); }; } + diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C new file mode 100644 index 0000000..c483601 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C @@ -0,0 +1,11 @@ +// PR c++/44859 + +struct Base2 { int m_foo; }; +struct Derived2 : public Base2 {}; + +const Base2& f8() { return Derived2(); } // { dg-warning "reference to temporary" } + +struct foo { }; +struct bar { foo base; }; + +const foo& f9() { return bar().base; } // { dg-warning "reference to temporary" } diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C index 7239793..125aee0 100644 --- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C +++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.jason/overload21.C @@ -1,6 +1,6 @@ // { dg-do assemble } struct X { - void f (int = 4, char = 'r'); // { dg-error "previous specification" } + void f (int = 4, char = 'r'); // { dg-message "previous specification" } void g (int = 4, char = 'r'); // { dg-message "previous specification" } }; diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C index c1d647b..7ed89e2 100644 --- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C +++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.law/init5.C @@ -11,8 +11,8 @@ extern int fred( int); class X { public : - void f( int = fred( 0) ) ; // { dg-error "" } previous spec + void f( int = fred( 0) ) ; // { dg-message "previous spec" } } ; -void X::f( int x = fred( 0) ) {// { dg-error "" } .* +void X::f( int x = fred( 0) ) { // { dg-error "default argument" } } diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C index e01d747..036c8d5 100644 --- a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C +++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.robertl/eb121.C @@ -3,7 +3,7 @@ class A { private: int i1_; public: - void f(int const i1 = 1); // { dg-error "previous specification" } + void f(int const i1 = 1); // { dg-message "previous specification" } }; void diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c index aa6ae07..4ad0f5c 100644 --- a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr28865.c @@ -1,3 +1,5 @@ +/* { dg-xfail-if "PR target/60602" { sparc*-*-solaris2.9* && { ! gas } } { "-O0" } } */ + struct var_len { int field1; diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c new file mode 100644 index 0000000..c775432 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60556.c @@ -0,0 +1,8 @@ +/* PR middle-end/60556 */ + +int g (int); + +unsigned long long f (void) +{ + return (unsigned long long)(long)&g; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c new file mode 100644 index 0000000..6f84f6e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c @@ -0,0 +1,31 @@ +/* { dg-options "-fdata-sections" } */ + +typedef unsigned char unit; +typedef unit *unitptr; +extern short global_precision; +typedef __SIZE_TYPE__ size_t; +extern void *memcpy (void *dest, const void *src, size_t n); + +short mp_compare(const unit* r1, const unit* r2) +{ + register short precision; + precision = global_precision; + (r1) = ((r1)+(precision)-1); + (r2) = ((r2)+(precision)-1); + do + { if (*r1 < *r2) + return(-1); + if (*((r1)--) > *((r2)--)) + return(1); + } while (--precision); +} + +static unit modulus[((1280+(2*8))/8)]; +static unit d_data[((1280+(2*8))/8)*2]; + +int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier) +{ + unitptr d = d_data; + while (mp_compare(d,modulus) > 0) + memcpy((void*)(prod), (const void*)(d), (global_precision)); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c new file mode 100644 index 0000000..f33db64 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr60655-2.c @@ -0,0 +1,30 @@ + +typedef unsigned char unit; +typedef unit *unitptr; +extern short global_precision; +typedef __SIZE_TYPE__ size_t; +extern void *memcpy (void *dest, const void *src, size_t n); + +short mp_compare(const unit* r1, const unit* r2) +{ + register short precision; + precision = global_precision; + (r1) = ((r1)+(precision)-1); + (r2) = ((r2)+(precision)-1); + do + { if (*r1 < *r2) + return(-1); + if (*((r1)--) > *((r2)--)) + return(1); + } while (--precision); +} + +static unit modulus[((1280+(2*8))/8)]; +static unit d_data[((1280+(2*8))/8)*2]; + +int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier) +{ + unitptr d = d_data; + while (mp_compare(d,modulus) > 0) + memcpy((void*)(prod), (const void*)(d), (global_precision)); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c new file mode 100644 index 0000000..552e218 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/20140326-1.c @@ -0,0 +1,10 @@ +int a; + +int +main (void) +{ + char e[2] = { 0, 0 }, f = 0; + if (a == 131072) + f = e[a]; + return f; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c index 32f9e9b..c1a63f1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/atomic/stdatomic-flag.c @@ -1,5 +1,5 @@ /* Test atomic_flag routines for existence and execution. */ -/* { dg-do run } */ +/* { dg-do run { xfail hppa*-*-hpux* } } */ /* { dg-options "-std=c11 -pedantic-errors" } */ #include <stdatomic.h> diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c index ee900fc..9ed1c51 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/attr-weakref-1.c @@ -4,12 +4,14 @@ // This test requires support for undefined weak symbols. This support // is not available on hppa*-*-hpux*. The test is skipped rather than // xfailed to suppress the warning that would otherwise arise. -// { dg-skip-if "" { "*-*-darwin*" "hppa*-*-hpux*" "*-*-aix*" } "*" { "" } } +// { dg-skip-if "" { "hppa*-*-hpux*" "*-*-aix*" } "*" { "" } } // For kernel modules and static RTPs, the loader treats undefined weak // symbols in the same way as undefined strong symbols. The test // therefore fails to load, so skip it. // { dg-skip-if "" { "*-*-vxworks*" && nonpic } "*" { "-non-static" } } // { dg-options "-O2" } +// { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } +// { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } // { dg-additional-sources "attr-weakref-1a.c" } // Copyright 2005 Free Software Foundation, Inc. diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c index 024ebf1..efda870 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6.c @@ -1,7 +1,10 @@ /* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* rs6000-*-* x86_64-*-* s390*-*-* } } */ /* { dg-require-effective-target stdint_types } */ /* { dg-options "-O -fdump-rtl-combine" } */ -/* { dg-options "-O -fdump-rtl-combine -march=z900" { target s390-*-* } } */ + +/* The branch cost setting prevents the return value from being + calculated with arithmetic instead of doing a compare. */ +/* { dg-additional-options "-march=z900 -mbranch-cost=0" { target s390*-*-* } } */ #include <stdint.h> diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c new file mode 100644 index 0000000..f93bcde --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-6a.c @@ -0,0 +1,44 @@ +/* { dg-do compile { target arm*-*-* alpha*-*-* i?86-*-* powerpc*-*-* rs6000-*-* x86_64-*-* s390*-*-* } } */ +/* { dg-require-effective-target stdint_types } */ +/* { dg-options "-O2 -fdump-rtl-combine" } */ +/* { dg-additional-options "-march=z900" { target s390-*-* } } */ + +/* The test is similiar to builtin-bswap-6.c but returns 1/2 instead + of 0/1 to prevent GCC from calculating the return value with + arithmetic instead of a comparison. This requires the optimization + level to be bumped up to -O2 at least for x86_64. */ + +#include <stdint.h> + +#define BS(X) __builtin_bswap32(X) + +int foo1 (uint32_t a) +{ + if (BS (a) == 0xA0000) + return 1; + return 2; +} + +int foo2 (uint32_t a) +{ + if (BS (a) != 0xA0000) + return 1; + return 2; +} + +int foo3 (uint32_t a, uint32_t b) +{ + if (BS (a) == BS (b)) + return 1; + return 2; +} + +int foo4 (uint32_t a, uint32_t b) +{ + if (BS (a) != BS (b)) + return 1; + return 2; +} + +/* { dg-final { scan-rtl-dump-not "bswapsi" "combine" } } */ +/* { dg-final { cleanup-rtl-dump "combine" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c index 399b825..035c736 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7.c @@ -3,6 +3,10 @@ /* { dg-require-effective-target lp64 } */ /* { dg-options "-O -fdump-rtl-combine" } */ +/* The branch cost setting prevents the return value from being + calculated with arithmetic instead of doing a compare. */ +/* { dg-additional-options "-mbranch-cost=0" { target s390x-*-* } } */ + #include <stdint.h> #define BS(X) __builtin_bswap64(X) diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c new file mode 100644 index 0000000..d77bd47 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/builtin-bswap-7a.c @@ -0,0 +1,44 @@ +/* { dg-do compile { target arm*-*-* alpha*-*-* ia64*-*-* x86_64-*-* s390x-*-* powerpc*-*-* rs6000-*-* } } */ +/* { dg-require-effective-target stdint_types } */ +/* { dg-require-effective-target lp64 } */ +/* { dg-options "-O2 -fdump-rtl-combine" } */ + +/* The test is similiar to builtin-bswap-7.c but returns 1/2 instead + of 0/1 to prevent GCC from calculating the return value with + arithmetic instead of a comparison. This requires the optimization + level to be bumped up to -O2 at least for x86_64. */ + +#include <stdint.h> + +#define BS(X) __builtin_bswap64(X) + +int foo1 (uint64_t a) +{ + if (BS (a) == 0xA00000000) + return 1; + return 2; +} + +int foo2 (uint64_t a) +{ + if (BS (a) != 0xA00000000) + return 1; + return 2; +} + +int foo3 (uint64_t a, uint64_t b) +{ + if (BS (a) == BS (b)) + return 1; + return 2; +} + +int foo4 (uint64_t a, uint64_t b) +{ + if (BS (a) != BS (b)) + return 1; + return 2; +} + +/* { dg-final { scan-rtl-dump-not "bswapdi" "combine" } } */ +/* { dg-final { cleanup-rtl-dump "combine" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp b/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp index 61085fd..63cfb0e 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp +++ b/gcc-4.9/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp @@ -19,53 +19,45 @@ load_lib gcc-dg.exp load_lib lto.exp +load_lib cilk-plus-dg.exp if { ![check_effective_target_cilkplus] } { return; } -set library_var [get_multilibs] -# Pointing the ld_library_path to the Cilk Runtime library binaries. -append ld_library_path ":${library_var}/libcilkrts/.libs" -set_ld_library_path_env_vars - -global TEST_EXTRA_LIBS -set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs" - dg-init - -# Run the tests that are shared with C++. -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] " -ftree-vectorize -fcilkplus -std=c99" " " -# Run the C-only tests. -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \ - "-ftree-vectorize -fcilkplus -std=c99" " " - -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " " - -if { [check_libcilkrts_available] } { - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " " - if { [check_effective_target_lto] } { - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " " - } +if [cilkplus_init] { + # Run the tests that are shared with C++. + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] " -ftree-vectorize -fcilkplus -std=c99" " " + # Run the C-only tests. + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \ + "-ftree-vectorize -fcilkplus -std=c99" " " + + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " " + + if { [check_libcilkrts_available] } { + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " " + if { [check_effective_target_lto] } { + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " " + } + } + + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " " } - -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " " - +cilkplus_finish dg-finish - -unset TEST_EXTRA_LIBS diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c new file mode 100644 index 0000000..5b7c180 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60740.c @@ -0,0 +1,16 @@ +/* { dg-options "-O2 -floop-interchange" } */ + +int **db6 = 0; + +void +k26(void) +{ + static int geb = 0; + int *a22 = &geb; + int **l30 = &a22; + int *c4b; + int ndf; + for (ndf = 0; ndf <= 1; ++ndf) + *c4b = (db6 == l30) && (*a22)--; +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c new file mode 100644 index 0000000..87c1c68 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/graphite/pr60785.c @@ -0,0 +1,27 @@ +/* { dg-options "-O2 -floop-interchange" } */ + +static int +aqc(void) +{ + return 1; +} + +void +gkd(void) +{ + int wu0; + static int b1y; + static int gw2; + static int *ydw = &gw2; + static int **m3l = &ydw; + **m3l = 0; + for (b1y = 0; b1y < 1; ++b1y) + { + int *cpj = &gw2; + if (*ydw |= aqc()) + { + *cpj = 0; + *ydw = wu0; + } + } +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c index 8ef11dc..8c30976 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr55113_0.c @@ -1,7 +1,8 @@ /* PR 55113 */ /* { dg-lto-do link } */ /* { dg-lto-options { { -flto -fshort-double -O0 } } }*/ -/* { dg-skip-if "PR60410" { { x86_64-*-* i?86-*-* } && lp64 } } */ +/* { dg-skip-if "PR60410" { x86_64-*-* || { i?86-*-* && lp64 } } } */ +/* { dg-skip-if "PR60410" { i?86-*-solaris2.1[0-9]* } } */ int main(void) diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c new file mode 100644 index 0000000..752982f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_0.c @@ -0,0 +1,15 @@ +/* { dg-lto-do run } */ + +int __atoi (const char *) __asm__("atoi"); +extern inline __attribute__((always_inline,gnu_inline)) +int atoi (const char *x) +{ + return __atoi (x); +} + +int bar (int (*)(const char *)); + +int main() +{ + return bar (atoi); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c new file mode 100644 index 0000000..9b3fa1d --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/lto/pr59626_1.c @@ -0,0 +1,4 @@ +int bar (int (*fn)(const char *)) +{ + return fn ("0"); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c index 2f013cc..5795034 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr45416.c @@ -9,7 +9,7 @@ int foo(long long a) return 0; } -/* { dg-final { scan-assembler "andl" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } " */ +/* { dg-final { scan-assembler "andl|bextr" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } " */ /* { dg-final { scan-assembler-not "setne" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } }" */ /* { dg-final { scan-assembler "and|ubfx" { target arm*-*-* } } } */ /* { dg-final { scan-assembler-not "moveq" { target arm*-*-* } } }" */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c index b0fd17f..d81eaf7 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr59940.c @@ -3,11 +3,12 @@ /* { dg-options "-Wconversion -Woverflow" } */ int f (unsigned int); +typedef sitype __attribute__((mode(SI))); int g (void) { - int si = 12; + sitype si = 12; unsigned int ui = -1; /* { dg-warning "21:negative integer implicitly converted to unsigned type" } */ unsigned char uc; ui = si; /* { dg-warning "8:conversion" } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c new file mode 100644 index 0000000..73ea856 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-1.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +struct _wincore +{ + int y; + int width; +}; +int a; +static fn1 (dpy, winInfo) struct _XDisplay *dpy; +struct _wincore *winInfo; +{ + a = winInfo->width; + fn2 (); +} + +static fn3 (dpy, winInfo, visrgn) struct _XDisplay *dpy; +{ + int b = fn1 (0, winInfo); + fn4 (0, 0, visrgn); +} + +fn5 (event) struct _XEvent *event; +{ + fn3 (0, 0, 0); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c new file mode 100644 index 0000000..ddeb117 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60647-2.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +struct _wincore +{ + int width, height; +}; + +static void +foo (void *dpy, struct _wincore *winInfo, int offset) +{ + fn1 (winInfo->height); +} + +static void +bar (void *dpy, int winInfo, int *visrgn) +{ + ((void (*) (void *, int, int)) foo) ((void *) 0, winInfo, 0); /* { dg-warning "function called through a non-compatible type" } */ + fn2 (0, 0, visrgn); +} + +void +baz (void *dpy, int win, int prop) +{ + bar ((void *) 0, 0, (int *) 0); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c new file mode 100644 index 0000000..8a9af39 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60704.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-flive-range-shrinkage" } */ +/* { dg-additional-options "-march=amdfam10" { target { i?86-*-* x86_64-*-* } } } */ + +struct S +{ + int n; +}; + +int +foo (struct S s, double a) +{ + return s.n * a; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c b/gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c new file mode 100644 index 0000000..45090ba --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/pr60797.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { alias } } */ + +extern int foo __attribute__((alias("bar"))); /* { dg-error "supported" } */ +int main() +{ + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c b/gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c new file mode 100644 index 0000000..8c78ca7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/predict-8.c @@ -0,0 +1,12 @@ +/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ +/* { dg-options "-O2 -fdump-rtl-expand" } */ + +int foo(float a, float b) { + if (a == b) + return 1; + else + return 2; +} + +/* { dg-final { scan-rtl-dump-times "REG_BR_PROB 100" 1 "expand"} } */ +/* { dg-final { cleanup-rtl-dump "expand" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c index d385587..3974dc6 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr53922.c @@ -4,6 +4,7 @@ /* { dg-skip-if "No undefined weak" { *-*-aix* } { "*" } { "" } } */ /* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } { "*" } { "" } } */ /* { dg-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */ +/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */ int x(int a) { diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c index a85720c..337ff52 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60092.c @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-require-weak "" } */ -/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } { "*" } { "" } } */ +/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } } */ +/* { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */ +/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */ /* { dg-xfail-run-if "posix_memalign modifies first arg on error" { *-*-solaris2.11* } { "-O0" } } */ typedef __SIZE_TYPE__ size_t; diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c new file mode 100644 index 0000000..49cc59e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60733.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ + +int a, d, e, f, g, h, i, j, k; +unsigned short b; + +short +fn1 (int p1, int p2) +{ + return p1 * p2; +} + +int +main () +{ + for (; a; a--) + { + int l = 0; + if (f >= 0) + { + for (; h;) + e = 0; + for (; l != -6; l--) + { + j = fn1 (b--, d); + for (g = 0; g; g = 1) + ; + k = e ? 2 : 0; + } + i = 0; + for (;;) + ; + } + } + d = 0; + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c new file mode 100644 index 0000000..6f16e3b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/torture/pr60766.c @@ -0,0 +1,15 @@ +/* { dg-do run } */ + +int m = 9; + +int main() +{ + int n, x; + + n = m; + for (x = 0; x <= n; x++) + if (n == x + (x + 1) + (x + 2)) + return 0; + + __builtin_abort(); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c index 99b27ce..b49cf64 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c @@ -16,6 +16,7 @@ void bar (void) /* We used to treat malloc functions like pure and const functions, but malloc functions may clobber global memory. Only the function result does not alias any other pointer. - Hence, we must have a VDEF for a before and after the call to foo(). */ -/* { dg-final { scan-tree-dump-times "VDEF" 2 "alias"} } */ + Hence, we must have a VDEF for a before and after the call to foo(). + And one after the call to abort(). */ +/* { dg-final { scan-tree-dump-times "VDEF" 3 "alias"} } */ /* { dg-final { cleanup-tree-dump "alias" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c index 1e46634..e85a244 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom1-details" } */ -/* { dg-additional-options "-mbranch-cost=2" { target s390*-*-* } } */ struct bitmap_head_def; typedef struct bitmap_head_def *bitmap; typedef const struct bitmap_head_def *const_bitmap; @@ -76,6 +75,6 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b, -> "kill_elt->indx == b_elt->indx" in the second condition, skipping the known-true "b_elt && kill_elt" in the second condition. */ -/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target logical_op_short_circuit } } } */ +/* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target logical_op_short_circuit xfail logical_op_short_circuit } } } */ /* { dg-final { cleanup-tree-dump "dom1" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c index 19f892e..43b92c1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c +++ b/gcc-4.9/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-tree-optimized" } */ -/* { dg-additional-options "-mbranch-cost=2" { target { i?86-*-* x86_64-*-* mips*-*-* s390*-*-* avr*-*-* } } } */ +/* { dg-additional-options "-mbranch-cost=2" { target { i?86-*-* x86_64-*-* s390*-*-* avr*-*-* } } } */ _Bool f1(_Bool a, _Bool b) { @@ -17,5 +17,5 @@ _Bool f1(_Bool a, _Bool b) /* For LOGICAL_OP_NON_SHORT_CIRCUIT, this should be optimized into return a & b;, with no ifs. */ -/* { dg-final { scan-tree-dump-not "if" "optimized" { target { i?86-*-* x86_64-*-* mips*-*-* s390*-*-* avr*-*-* } } } } */ +/* { dg-final { scan-tree-dump-not "if" "optimized" { target { i?86-*-* x86_64-*-* s390*-*-* avr*-*-* } } } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c new file mode 100644 index 0000000..6940513 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60505.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Wall -Werror" } */ + +void foo(char *in, char *out, int num) +{ + int i; + char ovec[16] = {0}; + + for(i = 0; i < num ; ++i) + out[i] = (ovec[i] = in[i]); + out[num] = ovec[num/2]; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c new file mode 100644 index 0000000..4950275 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.dg/vect/pr60656.c @@ -0,0 +1,47 @@ +/* { dg-require-effective-target vect_int } */ +/* { dg-require-effective-target vect_long } */ + +#include "tree-vect.h" + +__attribute__ ((noinline)) long +foo () +{ + int v[] = {5000, 5001, 5002, 5003}; + long s = 0; + int i; + + for(i = 0; i < 4; ++i) + { + long P = v[i]; + s += P * P * P; + } + return s; +} + +long +bar () +{ + int v[] = {5000, 5001, 5002, 5003}; + long s = 0; + int i; + + for(i = 0; i < 4; ++i) + { + long P = v[i]; + s += P * P * P; + __asm__ volatile (""); + } + return s; +} + +int main() +{ + check_vect (); + + if (foo () != bar ()) + abort (); + return 0; +} + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_si_to_di_pattern } } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c new file mode 100644 index 0000000..ab7e7f4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60034.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -O" } */ + +static unsigned long global_max_fast; + +void __libc_mallopt (int param_number, int value) +{ + __asm__ __volatile__ ("# %[_SDT_A21]" :: [_SDT_A21] "nor" ((global_max_fast))); + global_max_fast = 1; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c new file mode 100644 index 0000000..1adf508 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60580_1.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -fomit-frame-pointer -fno-inline --save-temps" } */ + +void +func_leaf (void) +{ + int a = 0; +} + +void +func_no_leaf (void) +{ + int a = 0; + func_leaf (); +} + +void +func1 (void) +{ + int a = 0; + func_no_leaf (); +} + +/* + * This function calls XXX(), which modifies SP. This is incompatible to + * -fomit-frame-pointer generated code as SP is used to access the frame. + */ +__attribute__ ((optimize("no-omit-frame-pointer"))) +void +func2 (void) +{ + int a = 0; + func_no_leaf (); +} + +void +func3 (void) +{ + int a = 0; + func_no_leaf (); +} + +/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C new file mode 100644 index 0000000..aa88cdb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60675.C @@ -0,0 +1,277 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c++11 -w -O2 -fPIC" } */ +namespace CLHEP { + static const double meter = 1000.*10; + static const double meter2 = meter*meter; + static const double megaelectronvolt = 1. ; + static const double gigaelectronvolt = 1.e+3; + static const double GeV = gigaelectronvolt; + static const double megavolt = megaelectronvolt; + static const double volt = 1.e-6*megavolt; + static const double tesla = volt*1.e+9/meter2; + } + using CLHEP::GeV; + using CLHEP::tesla; + namespace std { + typedef long int ptrdiff_t; + } + extern "C" { + extern double cos (double __x) throw (); + extern double sin (double __x) throw (); + extern double sqrt (double __x) throw (); + } + namespace std __attribute__ ((__visibility__ ("default"))) { + using ::cos; + using ::sin; + using ::sqrt; + template<class _CharT> struct char_traits; + template<typename _CharT, typename _Traits = char_traits<_CharT> > struct basic_ostream; + typedef basic_ostream<char> ostream; + template<typename _Iterator> struct iterator_traits { }; + template<typename _Tp> struct iterator_traits<_Tp*> { + typedef ptrdiff_t difference_type; + typedef _Tp& reference; + }; + } + namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { + using std::iterator_traits; + template<typename _Iterator, typename _Container> struct __normal_iterator { + _Iterator _M_current; + typedef iterator_traits<_Iterator> __traits_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::reference reference; + explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { } + reference operator*() const { + return *_M_current; + } + __normal_iterator operator+(difference_type __n) const { + return __normal_iterator(_M_current + __n); + } + }; + template<typename _Tp> struct new_allocator { + }; + } + namespace std __attribute__ ((__visibility__ ("default"))) { + template<typename _Tp> struct allocator: public __gnu_cxx::new_allocator<_Tp> { + }; + struct ios_base { }; + template<typename _CharT, typename _Traits> struct basic_ios : public ios_base { }; + template<typename _CharT, typename _Traits> struct basic_ostream : virtual public basic_ios<_CharT, _Traits> { + typedef basic_ostream<_CharT, _Traits> __ostream_type; + __ostream_type& operator<<(__ostream_type& (*__pf)(__ostream_type&)) { } + __ostream_type& operator<<(const void* __p) { + return _M_insert(__p); + } + template<typename _ValueT> __ostream_type& _M_insert(_ValueT __v); + }; + template<typename _CharT, typename _Traits> inline basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) { + } + } + typedef double G4double; + typedef int G4int; + extern __thread std::ostream *G4cout_p; + struct G4Field; + struct G4FieldManager { + inline G4Field* GetDetectorField() ; + }; + namespace CLHEP { + struct Hep3Vector { + Hep3Vector(double x, double y, double z); + inline ~Hep3Vector(); + inline double x() const; + inline double y() const; + inline double z() const; + inline double mag() const; + inline Hep3Vector cross(const Hep3Vector &) const; + double dx; + double dy; + double dz; + }; + Hep3Vector operator / (const Hep3Vector &, double a); + inline double Hep3Vector::x() const { + return dx; + } + inline double Hep3Vector::y() const { + return dy; + } + inline double Hep3Vector::z() const { + return dz; + } + inline Hep3Vector operator + (const Hep3Vector & a, const Hep3Vector & b) { } + inline Hep3Vector operator * (const Hep3Vector & p, double a) { } + inline double operator * (const Hep3Vector & a, const Hep3Vector & b) { } + inline Hep3Vector::Hep3Vector(double x1, double y1, double z1) : dx(x1), dy(y1), dz(z1) { + } + inline Hep3Vector::~Hep3Vector() { } + inline Hep3Vector Hep3Vector::cross(const Hep3Vector & p) const { + return Hep3Vector(dy*p.dz-p.dy*dz, dz*p.dx-p.dz*dx, dx*p.dy-p.dx*dy); + } + } + typedef CLHEP::Hep3Vector G4ThreeVector; + namespace std __attribute__ ((__visibility__ ("default"))) { + template<typename _Tp, typename _Alloc = std::allocator<_Tp> > struct vector + { + typedef _Tp *pointer; + typedef __gnu_cxx::__normal_iterator<pointer, vector> iterator; + iterator begin() { } + }; + } + struct G4TransportationManager { + static G4TransportationManager* GetTransportationManager(); + inline G4FieldManager* GetFieldManager() const; + }; + struct G4ErrorMatrix { + G4ErrorMatrix(G4int p, G4int q, G4int i); + virtual ~G4ErrorMatrix(); + struct G4ErrorMatrix_row { + inline G4ErrorMatrix_row(G4ErrorMatrix&,G4int); + G4double & operator[](G4int); + G4ErrorMatrix& _a; + G4int _r; + }; + inline G4ErrorMatrix_row operator[] (G4int); + std::vector<G4double > m; + G4int nrow, ncol; + }; + inline G4ErrorMatrix::G4ErrorMatrix_row G4ErrorMatrix::operator[] (G4int r) { + G4ErrorMatrix_row b(*this,r); + return b; + } + inline G4double &G4ErrorMatrix::G4ErrorMatrix_row::operator[](G4int c) { + return *(_a.m.begin()+_r*_a.ncol+c); + } + inline G4ErrorMatrix:: G4ErrorMatrix_row::G4ErrorMatrix_row(G4ErrorMatrix&a, G4int r) : _a(a) { + _r = r; + }; + struct G4DynamicParticle { + G4double GetCharge() const; + }; + struct G4Step; + struct G4Track { + const G4DynamicParticle* GetDynamicParticle() const; + const G4ThreeVector& GetPosition() const; + G4ThreeVector GetMomentum() const; + const G4Step* GetStep() const; + }; + struct G4StepPoint { + const G4ThreeVector& GetPosition() const; + G4ThreeVector GetMomentum() const; + }; + struct G4Step { + G4StepPoint* GetPreStepPoint() const; + G4double GetStepLength() const; + }; + namespace HepGeom { + template<class T> struct BasicVector3D { + T v_[3]; + BasicVector3D(T x1, T y1, T z1) { } + operator T * () { + return v_; + } + T x() const { + return v_[0]; + } + T y() const { + return v_[1]; + } + T z() const { + return v_[2]; + } + T perp2() const { } + T perp() const { + return std::sqrt(perp2()); + } + T mag2() const { } + T mag() const { + return std::sqrt(mag2()); + } + T theta() const { } + }; + inline BasicVector3D<double> operator-(const BasicVector3D<double> & a,const BasicVector3D<double> & b) { } + inline BasicVector3D<double> operator*(const BasicVector3D<double> & v, double a) { } + template<class T> struct Point3D : public BasicVector3D<T> { + explicit Point3D(const double * a) : BasicVector3D<double>(a[0],a[1],a[2]) { } + Point3D(const CLHEP::Hep3Vector & v) : BasicVector3D<double>(v.dx,v.dy,v.dz) { } + }; + } + typedef HepGeom::Point3D<G4double> G4Point3D; + namespace HepGeom { + template<class T> struct Vector3D : public BasicVector3D<T> { + Vector3D(const BasicVector3D<double> & v) : BasicVector3D<double>(v) { } + Vector3D(const CLHEP::Hep3Vector & v) : BasicVector3D<double>(v.dx,v.dy,v.dz) { } + operator CLHEP::Hep3Vector () const { } + }; + } + typedef HepGeom::Vector3D<G4double> G4Vector3D; + struct G4ErrorFreeTrajState +{ + virtual G4int PropagateError( const G4Track* aTrack ); + G4int PropagateErrorMSC( const G4Track* aTrack ); + }; + G4int G4ErrorFreeTrajState::PropagateError( const G4Track* aTrack ) { + G4double stepLengthCm = aTrack->GetStep()->GetStepLength()/10.; + G4Point3D vposPost = aTrack->GetPosition()/10.; + G4Vector3D vpPost = aTrack->GetMomentum()/GeV; + G4Point3D vposPre = aTrack->GetStep()->GetPreStepPoint()->GetPosition()/10.; + G4Vector3D vpPre = aTrack->GetStep()->GetPreStepPoint()->GetMomentum()/GeV; + G4double pPre = vpPre.mag(); + G4double pPost = vpPost.mag(); + G4double pInvPre = 1./pPre; + G4double pInvPost = 1./pPost; + G4double deltaPInv = pInvPost - pInvPre; + G4Vector3D vpPreNorm = vpPre * pInvPre; + G4Vector3D vpPostNorm = vpPost * pInvPost; + (*G4cout_p) << "G4EP: vpPreNorm " << vpPreNorm << " vpPostNorm " << vpPostNorm << std::endl; + G4double sinpPre = std::sin( vpPreNorm.theta() ); + G4double sinpPostInv = 1./std::sin( vpPreNorm.theta() ); + G4ErrorMatrix transf(5, 5, 0 ); + G4double charge = aTrack->GetDynamicParticle()->GetCharge(); + G4double h1[3], h2[3]; + G4Field* field += G4TransportationManager::GetTransportationManager()->GetFieldManager()->GetDetectorField() +; + if( charge != 0. && field ) + { + G4ThreeVector HPre = G4ThreeVector( h1[0], h1[1], h1[2] ) / tesla *10.; + G4ThreeVector HPost= G4ThreeVector( h2[0], h2[1], h2[2] ) / tesla *10.; + { + G4double pInvAver = 1./(pInvPre + pInvPost ); + G4double CFACT8 = 2.997925E-4; + G4ThreeVector vHAverNorm( (HPre*pInvPre + HPost*pInvPost ) * pInvAver * charge * CFACT8 ); + G4double HAver = vHAverNorm.mag(); + G4double pAver = (pPre+pPost)*0.5; + G4double QAver = -HAver/pAver; + G4double thetaAver = QAver * stepLengthCm; + G4double sinThetaAver = std::sin(thetaAver); + G4double cosThetaAver = std::cos(thetaAver); + G4double gamma = vHAverNorm * vpPostNorm; + G4ThreeVector AN2 = vHAverNorm.cross( vpPostNorm ); + G4double AU = 1./vpPreNorm.perp(); + G4ThreeVector vUPre( -AU*vpPreNorm.y(), AU*vpPreNorm.x(), 0. ); + G4ThreeVector vVPre( -vpPreNorm.z()*vUPre.y(), vpPreNorm.z()*vUPre.x(), vpPreNorm.x()*vUPre.y() - vpPreNorm.y()*vUPre.x() ); + AU = 1./vpPostNorm.perp(); + G4ThreeVector vUPost( -AU*vpPostNorm.y(), AU*vpPostNorm.x(), 0. ); + G4ThreeVector vVPost( -vpPostNorm.z()*vUPost.y(), vpPostNorm.z()*vUPost.x(), vpPostNorm.x()*vUPost.y() - vpPostNorm.y()*vUPost.x() ); + G4Point3D deltaPos( vposPre - vposPost ); + G4double QP = QAver * pAver; + G4double ANV = -( vHAverNorm.x()*vUPost.x() + vHAverNorm.y()*vUPost.y() ); + G4double ANU = ( vHAverNorm.x()*vVPost.x() + vHAverNorm.y()*vVPost.y() + vHAverNorm.z()*vVPost.z() ); + G4double OMcosThetaAver = 1. - cosThetaAver; + G4double TMSINT = thetaAver - sinThetaAver; + G4ThreeVector vHUPre( -vHAverNorm.z() * vUPre.y(), vHAverNorm.z() * vUPre.x(), vHAverNorm.x() * vUPre.y() - vHAverNorm.y() * vUPre.x() ); + G4ThreeVector vHVPre( vHAverNorm.y() * vVPre.z() - vHAverNorm.z() * vVPre.y(), vHAverNorm.z() * vVPre.x() - vHAverNorm.x() * vVPre.z(), vHAverNorm.x() * vVPre.y() - vHAverNorm.y() * vVPre.x() ); + transf[0][1] = -deltaPInv/thetaAver* ( TMSINT*gamma*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) + sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) + OMcosThetaAver*(vHVPre.x()*vpPostNorm.x()+vHVPre.y()*vpPostNorm.y()+vHVPre.z()*vpPostNorm.z()) ); + transf[0][2] = -sinpPre*deltaPInv/thetaAver* ( TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) + sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vHUPre.x()*vpPostNorm.x()+vHUPre.y()*vpPostNorm.y()+vHUPre.z()*vpPostNorm.z()) ); + transf[0][3] = -deltaPInv/stepLengthCm*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ); + transf[1][1] = cosThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) + sinThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) + OMcosThetaAver*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z())* (vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z()) + ANV*( -sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) + OMcosThetaAver*(vVPre.x()*AN2.x()+vVPre.y()*AN2.y()+vVPre.z()*AN2.z()) - TMSINT*gamma*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) ); + transf[1][2] = cosThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) + sinThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) + OMcosThetaAver*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() )* (vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z()) + ANV*( -sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vUPre.x()*AN2.x()+vUPre.y()*AN2.y() ) - TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) ); + transf[2][0] = -QP*ANU*(vpPostNorm.x()*deltaPos.x()+vpPostNorm.y()*deltaPos.y()+vpPostNorm.z()*deltaPos.z())*sinpPostInv *(1.+deltaPInv*pAver); + transf[2][3] = -QAver*ANU*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() )*sinpPostInv; + transf[3][4] = (vVPre.x()*vUPost.x()+vVPre.y()*vUPost.y() ); + transf[4][0] = pAver*(vVPost.x()*deltaPos.x()+vVPost.y()*deltaPos.y()+vVPost.z()*deltaPos.z()) *(1.+deltaPInv*pAver); + transf[4][1] = ( sinThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) + OMcosThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) + TMSINT*(vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z())* (vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) )/QAver; + transf[4][2] = ( sinThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) + OMcosThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) + TMSINT*(vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z())* (vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) )*sinpPre/QAver; + } + } + PropagateErrorMSC( aTrack ); + } diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c new file mode 100644 index 0000000..57ccecb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/pr60697.c @@ -0,0 +1,638 @@ +/* { dg-do compile } */ +/* { dg-options "-w -O3 -mcpu=cortex-a53" } */ +typedef struct __sFILE __FILE; +typedef __FILE FILE; +typedef int atom_id; +typedef float real; +typedef real rvec[3]; +typedef real matrix[3][3]; +enum { + ebCGS,ebMOLS,ebSBLOCKS,ebNR +}; +enum { + efepNO, efepYES, efepNR +}; +enum { + esolNO, esolMNO, esolWATER, esolWATERWATER, esolNR +}; +typedef struct { + int nr; + atom_id *index; + atom_id *a; +} t_block; +enum { + F_LJ, + F_LJLR, + F_SR, + F_LR, + F_DVDL, +}; +typedef struct { + t_block excl; +} t_atoms; +typedef struct { + t_atoms atoms; + t_block blocks[ebNR]; +} t_topology; +typedef struct { +} t_nsborder; +extern FILE *debug; +typedef struct { +} t_nrnb; +typedef struct { + int nri,maxnri; + int nrj,maxnrj; + int maxlen; + int solvent; + int *gid; + int *jindex; + atom_id *jjnr; + int *nsatoms; +} t_nblist; +typedef struct { + int nrx,nry,nrz; +} t_grid; +typedef struct { +} t_commrec; +enum { eNL_VDWQQ, eNL_VDW, eNL_QQ, + eNL_VDWQQ_FREE, eNL_VDW_FREE, eNL_QQ_FREE, + eNL_VDWQQ_SOLMNO, eNL_VDW_SOLMNO, eNL_QQ_SOLMNO, + eNL_VDWQQ_WATER, eNL_QQ_WATER, + eNL_VDWQQ_WATERWATER, eNL_QQ_WATERWATER, + eNL_NR }; +typedef struct { + real rlist,rlistlong; + real rcoulomb_switch,rcoulomb; + real rvdw_switch,rvdw; + int efep; + int cg0,hcg; + int *solvent_type; + int *mno_index; + rvec *cg_cm; + t_nblist nlist_sr[eNL_NR]; + t_nblist nlist_lr[eNL_NR]; + int bTwinRange; + rvec *f_twin; + int *eg_excl; +} t_forcerec; +typedef struct { + real *chargeA,*chargeB,*chargeT; + int *bPerturbed; + int *typeA,*typeB; + unsigned short *cTC,*cENER,*cACC,*cFREEZE,*cXTC,*cVCM; +} t_mdatoms; +enum { egCOUL, egLJ, egBHAM, egLR, egLJLR, egCOUL14, egLJ14, egNR }; +typedef struct { + real *ee[egNR]; +} t_grp_ener; +typedef struct { + t_grp_ener estat; +} t_groups; +typedef unsigned long t_excl; +static void reset_nblist(t_nblist *nl) +{ + nl->nri = 0; + nl->nrj = 0; + nl->maxlen = 0; + if (nl->maxnri > 0) { + nl->gid[0] = -1; + if (nl->maxnrj > 1) { + nl->jindex[0] = 0; + nl->jindex[1] = 0; + } + } +} +static void reset_neighbor_list(t_forcerec *fr,int bLR,int eNL) +{ + reset_nblist(&(fr->nlist_lr[eNL])); +} +static void close_i_nblist(t_nblist *nlist) +{ + int nri = nlist->nri; + int len; + nlist->jindex[nri+1] = nlist->nrj; + len=nlist->nrj - nlist->jindex[nri]; + if (nlist->solvent==esolMNO) + len *= nlist->nsatoms[3*nri]; + if(len > nlist->maxlen) + nlist->maxlen = len; +} +static void close_nblist(t_nblist *nlist) +{ + if (nlist->maxnri > 0) { + int nri = nlist->nri; + if ((nlist->jindex[nri+1] > nlist->jindex[nri]) && + (nlist->gid[nri] != -1)) { + nlist->nri++; + nlist->jindex[nri+2] = nlist->nrj; + } + } +} +static void close_neighbor_list(t_forcerec *fr,int bLR,int eNL) +{ + close_nblist(&(fr->nlist_lr[eNL])); +} +static void add_j_to_nblist(t_nblist *nlist,atom_id j_atom) +{ + int nrj=nlist->nrj; + nlist->jjnr[nrj] = j_atom; + nlist->nrj ++; +} +static void put_in_list(int bHaveLJ[], + int ngid,t_mdatoms *md, + int icg,int jgid,int nj,atom_id jjcg[], + atom_id index[], + t_excl bExcl[],int shift, + t_forcerec *fr,int bLR, + int bVDWOnly,int bCoulOnly) +{ + t_nblist *vdwc,*vdw,*coul; + t_nblist *vdwc_ww=((void *)0),*coul_ww=((void *)0); + t_nblist *vdwc_free=((void *)0),*vdw_free=((void *)0),*coul_free=((void *)0); + int i,j,jcg,igid,gid,ind_ij; + atom_id jj,jj0,jj1,i_atom; + int i0,nicg,len; + int *type,*typeB; + unsigned short *cENER; + real *charge,*chargeB; + real qi,qiB,qq,rlj; + int bWater,bMNO,bFree,bFreeJ,bNotEx,*bPert; + charge = md->chargeA; + chargeB = md->chargeB; + type = md->typeA; + typeB = md->typeB; + cENER = md->cENER; + bPert = md->bPerturbed; + i0 = index[icg]; + nicg = index[icg+1]-i0; + bMNO = (fr->solvent_type[icg] == esolMNO); + if (bLR) { + if (bWater) { + vdw = &fr->nlist_lr[eNL_VDW]; + coul = &fr->nlist_lr[eNL_QQ_WATER]; + vdwc_ww = &fr->nlist_lr[eNL_VDWQQ_WATERWATER]; + } else if(bMNO) { + vdwc = &fr->nlist_lr[eNL_VDWQQ_SOLMNO]; + } + if (fr->efep != efepNO) { + vdw_free = &fr->nlist_lr[eNL_VDW_FREE]; + coul_free = &fr->nlist_lr[eNL_QQ_FREE]; + } + } + else { + if (bWater) { + } else if(bMNO) { + vdwc = &fr->nlist_sr[eNL_VDWQQ_SOLMNO]; + } + if (fr->efep != efepNO) { + vdwc_free = &fr->nlist_sr[eNL_VDWQQ_FREE]; + } + } + if (fr->efep==efepNO) { + if (bWater) { + igid = cENER[i_atom]; + gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid)); + if (!bCoulOnly && !bVDWOnly) { + new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + new_i_nblist(vdwc_ww,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + } + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + if (!bVDWOnly) { + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0)); + new_i_nblist(coul_ww,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0)); + } + for(j=0; (j<nj); j++) { + jcg=jjcg[j]; + if (jcg==icg) + jj0 = index[jcg]; + if (bWater && (fr->solvent_type[jcg] == esolWATER)) { + if (bVDWOnly) + add_j_to_nblist(vdw,jj0); + else { + add_j_to_nblist(coul_ww,jj0); + add_j_to_nblist(vdwc_ww,jj0); + } + } else { + jj1 = index[jcg+1]; + if (bCoulOnly) { + for(jj=jj0; (jj<jj1); jj++) { + if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } + } else if (bVDWOnly) { + for(jj=jj0; (jj<jj1); jj++) + if (bHaveLJ[type[jj]]) + add_j_to_nblist(vdw,jj); + } else { + for(jj=jj0; (jj<jj1); jj++) { + if (bHaveLJ[type[jj]]) { + if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } + } + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + close_i_nblist(coul_ww); + close_i_nblist(vdwc_ww); + } else if (bMNO) { + igid = cENER[i_atom]; + gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid)); + if (!bCoulOnly && !bVDWOnly) + new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid, + &(fr->mno_index[icg*3])); + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid, + &(fr->mno_index[icg*3])); + if (!bVDWOnly) + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid, + &(fr->mno_index[icg*3])); + for(j=0; (j<nj); j++) { + jcg=jjcg[j]; + if (jcg == icg) + jj0 = index[jcg]; + jj1=index[jcg+1]; + for(jj=jj0; (jj<jj1); jj++) { + if (bCoulOnly) { + if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } else if (bVDWOnly) { + if (bHaveLJ[type[jj]]) + add_j_to_nblist(vdw,jj); + } else { + if (bHaveLJ[type[jj]]) { + if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + } + } else { + for(i=0; i<nicg; i++) { + igid = cENER[i_atom]; + gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid)); + qi = charge[i_atom]; + if (!bCoulOnly && !bVDWOnly) + new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0)); + if (!bVDWOnly) + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0)); + if (!(bVDWOnly || fabs(qi)<1.2e-38) || !(bCoulOnly || !bHaveLJ[type[i_atom]])) { + for(j=0; (j<nj); j++) { + jcg=jjcg[j]; + if (jcg == icg) + jj0 = i0 + i + 1; + else + jj0 = index[jcg]; + jj1=index[jcg+1]; + for(jj=jj0; jj<jj1; jj++) { + bNotEx = !((int) ((bExcl)[((atom_id) (jj))] & (1<<((atom_id) (i))))); + if (bNotEx) { + if (bCoulOnly) { + if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } else if (bVDWOnly) { + if (bHaveLJ[type[jj]]) + add_j_to_nblist(vdw,jj); + } else { + if (bHaveLJ[type[jj]]) { + if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(coul,jj); + } + } + } + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + } + } + } else { + for(i=0; i<nicg; i++) { + igid = cENER[i_atom]; + gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid)); + qi = charge[i_atom]; + qiB = chargeB[i_atom]; + if (!bCoulOnly && !bVDWOnly) + new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid, + bMNO ? &(fr->mno_index[icg*3]) : ((void *)0)); + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid, + bMNO ? &(fr->mno_index[icg*3]) : ((void *)0)); + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid, + bMNO ? &(fr->mno_index[icg*3]) : ((void *)0)); + new_i_nblist(vdw_free,F_DVDL,i_atom,shift,gid,((void *)0)); + new_i_nblist(coul_free,F_DVDL,i_atom,shift,gid,((void *)0)); + new_i_nblist(vdwc_free,F_DVDL,i_atom,shift,gid,((void *)0)); + if (!(bVDWOnly || (fabs(qi)<1.2e-38 && fabs(qiB)<1.2e-38)) || + !(bCoulOnly || (!bHaveLJ[type[i_atom]] && !bHaveLJ[typeB[i_atom]]))) { + for(j=0; (j<nj); j++) { + jcg=jjcg[j]; + if (jcg == icg) + jj0 = i0 + i + 1; + else + jj0 = index[jcg]; + jj1=index[jcg+1]; + bFree = bPert[i_atom]; + for(jj=jj0; (jj<jj1); jj++) { + bFreeJ = bFree || bPert[jj]; + if ((!bWater && !bMNO) || i==0 || bFreeJ) { + bNotEx = !((int) ((bExcl)[((atom_id) (jj))] & (1<<((atom_id) (i))))); + if (bNotEx) { + if (bFreeJ) { + if (bCoulOnly) + add_j_to_nblist(coul_free,jj); + else if (bVDWOnly) + add_j_to_nblist(vdw_free,jj); + add_j_to_nblist(vdwc_free,jj); + } else if (bCoulOnly) { + add_j_to_nblist(coul,jj); + } else if (bVDWOnly) { + if (bHaveLJ[type[jj]]) + add_j_to_nblist(vdw,jj); + } else { + if (bHaveLJ[type[jj]]) { + if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(coul,jj); + } + } + } + } + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + if (bWater && (i==0)) { + close_i_nblist(coul_ww); + close_i_nblist(vdwc_ww); + } + close_i_nblist(vdw_free); + close_i_nblist(coul_free); + close_i_nblist(vdwc_free); + } + } +} +static void setexcl(atom_id start,atom_id end,t_block *excl,int b, + t_excl bexcl[]) +{ + atom_id i,k; + if (b) { + for(i=start; i<end; i++) { + for(k=excl->index[i]; k<excl->index[i+1]; k++) { + (bexcl)[((atom_id) (excl->a[k]))] |= (1<<((atom_id) (i-start))); + } + } + } +} +int calc_naaj(int icg,int cgtot) +{ + int naaj; + if ((cgtot % 2) == 1) { + naaj = 1+(cgtot/2); + } + else if ((cgtot % 4) == 0) { + if (icg < cgtot/2) { + if ((icg % 2) == 0) + naaj=1+(cgtot/2); + } + else { + if ((icg % 2) == 1) + naaj=1+(cgtot/2); + } + } + else { + if ((icg % 2) == 0) + naaj=1+(cgtot/2); + else + naaj=cgtot/2; + } + return naaj; +} +static void get_dx(int Nx,real gridx,real grid_x,real rc2,real x, + int *dx0,int *dx1,real *dcx2) +{ + real dcx,tmp; + int xgi,xgi0,xgi1,i; + xgi = (int)(Nx+x*grid_x)-Nx; + if (xgi < 0) { + *dx0 = 0; + *dx1 = -1; + } else if (xgi >= Nx) { + *dx0 = Nx; + *dx1 = Nx-1; + } else { + dcx2[xgi] = 0; + *dx0 = xgi; + xgi0 = xgi-1; + *dx1 = xgi; + xgi1 = xgi+1; + } + for(i=xgi0; i>=0; i--) { + dcx = (i+1)*gridx-x; + tmp = dcx*dcx; + if (tmp >= rc2) + *dx0 = i; + dcx2[i] = tmp; + } + for(i=xgi1; i<Nx; i++) { + dcx = i*gridx-x; + tmp = dcx*dcx; + if (tmp >= rc2) + *dx1 = i; + dcx2[i] = tmp; + } +} +static void do_longrange(FILE *log,t_commrec *cr,t_topology *top,t_forcerec *fr, + int ngid,t_mdatoms *md,int icg, + int jgid,int nlr, + atom_id lr[],t_excl bexcl[],int shift, + rvec x[],rvec box_size,t_nrnb *nrnb, + real lambda,real *dvdlambda, + t_groups *grps,int bVDWOnly,int bCoulOnly, + int bDoForces,int bHaveLJ[]) +{ + int i; + for(i=0; (i<eNL_NR); i++) { + if ((fr->nlist_lr[i].nri > fr->nlist_lr[i].maxnri-32) || bDoForces) { + close_neighbor_list(fr,1,i); + do_fnbf(log,cr,fr,x,fr->f_twin,md, + grps->estat.ee[egLJLR],grps->estat.ee[egLR],box_size, + nrnb,lambda,dvdlambda,1,i); + reset_neighbor_list(fr,1,i); + } + } + if (!bDoForces) { + put_in_list(bHaveLJ,ngid,md,icg,jgid,nlr,lr,top->blocks[ebCGS].index, + bexcl,shift,fr, + 1,bVDWOnly,bCoulOnly); + } +} +static int ns5_core(FILE *log,t_commrec *cr,t_forcerec *fr,int cg_index[], + matrix box,rvec box_size,int ngid, + t_topology *top,t_groups *grps, + t_grid *grid,rvec x[],t_excl bexcl[],int *bExcludeAlleg, + t_nrnb *nrnb,t_mdatoms *md, + real lambda,real *dvdlambda, + int bHaveLJ[]) +{ + static atom_id **nl_lr_ljc,**nl_lr_one,**nl_sr=((void *)0); + static int *nlr_ljc,*nlr_one,*nsr; + static real *dcx2=((void *)0),*dcy2=((void *)0),*dcz2=((void *)0); + t_block *cgs=&(top->blocks[ebCGS]); + unsigned short *gid=md->cENER; + int tx,ty,tz,dx,dy,dz,cj; + int dx0,dx1,dy0,dy1,dz0,dz1; + int Nx,Ny,Nz,shift=-1,j,nrj,nns,nn=-1; + real gridx,gridy,gridz,grid_x,grid_y,grid_z; + int icg=-1,iicg,cgsnr,i0,nri,naaj,min_icg,icg_naaj,jjcg,cgj0,jgid; + int bVDWOnly,bCoulOnly; + rvec xi,*cgcm; + real r2,rs2,rvdw2,rcoul2,rm2,rl2,XI,YI,ZI,dcx,dcy,dcz,tmp1,tmp2; + int *i_eg_excl; + int use_twinrange,use_two_cutoffs; + cgsnr = cgs->nr; + rs2 = ((fr->rlist)*(fr->rlist)); + if (fr->bTwinRange) { + rvdw2 = ((fr->rvdw)*(fr->rvdw)); + rcoul2 = ((fr->rcoulomb)*(fr->rcoulomb)); + } else { + } + rm2 = (((rvdw2) < (rcoul2)) ? (rvdw2) : (rcoul2) ); + rl2 = (((rvdw2) > (rcoul2)) ? (rvdw2) : (rcoul2) ); + use_twinrange = (rs2 < rm2); + use_two_cutoffs = (rm2 < rl2); + bVDWOnly = (rvdw2 > rcoul2); + bCoulOnly = !bVDWOnly; + if (nl_sr == ((void *)0)) { + (nl_sr)=save_calloc("nl_sr","ns.c",1341, (ngid),sizeof(*(nl_sr))); + (nsr)=save_calloc("nsr","ns.c",1343, (ngid),sizeof(*(nsr))); + (nlr_ljc)=save_calloc("nlr_ljc","ns.c",1344, (ngid),sizeof(*(nlr_ljc))); + (nlr_one)=save_calloc("nlr_one","ns.c",1345, (ngid),sizeof(*(nlr_one))); + if (use_twinrange) + (nl_lr_ljc)=save_calloc("nl_lr_ljc","ns.c",1349, (ngid),sizeof(*(nl_lr_ljc))); + if (use_two_cutoffs) + (nl_lr_one)=save_calloc("nl_lr_one","ns.c",1353, (ngid),sizeof(*(nl_lr_one))); + for(j=0; (j<ngid); j++) { + (nl_sr[j])=save_calloc("nl_sr[j]","ns.c",1356, (1024),sizeof(*(nl_sr[j]))); + if (use_twinrange) + (nl_lr_ljc[j])=save_calloc("nl_lr_ljc[j]","ns.c",1358, (1024),sizeof(*(nl_lr_ljc[j]))); + if (use_two_cutoffs) + (nl_lr_one[j])=save_calloc("nl_lr_one[j]","ns.c",1360, (1024),sizeof(*(nl_lr_one[j]))); + } + if (debug) + fprintf(debug,"ns5_core: rs2 = %g, rvdw2 = %g, rcoul2 = %g (nm^2)\n", + rs2,rvdw2,rcoul2); + } + cgcm = fr->cg_cm; + Nx = grid->nrx; + Ny = grid->nry; + if (dcx2 == ((void *)0)) { + (dcx2)=save_calloc("dcx2","ns.c",1379, (Nx*2),sizeof(*(dcx2))); + (dcy2)=save_calloc("dcy2","ns.c",1380, (Ny*2),sizeof(*(dcy2))); + (dcz2)=save_calloc("dcz2","ns.c",1381, (Nz*2),sizeof(*(dcz2))); + } + gridx = box[0][0]/grid->nrx; + gridy = box[1][1]/grid->nry; + gridz = box[2][2]/grid->nrz; + grid_x = 1/gridx; + grid_y = 1/gridy; + grid_z = 1/gridz; + for(iicg=fr->cg0; (iicg < fr->hcg); iicg++) { + icg = cg_index[iicg]; + if (icg != iicg) + fatal_error(0,"icg = %d, iicg = %d, file %s, line %d",icg,iicg,"ns.c", + 1408); + if(bExcludeAlleg[icg]) + i_eg_excl = fr->eg_excl + ngid*gid[cgs->index[icg]]; + setexcl(cgs->index[icg],cgs->index[icg+1],&top->atoms.excl,1,bexcl); + naaj = calc_naaj(icg,cgsnr); + icg_naaj = icg+naaj; + for (tz=-1; tz<=1; tz++) { + ZI = cgcm[icg][2]+tz*box[2][2]; + get_dx(Nz,gridz,grid_z,rcoul2,ZI,&dz0,&dz1,dcz2); + if (dz0 > dz1) + for (ty=-1; ty<=1; ty++) { + YI = cgcm[icg][1]+ty*box[1][1]+tz*box[2][1]; + get_dx(Ny,gridy,grid_y,rcoul2,YI,&dy0,&dy1,dcy2); + for (tx=-1; tx<=1; tx++) { + get_dx(Nx,gridx,grid_x,rcoul2,XI,&dx0,&dx1,dcx2); + shift=((2*1 +1)*((2*1 +1)*((tz)+1)+(ty)+1)+(tx)+1); + for (dx=dx0; (dx<=dx1); dx++) { + for (dy=dy0; (dy<=dy1); dy++) { + for (dz=dz0; (dz<=dz1); dz++) { + if (tmp2 > dcz2[dz]) { + for (j=0; (j<nrj); j++) { + if (((jjcg >= icg) && (jjcg < icg_naaj)) || + ((jjcg < min_icg))) { + if (r2 < rl2) { + if (!i_eg_excl[jgid]) { + if (r2 < rs2) { + if (nsr[jgid] >= 1024) { + put_in_list(bHaveLJ,ngid,md,icg,jgid, + nsr[jgid],nl_sr[jgid], + cgs->index, bexcl, + shift,fr,0,0,0); + } + } else if (r2 < rm2) { + } else if (use_two_cutoffs) { + if (nlr_one[jgid] >= 1024) { + do_longrange(log,cr,top,fr,ngid,md,icg,jgid, + nlr_one[jgid], + nl_lr_one[jgid],bexcl,shift,x, + box_size,nrnb, + lambda,dvdlambda,grps, + bVDWOnly,bCoulOnly,0, + bHaveLJ); + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} +int search_neighbours(FILE *log,t_forcerec *fr, + rvec x[],matrix box, + t_topology *top,t_groups *grps, + t_commrec *cr,t_nsborder *nsb, + t_nrnb *nrnb,t_mdatoms *md, + real lambda,real *dvdlambda) +{ + static t_grid *grid=((void *)0); + static t_excl *bexcl; + static int *bHaveLJ; + static int *cg_index=((void *)0),*slab_index=((void *)0); + static int *bExcludeAlleg; + rvec box_size; + int i,j,m,ngid; + int nsearch; + nsearch = ns5_core(log,cr,fr,cg_index,box,box_size,ngid,top,grps, + grid,x,bexcl,bExcludeAlleg,nrnb,md,lambda,dvdlambda,bHaveLJ); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c new file mode 100644 index 0000000..7538250 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -fno-omit-frame-pointer -fno-inline --save-temps" } */ + +void +leaf (void) +{ + int a = 0; +} + +__attribute__ ((optimize("omit-frame-pointer"))) +void +non_leaf_1 (void) +{ + leaf (); +} + +__attribute__ ((optimize("omit-frame-pointer"))) +void +non_leaf_2 (void) +{ + leaf (); +} + +/* { dg-final { scan-assembler-times "str\tx30, \\\[sp\\\]" 2 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c new file mode 100644 index 0000000..675091f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -fomit-frame-pointer -fno-inline --save-temps" } */ + +void +leaf (void) +{ + int a = 0; +} + +__attribute__ ((optimize("no-omit-frame-pointer"))) +void +non_leaf_1 (void) +{ + leaf (); +} + +__attribute__ ((optimize("no-omit-frame-pointer"))) +void +non_leaf_2 (void) +{ + leaf (); +} + +/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c new file mode 100644 index 0000000..1946760 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650-2.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-omit-frame-pointer -march=armv7-a" } */ + +int a, h, j; +long long d, e, i; +int f; +fn1 (void *p1, int p2) +{ + switch (p2) + case 8: +{ + register b = *(long long *) p1, c asm ("r2"); + asm ("%0": "=r" (a), "=r" (c):"r" (b), "r" (0)); + *(long long *) p1 = c; + } +} + +fn2 () +{ + int k; + k = f; + while (1) + { + fn1 (&i, sizeof i); + e = d + k; + switch (d) + case 0: + ( + { + register l asm ("r4"); + register m asm ("r0"); + asm (" .err .endif\n\t": "=r" (h), "=r" (j):"r" (m), + "r" + (l));; + }); + } +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c new file mode 100644 index 0000000..17a5ed4 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60650.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=softfp" } } */ +/* { dg-options "-O2 -fno-omit-frame-pointer -mabi=apcs-gnu -mfloat-abi=softfp" } */ + + +struct super_block +{ + int s_blocksize_bits; +}; +struct btrfs_fs_info +{ + struct super_block *sb; +}; +struct btrfs_root +{ + struct btrfs_fs_info *fs_info; +} *b; + + +int a, c, d; +long long e; + +truncate_one_csum (struct btrfs_root *p1, long long p2, long long p3) +{ + int f, g, i = p1->fs_info->sb->s_blocksize_bits; + g = a; + long long h = p2 + p3; + f = foo1 (b, 0, c, 0); + e = f / g; + e <<= p1->fs_info->sb->s_blocksize_bits; + if (d < p2) + { + int j = e - h >> i; + foo2 (p1, 0, j); + } + else + { + asm ("1\t.long "); + __builtin_unreachable (); + } +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c new file mode 100644 index 0000000..66355c3 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60657.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=armv7-a" } */ + + +void foo (void); + +void +bar (int x, int y) +{ + y = 9999; + if (x & (1 << y)) + foo (); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c new file mode 100644 index 0000000..b79b830 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/arm/pr60663.c @@ -0,0 +1,11 @@ +/* PR rtl-optimization/60663 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=armv7-a" } */ + +int +foo (void) +{ + unsigned i, j; + asm ("%0 %1" : "=r" (i), "=r" (j)); + return i; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c b/gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c new file mode 100644 index 0000000..0a8393e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/avr/dev-specific-rmw.c @@ -0,0 +1,13 @@ +/* Verify that rmw instructions supported */ +/* { dg-do assemble } */ + +int main() +{ + #ifdef __AVR_ISA_RMW__ + __asm("xch Z, r12"); + __asm("las Z, r12"); + __asm("lac Z, r12"); + __asm("lat Z, r12"); + #endif + return 0; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c index 1b8dc8b..0c51a21 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-3.c @@ -1,6 +1,6 @@ /* Verify that 387 mathematical constants are recognized. */ /* { dg-do compile } */ -/* { dg-options "-O2 -mfpmath=387 -mfancy-math-387" } */ +/* { dg-options "-O2 -mfpmath=387 -mfancy-math-387 -mtune=generic" } */ /* { dg-final { scan-assembler "fldpi" } } */ /* { dg-require-effective-target large_long_double } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c index 27c48ed..10fe931 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/387-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -mfancy-math-387" } */ +/* { dg-options "-O2 -mfancy-math-387 -mtune=generic" } */ /* { dg-final { scan-assembler "fldpi" } } */ /* { dg-require-effective-target large_long_double } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c index 238f020..ee1f313 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c index c57ef8f..5c3f22f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c index 801bd39..41a07d2 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c index facee9f..7e7e018 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c index 67ca4a7..8c08bf5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c index b2d539b..8e33a98 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c index 46d173f..4d61d7a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c index 97affb4..a788681 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c index e711256..70bd5cd 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c index 97affb4..a788681 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c index 67f3afc..691e02f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c index 843128b..45527f5 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c index f8f399f..ae7966f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c index 0a23a28..d96fee1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c index 1cb90b5..404c2ee 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c @@ -1,5 +1,5 @@ /* { dg-do run } */ -/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ +/* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */ /* { dg-require-effective-target avx2 } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c index 1fe52bb..0c476cd 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */ #define N 1024 diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c index 933f265..30b42aa 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load" } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */ void avx_test (char **cp, char **ep) diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c index 1d35ef5..dcd630d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -fno-common" } */ +/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */ #define N 1024 diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c index 77eaa42..5e8c30d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -fno-common" } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */ #define N 1024 diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c index 48e2efa..eeabfe9 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { ! ia32 } } } */ -/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */ +/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mno-prefer-avx128" } */ #define N 1024 diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c index 8568245..68ff923 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -fno-common" } */ +/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */ #define N 1024 diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c index 271c862..35eabc2 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c @@ -43,7 +43,7 @@ TEST (void) for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c index 4842942..9fee420 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c @@ -43,7 +43,7 @@ TEST (void) for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c index 105c715..9b1603c 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c @@ -43,7 +43,7 @@ TEST (void) for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c index d79d8f6..85a5918 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c @@ -43,7 +43,7 @@ TEST (void) for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c index a05cb27..c66a9d8 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-1.c @@ -2,10 +2,10 @@ /* { dg-options "-O2 -mbmi " } */ /* { dg-final { scan-assembler "andn\[^\\n]*eax" } } */ /* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*eax" 2 } } */ -/* { dg-final { scan-assembler "blsi\[^\\n]*eax" } } */ -/* { dg-final { scan-assembler "blsmsk\[^\\n]*eax" } } */ -/* { dg-final { scan-assembler "blsr\[^\\n]*eax" } } */ -/* { dg-final { scan-assembler "tzcntl\[^\\n]*eax" } } */ +/* { dg-final { scan-assembler-times "blsi\[^\\n]*eax" 2 } } */ +/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*eax" 2 } } */ +/* { dg-final { scan-assembler-times "blsr\[^\\n]*eax" 2 } } */ +/* { dg-final { scan-assembler-times "tzcntl\[^\\n]*eax" 2 } } */ #include <x86intrin.h> @@ -36,19 +36,43 @@ func_blsi32 (unsigned int X) } unsigned int +func_blsi32_2 (unsigned int X) +{ + return _blsi_u32(X); +} + +unsigned int func_blsmsk32 (unsigned int X) { return __blsmsk_u32(X); } unsigned int +func_blsmsk32_2 (unsigned int X) +{ + return _blsmsk_u32(X); +} + +unsigned int func_blsr32 (unsigned int X) { return __blsr_u32(X); } unsigned int +func_blsr32_2 (unsigned int X) +{ + return _blsr_u32(X); +} + +unsigned int func_tzcnt32 (unsigned int X) { return __tzcnt_u32(X); } + +unsigned int +func_tzcnt32_2 (unsigned int X) +{ + return _tzcnt_u32(X); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c index 68d06a2..6eea66a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/bmi-2.c @@ -2,10 +2,10 @@ /* { dg-options "-O2 -mbmi " } */ /* { dg-final { scan-assembler "andn\[^\\n]*rax" } } */ /* { dg-final { scan-assembler-times "bextr\[ \\t]+\[^\\n]*rax" 2 } } */ -/* { dg-final { scan-assembler "blsi\[^\\n]*rax" } } */ -/* { dg-final { scan-assembler "blsmsk\[^\\n]*rax" } } */ -/* { dg-final { scan-assembler "blsr\[^\\n]*rax" } } */ -/* { dg-final { scan-assembler "tzcntq\[^\\n]*rax" } } */ +/* { dg-final { scan-assembler-times "blsi\[^\\n]*rax" 2 } } */ +/* { dg-final { scan-assembler-times "blsmsk\[^\\n]*rax" 2 } } */ +/* { dg-final { scan-assembler-times "blsr\[^\\n]*rax" 2 } } */ +/* { dg-final { scan-assembler-times "tzcntq\[^\\n]*rax" 2 } } */ #include <x86intrin.h> @@ -36,19 +36,43 @@ func_blsi64 (unsigned long long X) } unsigned long long +func_blsi64_2 (unsigned long long X) +{ + return _blsi_u64 (X); +} + +unsigned long long func_blsmsk64 (unsigned long long X) { return __blsmsk_u64 (X); } unsigned long long +func_blsmsk64_2 (unsigned long long X) +{ + return _blsmsk_u64 (X); +} + +unsigned long long func_blsr64 (unsigned long long X) { return __blsr_u64 (X); } unsigned long long +func_blsr64_2 (unsigned long long X) +{ + return _blsr_u64 (X); +} + +unsigned long long func_tzcnt64 (unsigned long long X) { return __tzcnt_u64 (X); } + +unsigned long long +func_tzcnt64_2 (unsigned long long X) +{ + return _tzcnt_u64 (X); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c index 7135cc9..3e59a71 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-builtin.c @@ -2,7 +2,7 @@ and add instructions FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4" } */ +/* { dg-options "-O2 -mfma4 -mno-fma" } */ #ifndef __FP_FAST_FMAF # error "__FP_FAST_FMAF should be defined" diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c index c15be1e..ae6ca8d 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma-2.c @@ -3,7 +3,7 @@ vfnmsubss on FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -funsafe-math-optimizations -mfma4" } */ +/* { dg-options "-O2 -funsafe-math-optimizations -mfma4 -mno-fma" } */ extern void exit (int); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c index 63b35dc..1b8fb84 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-fma.c @@ -3,7 +3,7 @@ vfnmsubss on FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4" } */ +/* { dg-options "-O2 -mfma4 -mno-fma" } */ extern void exit (int); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c index d8b0d08..b518aa8 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector-2.c @@ -1,5 +1,5 @@ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */ +/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */ float r[256], s[256]; float x[256]; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c index db5ffdd..cd55063 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/fma4-vector.c @@ -2,7 +2,7 @@ instructions vector into vfmaddps on FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */ +/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */ extern void exit (int); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c index 88c14b2..e535586 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-2.c @@ -1,5 +1,6 @@ /* Test whether using target specific options, we can generate FMA4 code. */ /* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */ /* { dg-options "-O2 -march=k8" } */ extern void exit (int); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c index f3f4db7..bac7986 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-3.c @@ -2,6 +2,7 @@ setting the architecture. */ /* { dg-do compile } */ /* { dg-require-effective-target lp64 } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */ /* { dg-options "-O2 -march=k8 -mno-sse3" } */ extern void exit (int); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c index 78714e1..14b7abd 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/funcspec-9.c @@ -1,5 +1,6 @@ /* Test whether using target specific options, we can generate FMA4 code. */ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */ /* { dg-options "-O2 -march=k8 -mfpmath=sse -msse2" } */ extern void exit (int); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c index d98c14f..3a4406f 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/isa-1.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=x86-64" } } */ /* { dg-options "-march=x86-64 -msse4" } */ extern void abort (void); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c index 1d99b4c..94e512b 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c index e101100..ffceab4 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c index f099e25..cdb4d33 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c index 969f31c..dda487e 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c index 85ccdd0..98909ae 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c index 019ed9a..538065a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_double_6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c index d1913d7..ff10981 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c index 5e01425..38c6b52 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c index 7b9e3f5..177ba35 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c index cc675c1..8ee68d1 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c index ac0b361..23288d0 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c index c84ac11..07a5fba 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/l_fma_float_6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c index a2b66d9..3117771 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */ /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:-1:align" } */ /* { dg-final { scan-assembler-times "movdqa" 8 { target { ! { ia32 } } } } } */ /* { dg-final { scan-assembler-times "movdqa" 4 { target { ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c index c2f49f0..303edca 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */ /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:3000:align,libcall:-1:align" } */ /* { dg-final { scan-assembler-times "movdqa" 8 { target { ! { ia32 } } } } } */ /* { dg-final { scan-assembler-times "movdqa" 4 { target { ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c index c61c067..1ea682a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */ /* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */ /* { dg-final { scan-assembler-times "movdqa" 8 { target { ! { ia32 } } } } } */ /* { dg-final { scan-assembler-times "movdqa" 4 { target { ia32 } } } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c index 8a646d5..3befef9 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */ /* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */ /* { dg-final { scan-assembler-times "movdqa" 4} } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c index ad0d130..f7e4516 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */ /* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */ /* { dg-final { scan-assembler-times "movdqa" 4 } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c index f2ceb44..92e6100 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=atom" } } */ /* { dg-options "-O2 -march=atom -minline-all-stringops -mstringop-strategy=vector_loop" } */ /* { dg-final { scan-assembler-times "movdqa" 4} } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c index 27888de..149bf2b 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr27971.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2" } */ +/* { dg-options "-O2 -mno-tbm" } */ unsigned array[4]; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c index 96d64e5..b1fc2d3 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr30970.c @@ -1,5 +1,5 @@ /* { dg-do compile } -/* { dg-options "-msse2 -O2 -ftree-vectorize" } */ +/* { dg-options "-msse2 -O2 -ftree-vectorize -mtune=generic" } */ #define N 256 int b[N]; diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c index bea6c1f..19e872a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr42542-4a.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -msse4.2 -ftree-vectorize" } */ +/* { dg-options "-O1 -msse4.2 -ftree-vectorize -mno-avx" } */ #include "pr42542-4.c" diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c index 7dc925a..749c61a 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr59390.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-std=c99 -O3" } */ +/* { dg-options "-std=c99 -O3 -mno-fma -mno-fma4" } */ extern double fma (double, double, double); void fun() __attribute__((target("fma"))); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c new file mode 100644 index 0000000..e6033a7 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60693.c @@ -0,0 +1,13 @@ +/* PR target/60693 */ +/* { dg-do compile } */ +/* { dg-options "-O0" } */ + +void bar (char *); + +void +foo (void) +{ + char buf[4096]; + __builtin_memcpy (buf, (void *) 0x8000, 4096); + bar (buf); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c new file mode 100644 index 0000000..5428f36 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/pr60700.c @@ -0,0 +1,59 @@ +/* PR rtl-optimization/60700 */ +/* { dg-do run { target ia32 } } */ +/* { dg-options "-O3 -march=i686" } */ + +int +__attribute__((noinline)) +foo (void) +{ + return 0; +} + +void *g = (void *)1; + +struct st { + char data[36]; /* must be greater than 32. */ +}; + +int +__attribute__((noinline)) +repro(struct st **out) +{ + int status = 0; + + *out = 0; + + status = foo(); + if (status != 0) { + return status; + } + + if (0 == g) { + status = 999; + return status; + } + + *out = (struct st *)__builtin_malloc(sizeof(struct st)); + if (0 == *out) { + status = 42; + return status; + } + + __builtin_memset(*out, 0, sizeof(struct st)); + + return status; +} + +int +main () +{ + struct st *p; + int ret = repro (&p); + unsigned int i; + + for (i = 0; i < sizeof (p->data)/sizeof (p->data[0]); i++) + if (p->data[i] != 0) + __builtin_abort (); + + return ret; +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c index a2313a4..6a50573 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/sse2-init-v2di-2.c @@ -1,4 +1,5 @@ /* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=core2" } } */ /* { dg-options "-O2 -msse4 -march=core2 -dp" } */ #include <emmintrin.h> diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c index ef89059..a825229 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-1.c @@ -1,6 +1,7 @@ /* { dg-do compile } */ /* This test checks for absolute memory operands. */ /* { dg-require-effective-target nonpic } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */ /* { dg-options "-O2 -msse2 -march=k8" } */ /* { dg-final { scan-assembler "andpd\[^\\n\]*magic" } } */ /* { dg-final { scan-assembler "andnpd\[^\\n\]*magic" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c index b68a639..37953ca 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-2.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */ /* { dg-options "-O2 -msse2 -march=k8" } */ /* { dg-final { scan-assembler "andpd" } } */ /* { dg-final { scan-assembler "andnpd" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c index 75133e9..4e22e59 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/i386/ssetype-5.c @@ -1,6 +1,7 @@ /* { dg-do compile } */ /* This test checks for absolute memory operands. */ /* { dg-require-effective-target nonpic } */ +/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */ /* { dg-options "-O2 -msse2 -march=k8" } */ /* { dg-final { scan-assembler "pand\[^\\n\]*magic" } } */ /* { dg-final { scan-assembler "pandn\[^\\n\]*magic" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c new file mode 100644 index 0000000..8a5cbfa --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/atomic_load_store-p8.c @@ -0,0 +1,22 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-mcpu=power8 -O2" } */ +/* { dg-final { scan-assembler-times "lq" 1 } } */ +/* { dg-final { scan-assembler-times "stq" 1 } } */ +/* { dg-final { scan-assembler-not "bl __atomic" } } */ +/* { dg-final { scan-assembler-not "lqarx" } } */ +/* { dg-final { scan-assembler-not "stqcx" } } */ + +__int128 +atomic_load_128_relaxed (__int128 *ptr) +{ + return __atomic_load_n (ptr, __ATOMIC_RELAXED); +} + +void +atomic_store_128_relaxed (__int128 *ptr, __int128 val) +{ + __atomic_store_n (ptr, val, __ATOMIC_RELAXED); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c new file mode 100644 index 0000000..d166498 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c @@ -0,0 +1,27 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-O3 -mcpu=power8" } */ +/* { dg-final { scan-assembler "vbpermq" } } */ +/* { dg-final { scan-assembler "mfvsrd" } } */ +/* { dg-final { scan-assembler-not "stfd" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ + +#include <altivec.h> + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +long foos (vector signed char a, vector signed char b) +{ + return vec_extract (vec_vbpermq (a, b), OFFSET); +} + +long foou (vector unsigned char a, vector unsigned char b) +{ + return vec_extract (vec_vbpermq (a, b), OFFSET); +} + diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c new file mode 100644 index 0000000..86fd8c6 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/pr60676.c @@ -0,0 +1,128 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ +/* { dg-final { scan-assembler "xxsldwi" } } */ +/* { dg-final { scan-assembler "xxpermdi" } } */ + +#include <altivec.h> + +vector double +v2df_shift (vector double a, vector double b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector float +v4sf_shift (vector float a, vector float b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector long long +v2di_shift (vector long long a, vector long long b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned long long +v2diu_shift (vector unsigned long long a, vector unsigned long long b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector int +v4si_shift (vector int a, vector int b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned int +v4siu_shift (vector unsigned int a, vector unsigned int b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector short +v8hi_shift (vector short a, vector short b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned short +v8hiu_shift (vector unsigned short a, vector unsigned short b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector signed char +v16qi_shift (vector signed char a, vector signed char b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned char +v16qiu_shift (vector unsigned char a, vector unsigned char b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector double +v2df_permute (vector double a, vector double b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector float +v4sf_permute (vector float a, vector float b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector long long +v2di_permute (vector long long a, vector long long b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned long long +v2diu_permute (vector unsigned long long a, vector unsigned long long b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector int +v4si_permute (vector int a, vector int b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned int +v4siu_permute (vector unsigned int a, vector unsigned int b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector short +v8hi_permute (vector short a, vector short b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned short +v8hiu_permute (vector unsigned short a, vector unsigned short b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector signed char +v16qi_permute (vector signed char a, vector signed char b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned char +v16qiu_permute (vector unsigned char a, vector unsigned char b) +{ + return vec_xxpermdi (a, b, 1); +} diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c new file mode 100644 index 0000000..e1f0ca8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ +/* { dg-final { scan-assembler "lfd" } } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ + +#include <altivec.h> + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +double get_value (vector double *p) { return vec_extract (*p, OFFSET); } diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c new file mode 100644 index 0000000..be29af8 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c @@ -0,0 +1,17 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ +/* { dg-final { scan-assembler "xxlor" } } */ +/* { dg-final { scan-assembler-not "lfd" } } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ + +#include <altivec.h> + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +double get_value (vector double v) { return vec_extract (v, OFFSET); } diff --git a/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c new file mode 100644 index 0000000..ea42126 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c @@ -0,0 +1,17 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-O3 -mcpu=power8" } */ +/* { dg-final { scan-assembler "mfvsrd" } } */ +/* { dg-final { scan-assembler-not "stfd" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ + +#include <altivec.h> + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +long get_value (vector long v) { return vec_extract (v, OFFSET); } diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c new file mode 100644 index 0000000..f71c38f --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/20140327-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -m31 -mzarch" } */ + +void +foo () +{ + asm ("" ::: "%f4"); +} + +/* { dg-final { scan-assembler "ld" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c index c1b98e2..982a748 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c @@ -27,8 +27,8 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64) cc = __builtin_tbegin ((void *)0x12345678); cc = __builtin_tbegin (tdb); cc = __builtin_tbegin (&global_tdb); - cc = __builtin_tbegin ((void *)(long long)(reg + 0x12345678)); - cc = __builtin_tbegin ((void *)(long long)(reg)); + cc = __builtin_tbegin ((void *)(long)(reg + 0x12345678)); + cc = __builtin_tbegin ((void *)(long)(reg)); __builtin_tbegin_nofloat ((void *)0); __builtin_tbegin_nofloat ((void *)-99999); @@ -36,8 +36,8 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64) cc = __builtin_tbegin_nofloat ((void *)0x12345678); cc = __builtin_tbegin_nofloat (tdb); cc = __builtin_tbegin_nofloat (&global_tdb); - cc = __builtin_tbegin_nofloat ((void *)(long long)(reg + 0x12345678)); - cc = __builtin_tbegin_nofloat ((void *)(long long)(reg)); + cc = __builtin_tbegin_nofloat ((void *)(long)(reg + 0x12345678)); + cc = __builtin_tbegin_nofloat ((void *)(long)(reg)); __builtin_tbegin_retry ((void *)0, 0); cc = __builtin_tbegin_retry ((void *)0, 1); @@ -50,9 +50,9 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64) cc = __builtin_tbegin_retry (&global_tdb, 42); cc = __builtin_tbegin_retry ((void *)0x12345678, global); cc = __builtin_tbegin_retry ( - (void *)(long long) (reg + 0x12345678), global + 1); + (void *)(long) (reg + 0x12345678), global + 1); cc = __builtin_tbegin_retry ( - (void *)(long long)(reg), global - 1); + (void *)(long)(reg), global - 1); __builtin_tbegin_retry_nofloat ((void *)0, 0); cc = __builtin_tbegin_retry_nofloat ((void *)0, 1); @@ -65,9 +65,9 @@ foo (struct __htm_tdb* tdb, int reg, int *mem, uint64_t *mem64) cc = __builtin_tbegin_retry_nofloat (&global_tdb, 42); cc = __builtin_tbegin_retry_nofloat ((void *)0x12345678, global); cc = __builtin_tbegin_retry_nofloat ( - (void *)(long long) (reg + 0x12345678), global + 1); + (void *)(long) (reg + 0x12345678), global + 1); cc = __builtin_tbegin_retry_nofloat ( - (void *)(long long)(reg), global - 1); + (void *)(long)(reg), global - 1); __builtin_tbeginc (); diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c index df7e2ba..6022efb 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c +++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c @@ -1,12 +1,50 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -march=zEC12 -mzarch" } */ +/* { dg-do run } */ +/* { dg-require-effective-target htm } */ +/* { dg-options "-O3 -march=zEC12 -mzarch --save-temps" } */ -int -foo () +/* __builtin_tbegin has to emit clobbers for all FPRs since the tbegin + instruction does not automatically preserves them. If the + transaction body is fully contained in a function the backend tries + after reload to get rid of the FPR save/restore operations + triggered by the clobbers. This testcase failed since the backend + was able to get rid of all FPR saves/restores and since these were + the only stack operations also of the entire stack space. So even + the save/restore of the stack pointer was omitted in the end. + However, since the frame layout has been fixed before, the prologue + still generated the stack pointer decrement making foo return with + a modified stack pointer. */ + +void abort(void); + +void __attribute__((noinline)) +foo (int a) +{ + if (__builtin_tbegin (0) == 0) + __builtin_tend (); +} + +#ifdef __s390x__ +#define GET_STACK_POINTER(SP) \ + asm volatile ("stg %%r15, %0" : "=QRST" (SP)); +#else +#define GET_STACK_POINTER(SP) \ + asm volatile ("st %%r15, %0" : "=QR" (SP)); +#endif + +int main(void) { - __builtin_tbegin_nofloat (0); - __builtin_tbegin_retry_nofloat (0, 42); + unsigned long new_sp, old_sp; + + GET_STACK_POINTER (old_sp); + foo(42); + GET_STACK_POINTER (new_sp); + + if (old_sp != new_sp) + abort (); + + return 0; } + /* Make sure no FPR saves/restores are emitted. */ -/* { dg-final { scan-assembler-not "std" } } */ -/* { dg-final { scan-assembler-not "ld" } } */ +/* { dg-final { scan-assembler-not "\tstd\t" } } */ +/* { dg-final { scan-assembler-not "\tld\t" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c new file mode 100644 index 0000000..df7e2ba --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -march=zEC12 -mzarch" } */ + +int +foo () +{ + __builtin_tbegin_nofloat (0); + __builtin_tbegin_retry_nofloat (0, 42); +} +/* Make sure no FPR saves/restores are emitted. */ +/* { dg-final { scan-assembler-not "std" } } */ +/* { dg-final { scan-assembler-not "ld" } } */ diff --git a/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp b/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp index 1b6d94a..f2ba929 100644 --- a/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp +++ b/gcc-4.9/gcc/testsuite/gcc.target/s390/s390.exp @@ -24,17 +24,17 @@ if ![istarget s390*-*-*] then { # Load support procs. load_lib gcc-dg.exp -# Return 1 if htm (etnd - extract nesting depth) instructions can be -# compiled. +# Return 1 if htm (etnd - extract nesting depth) instructions are +# understood by the assembler and can be executed. proc check_effective_target_htm { } { if { ![check_runtime s390_check_htm [subst { int main (void) { - unsigned int nd = 77; - asm (".insn rre,0xb2ec0000,%0,0" : "=d" (nd)); + unsigned int nd; + asm ("etnd %0" : "=d" (nd)); return nd; } - }]] } { return 0 } else { return 1 } + }] "-march=zEC12 -mzarch" ] } { return 0 } else { return 1 } } # If a testcase doesn't have special options, use these. diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f90 new file mode 100644 index 0000000..92a856b --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/arrayio_13.f90 @@ -0,0 +1,14 @@ +! { dg-do run } +! PR60810 Bogus end-of-file +program readstrlist + character(len=80), dimension(2) :: ver + integer :: a, b, c + a = 1 + b = 2 + c = 3 + ver(1) = '285 383' + ver(2) = '985' + read( ver, *) a, b, c + if (a /= 285 .or. b /= 383 .or. c /= 985) call abort + !write ( *, *) a, b, c +end diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f90 new file mode 100644 index 0000000..7e34eb5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/associate_15.f90 @@ -0,0 +1,40 @@ +! { dg-do run } +! Test the fix for PR58085, where the offset for 'x' was set to zero, +! rather than -1. +! +! Contributed by Vladimir Fuka <vladimir.fuka@gmail.com> +! +module foo +contains + function bar (arg) result (res) + integer arg, res(3) + res = [arg, arg+1, arg +2] + end function +end module + use foo + real d(3,3) + integer a,b,c + character(48) line1, line2 + associate (x=>shape(d)) + a = x(1) + b = x(2) + write (line1, *) a, b + write (line2, *) x + if (trim (line1) .ne. trim (line2)) call abort + end associate + associate (x=>[1,2]) + a = x(1) + b = x(2) + write (line1, *) a, b + write (line2, *) x + if (trim (line1) .ne. trim (line2)) call abort + end associate + associate (x=>bar(5)) ! make sure that we haven't broken function association + a = x(1) + b = x(2) + c = x(3) + write (line1, *) a, b, c + write (line2, *) x + if (trim (line1) .ne. trim (line2)) call abort + end associate +end diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f90 new file mode 100644 index 0000000..227d865 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/class_nameclash.f90 @@ -0,0 +1,39 @@ +! { dg-do run } +! +! try to provoke class name clashes in gfc_build_class_symbol +! +module test_module + + implicit none + + type, public :: test_p + private + class (test_p), pointer :: next => null() + end type test_p + + type, public :: test +! Error in "call do_it (x)" below: +! Type mismatch in argument 'x' at (1); passed CLASS(test_p) to CLASS(test) + class (test), pointer :: next => null() + end type test + +contains + + subroutine do_it (x) + class (test_p), target :: x + + x%next => x + return + end subroutine do_it + +end module test_module + +use test_module + + implicit none + class (test_p), pointer :: x + + allocate (x) + call do_it (x) + deallocate (x) +end diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f90 new file mode 100644 index 0000000..2a21858 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/finalize_24.f90 @@ -0,0 +1,28 @@ +! { dg-do compile } +! +! PR fortran/58880 +! +! Contributed by Andrew Benson +! + +module gn + type sl + integer, allocatable, dimension(:) :: lv + contains + final :: sld + end type sl + type :: nde + type(sl) :: r + end type nde +contains + subroutine ndm(s) + type(nde), intent(inout) :: s + type(nde) :: i + i=s + end subroutine ndm + subroutine sld(s) + implicit none + type(sl), intent(inout) :: s + return + end subroutine sld +end module gn diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90 index 7d9c8aa..4c5b721 100644 --- a/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90 +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/fmt_en.f90 @@ -7,8 +7,8 @@ use ISO_FORTRAN_ENV integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] logical :: l_skip(4) = .false. integer :: i - integer :: n_tst = 0, n_cnt = 0 - character(len=20) :: s + integer :: n_tst = 0, n_cnt = 0, n_skip = 0 + character(len=20) :: s, s1 open (unit = 10, file = 'fmt_en.res') ! Check that the default rounding mode is to nearest and to even on tie. @@ -17,22 +17,30 @@ use ISO_FORTRAN_ENV write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), & real(9.49999905,kind=j(1)), & real(9.5,kind=j(1)), real(8.5,kind=j(1)) + write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(1)), & + real(98765.0,kind=j(1)) else if (i == 2) then write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), & real(9.49999905,kind=j(2)), & real(9.5,kind=j(2)), real(8.5,kind=j(2)) + write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(2)), & + real(98765.0,kind=j(2)) else if (i == 3) then write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), & real(9.49999905,kind=j(3)), & real(9.5,kind=j(3)), real(8.5,kind=j(3)) + write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(3)), & + real(98765.0,kind=j(3)) else if (i == 4) then write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), & real(9.49999905,kind=j(4)), & real(9.5,kind=j(4)), real(8.5,kind=j(4)) + write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(4)), & + real(98765.0,kind=j(4)) end if - if (s /= '-9.5 9.5 10. 8.') then + if (s /= '-9.5 9.5 10. 8.' .or. s1 /= ' 987.4E+03 98.76E+03') then l_skip(i) = .true. - print "('Unsupported rounding for real(',i0,')')", j(i) +! print "('Unsupported rounding for real(',i0,')')", j(i) end if end do @@ -139,7 +147,7 @@ use ISO_FORTRAN_ENV call checkfmt("(en15.3)", -9.765625E-04," -976.562E-06") call checkfmt("(en15.6)", -2.9296875E-03," -2.929688E-03") - !print *, n_tst, n_cnt + ! print *, n_tst, n_cnt, n_skip if (n_cnt /= 0) call abort if (all(.not. l_skip)) write (10, *) "All kinds rounded to nearest" close (10) @@ -152,7 +160,6 @@ contains real, intent(in) :: x character(len=*), intent(in) :: cmp do i=1,size(real_kinds) - if (l_skip(i)) cycle if (i == 1) then write(s, fmt) real(x,kind=j(1)) else if (i == 2) then @@ -164,12 +171,16 @@ contains end if n_tst = n_tst + 1 if (s /= cmp) then - print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp - n_cnt = n_cnt + 1 - end if + if (l_skip(i)) then + n_skip = n_skip + 1 + else + print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp + n_cnt = n_cnt + 1 + end if + end if end do end subroutine end program -! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail i?86-*-solaris2.9* } } } +! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } } ! { dg-final { cleanup-saved-temps } } diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 new file mode 100644 index 0000000..e121879 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 @@ -0,0 +1,16 @@ +! { dg-lto-do link } +program test + use iso_fortran_env + + interface + integer(int16) function bigendc16(x) bind(C) + import + integer(int16), intent(in) :: x + end function + end interface + + integer(int16) :: x16 = 12345 + x16 = bigendc16(x16) + print *,x16 +end program + diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c new file mode 100644 index 0000000..eddc569 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/lto/pr60635_1.c @@ -0,0 +1,14 @@ +#include <stdint.h> +#include <stdbool.h> + +static bool littleendian=true; + +uint16_t bigendc16(union{uint16_t * n;uint8_t* b;}x){ + + if (!littleendian) return *x.n; + + uint16_t res = ((uint16_t)(x.b[1])<<0) | + ((uint16_t)(x.b[0])<<8); + return res; +} + diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90 new file mode 100644 index 0000000..0fcff74 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/unlimited_polymorphic_17.f90 @@ -0,0 +1,51 @@ +! { dg-do run } +! Tests fix for PR60717 in which offsets in recursive calls below +! were not being set correctly. +! +! Reported on comp.lang.fortran by Thomas Schnurrenberger +! +module m + implicit none + real :: chksum0 = 0, chksum1 = 0, chksum2 = 0 +contains + recursive subroutine show_real(a) + real, intent(in) :: a(:) + if (size (a) > 0) then + chksum0 = a(1) + chksum0 + call show_real (a(2:)) + end if + return + end subroutine show_real + recursive subroutine show_generic1(a) + class(*), intent(in) :: a(:) + if (size (a) > 0) then + select type (a) + type is (real) + chksum1 = a(1) + chksum1 + end select + call show_generic1 (a(2:)) ! recursive call outside SELECT TYPE + end if + return + end subroutine show_generic1 + recursive subroutine show_generic2(a) + class(*), intent(in) :: a(:) + if (size (a) > 0) then + select type (a) + type is (real) + chksum2 = a(1) + chksum2 + call show_generic2 (a(2:)) ! recursive call inside SELECT TYPE + end select + end if + return + end subroutine show_generic2 +end module m +program test + use :: m + implicit none + real :: array(1:6) = (/ 0, 1, 2, 3, 4, 5 /) + call show_real (array) + call show_generic1 (array) + call show_generic2 (array) + if (chksum0 .ne. chksum1) call abort + if (chksum0 .ne. chksum2) call abort +end program test diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90 index f911741..3d1b125 100644 --- a/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90 +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/warn_conversion_4.f90 @@ -11,8 +11,8 @@ contains subroutine test integer :: x x = int (abs (cmplx(2.3,0.1))) - x = int (abs (cmplx(2.3_dp,0.1))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" } - x = int (abs (cmplx(2.3,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" } - x = int (abs (cmplx(2.3_dp,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might loose precision, consider using the KIND argument" } + x = int (abs (cmplx(2.3_dp,0.1))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might lose precision, consider using the KIND argument" } + x = int (abs (cmplx(2.3,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might lose precision, consider using the KIND argument" } + x = int (abs (cmplx(2.3_dp,0.1_dp))) ! { dg-warning "Conversion from REAL.8. to default-kind COMPLEX.4. at .1. might lose precision, consider using the KIND argument" } end subroutine test end module fft_mod diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f90 new file mode 100644 index 0000000..1ff2e4c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gfortran.dg/where_4.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! PR 60522 - this used to ICE. +! Original test case Roger Ferrer Ibanez +subroutine foo(a, b) + implicit none + integer, dimension(:), intent(inout) :: a + integer, dimension(:), intent(in) :: b + + where (b(:) > 0) + where (b(:) > 100) + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) - 100 + elsewhere + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where + elsewhere + a(lbound(a, 1):ubound(a, 1)) = - b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where +end subroutine foo diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb b/gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb new file mode 100644 index 0000000..e1ac27c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gnat.dg/opt33.adb @@ -0,0 +1,41 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +with Ada.Containers.Ordered_Sets; +with Ada.Strings.Unbounded; + +procedure Opt33 is + + type Rec is record + Name : Ada.Strings.Unbounded.Unbounded_String; + end record; + + function "<" (Left : Rec; Right : Rec) return Boolean; + + package My_Ordered_Sets is new Ada.Containers.Ordered_Sets (Rec); + + protected type Data is + procedure Do_It; + private + Set : My_Ordered_Sets.Set; + end Data; + + function "<" (Left : Rec; Right : Rec) return Boolean is + begin + return False; + end "<"; + + protected body Data is + procedure Do_It is + procedure Dummy (Position : My_Ordered_Sets.Cursor) is + begin + null; + end; + begin + Set.Iterate (Dummy'Access); + end; + end Data; + +begin + null; +end; diff --git a/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb b/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb index 66db223..8f928c5 100644 --- a/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb +++ b/gcc-4.9/gcc/testsuite/gnat.dg/test_raise_from_pure.adb @@ -1,4 +1,4 @@ --- { dg-do run { xfail arm*-*-* } } +-- { dg-do run } -- { dg-options "-O2" } -- This is an optimization test and its failure is only a missed optimization. diff --git a/gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp b/gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp new file mode 100644 index 0000000..bfb4b71 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/lib/cilk-plus-dg.exp @@ -0,0 +1,104 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# +# cilkplus_link_flags -- compute library path and flags to find libcilkrts. +# (originally from g++.exp) +# + +proc cilkplus_link_flags { paths } { + global srcdir + global ld_library_path + global shlib_ext + + set gccpath ${paths} + set flags "" + + set shlib_ext [get_shlib_extension] + + if { $gccpath != "" } { + if { [file exists "${gccpath}/libcilkrts/.libs/libcilkrts.a"] + || [file exists "${gccpath}/libcilkrts/.libs/libcilkrts.${shlib_ext}"] } { + append flags " -B${gccpath}/libcilkrts/ " + append flags " -L${gccpath}/libcilkrts/.libs" + append ld_library_path ":${gccpath}/libcilkrts/.libs" + } + } else { + global tool_root_dir + + set libcilkrts [lookfor_file ${tool_root_dir} libcilkrts] + if { $libcilkrts != "" } { + append flags "-L${libcilkrts} " + append ld_library_path ":${libcilkrts}" + } + } + + set_ld_library_path_env_vars + + return "$flags" +} + +# +# cilkplus_init -- called at the start of each subdir of tests +# + +proc cilkplus_init { args } { + global TEST_ALWAYS_FLAGS + global ALWAYS_CXXFLAGS + global TOOL_OPTIONS + global cilkplus_saved_TEST_ALWAYS_FLAGS + + set link_flags "" + if ![is_remote host] { + if [info exists TOOL_OPTIONS] { + set link_flags "[cilkplus_link_flags [get_multilibs ${TOOL_OPTIONS}]]" + } else { + set link_flags "[cilkplus_link_flags [get_multilibs]]" + } + } + + if [info exists TEST_ALWAYS_FLAGS] { + set cilkplus_saved_TEST_ALWAYS_FLAGS $TEST_ALWAYS_FLAGS + } + if [info exists ALWAYS_CXXFLAGS] { + set ALWAYS_CXXFLAGS [concat "{ldflags=$link_flags}" $ALWAYS_CXXFLAGS] + } else { + if [info exists TEST_ALWAYS_FLAGS] { + set TEST_ALWAYS_FLAGS "$link_flags $TEST_ALWAYS_FLAGS" + } else { + set TEST_ALWAYS_FLAGS "$link_flags" + } + } + if { $link_flags != "" } { + return 1 + } + return 0 +} + +# +# cilkplus_finish -- called at the end of each subdir of tests +# + +proc cilkplus_finish { args } { + global TEST_ALWAYS_FLAGS + global cilkplus_saved_TEST_ALWAYS_FLAGS + + if [info exists cilkplus_saved_TEST_ALWAYS_FLAGS] { + set TEST_ALWAYS_FLAGS $cilkplus_saved_TEST_ALWAYS_FLAGS + } else { + unset TEST_ALWAYS_FLAGS + } +} diff --git a/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp b/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp index f9d52bc..a758d47 100644 --- a/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc-4.9/gcc/testsuite/lib/gcc-dg.exp @@ -181,6 +181,7 @@ proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } { lappend options "additional_flags=$extra_tool_flags" } + verbose "$target_compile $prog $output_file $compile_type $options" 4 set comp_output [$target_compile "$prog" "$output_file" "$compile_type" $options] # Look for an internal compiler error, which sometimes masks the fact diff --git a/gcc-4.9/gcc/testsuite/lib/prune.exp b/gcc-4.9/gcc/testsuite/lib/prune.exp index 72ecde7..679d894 100644 --- a/gcc-4.9/gcc/testsuite/lib/prune.exp +++ b/gcc-4.9/gcc/testsuite/lib/prune.exp @@ -59,7 +59,7 @@ proc prune_gcc_output { text } { # Ignore harmless warnings from Xcode 3.2.x. regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text - regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text + regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*FORM_ref4\[^\n\]*" $text "" text regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable: AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text # Ignore harmless warnings from Xcode 4.0. diff --git a/gcc-4.9/gcc/testsuite/lib/target-supports.exp b/gcc-4.9/gcc/testsuite/lib/target-supports.exp index bee8471..57b10d0 100644 --- a/gcc-4.9/gcc/testsuite/lib/target-supports.exp +++ b/gcc-4.9/gcc/testsuite/lib/target-supports.exp @@ -746,7 +746,14 @@ proc check_effective_target_mmap {} { # Return 1 if the target supports dlopen, 0 otherwise. proc check_effective_target_dlopen {} { - return [check_function_available "dlopen"] + return [check_no_compiler_messages dlopen executable { + #include <dlfcn.h> + int main(void) { dlopen ("dummy.so", RTLD_NOW); } + } [add_options_for_dlopen ""]] +} + +proc add_options_for_dlopen { flags } { + return "$flags -ldl" } # Return 1 if the target supports clone, 0 otherwise. @@ -3732,6 +3739,28 @@ proc check_effective_target_vect_widen_mult_hi_to_si_pattern { } { } # Return 1 if the target plus current options supports a vector +# widening multiplication of *int* args into *long* result, 0 otherwise. +# +# This won't change for different subtargets so cache the result. + +proc check_effective_target_vect_widen_mult_si_to_di_pattern { } { + global et_vect_widen_mult_si_to_di_pattern + + if [info exists et_vect_widen_mult_si_to_di_pattern_saved] { + verbose "check_effective_target_vect_widen_mult_si_to_di_pattern: using cached result" 2 + } else { + set et_vect_widen_mult_si_to_di_pattern_saved 0 + if {[istarget ia64-*-*] + || [istarget i?86-*-*] + || [istarget x86_64-*-*] } { + set et_vect_widen_mult_si_to_di_pattern_saved 1 + } + } + verbose "check_effective_target_vect_widen_mult_si_to_di_pattern: returning $et_vect_widen_mult_si_to_di_pattern_saved" 2 + return $et_vect_widen_mult_si_to_di_pattern_saved +} + +# Return 1 if the target plus current options supports a vector # widening shift, 0 otherwise. # # This won't change for different subtargets so cache the result. @@ -5712,6 +5741,7 @@ proc check_effective_target_logical_op_short_circuit {} { || [istarget arc*-*-*] || [istarget avr*-*-*] || [istarget crisv32-*-*] || [istarget cris-*-*] + || [istarget s390*-*-*] || [check_effective_target_arm_cortex_m] } { return 1 } |