summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYvan Roux <yvan.roux@linaro.org>2017-06-13 15:07:32 +0200
committerYvan Roux <yvan.roux@linaro.org>2017-06-13 15:07:32 +0200
commit491ad610cd69b2a93185dcb02e206a212abc08a7 (patch)
tree93e33200631f9dcb2efbc15f8c92036c0e4cbec1
parentf121e2071eccc565889dd943b3219fbb9349cfcc (diff)
downloadgcc-491ad610cd69b2a93185dcb02e206a212abc08a7.tar.gz
Merge branches/gcc-6-branch rev 249140.
Change-Id: I6b73a3960133b7cfc1a59998d7411d8a247b84e0
-rw-r--r--gcc/ChangeLog429
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/alias.c12
-rw-r--r--gcc/auto-profile.c4
-rw-r--r--gcc/c-family/ChangeLog9
-rw-r--r--gcc/c-family/c-ubsan.c1
-rw-r--r--gcc/c/ChangeLog6
-rw-r--r--gcc/c/c-typeck.c6
-rw-r--r--gcc/cgraph.c2
-rw-r--r--gcc/cgraphunit.c4
-rw-r--r--gcc/config/i386/avx2intrin.h488
-rw-r--r--gcc/config/i386/avx512fintrin.h94
-rw-r--r--gcc/config/i386/avx512pfintrin.h88
-rw-r--r--gcc/config/i386/avx512vlintrin.h48
-rw-r--r--gcc/config/i386/gmm_malloc.h36
-rw-r--r--gcc/config/i386/ia32intrin.h8
-rw-r--r--gcc/config/i386/lwpintrin.h22
-rw-r--r--gcc/config/i386/mmx.md16
-rw-r--r--gcc/config/i386/pkuintrin.h6
-rw-r--r--gcc/config/i386/pmm_malloc.h20
-rw-r--r--gcc/config/i386/rdseedintrin.h12
-rw-r--r--gcc/config/i386/rtmintrin.h4
-rw-r--r--gcc/config/i386/sse.md4
-rw-r--r--gcc/config/pa/pa.c48
-rw-r--r--gcc/config/rs6000/rs6000.c39
-rw-r--r--gcc/config/sparc/sol2.h2
-rw-r--r--gcc/config/sparc/sparc.c16
-rw-r--r--gcc/config/sparc/sparc.h11
-rw-r--r--gcc/config/sparc/sparc.md8
-rw-r--r--gcc/config/xtensa/xtensa-protos.h1
-rw-r--r--gcc/config/xtensa/xtensa.c98
-rw-r--r--gcc/config/xtensa/xtensa.h6
-rw-r--r--gcc/config/xtensa/xtensa.md2
-rw-r--r--gcc/cp/ChangeLog28
-rw-r--r--gcc/cp/constexpr.c25
-rw-r--r--gcc/cp/cp-gimplify.c6
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/cp/semantics.c6
-rw-r--r--gcc/doc/install.texi10
-rw-r--r--gcc/doc/lto.texi2
-rw-r--r--gcc/doc/sourcebuild.texi3
-rw-r--r--gcc/fold-const.c20
-rw-r--r--gcc/fortran/ChangeLog28
-rw-r--r--gcc/fortran/expr.c7
-rw-r--r--gcc/fortran/frontend-passes.c2
-rw-r--r--gcc/fortran/intrinsic.c21
-rw-r--r--gcc/fortran/trans-expr.c2
-rw-r--r--gcc/gcov-io.c8
-rw-r--r--gcc/gcov-tool.c9
-rw-r--r--gcc/gcov.c63
-rw-r--r--gcc/gimple-fold.c7
-rw-r--r--gcc/go/ChangeLog6
-rw-r--r--gcc/go/go-gcc.cc4
-rw-r--r--gcc/graphite-isl-ast-to-gimple.c14
-rw-r--r--gcc/ipa-cp.c6
-rw-r--r--gcc/ipa-devirt.c8
-rw-r--r--gcc/ipa-split.c9
-rw-r--r--gcc/plugin.c24
-rw-r--r--gcc/testsuite/ChangeLog209
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr81006.c10
-rw-r--r--gcc/testsuite/c-c++-common/ubsan/pr80350.c17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C14
-rw-r--r--gcc/testsuite/g++.dg/ext/flexary24.C12
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr81011.C19
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr79931.C24
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr80205.C34
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr80212.C18
-rw-r--r--gcc/testsuite/g++.dg/lto/pr69589_0.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/pr80275.C16
-rw-r--r--gcc/testsuite/g++.dg/other/i386-11.C57
-rw-r--r--gcc/testsuite/g++.dg/torture/pr80075.C27
-rw-r--r--gcc/testsuite/g++.dg/torture/pr80171.C183
-rw-r--r--gcc/testsuite/g++.dg/torture/pr80334.C18
-rw-r--r--gcc/testsuite/gcc.dg/asan/pr80166.c24
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr80167.c24
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr80104.c15
-rw-r--r--gcc/testsuite/gcc.dg/pr80492.c20
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr80122.c52
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr80362.c10
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr80539.c22
-rw-r--r--gcc/testsuite/gcc.dg/ubsan/pr70878.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr80262.c26
-rw-r--r--gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c62
-rw-r--r--gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c30
-rw-r--r--gcc/testsuite/gcc.target/sparc/niagara7-align.c4
-rw-r--r--gcc/testsuite/gcc.target/sparc/sparc-ret-3.c53
-rw-r--r--gcc/testsuite/gfortran.dg/matmul_bounds_12.f9017
-rw-r--r--gcc/testsuite/gfortran.dg/pr80752.f9020
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f9026
-rw-r--r--gcc/testsuite/gfortran.dg/spread_init_expr_2.f905
-rw-r--r--gcc/testsuite/lib/target-supports.exp8
-rw-r--r--gcc/tree-chrec.c14
-rw-r--r--gcc/tree-eh.c36
-rw-r--r--gcc/tree-inline.c96
-rw-r--r--gcc/tree-inline.h2
-rw-r--r--gcc/tree-sra.c7
-rw-r--r--gcc/tree-ssa-loop-ivopts.c6
-rw-r--r--gcc/tree-ssa-sccvn.c4
-rw-r--r--gcc/tree-vect-data-refs.c15
-rw-r--r--gcc/ubsan.c6
-rw-r--r--libada/ChangeLog7
-rwxr-xr-xlibada/configure7
-rw-r--r--libada/configure.ac9
-rw-r--r--libgcc/ChangeLog49
-rw-r--r--libgcc/config.host2
-rw-r--r--libgcc/config/alpha/t-alpha4
-rw-r--r--libgcc/config/arm/unwind-arm.c22
-rw-r--r--libgcc/config/arm/unwind-arm.h7
-rw-r--r--libgcc/config/sparc/lb1spc.S6
-rw-r--r--libgcc/config/xtensa/t-elf2
-rw-r--r--libgcc/config/xtensa/t-linux2
-rw-r--r--libgcc/config/xtensa/t-windowed2
-rw-r--r--libgcc/libgcov-driver.c9
-rw-r--r--libgfortran/ChangeLog8
-rw-r--r--libgfortran/libgfortran.h4
-rw-r--r--libgfortran/runtime/environ.c11
-rw-r--r--libsanitizer/ChangeLog9
-rw-r--r--libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc3
-rw-r--r--libstdc++-v3/ChangeLog321
-rw-r--r--libstdc++-v3/acinclude.m48
-rw-r--r--libstdc++-v3/config/os/mingw32-w64/error_constants.h101
-rwxr-xr-xlibstdc++-v3/configure20
-rw-r--r--libstdc++-v3/doc/html/manual/abi.html40
-rw-r--r--libstdc++-v3/doc/html/manual/bugs.html9
-rw-r--r--libstdc++-v3/doc/html/manual/status.html2
-rw-r--r--libstdc++-v3/doc/html/manual/using_macros.html5
-rw-r--r--libstdc++-v3/doc/xml/manual/abi.xml73
-rw-r--r--libstdc++-v3/include/bits/ios_base.h4
-rw-r--r--libstdc++-v3/include/bits/regex.h2
-rw-r--r--libstdc++-v3/include/bits/regex.tcc17
-rw-r--r--libstdc++-v3/include/bits/regex_compiler.h7
-rw-r--r--libstdc++-v3/include/experimental/bits/fs_dir.h7
-rw-r--r--libstdc++-v3/include/experimental/optional2
-rw-r--r--libstdc++-v3/include/std/functional8
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/printers.py5
-rw-r--r--libstdc++-v3/src/c++11/cow-stdexcept.cc11
-rw-r--r--libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c1
-rw-r--r--libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc34
-rw-r--r--libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc11
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/67844.cc2
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc3
-rw-r--r--libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/operations/78389.cc20
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc2
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/rvalue_streams.cc2
-rw-r--r--libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc30
-rw-r--r--libstdc++-v3/testsuite/28_regex/regression.cc22
-rw-r--r--libstdc++-v3/testsuite/abi/header_cxxabi.c1
-rw-r--r--libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc3
-rw-r--r--libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc1
-rw-r--r--libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc33
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc3
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc1
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc2
-rw-r--r--libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc2
-rw-r--r--libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc2
-rw-r--r--libstdc++-v3/testsuite/util/testsuite_hooks.h6
262 files changed, 3419 insertions, 903 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1e3a22fc764..2439e669df3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,408 @@
+2017-06-09 David S. Miller <davem@davemloft.net>
+
+ PR target/80968
+ * config/sparc/sparc.c (sparc_flat_expand_epilogue): Don't
+ emit frame blockage here.
+ (sparc_expand_epilogue): Do it here.
+ * config/sparc/sparc.md (return expander): Emit frame blockage
+ for alloca here too.
+
+2017-06-06 David S. Miller <davem@davemloft.net>
+
+ PR target/80968
+ * config/sparc/sparc.c (sparc_expand_prologue): Emit frame
+ blockage if function uses alloca.
+
+2017-06-06 Toma Tabacu <toma.tabacu@imgtec.com>
+
+ Backported from mainline
+ 2017-03-09 Toma Tabacu <toma.tabacu@imgtec.com>
+
+ * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
+ Document rdynamic.
+
+2017-06-01 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2016-08-19 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/rdseedintrin.h (_rdseed16_step, _rdseed32_step,
+ _rdseed64_step): Uglify argument names and/or local variable names
+ in inline functions.
+ * config/i386/rtmintrin.h (_xabort): Likewise.
+ * config/i386/avx512vlintrin.h (_mm256_ternarylogic_epi64,
+ _mm256_mask_ternarylogic_epi64, _mm256_maskz_ternarylogic_epi64,
+ _mm256_ternarylogic_epi32, _mm256_mask_ternarylogic_epi32,
+ _mm256_maskz_ternarylogic_epi32, _mm_ternarylogic_epi64,
+ _mm_mask_ternarylogic_epi64, _mm_maskz_ternarylogic_epi64,
+ _mm_ternarylogic_epi32, _mm_mask_ternarylogic_epi32,
+ _mm_maskz_ternarylogic_epi32): Likewise.
+ * config/i386/lwpintrin.h (__llwpcb, __lwpval32, __lwpval64,
+ __lwpins32, __lwpins64): Likewise.
+ * config/i386/avx2intrin.h (_mm_i32gather_pd, _mm_mask_i32gather_pd,
+ _mm256_i32gather_pd, _mm256_mask_i32gather_pd, _mm_i64gather_pd,
+ _mm_mask_i64gather_pd, _mm256_i64gather_pd, _mm256_mask_i64gather_pd,
+ _mm_i32gather_ps, _mm_mask_i32gather_ps, _mm256_i32gather_ps,
+ _mm256_mask_i32gather_ps, _mm_i64gather_ps, _mm_mask_i64gather_ps,
+ _mm256_i64gather_ps, _mm256_mask_i64gather_ps, _mm_i32gather_epi64,
+ _mm_mask_i32gather_epi64, _mm256_i32gather_epi64,
+ _mm256_mask_i32gather_epi64, _mm_i64gather_epi64,
+ _mm_mask_i64gather_epi64, _mm256_i64gather_epi64,
+ _mm256_mask_i64gather_epi64, _mm_i32gather_epi32,
+ _mm_mask_i32gather_epi32, _mm256_i32gather_epi32,
+ _mm256_mask_i32gather_epi32, _mm_i64gather_epi32,
+ _mm_mask_i64gather_epi32, _mm256_i64gather_epi32,
+ _mm256_mask_i64gather_epi32): Likewise.
+ * config/i386/pmm_malloc.h (_mm_malloc, _mm_free): Likewise.
+ * config/i386/ia32intrin.h (__writeeflags): Likewise.
+ * config/i386/pkuintrin.h (_wrpkru): Likewise.
+ * config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i32gather_pd,
+ _mm512_mask_prefetch_i32gather_ps, _mm512_mask_prefetch_i64gather_pd,
+ _mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd,
+ _mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd,
+ _mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd,
+ _mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd,
+ _mm512_mask_prefetch_i64scatter_ps): Likewise.
+ * config/i386/gmm_malloc.h (_mm_malloc, _mm_free): Likewise.
+ * config/i386/avx512fintrin.h (_mm512_ternarylogic_epi64,
+ _mm512_mask_ternarylogic_epi64, _mm512_maskz_ternarylogic_epi64,
+ _mm512_ternarylogic_epi32, _mm512_mask_ternarylogic_epi32,
+ _mm512_maskz_ternarylogic_epi32, _mm512_i32gather_ps,
+ _mm512_mask_i32gather_ps, _mm512_i32gather_pd, _mm512_i64gather_ps,
+ _mm512_i64gather_pd, _mm512_i32gather_epi32, _mm512_i32gather_epi64,
+ _mm512_i64gather_epi32, _mm512_i64gather_epi64): Likewise.
+
+2017-05-30 Max Filippov <jcmvbkbc@gmail.com>
+
+ Backport from mainline
+ 2017-05-29 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa.c (xtensa_emit_call): Use
+ HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
+ (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
+ format string.
+
+2017-05-30 Max Filippov <jcmvbkbc@gmail.com>
+
+ Backport from mainline
+ 2016-11-29 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa.c (hwloop_optimize): Don't emit zero
+ overhead loop start between a call and its CALL_ARG_LOCATION
+ note.
+
+2017-05-30 Max Filippov <jcmvbkbc@gmail.com>
+
+ Backport from mainline
+ 2016-11-01 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa-protos.h
+ (xtensa_use_return_instruction_p): New prototype.
+ * config/xtensa/xtensa.c (xtensa_current_frame_size,
+ xtensa_callee_save_size): Remove.
+ (struct machine_function): Add new fields: current_frame_size,
+ callee_save_size, frame_laid_out and epilogue_done.
+ (compute_frame_size, xtensa_expand_prologue,
+ xtensa_expand_epilogue): Replace xtensa_callee_save_size with
+ cfun->machine->callee_save_size and xtensa_current_frame_size
+ with cfun->machine->current_frame_size.
+ (compute_frame_size): Update cfun->machine->frame_laid_out and
+ don't update frame layout after reload completion.
+ (xtensa_expand_epilogue): Set cfun->machine->epilogue_done
+ instead of zeroing xtensa_current_frame_size.
+ (xtensa_use_return_instruction_p): New function.
+ * config/xtensa/xtensa.h (xtensa_current_frame_size): Remove
+ declaration.
+ (INITIAL_ELIMINATION_OFFSET): Use return value of
+ compute_frame_size instead of xtensa_current_frame_size value.
+ * config/xtensa/xtensa.md ("return" pattern): Use new predicate
+ function xtensa_use_return_instruction_p instead of inline code.
+
+2017-05-29 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/install.texi (Options specification): Move entry of
+ --enable-sjlj-exceptions.
+
+2017-05-26 Sheldon Lobo <smlobo@sheldon.us.oracle.com>
+
+ Backported from mainline
+ 2017-05-24 Sheldon Lobo <smlobo@sheldon.us.oracle.com>
+
+ * config/sparc/sparc.md (length): Return the correct value for -mflat
+ sibcalls to match output_sibcall.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-24 Jan Hubicka <hubicka@ucw.cz>
+
+ PR middle-end/79931
+ * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-19 Richard Biener <rguenther@suse.de>
+
+ PR ipa/65972
+ * auto-profile.c (afdo_vpt_for_early_inline): Update SSA
+ when needed by AutoPGO.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-19 Paulo J. Matos <paulo@matos-sorge.com>
+
+ PR lto/50345
+ * doc/lto.texi: Remove an extra 'that'.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-18 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/78783
+ * gcov-tool.c (gcov_output_files): Validate that destination
+ file is either removed by the tool or by a user.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-13 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/80413
+ * gcov-io.c (gcov_write_string): Copy to buffer just when
+ allocated size is greater than zero.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-11 Martin Liska <mliska@suse.cz>
+
+ PR ipa/80212
+ * cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
+ * ipa-split.c (split_function): Create a local comdat symbol
+ if caller is in a comdat group.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-11 Martin Liska <mliska@suse.cz>
+
+ PR ipa/80212
+ * ipa-cp.c (determine_versionability): Handle calls_comdat_local
+ flags.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-11 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/70878
+ * ubsan.c (instrument_object_size): Do not instrument register
+ variables.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-10 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/80224
+ * gcov.c (print_usage): Fix usage string.
+ (get_gcov_intermediate_filename): Remove.
+ (output_gcov_file): Use both for normal and intermediate format.
+ (generate_results): Do not initialize special file for
+ intermediate format.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-03-28 Richard Biener <rguenther@suse.de>
+
+ PR ipa/80205
+ * tree-inline.c (copy_phis_for_bb): Do not create PHI node
+ without arguments, generate default definition of a SSA name.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-03-28 Martin Liska <mliska@suse.cz>
+
+ PR ipa/80104
+ * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
+ thunk call as DECL_GIMPLE_REG_P when vector or complex type.
+
+2017-05-23 Sheldon Lobo <sheldon.lobo@oracle.com>
+
+ Backport from mainline
+ 2017-05-18 Sheldon Lobo <sheldon.lobo@oracle.com>
+
+ * config/sparc/sparc.c (sparc_option_override): Set function
+ alignment for -mcpu=niagara7 to 64 to match the I$ line.
+ * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
+ latency to 1.
+ * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
+ latency to 2.
+ * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
+
+2017-05-19 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2017-05-18 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/80799
+ * config/i386/mmx.md (*mov<mode>_internal): Enable
+ alternatives 11, 12, 13 and 14 also for 32bit targets.
+ Remove alternatives 15, 16, 17 and 18.
+ * config/i386/sse.md (vec_concatv2di): Change
+ alternative (!x, *y) to (x, ?!*Yn).
+
+2017-05-15 Richard Biener <rguenther@suse.de>
+
+ Revert backport of
+ PR middle-end/80222
+ * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
+ TYPE_REF_CAN_ALIAS_ALL references.
+ * fold-const.c (fold_indirect_ref_1): Likewise.
+
+2017-05-13 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2017-05-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
+ (rs6000_init_cost): Initialize rs6000_vect_nonmem.
+ (rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
+ (rs6000_finish_cost): Avoid vectorizing simple copy loops with
+ VF=2 that require versioning.
+
+2017-05-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2017-05-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
+ built-ins for vec_xl and vec_xst with short and char pointer
+ arguments.
+
+2017-05-10 John David Anglin <danglin@gcc.gnu.org>
+
+ PR target/80090
+ * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
+ handle calling assemble_external ourself.
+
+ PR target/79027
+ * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
+ modes with zero size. Enhance comment.
+
+2017-05-10 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2017-03-17 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80075
+ * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
+ Properly verify the LHS before the RHS possibly claims to be
+ handled.
+ (stmt_could_throw_p): Hande gimple conds fully here. Clobbers
+ do not throw.
+
+ 2017-03-21 Brad Spengler <spender@grsecurity.net>
+
+ PR plugin/80094
+ * plugin.c (htab_hash_plugin): New function.
+ (add_new_plugin): Use it and adjust.
+ (parse_plugin_arg_opt): Adjust.
+ (init_one_plugin): Likewise.
+
+ 2017-03-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80113
+ * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
+ allocate extra SSA name for PHI def.
+ (add_close_phis_to_outer_loops): Likewise.
+ (add_close_phis_to_merge_points): Likewise.
+ (copy_loop_close_phi_args): Likewise.
+ (copy_cond_phi_nodes): Likewise.
+
+ 2017-03-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80122
+ * tree-inline.c (copy_bb): Do not expans va-arg packs or
+ va_arg_pack_len when the inlined call stmt requires pack
+ expansion itself.
+ * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
+
+ 2017-03-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80167
+ * graphite-isl-ast-to-gimple.c
+ (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
+ properly.
+ (translate_isl_ast_to_gimple::get_rename): Likewise.
+
+ 2017-03-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80170
+ * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
+ sure DR/SCEV didnt fold in constants we do not see when looking
+ at the reference base alignment.
+
+ 2017-03-27 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80171
+ * gimple-fold.c (fold_ctor_reference): Properly guard against
+ NULL return value from canonicalize_constructor_val.
+
+2017-05-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2017-03-28 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80222
+ * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
+ TYPE_REF_CAN_ALIAS_ALL references.
+ * fold-const.c (fold_indirect_ref_1): Likewise.
+
+ 2017-04-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80262
+ * tree-sra.c (build_ref_for_offset): Preserve address-space
+ information.
+ * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
+ Drop useless address-space information on MEM_REF offsets.
+
+ 2017-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80275
+ * fold-const.c (split_address_to_core_and_offset): Handle
+ POINTER_PLUS_EXPR.
+
+ 2017-04-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80334
+ * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
+ preserve alignment of accesses.
+
+ 2017-04-10 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80362
+ * fold-const.c (fold_binary_loc): Look at unstripped ops when
+ looking for NEGATE_EXPR in -A / -B to A / B folding.
+
+ 2017-04-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80492
+ * alias.c (compare_base_decls): Handle registers with asm
+ specification conservatively.
+
+ 2017-04-27 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80539
+ * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
+ being in loop-closed SSA form conservatively.
+ (chrec_fold_multiply_poly_poly): Likewise.
+
2017-05-09 Jakub Jelinek <jakub@redhat.com>
PR testsuite/80678
@@ -320,13 +725,13 @@
Backport from mainline
2017-03-30 Martin Jambor <mjambor@suse.cz>
- PR ipa/77333
- * cgraph.h (cgraph_build_function_type_skip_args): Declare.
- * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
- it reflects the signature changes performed at the callee side.
- * cgraphclones.c (build_function_type_skip_args): Make public, renamed
- to cgraph_build_function_type_skip_args.
- (build_function_decl_skip_args): Adjust call to the above function.
+ PR ipa/77333
+ * cgraph.h (cgraph_build_function_type_skip_args): Declare.
+ * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
+ it reflects the signature changes performed at the callee side.
+ * cgraphclones.c (build_function_type_skip_args): Make public, renamed
+ to cgraph_build_function_type_skip_args.
+ (build_function_decl_skip_args): Adjust call to the above function.
2017-04-08 Andreas Tobler <andreast@gcc.gnu.org>
@@ -339,7 +744,7 @@
2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
Backport from mainline
- 2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
+ 2017-04-07 Andreas Tobler <andreast@gcc.gnu.org>
* config/aarch64/aarch64-freebsd.h: Define WCHAR_T.
@@ -611,8 +1016,8 @@
Backport from mainline
2017-03-10 Martin Liska <mliska@suse.cz>
- PR target/65705
- PR target/69804
+ PR target/65705
+ PR target/69804
* toplev.c (process_options): Enable MPX with LSAN and UBSAN.
* tree-chkp.c (chkp_walk_pointer_assignments): Verify that
FIELD != NULL.
@@ -756,8 +1161,8 @@
2017-02-28 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
PR target/79752
- * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
- udiv rather than div since input pattern is unsigned.
+ * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
+ udiv rather than div since input pattern is unsigned.
2017-03-14 Richard Biener <rguenther@suse.de>
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 03f9cf45879..0cdf576da69 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20170509
+20170613
diff --git a/gcc/alias.c b/gcc/alias.c
index c762894fd1c..c581732d3a5 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -2035,6 +2035,18 @@ compare_base_decls (tree base1, tree base2)
if (base1 == base2)
return 1;
+ /* If we have two register decls with register specification we
+ cannot decide unless their assembler name is the same. */
+ if (DECL_REGISTER (base1)
+ && DECL_REGISTER (base2)
+ && DECL_ASSEMBLER_NAME_SET_P (base1)
+ && DECL_ASSEMBLER_NAME_SET_P (base2))
+ {
+ if (DECL_ASSEMBLER_NAME (base1) == DECL_ASSEMBLER_NAME (base2))
+ return 1;
+ return -1;
+ }
+
/* Declarations of non-automatic variables may have aliases. All other
decls are unique. */
if (!decl_in_symtab_p (base1)
diff --git a/gcc/auto-profile.c b/gcc/auto-profile.c
index cd82ab4932d..94afe6fd2d9 100644
--- a/gcc/auto-profile.c
+++ b/gcc/auto-profile.c
@@ -1437,7 +1437,9 @@ afdo_vpt_for_early_inline (stmt_set *promoted_stmts)
if (has_vpt)
{
- optimize_inline_calls (current_function_decl);
+ unsigned todo = optimize_inline_calls (current_function_decl);
+ if (todo & TODO_update_ssa_any)
+ update_ssa (TODO_update_ssa);
return true;
}
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 22e45b15280..e8287a80704 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,12 @@
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-10 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/80350
+ * c-ubsan.c (ubsan_instrument_shift): Evaluate RHS before
+ doing an UBSAN check.
+
2017-05-05 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
diff --git a/gcc/c-family/c-ubsan.c b/gcc/c-family/c-ubsan.c
index 53d1a8696a2..a31995ae4f1 100644
--- a/gcc/c-family/c-ubsan.c
+++ b/gcc/c-family/c-ubsan.c
@@ -169,6 +169,7 @@ ubsan_instrument_shift (location_t loc, enum tree_code code,
/* In case we have a SAVE_EXPR in a conditional context, we need to
make sure it gets evaluated before the condition. */
t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), unshare_expr (op0), t);
+ t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), unshare_expr (op1), t);
t = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, t,
tt ? tt : integer_zero_node);
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 1c7b18dddc2..1c5ad59c87a 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/81006
+ * c-typeck.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
+ to sizetype before size_binop.
+
2017-05-05 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index c2b08ab32ee..4119eec22fe 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -12087,9 +12087,9 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
&& TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
== INTEGER_CST)
{
- tree size = size_binop (PLUS_EXPR,
- TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
- size_one_node);
+ tree size
+ = fold_convert (sizetype, TYPE_MAX_VALUE (TYPE_DOMAIN (type)));
+ size = size_binop (PLUS_EXPR, size, size_one_node);
if (TREE_CODE (low_bound) == INTEGER_CST)
{
if (tree_int_cst_lt (size, low_bound))
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 223c0272f11..6ff8f26ef39 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2086,6 +2086,8 @@ cgraph_node::dump (FILE *f)
fprintf (f, " only_called_at_exit");
if (tm_clone)
fprintf (f, " tm_clone");
+ if (calls_comdat_local)
+ fprintf (f, " calls_comdat_local");
if (icf_merged)
fprintf (f, " icf_merged");
if (merged_comdat)
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 71e88be753a..2fe207b7f4e 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1764,6 +1764,10 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
for (; i < nargs; i++, arg = DECL_CHAIN (arg))
{
tree tmp = arg;
+ if (VECTOR_TYPE_P (TREE_TYPE (arg))
+ || TREE_CODE (TREE_TYPE (arg)) == COMPLEX_TYPE)
+ DECL_GIMPLE_REG_P (arg) = 1;
+
if (!is_gimple_val (arg))
{
tmp = create_tmp_reg (TYPE_MAIN_VARIANT
diff --git a/gcc/config/i386/avx2intrin.h b/gcc/config/i386/avx2intrin.h
index 16c0ea8679f..0cb6d2c8963 100644
--- a/gcc/config/i386/avx2intrin.h
+++ b/gcc/config/i386/avx2intrin.h
@@ -1246,422 +1246,426 @@ _mm_srlv_epi64 (__m128i __X, __m128i __Y)
#ifdef __OPTIMIZE__
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i32gather_pd (double const *base, __m128i index, const int scale)
+_mm_i32gather_pd (double const *__base, __m128i __index, const int __scale)
{
- __v2df zero = _mm_setzero_pd ();
- __v2df mask = _mm_cmpeq_pd (zero, zero);
+ __v2df __zero = _mm_setzero_pd ();
+ __v2df __mask = _mm_cmpeq_pd (__zero, __zero);
return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (),
- base,
- (__v4si)index,
- mask,
- scale);
+ __base,
+ (__v4si)__index,
+ __mask,
+ __scale);
}
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i32gather_pd (__m128d src, double const *base, __m128i index,
- __m128d mask, const int scale)
+_mm_mask_i32gather_pd (__m128d __src, double const *__base, __m128i __index,
+ __m128d __mask, const int __scale)
{
- return (__m128d) __builtin_ia32_gathersiv2df ((__v2df)src,
- base,
- (__v4si)index,
- (__v2df)mask,
- scale);
+ return (__m128d) __builtin_ia32_gathersiv2df ((__v2df)__src,
+ __base,
+ (__v4si)__index,
+ (__v2df)__mask,
+ __scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i32gather_pd (double const *base, __m128i index, const int scale)
+_mm256_i32gather_pd (double const *__base, __m128i __index, const int __scale)
{
- __v4df zero = _mm256_setzero_pd ();
- __v4df mask = _mm256_cmp_pd (zero, zero, _CMP_EQ_OQ);
+ __v4df __zero = _mm256_setzero_pd ();
+ __v4df __mask = _mm256_cmp_pd (__zero, __zero, _CMP_EQ_OQ);
return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (),
- base,
- (__v4si)index,
- mask,
- scale);
+ __base,
+ (__v4si)__index,
+ __mask,
+ __scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i32gather_pd (__m256d src, double const *base,
- __m128i index, __m256d mask, const int scale)
+_mm256_mask_i32gather_pd (__m256d __src, double const *__base,
+ __m128i __index, __m256d __mask, const int __scale)
{
- return (__m256d) __builtin_ia32_gathersiv4df ((__v4df)src,
- base,
- (__v4si)index,
- (__v4df)mask,
- scale);
+ return (__m256d) __builtin_ia32_gathersiv4df ((__v4df)__src,
+ __base,
+ (__v4si)__index,
+ (__v4df)__mask,
+ __scale);
}
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i64gather_pd (double const *base, __m128i index, const int scale)
+_mm_i64gather_pd (double const *__base, __m128i __index, const int __scale)
{
- __v2df src = _mm_setzero_pd ();
- __v2df mask = _mm_cmpeq_pd (src, src);
+ __v2df __src = _mm_setzero_pd ();
+ __v2df __mask = _mm_cmpeq_pd (__src, __src);
- return (__m128d) __builtin_ia32_gatherdiv2df (src,
- base,
- (__v2di)index,
- mask,
- scale);
+ return (__m128d) __builtin_ia32_gatherdiv2df (__src,
+ __base,
+ (__v2di)__index,
+ __mask,
+ __scale);
}
extern __inline __m128d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i64gather_pd (__m128d src, double const *base, __m128i index,
- __m128d mask, const int scale)
+_mm_mask_i64gather_pd (__m128d __src, double const *__base, __m128i __index,
+ __m128d __mask, const int __scale)
{
- return (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)src,
- base,
- (__v2di)index,
- (__v2df)mask,
- scale);
+ return (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)__src,
+ __base,
+ (__v2di)__index,
+ (__v2df)__mask,
+ __scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i64gather_pd (double const *base, __m256i index, const int scale)
+_mm256_i64gather_pd (double const *__base, __m256i __index, const int __scale)
{
- __v4df src = _mm256_setzero_pd ();
- __v4df mask = _mm256_cmp_pd (src, src, _CMP_EQ_OQ);
+ __v4df __src = _mm256_setzero_pd ();
+ __v4df __mask = _mm256_cmp_pd (__src, __src, _CMP_EQ_OQ);
- return (__m256d) __builtin_ia32_gatherdiv4df (src,
- base,
- (__v4di)index,
- mask,
- scale);
+ return (__m256d) __builtin_ia32_gatherdiv4df (__src,
+ __base,
+ (__v4di)__index,
+ __mask,
+ __scale);
}
extern __inline __m256d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i64gather_pd (__m256d src, double const *base,
- __m256i index, __m256d mask, const int scale)
+_mm256_mask_i64gather_pd (__m256d __src, double const *__base,
+ __m256i __index, __m256d __mask, const int __scale)
{
- return (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)src,
- base,
- (__v4di)index,
- (__v4df)mask,
- scale);
+ return (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)__src,
+ __base,
+ (__v4di)__index,
+ (__v4df)__mask,
+ __scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i32gather_ps (float const *base, __m128i index, const int scale)
+_mm_i32gather_ps (float const *__base, __m128i __index, const int __scale)
{
- __v4sf src = _mm_setzero_ps ();
- __v4sf mask = _mm_cmpeq_ps (src, src);
+ __v4sf __src = _mm_setzero_ps ();
+ __v4sf __mask = _mm_cmpeq_ps (__src, __src);
- return (__m128) __builtin_ia32_gathersiv4sf (src,
- base,
- (__v4si)index,
- mask,
- scale);
+ return (__m128) __builtin_ia32_gathersiv4sf (__src,
+ __base,
+ (__v4si)__index,
+ __mask,
+ __scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i32gather_ps (__m128 src, float const *base, __m128i index,
- __m128 mask, const int scale)
+_mm_mask_i32gather_ps (__m128 __src, float const *__base, __m128i __index,
+ __m128 __mask, const int __scale)
{
- return (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)src,
- base,
- (__v4si)index,
- (__v4sf)mask,
- scale);
+ return (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)__src,
+ __base,
+ (__v4si)__index,
+ (__v4sf)__mask,
+ __scale);
}
extern __inline __m256
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i32gather_ps (float const *base, __m256i index, const int scale)
+_mm256_i32gather_ps (float const *__base, __m256i __index, const int __scale)
{
- __v8sf src = _mm256_setzero_ps ();
- __v8sf mask = _mm256_cmp_ps (src, src, _CMP_EQ_OQ);
+ __v8sf __src = _mm256_setzero_ps ();
+ __v8sf __mask = _mm256_cmp_ps (__src, __src, _CMP_EQ_OQ);
- return (__m256) __builtin_ia32_gathersiv8sf (src,
- base,
- (__v8si)index,
- mask,
- scale);
+ return (__m256) __builtin_ia32_gathersiv8sf (__src,
+ __base,
+ (__v8si)__index,
+ __mask,
+ __scale);
}
extern __inline __m256
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i32gather_ps (__m256 src, float const *base,
- __m256i index, __m256 mask, const int scale)
+_mm256_mask_i32gather_ps (__m256 __src, float const *__base,
+ __m256i __index, __m256 __mask, const int __scale)
{
- return (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)src,
- base,
- (__v8si)index,
- (__v8sf)mask,
- scale);
+ return (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)__src,
+ __base,
+ (__v8si)__index,
+ (__v8sf)__mask,
+ __scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i64gather_ps (float const *base, __m128i index, const int scale)
+_mm_i64gather_ps (float const *__base, __m128i __index, const int __scale)
{
- __v4sf src = _mm_setzero_ps ();
- __v4sf mask = _mm_cmpeq_ps (src, src);
+ __v4sf __src = _mm_setzero_ps ();
+ __v4sf __mask = _mm_cmpeq_ps (__src, __src);
- return (__m128) __builtin_ia32_gatherdiv4sf (src,
- base,
- (__v2di)index,
- mask,
- scale);
+ return (__m128) __builtin_ia32_gatherdiv4sf (__src,
+ __base,
+ (__v2di)__index,
+ __mask,
+ __scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i64gather_ps (__m128 src, float const *base, __m128i index,
- __m128 mask, const int scale)
+_mm_mask_i64gather_ps (__m128 __src, float const *__base, __m128i __index,
+ __m128 __mask, const int __scale)
{
- return (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)src,
- base,
- (__v2di)index,
- (__v4sf)mask,
- scale);
+ return (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)__src,
+ __base,
+ (__v2di)__index,
+ (__v4sf)__mask,
+ __scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i64gather_ps (float const *base, __m256i index, const int scale)
+_mm256_i64gather_ps (float const *__base, __m256i __index, const int __scale)
{
- __v4sf src = _mm_setzero_ps ();
- __v4sf mask = _mm_cmpeq_ps (src, src);
+ __v4sf __src = _mm_setzero_ps ();
+ __v4sf __mask = _mm_cmpeq_ps (__src, __src);
- return (__m128) __builtin_ia32_gatherdiv4sf256 (src,
- base,
- (__v4di)index,
- mask,
- scale);
+ return (__m128) __builtin_ia32_gatherdiv4sf256 (__src,
+ __base,
+ (__v4di)__index,
+ __mask,
+ __scale);
}
extern __inline __m128
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i64gather_ps (__m128 src, float const *base,
- __m256i index, __m128 mask, const int scale)
+_mm256_mask_i64gather_ps (__m128 __src, float const *__base,
+ __m256i __index, __m128 __mask, const int __scale)
{
- return (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)src,
- base,
- (__v4di)index,
- (__v4sf)mask,
- scale);
+ return (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)__src,
+ __base,
+ (__v4di)__index,
+ (__v4sf)__mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i32gather_epi64 (long long int const *base,
- __m128i index, const int scale)
+_mm_i32gather_epi64 (long long int const *__base,
+ __m128i __index, const int __scale)
{
- __v2di src = __extension__ (__v2di){ 0, 0 };
- __v2di mask = __extension__ (__v2di){ ~0, ~0 };
+ __v2di __src = __extension__ (__v2di){ 0, 0 };
+ __v2di __mask = __extension__ (__v2di){ ~0, ~0 };
- return (__m128i) __builtin_ia32_gathersiv2di (src,
- base,
- (__v4si)index,
- mask,
- scale);
+ return (__m128i) __builtin_ia32_gathersiv2di (__src,
+ __base,
+ (__v4si)__index,
+ __mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i32gather_epi64 (__m128i src, long long int const *base,
- __m128i index, __m128i mask, const int scale)
+_mm_mask_i32gather_epi64 (__m128i __src, long long int const *__base,
+ __m128i __index, __m128i __mask, const int __scale)
{
- return (__m128i) __builtin_ia32_gathersiv2di ((__v2di)src,
- base,
- (__v4si)index,
- (__v2di)mask,
- scale);
+ return (__m128i) __builtin_ia32_gathersiv2di ((__v2di)__src,
+ __base,
+ (__v4si)__index,
+ (__v2di)__mask,
+ __scale);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i32gather_epi64 (long long int const *base,
- __m128i index, const int scale)
+_mm256_i32gather_epi64 (long long int const *__base,
+ __m128i __index, const int __scale)
{
- __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
- __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
+ __v4di __src = __extension__ (__v4di){ 0, 0, 0, 0 };
+ __v4di __mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
- return (__m256i) __builtin_ia32_gathersiv4di (src,
- base,
- (__v4si)index,
- mask,
- scale);
+ return (__m256i) __builtin_ia32_gathersiv4di (__src,
+ __base,
+ (__v4si)__index,
+ __mask,
+ __scale);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i32gather_epi64 (__m256i src, long long int const *base,
- __m128i index, __m256i mask, const int scale)
+_mm256_mask_i32gather_epi64 (__m256i __src, long long int const *__base,
+ __m128i __index, __m256i __mask,
+ const int __scale)
{
- return (__m256i) __builtin_ia32_gathersiv4di ((__v4di)src,
- base,
- (__v4si)index,
- (__v4di)mask,
- scale);
+ return (__m256i) __builtin_ia32_gathersiv4di ((__v4di)__src,
+ __base,
+ (__v4si)__index,
+ (__v4di)__mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i64gather_epi64 (long long int const *base,
- __m128i index, const int scale)
+_mm_i64gather_epi64 (long long int const *__base,
+ __m128i __index, const int __scale)
{
- __v2di src = __extension__ (__v2di){ 0, 0 };
- __v2di mask = __extension__ (__v2di){ ~0, ~0 };
+ __v2di __src = __extension__ (__v2di){ 0, 0 };
+ __v2di __mask = __extension__ (__v2di){ ~0, ~0 };
- return (__m128i) __builtin_ia32_gatherdiv2di (src,
- base,
- (__v2di)index,
- mask,
- scale);
+ return (__m128i) __builtin_ia32_gatherdiv2di (__src,
+ __base,
+ (__v2di)__index,
+ __mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i64gather_epi64 (__m128i src, long long int const *base, __m128i index,
- __m128i mask, const int scale)
+_mm_mask_i64gather_epi64 (__m128i __src, long long int const *__base,
+ __m128i __index, __m128i __mask, const int __scale)
{
- return (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)src,
- base,
- (__v2di)index,
- (__v2di)mask,
- scale);
+ return (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)__src,
+ __base,
+ (__v2di)__index,
+ (__v2di)__mask,
+ __scale);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i64gather_epi64 (long long int const *base,
- __m256i index, const int scale)
+_mm256_i64gather_epi64 (long long int const *__base,
+ __m256i __index, const int __scale)
{
- __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
- __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
+ __v4di __src = __extension__ (__v4di){ 0, 0, 0, 0 };
+ __v4di __mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
- return (__m256i) __builtin_ia32_gatherdiv4di (src,
- base,
- (__v4di)index,
- mask,
- scale);
+ return (__m256i) __builtin_ia32_gatherdiv4di (__src,
+ __base,
+ (__v4di)__index,
+ __mask,
+ __scale);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i64gather_epi64 (__m256i src, long long int const *base,
- __m256i index, __m256i mask, const int scale)
+_mm256_mask_i64gather_epi64 (__m256i __src, long long int const *__base,
+ __m256i __index, __m256i __mask,
+ const int __scale)
{
- return (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)src,
- base,
- (__v4di)index,
- (__v4di)mask,
- scale);
+ return (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)__src,
+ __base,
+ (__v4di)__index,
+ (__v4di)__mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i32gather_epi32 (int const *base, __m128i index, const int scale)
+_mm_i32gather_epi32 (int const *__base, __m128i __index, const int __scale)
{
- __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
- __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
+ __v4si __src = __extension__ (__v4si){ 0, 0, 0, 0 };
+ __v4si __mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
- return (__m128i) __builtin_ia32_gathersiv4si (src,
- base,
- (__v4si)index,
- mask,
- scale);
+ return (__m128i) __builtin_ia32_gathersiv4si (__src,
+ __base,
+ (__v4si)__index,
+ __mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i32gather_epi32 (__m128i src, int const *base, __m128i index,
- __m128i mask, const int scale)
+_mm_mask_i32gather_epi32 (__m128i __src, int const *__base, __m128i __index,
+ __m128i __mask, const int __scale)
{
- return (__m128i) __builtin_ia32_gathersiv4si ((__v4si)src,
- base,
- (__v4si)index,
- (__v4si)mask,
- scale);
+ return (__m128i) __builtin_ia32_gathersiv4si ((__v4si)__src,
+ __base,
+ (__v4si)__index,
+ (__v4si)__mask,
+ __scale);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i32gather_epi32 (int const *base, __m256i index, const int scale)
+_mm256_i32gather_epi32 (int const *__base, __m256i __index, const int __scale)
{
- __v8si src = __extension__ (__v8si){ 0, 0, 0, 0, 0, 0, 0, 0 };
- __v8si mask = __extension__ (__v8si){ ~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0 };
+ __v8si __src = __extension__ (__v8si){ 0, 0, 0, 0, 0, 0, 0, 0 };
+ __v8si __mask = __extension__ (__v8si){ ~0, ~0, ~0, ~0, ~0, ~0, ~0, ~0 };
- return (__m256i) __builtin_ia32_gathersiv8si (src,
- base,
- (__v8si)index,
- mask,
- scale);
+ return (__m256i) __builtin_ia32_gathersiv8si (__src,
+ __base,
+ (__v8si)__index,
+ __mask,
+ __scale);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i32gather_epi32 (__m256i src, int const *base,
- __m256i index, __m256i mask, const int scale)
+_mm256_mask_i32gather_epi32 (__m256i __src, int const *__base,
+ __m256i __index, __m256i __mask,
+ const int __scale)
{
- return (__m256i) __builtin_ia32_gathersiv8si ((__v8si)src,
- base,
- (__v8si)index,
- (__v8si)mask,
- scale);
+ return (__m256i) __builtin_ia32_gathersiv8si ((__v8si)__src,
+ __base,
+ (__v8si)__index,
+ (__v8si)__mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i64gather_epi32 (int const *base, __m128i index, const int scale)
+_mm_i64gather_epi32 (int const *__base, __m128i __index, const int __scale)
{
- __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
- __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
+ __v4si __src = __extension__ (__v4si){ 0, 0, 0, 0 };
+ __v4si __mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
- return (__m128i) __builtin_ia32_gatherdiv4si (src,
- base,
- (__v2di)index,
- mask,
- scale);
+ return (__m128i) __builtin_ia32_gatherdiv4si (__src,
+ __base,
+ (__v2di)__index,
+ __mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i64gather_epi32 (__m128i src, int const *base, __m128i index,
- __m128i mask, const int scale)
+_mm_mask_i64gather_epi32 (__m128i __src, int const *__base, __m128i __index,
+ __m128i __mask, const int __scale)
{
- return (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)src,
- base,
- (__v2di)index,
- (__v4si)mask,
- scale);
+ return (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)__src,
+ __base,
+ (__v2di)__index,
+ (__v4si)__mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i64gather_epi32 (int const *base, __m256i index, const int scale)
+_mm256_i64gather_epi32 (int const *__base, __m256i __index, const int __scale)
{
- __v4si src = __extension__ (__v4si){ 0, 0, 0, 0 };
- __v4si mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
+ __v4si __src = __extension__ (__v4si){ 0, 0, 0, 0 };
+ __v4si __mask = __extension__ (__v4si){ ~0, ~0, ~0, ~0 };
- return (__m128i) __builtin_ia32_gatherdiv4si256 (src,
- base,
- (__v4di)index,
- mask,
- scale);
+ return (__m128i) __builtin_ia32_gatherdiv4si256 (__src,
+ __base,
+ (__v4di)__index,
+ __mask,
+ __scale);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i64gather_epi32 (__m128i src, int const *base,
- __m256i index, __m128i mask, const int scale)
+_mm256_mask_i64gather_epi32 (__m128i __src, int const *__base,
+ __m256i __index, __m128i __mask,
+ const int __scale)
{
- return (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)src,
- base,
- (__v4di)index,
- (__v4si)mask,
- scale);
+ return (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)__src,
+ __base,
+ (__v4di)__index,
+ (__v4si)__mask,
+ __scale);
}
#else /* __OPTIMIZE__ */
#define _mm_i32gather_pd(BASE, INDEX, SCALE) \
diff --git a/gcc/config/i386/avx512fintrin.h b/gcc/config/i386/avx512fintrin.h
index f89330b55c9..f9a11ffe2bd 100644
--- a/gcc/config/i386/avx512fintrin.h
+++ b/gcc/config/i386/avx512fintrin.h
@@ -1438,66 +1438,68 @@ _mm_sub_round_ss (__m128 __A, __m128 __B, const int __R)
#ifdef __OPTIMIZE__
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C, const int imm)
+_mm512_ternarylogic_epi64 (__m512i __A, __m512i __B, __m512i __C,
+ const int __imm)
{
return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
(__v8di) __B,
- (__v8di) __C, imm,
+ (__v8di) __C, __imm,
(__mmask8) -1);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_ternarylogic_epi64 (__m512i __A, __mmask8 __U, __m512i __B,
- __m512i __C, const int imm)
+ __m512i __C, const int __imm)
{
return (__m512i) __builtin_ia32_pternlogq512_mask ((__v8di) __A,
(__v8di) __B,
- (__v8di) __C, imm,
+ (__v8di) __C, __imm,
(__mmask8) __U);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_ternarylogic_epi64 (__mmask8 __U, __m512i __A, __m512i __B,
- __m512i __C, const int imm)
+ __m512i __C, const int __imm)
{
return (__m512i) __builtin_ia32_pternlogq512_maskz ((__v8di) __A,
(__v8di) __B,
(__v8di) __C,
- imm, (__mmask8) __U);
+ __imm, (__mmask8) __U);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C, const int imm)
+_mm512_ternarylogic_epi32 (__m512i __A, __m512i __B, __m512i __C,
+ const int __imm)
{
return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si) __C,
- imm, (__mmask16) -1);
+ __imm, (__mmask16) -1);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_mask_ternarylogic_epi32 (__m512i __A, __mmask16 __U, __m512i __B,
- __m512i __C, const int imm)
+ __m512i __C, const int __imm)
{
return (__m512i) __builtin_ia32_pternlogd512_mask ((__v16si) __A,
(__v16si) __B,
(__v16si) __C,
- imm, (__mmask16) __U);
+ __imm, (__mmask16) __U);
}
extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_maskz_ternarylogic_epi32 (__mmask16 __U, __m512i __A, __m512i __B,
- __m512i __C, const int imm)
+ __m512i __C, const int __imm)
{
return (__m512i) __builtin_ia32_pternlogd512_maskz ((__v16si) __A,
(__v16si) __B,
(__v16si) __C,
- imm, (__mmask16) __U);
+ __imm, (__mmask16) __U);
}
#else
#define _mm512_ternarylogic_epi64(A, B, C, I) \
@@ -9211,21 +9213,21 @@ extern __inline __m512
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i32gather_ps (__m512i __index, void const *__addr, int __scale)
{
- __m512 v1_old = _mm512_undefined_ps ();
- __mmask16 mask = 0xFFFF;
+ __m512 __v1_old = _mm512_undefined_ps ();
+ __mmask16 __mask = 0xFFFF;
- return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
+ return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
__addr,
(__v16si) __index,
- mask, __scale);
+ __mask, __scale);
}
extern __inline __m512
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_i32gather_ps (__m512 v1_old, __mmask16 __mask,
+_mm512_mask_i32gather_ps (__m512 __v1_old, __mmask16 __mask,
__m512i __index, void const *__addr, int __scale)
{
- return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old,
+ return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,
__addr,
(__v16si) __index,
__mask, __scale);
@@ -9235,12 +9237,12 @@ extern __inline __m512d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i32gather_pd (__m256i __index, void const *__addr, int __scale)
{
- __m512d v1_old = _mm512_undefined_pd ();
- __mmask8 mask = 0xFF;
+ __m512d __v1_old = _mm512_undefined_pd ();
+ __mmask8 __mask = 0xFF;
- return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) v1_old,
+ return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) __v1_old,
__addr,
- (__v8si) __index, mask,
+ (__v8si) __index, __mask,
__scale);
}
@@ -9259,12 +9261,12 @@ extern __inline __m256
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i64gather_ps (__m512i __index, void const *__addr, int __scale)
{
- __m256 v1_old = _mm256_undefined_ps ();
- __mmask8 mask = 0xFF;
+ __m256 __v1_old = _mm256_undefined_ps ();
+ __mmask8 __mask = 0xFF;
- return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) v1_old,
+ return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,
__addr,
- (__v8di) __index, mask,
+ (__v8di) __index, __mask,
__scale);
}
@@ -9283,12 +9285,12 @@ extern __inline __m512d
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i64gather_pd (__m512i __index, void const *__addr, int __scale)
{
- __m512d v1_old = _mm512_undefined_pd ();
- __mmask8 mask = 0xFF;
+ __m512d __v1_old = _mm512_undefined_pd ();
+ __mmask8 __mask = 0xFF;
- return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) v1_old,
+ return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) __v1_old,
__addr,
- (__v8di) __index, mask,
+ (__v8di) __index, __mask,
__scale);
}
@@ -9307,13 +9309,13 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i32gather_epi32 (__m512i __index, void const *__addr, int __scale)
{
- __m512i v1_old = _mm512_undefined_epi32 ();
- __mmask16 mask = 0xFFFF;
+ __m512i __v1_old = _mm512_undefined_epi32 ();
+ __mmask16 __mask = 0xFFFF;
- return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) v1_old,
+ return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) __v1_old,
__addr,
(__v16si) __index,
- mask, __scale);
+ __mask, __scale);
}
extern __inline __m512i
@@ -9331,12 +9333,12 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i32gather_epi64 (__m256i __index, void const *__addr, int __scale)
{
- __m512i v1_old = _mm512_undefined_epi32 ();
- __mmask8 mask = 0xFF;
+ __m512i __v1_old = _mm512_undefined_epi32 ();
+ __mmask8 __mask = 0xFF;
- return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) v1_old,
+ return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) __v1_old,
__addr,
- (__v8si) __index, mask,
+ (__v8si) __index, __mask,
__scale);
}
@@ -9356,13 +9358,13 @@ extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i64gather_epi32 (__m512i __index, void const *__addr, int __scale)
{
- __m256i v1_old = _mm256_undefined_si256 ();
- __mmask8 mask = 0xFF;
+ __m256i __v1_old = _mm256_undefined_si256 ();
+ __mmask8 __mask = 0xFF;
- return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) v1_old,
+ return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) __v1_old,
__addr,
(__v8di) __index,
- mask, __scale);
+ __mask, __scale);
}
extern __inline __m256i
@@ -9380,12 +9382,12 @@ extern __inline __m512i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm512_i64gather_epi64 (__m512i __index, void const *__addr, int __scale)
{
- __m512i v1_old = _mm512_undefined_epi32 ();
- __mmask8 mask = 0xFF;
+ __m512i __v1_old = _mm512_undefined_epi32 ();
+ __mmask8 __mask = 0xFF;
- return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) v1_old,
+ return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) __v1_old,
__addr,
- (__v8di) __index, mask,
+ (__v8di) __index, __mask,
__scale);
}
diff --git a/gcc/config/i386/avx512pfintrin.h b/gcc/config/i386/avx512pfintrin.h
index 3162fefc220..4424b6e2cc3 100644
--- a/gcc/config/i386/avx512pfintrin.h
+++ b/gcc/config/i386/avx512pfintrin.h
@@ -48,102 +48,110 @@ typedef unsigned short __mmask16;
#ifdef __OPTIMIZE__
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i32gather_pd (__m256i index, __mmask8 mask,
- void const *addr, int scale, int hint)
+_mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask,
+ void const *__addr, int __scale, int __hint)
{
- __builtin_ia32_gatherpfdpd (mask, (__v8si) index, addr, scale, hint);
+ __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask,
- void const *addr, int scale, int hint)
+_mm512_mask_prefetch_i32gather_ps (__m512i __index, __mmask16 __mask,
+ void const *__addr, int __scale, int __hint)
{
- __builtin_ia32_gatherpfdps (mask, (__v16si) index, addr, scale, hint);
+ __builtin_ia32_gatherpfdps (__mask, (__v16si) __index, __addr,
+ __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i64gather_pd (__m512i index, __mmask8 mask,
- void const *addr, int scale, int hint)
+_mm512_mask_prefetch_i64gather_pd (__m512i __index, __mmask8 __mask,
+ void const *__addr, int __scale, int __hint)
{
- __builtin_ia32_gatherpfqpd (mask, (__v8di) index, addr, scale, hint);
+ __builtin_ia32_gatherpfqpd (__mask, (__v8di) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i64gather_ps (__m512i index, __mmask8 mask,
- void const *addr, int scale, int hint)
+_mm512_mask_prefetch_i64gather_ps (__m512i __index, __mmask8 __mask,
+ void const *__addr, int __scale, int __hint)
{
- __builtin_ia32_gatherpfqps (mask, (__v8di) index, addr, scale, hint);
+ __builtin_ia32_gatherpfqps (__mask, (__v8di) __index, __addr,
+ __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_prefetch_i32scatter_pd (void *addr, __m256i index, int scale,
- int hint)
+_mm512_prefetch_i32scatter_pd (void *__addr, __m256i __index, int __scale,
+ int __hint)
{
- __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) index, addr, scale,
- hint);
+ __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_prefetch_i32scatter_ps (void *addr, __m512i index, int scale,
- int hint)
+_mm512_prefetch_i32scatter_ps (void *__addr, __m512i __index, int __scale,
+ int __hint)
{
- __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, addr, scale,
- hint);
+ __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i32scatter_pd (void *addr, __mmask8 mask,
- __m256i index, int scale, int hint)
+_mm512_mask_prefetch_i32scatter_pd (void *__addr, __mmask8 __mask,
+ __m256i __index, int __scale, int __hint)
{
- __builtin_ia32_scatterpfdpd (mask, (__v8si) index, addr, scale, hint);
+ __builtin_ia32_scatterpfdpd (__mask, (__v8si) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i32scatter_ps (void *addr, __mmask16 mask,
- __m512i index, int scale, int hint)
+_mm512_mask_prefetch_i32scatter_ps (void *__addr, __mmask16 __mask,
+ __m512i __index, int __scale, int __hint)
{
- __builtin_ia32_scatterpfdps (mask, (__v16si) index, addr, scale, hint);
+ __builtin_ia32_scatterpfdps (__mask, (__v16si) __index, __addr,
+ __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_prefetch_i64scatter_pd (void *addr, __m512i index, int scale,
- int hint)
+_mm512_prefetch_i64scatter_pd (void *__addr, __m512i __index, int __scale,
+ int __hint)
{
- __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) index, addr, scale,
- hint);
+ __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_prefetch_i64scatter_ps (void *addr, __m512i index, int scale,
- int hint)
+_mm512_prefetch_i64scatter_ps (void *__addr, __m512i __index, int __scale,
+ int __hint)
{
- __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, addr, scale,
- hint);
+ __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i64scatter_pd (void *addr, __mmask16 mask,
- __m512i index, int scale, int hint)
+_mm512_mask_prefetch_i64scatter_pd (void *__addr, __mmask16 __mask,
+ __m512i __index, int __scale, int __hint)
{
- __builtin_ia32_scatterpfqpd (mask, (__v8di) index, addr, scale, hint);
+ __builtin_ia32_scatterpfqpd (__mask, (__v8di) __index,
+ __addr, __scale, __hint);
}
extern __inline void
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm512_mask_prefetch_i64scatter_ps (void *addr, __mmask16 mask,
- __m512i index, int scale, int hint)
+_mm512_mask_prefetch_i64scatter_ps (void *__addr, __mmask16 __mask,
+ __m512i __index, int __scale, int __hint)
{
- __builtin_ia32_scatterpfqps (mask, (__v8di) index, addr, scale, hint);
+ __builtin_ia32_scatterpfqps (__mask, (__v8di) __index, __addr,
+ __scale, __hint);
}
#else
diff --git a/gcc/config/i386/avx512vlintrin.h b/gcc/config/i386/avx512vlintrin.h
index 97eceef330f..e18dc9a4208 100644
--- a/gcc/config/i386/avx512vlintrin.h
+++ b/gcc/config/i386/avx512vlintrin.h
@@ -10372,11 +10372,11 @@ _mm_maskz_srli_epi64 (__mmask8 __U, __m128i __A, const int __imm)
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_ternarylogic_epi64 (__m256i __A, __m256i __B, __m256i __C,
- const int imm)
+ const int __imm)
{
return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
(__v4di) __B,
- (__v4di) __C, imm,
+ (__v4di) __C, __imm,
(__mmask8) -1);
}
@@ -10384,11 +10384,11 @@ extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_ternarylogic_epi64 (__m256i __A, __mmask8 __U,
__m256i __B, __m256i __C,
- const int imm)
+ const int __imm)
{
return (__m256i) __builtin_ia32_pternlogq256_mask ((__v4di) __A,
(__v4di) __B,
- (__v4di) __C, imm,
+ (__v4di) __C, __imm,
(__mmask8) __U);
}
@@ -10396,23 +10396,23 @@ extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_ternarylogic_epi64 (__mmask8 __U, __m256i __A,
__m256i __B, __m256i __C,
- const int imm)
+ const int __imm)
{
return (__m256i) __builtin_ia32_pternlogq256_maskz ((__v4di) __A,
(__v4di) __B,
(__v4di) __C,
- imm,
+ __imm,
(__mmask8) __U);
}
extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_ternarylogic_epi32 (__m256i __A, __m256i __B, __m256i __C,
- const int imm)
+ const int __imm)
{
return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
(__v8si) __B,
- (__v8si) __C, imm,
+ (__v8si) __C, __imm,
(__mmask8) -1);
}
@@ -10420,11 +10420,11 @@ extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_ternarylogic_epi32 (__m256i __A, __mmask8 __U,
__m256i __B, __m256i __C,
- const int imm)
+ const int __imm)
{
return (__m256i) __builtin_ia32_pternlogd256_mask ((__v8si) __A,
(__v8si) __B,
- (__v8si) __C, imm,
+ (__v8si) __C, __imm,
(__mmask8) __U);
}
@@ -10432,80 +10432,80 @@ extern __inline __m256i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_ternarylogic_epi32 (__mmask8 __U, __m256i __A,
__m256i __B, __m256i __C,
- const int imm)
+ const int __imm)
{
return (__m256i) __builtin_ia32_pternlogd256_maskz ((__v8si) __A,
(__v8si) __B,
(__v8si) __C,
- imm,
+ __imm,
(__mmask8) __U);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_ternarylogic_epi64 (__m128i __A, __m128i __B, __m128i __C,
- const int imm)
+ const int __imm)
{
return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
(__v2di) __B,
- (__v2di) __C, imm,
+ (__v2di) __C, __imm,
(__mmask8) -1);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_ternarylogic_epi64 (__m128i __A, __mmask8 __U,
- __m128i __B, __m128i __C, const int imm)
+ __m128i __B, __m128i __C, const int __imm)
{
return (__m128i) __builtin_ia32_pternlogq128_mask ((__v2di) __A,
(__v2di) __B,
- (__v2di) __C, imm,
+ (__v2di) __C, __imm,
(__mmask8) __U);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_ternarylogic_epi64 (__mmask8 __U, __m128i __A,
- __m128i __B, __m128i __C, const int imm)
+ __m128i __B, __m128i __C, const int __imm)
{
return (__m128i) __builtin_ia32_pternlogq128_maskz ((__v2di) __A,
(__v2di) __B,
(__v2di) __C,
- imm,
+ __imm,
(__mmask8) __U);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_ternarylogic_epi32 (__m128i __A, __m128i __B, __m128i __C,
- const int imm)
+ const int __imm)
{
return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
(__v4si) __B,
- (__v4si) __C, imm,
+ (__v4si) __C, __imm,
(__mmask8) -1);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_ternarylogic_epi32 (__m128i __A, __mmask8 __U,
- __m128i __B, __m128i __C, const int imm)
+ __m128i __B, __m128i __C, const int __imm)
{
return (__m128i) __builtin_ia32_pternlogd128_mask ((__v4si) __A,
(__v4si) __B,
- (__v4si) __C, imm,
+ (__v4si) __C, __imm,
(__mmask8) __U);
}
extern __inline __m128i
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_ternarylogic_epi32 (__mmask8 __U, __m128i __A,
- __m128i __B, __m128i __C, const int imm)
+ __m128i __B, __m128i __C, const int __imm)
{
return (__m128i) __builtin_ia32_pternlogd128_maskz ((__v4si) __A,
(__v4si) __B,
(__v4si) __C,
- imm,
+ __imm,
(__mmask8) __U);
}
diff --git a/gcc/config/i386/gmm_malloc.h b/gcc/config/i386/gmm_malloc.h
index 0582e0c444e..1f36a681fce 100644
--- a/gcc/config/i386/gmm_malloc.h
+++ b/gcc/config/i386/gmm_malloc.h
@@ -27,48 +27,48 @@
#include <stdlib.h>
#include <errno.h>
-static __inline__ void*
-_mm_malloc (size_t size, size_t align)
+static __inline__ void *
+_mm_malloc (size_t __size, size_t __align)
{
- void * malloc_ptr;
- void * aligned_ptr;
+ void * __malloc_ptr;
+ void * __aligned_ptr;
/* Error if align is not a power of two. */
- if (align & (align - 1))
+ if (__align & (__align - 1))
{
errno = EINVAL;
- return ((void*) 0);
+ return ((void *) 0);
}
- if (size == 0)
+ if (__size == 0)
return ((void *) 0);
/* Assume malloc'd pointer is aligned at least to sizeof (void*).
If necessary, add another sizeof (void*) to store the value
returned by malloc. Effectively this enforces a minimum alignment
of sizeof double. */
- if (align < 2 * sizeof (void *))
- align = 2 * sizeof (void *);
+ if (__align < 2 * sizeof (void *))
+ __align = 2 * sizeof (void *);
- malloc_ptr = malloc (size + align);
- if (!malloc_ptr)
+ __malloc_ptr = malloc (__size + __align);
+ if (!__malloc_ptr)
return ((void *) 0);
/* Align We have at least sizeof (void *) space below malloc'd ptr. */
- aligned_ptr = (void *) (((size_t) malloc_ptr + align)
- & ~((size_t) (align) - 1));
+ __aligned_ptr = (void *) (((size_t) __malloc_ptr + __align)
+ & ~((size_t) (__align) - 1));
/* Store the original pointer just before p. */
- ((void **) aligned_ptr) [-1] = malloc_ptr;
+ ((void **) __aligned_ptr)[-1] = __malloc_ptr;
- return aligned_ptr;
+ return __aligned_ptr;
}
static __inline__ void
-_mm_free (void * aligned_ptr)
+_mm_free (void *__aligned_ptr)
{
- if (aligned_ptr)
- free (((void **) aligned_ptr) [-1]);
+ if (__aligned_ptr)
+ free (((void **) __aligned_ptr)[-1]);
}
#endif /* _MM_MALLOC_H_INCLUDED */
diff --git a/gcc/config/i386/ia32intrin.h b/gcc/config/i386/ia32intrin.h
index 650c93820a1..cbb9e7d57a5 100644
--- a/gcc/config/i386/ia32intrin.h
+++ b/gcc/config/i386/ia32intrin.h
@@ -261,9 +261,9 @@ __readeflags (void)
/* Write flags register */
extern __inline void
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__writeeflags (unsigned long long X)
+__writeeflags (unsigned long long __X)
{
- __builtin_ia32_writeeflags_u64 (X);
+ __builtin_ia32_writeeflags_u64 (__X);
}
#define _bswap64(a) __bswapq(a)
@@ -281,9 +281,9 @@ __readeflags (void)
/* Write flags register */
extern __inline void
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__writeeflags (unsigned int X)
+__writeeflags (unsigned int __X)
{
- __builtin_ia32_writeeflags_u32 (X);
+ __builtin_ia32_writeeflags_u32 (__X);
}
#endif
diff --git a/gcc/config/i386/lwpintrin.h b/gcc/config/i386/lwpintrin.h
index 1ffac23e1d2..55d431a424d 100644
--- a/gcc/config/i386/lwpintrin.h
+++ b/gcc/config/i386/lwpintrin.h
@@ -35,9 +35,9 @@
#endif /* __LWP__ */
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__llwpcb (void *pcbAddress)
+__llwpcb (void *__pcbAddress)
{
- __builtin_ia32_llwpcb (pcbAddress);
+ __builtin_ia32_llwpcb (__pcbAddress);
}
extern __inline void * __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@@ -48,16 +48,17 @@ __slwpcb (void)
#ifdef __OPTIMIZE__
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__lwpval32 (unsigned int data2, unsigned int data1, unsigned int flags)
+__lwpval32 (unsigned int __data2, unsigned int __data1, unsigned int __flags)
{
- __builtin_ia32_lwpval32 (data2, data1, flags);
+ __builtin_ia32_lwpval32 (__data2, __data1, __flags);
}
#ifdef __x86_64__
extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__lwpval64 (unsigned long long data2, unsigned int data1, unsigned int flags)
+__lwpval64 (unsigned long long __data2, unsigned int __data1,
+ unsigned int __flags)
{
- __builtin_ia32_lwpval64 (data2, data1, flags);
+ __builtin_ia32_lwpval64 (__data2, __data1, __flags);
}
#endif
#else
@@ -74,16 +75,17 @@ __lwpval64 (unsigned long long data2, unsigned int data1, unsigned int flags)
#ifdef __OPTIMIZE__
extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__lwpins32 (unsigned int data2, unsigned int data1, unsigned int flags)
+__lwpins32 (unsigned int __data2, unsigned int __data1, unsigned int __flags)
{
- return __builtin_ia32_lwpins32 (data2, data1, flags);
+ return __builtin_ia32_lwpins32 (__data2, __data1, __flags);
}
#ifdef __x86_64__
extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-__lwpins64 (unsigned long long data2, unsigned int data1, unsigned int flags)
+__lwpins64 (unsigned long long __data2, unsigned int __data1,
+ unsigned int __flags)
{
- return __builtin_ia32_lwpins64 (data2, data1, flags);
+ return __builtin_ia32_lwpins64 (__data2, __data1, __flags);
}
#endif
#else
diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index 46b38fcd953..5122114c896 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -78,9 +78,9 @@
(define_insn "*mov<mode>_internal"
[(set (match_operand:MMXMODE 0 "nonimmediate_operand"
- "=r ,o ,r,r ,m ,?!y,!y,?!y,m ,r ,?!Ym,v,v,v,m,*x,*x,*x,m ,r ,Yi,!Ym,*Yi")
+ "=r ,o ,r,r ,m ,?!y,!y,?!y,m ,r ,?!Ym,v,v,v,m,r ,Yi,!Ym,*Yi")
(match_operand:MMXMODE 1 "vector_move_operand"
- "rCo,rC,C,rm,rC,C ,!y,m ,?!y,?!Yn,r ,C,v,m,v,C ,*x,m ,*x,Yj,r ,*Yj,!Yn"))]
+ "rCo,rC,C,rm,rC,C ,!y,m ,?!y,?!Yn,r ,C,v,m,v,Yj,r ,*Yj,!Yn"))]
"TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
{
@@ -146,7 +146,7 @@
[(set (attr "isa")
(cond [(eq_attr "alternative" "0,1")
(const_string "nox64")
- (eq_attr "alternative" "2,3,4,9,10,11,12,13,14,19,20")
+ (eq_attr "alternative" "2,3,4,9,10,15,16")
(const_string "x64")
]
(const_string "*")))
@@ -159,14 +159,14 @@
(const_string "mmx")
(eq_attr "alternative" "6,7,8,9,10")
(const_string "mmxmov")
- (eq_attr "alternative" "11,15")
+ (eq_attr "alternative" "11")
(const_string "sselog1")
- (eq_attr "alternative" "21,22")
+ (eq_attr "alternative" "17,18")
(const_string "ssecvt")
]
(const_string "ssemov")))
(set (attr "prefix_rex")
- (if_then_else (eq_attr "alternative" "9,10,19,20")
+ (if_then_else (eq_attr "alternative" "9,10,15,16")
(const_string "1")
(const_string "*")))
(set (attr "prefix")
@@ -181,7 +181,7 @@
(set (attr "mode")
(cond [(eq_attr "alternative" "2")
(const_string "SI")
- (eq_attr "alternative" "11,12,15,16")
+ (eq_attr "alternative" "11,12")
(cond [(ior (match_operand 0 "ext_sse_reg_operand")
(match_operand 1 "ext_sse_reg_operand"))
(const_string "XI")
@@ -197,7 +197,7 @@
]
(const_string "TI"))
- (and (eq_attr "alternative" "13,14,17,18")
+ (and (eq_attr "alternative" "13,14")
(ior (match_test "<MODE>mode == V2SFmode")
(not (match_test "TARGET_SSE2"))))
(const_string "V2SF")
diff --git a/gcc/config/i386/pkuintrin.h b/gcc/config/i386/pkuintrin.h
index 09fdcd1d3f3..4ad939ddf06 100644
--- a/gcc/config/i386/pkuintrin.h
+++ b/gcc/config/i386/pkuintrin.h
@@ -36,16 +36,16 @@
extern __inline unsigned int
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_rdpkru_u32(void)
+_rdpkru_u32 (void)
{
return __builtin_ia32_rdpkru ();
}
extern __inline void
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_wrpkru(unsigned int key)
+_wrpkru (unsigned int __key)
{
- return __builtin_ia32_wrpkru (key);
+ __builtin_ia32_wrpkru (__key);
}
#ifdef __DISABLE_PKU__
diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
index a1f98d3d105..a9c2be4e0c2 100644
--- a/gcc/config/i386/pmm_malloc.h
+++ b/gcc/config/i386/pmm_malloc.h
@@ -35,23 +35,23 @@ extern "C" int posix_memalign (void **, size_t, size_t) throw ();
#endif
static __inline void *
-_mm_malloc (size_t size, size_t alignment)
+_mm_malloc (size_t __size, size_t __alignment)
{
- void *ptr;
- if (alignment == 1)
- return malloc (size);
- if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
- alignment = sizeof (void *);
- if (posix_memalign (&ptr, alignment, size) == 0)
- return ptr;
+ void *__ptr;
+ if (__alignment == 1)
+ return malloc (__size);
+ if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
+ __alignment = sizeof (void *);
+ if (posix_memalign (&__ptr, __alignment, __size) == 0)
+ return __ptr;
else
return NULL;
}
static __inline void
-_mm_free (void * ptr)
+_mm_free (void *__ptr)
{
- free (ptr);
+ free (__ptr);
}
#endif /* _MM_MALLOC_H_INCLUDED */
diff --git a/gcc/config/i386/rdseedintrin.h b/gcc/config/i386/rdseedintrin.h
index 5af5eac4ad8..57b45155f1a 100644
--- a/gcc/config/i386/rdseedintrin.h
+++ b/gcc/config/i386/rdseedintrin.h
@@ -37,24 +37,24 @@
extern __inline int
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_rdseed16_step (unsigned short *p)
+_rdseed16_step (unsigned short *__p)
{
- return __builtin_ia32_rdseed_hi_step (p);
+ return __builtin_ia32_rdseed_hi_step (__p);
}
extern __inline int
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_rdseed32_step (unsigned int *p)
+_rdseed32_step (unsigned int *__p)
{
- return __builtin_ia32_rdseed_si_step (p);
+ return __builtin_ia32_rdseed_si_step (__p);
}
#ifdef __x86_64__
extern __inline int
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_rdseed64_step (unsigned long long *p)
+_rdseed64_step (unsigned long long *__p)
{
- return __builtin_ia32_rdseed_di_step (p);
+ return __builtin_ia32_rdseed_di_step (__p);
}
#endif
diff --git a/gcc/config/i386/rtmintrin.h b/gcc/config/i386/rtmintrin.h
index 14e29fc1556..df53041779f 100644
--- a/gcc/config/i386/rtmintrin.h
+++ b/gcc/config/i386/rtmintrin.h
@@ -68,9 +68,9 @@ _xend (void)
#ifdef __OPTIMIZE__
extern __inline void
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_xabort (const unsigned int imm)
+_xabort (const unsigned int __imm)
{
- __builtin_ia32_xabort (imm);
+ __builtin_ia32_xabort (__imm);
}
#else
#define _xabort(N) __builtin_ia32_xabort (N)
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 70a517c1fd2..23c2c969e79 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -13607,10 +13607,10 @@
;; movd instead of movq is required to handle broken assemblers.
(define_insn "vec_concatv2di"
[(set (match_operand:V2DI 0 "register_operand"
- "=Yr,*x,x ,Yi,x ,!x,x,x,x,x,x")
+ "=Yr,*x,x ,Yi,x ,x ,x,x,x,x,x")
(vec_concat:V2DI
(match_operand:DI 1 "nonimmediate_operand"
- " 0, 0,x ,r ,xm,*y,0,x,0,0,x")
+ " 0, 0,x ,r ,xm,?!*Yn,0,x,0,0,x")
(match_operand:DI 2 "vector_move_operand"
"*rm,rm,rm,C ,C ,C ,x,x,x,m,m")))]
"TARGET_SSE"
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 5fb1da78a34..cc4dfcf1ba5 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -3302,6 +3302,24 @@ pa_output_64bit_ior (rtx *operands)
static bool
pa_assemble_integer (rtx x, unsigned int size, int aligned_p)
{
+ bool result;
+ tree decl = NULL;
+
+ /* When we have a SYMBOL_REF with a SYMBOL_REF_DECL, we need to call
+ call assemble_external and set the SYMBOL_REF_DECL to NULL before
+ calling output_addr_const. Otherwise, it may call assemble_external
+ in the midst of outputing the assembler code for the SYMBOL_REF.
+ We restore the SYMBOL_REF_DECL after the output is done. */
+ if (GET_CODE (x) == SYMBOL_REF)
+ {
+ decl = SYMBOL_REF_DECL (x);
+ if (decl)
+ {
+ assemble_external (decl);
+ SET_SYMBOL_REF_DECL (x, NULL);
+ }
+ }
+
if (size == UNITS_PER_WORD
&& aligned_p
&& function_label_operand (x, VOIDmode))
@@ -3314,9 +3332,15 @@ pa_assemble_integer (rtx x, unsigned int size, int aligned_p)
output_addr_const (asm_out_file, x);
fputc ('\n', asm_out_file);
- return true;
+ result = true;
}
- return default_assemble_integer (x, size, aligned_p);
+ else
+ result = default_assemble_integer (x, size, aligned_p);
+
+ if (decl)
+ SET_SYMBOL_REF_DECL (x, decl);
+
+ return result;
}
/* Output an ascii string. */
@@ -9913,19 +9937,23 @@ pa_cannot_change_mode_class (machine_mode from, machine_mode to,
if (from == to)
return false;
+ if (GET_MODE_SIZE (from) == GET_MODE_SIZE (to))
+ return false;
+
+ /* Reject changes to/from modes with zero size. */
+ if (!GET_MODE_SIZE (from) || !GET_MODE_SIZE (to))
+ return true;
+
/* Reject changes to/from complex and vector modes. */
if (COMPLEX_MODE_P (from) || VECTOR_MODE_P (from)
|| COMPLEX_MODE_P (to) || VECTOR_MODE_P (to))
return true;
- if (GET_MODE_SIZE (from) == GET_MODE_SIZE (to))
- return false;
-
- /* There is no way to load QImode or HImode values directly from
- memory. SImode loads to the FP registers are not zero extended.
- On the 64-bit target, this conflicts with the definition of
- LOAD_EXTEND_OP. Thus, we can't allow changing between modes
- with different sizes in the floating-point registers. */
+ /* There is no way to load QImode or HImode values directly from memory
+ to a FP register. SImode loads to the FP registers are not zero
+ extended. On the 64-bit target, this conflicts with the definition
+ of LOAD_EXTEND_OP. Thus, we can't allow changing between modes with
+ different sizes in the floating-point registers. */
if (MAYBE_FP_REG_CLASS_P (rclass))
return true;
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 277a3cbe740..a47a48e7e2f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -5370,6 +5370,10 @@ rs6000_density_test (rs6000_cost_data *data)
/* Implement targetm.vectorize.init_cost. */
+/* For each vectorized loop, this var holds TRUE iff a non-memory vector
+ instruction is needed by the vectorization. */
+static bool rs6000_vect_nonmem;
+
static void *
rs6000_init_cost (struct loop *loop_info)
{
@@ -5378,6 +5382,7 @@ rs6000_init_cost (struct loop *loop_info)
data->cost[vect_prologue] = 0;
data->cost[vect_body] = 0;
data->cost[vect_epilogue] = 0;
+ rs6000_vect_nonmem = false;
return data;
}
@@ -5404,6 +5409,15 @@ rs6000_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
retval = (unsigned) (count * stmt_cost);
cost_data->cost[where] += retval;
+
+ /* Check whether we're doing something other than just a copy loop.
+ Not all such loops may be profitably vectorized; see
+ rs6000_finish_cost. */
+ if ((kind == vec_to_scalar || kind == vec_perm
+ || kind == vec_promote_demote || kind == vec_construct
+ || kind == scalar_to_vec)
+ || (where == vect_body && kind == vector_stmt))
+ rs6000_vect_nonmem = true;
}
return retval;
@@ -5420,6 +5434,20 @@ rs6000_finish_cost (void *data, unsigned *prologue_cost,
if (cost_data->loop_info)
rs6000_density_test (cost_data);
+ /* Don't vectorize minimum-vectorization-factor, simple copy loops
+ that require versioning for any reason. The vectorization is at
+ best a wash inside the loop, and the versioning checks make
+ profitability highly unlikely and potentially quite harmful. */
+ if (cost_data->loop_info)
+ {
+ loop_vec_info vec_info = loop_vec_info_for_loop (cost_data->loop_info);
+ if (!rs6000_vect_nonmem
+ && LOOP_VINFO_VECT_FACTOR (vec_info) == 2
+ && (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (vec_info)
+ || LOOP_REQUIRES_VERSIONING_FOR_ALIAS (vec_info)))
+ cost_data->cost[vect_body] += 10000;
+ }
+
*prologue_cost = cost_data->cost[vect_prologue];
*body_cost = cost_data->cost[vect_body];
*epilogue_cost = cost_data->cost[vect_epilogue];
@@ -16582,6 +16610,17 @@ altivec_init_builtins (void)
def_builtin ("__builtin_vsx_st_elemrev_v16qi",
void_ftype_v16qi_long_pvoid, VSX_BUILTIN_ST_ELEMREV_V16QI);
}
+ else
+ {
+ rs6000_builtin_decls[(int)VSX_BUILTIN_LD_ELEMREV_V8HI]
+ = rs6000_builtin_decls[(int)VSX_BUILTIN_LXVW4X_V8HI];
+ rs6000_builtin_decls[(int)VSX_BUILTIN_LD_ELEMREV_V16QI]
+ = rs6000_builtin_decls[(int)VSX_BUILTIN_LXVW4X_V16QI];
+ rs6000_builtin_decls[(int)VSX_BUILTIN_ST_ELEMREV_V8HI]
+ = rs6000_builtin_decls[(int)VSX_BUILTIN_STXVW4X_V8HI];
+ rs6000_builtin_decls[(int)VSX_BUILTIN_ST_ELEMREV_V16QI]
+ = rs6000_builtin_decls[(int)VSX_BUILTIN_STXVW4X_V16QI];
+ }
def_builtin ("__builtin_vec_vsx_ld", opaque_ftype_long_pcvoid,
VSX_BUILTIN_VEC_LD);
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index 2a843c5c262..dfa6dadc6a9 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -169,7 +169,7 @@ along with GCC; see the file COPYING3. If not see
#undef CPP_CPU64_DEFAULT_SPEC
#define CPP_CPU64_DEFAULT_SPEC ""
#undef ASM_CPU32_DEFAULT_SPEC
-#define ASM_CPU32_DEFAUILT_SPEC AS_SPARC32_FLAG AS_NIAGARA7_FLAG
+#define ASM_CPU32_DEFAULT_SPEC AS_SPARC32_FLAG AS_NIAGARA7_FLAG
#undef ASM_CPU64_DEFAULT_SPEC
#define ASM_CPU64_DEFAULT_SPEC AS_SPARC64_FLAG AS_NIAGARA7_FLAG
#endif
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 19ee7773648..28ce717cf80 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -1504,15 +1504,18 @@ sparc_option_override (void)
target_flags &= ~MASK_STACK_BIAS;
/* Supply a default value for align_functions. */
- if (align_functions == 0
- && (sparc_cpu == PROCESSOR_ULTRASPARC
+ if (align_functions == 0)
+ {
+ if (sparc_cpu == PROCESSOR_ULTRASPARC
|| sparc_cpu == PROCESSOR_ULTRASPARC3
|| sparc_cpu == PROCESSOR_NIAGARA
|| sparc_cpu == PROCESSOR_NIAGARA2
|| sparc_cpu == PROCESSOR_NIAGARA3
- || sparc_cpu == PROCESSOR_NIAGARA4
- || sparc_cpu == PROCESSOR_NIAGARA7))
- align_functions = 32;
+ || sparc_cpu == PROCESSOR_NIAGARA4)
+ align_functions = 32;
+ else if (sparc_cpu == PROCESSOR_NIAGARA7)
+ align_functions = 64;
+ }
/* Validate PCC_STRUCT_RETURN. */
if (flag_pcc_struct_return == DEFAULT_PCC_STRUCT_RETURN)
@@ -5754,6 +5757,9 @@ sparc_expand_epilogue (bool for_eh)
{
HOST_WIDE_INT size = sparc_frame_size;
+ if (cfun->calls_alloca)
+ emit_insn (gen_frame_blockage ());
+
if (sparc_n_global_fp_regs > 0)
emit_save_or_restore_global_fp_regs (sparc_frame_base_reg,
sparc_frame_base_offset
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index d91496ab6ab..288243d5391 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -1570,7 +1570,10 @@ do { \
and annulled branches insert 4 bubbles.
On Niagara-2 and Niagara-3, a not-taken branch costs 1 cycle whereas
- a taken branch costs 6 cycles. */
+ a taken branch costs 6 cycles.
+
+ The T4 Supplement specifies the branch latency at 2 cycles.
+ The M7 Supplement specifies the branch latency at 1 cycle. */
#define BRANCH_COST(speed_p, predictable_p) \
((sparc_cpu == PROCESSOR_V9 \
@@ -1583,7 +1586,11 @@ do { \
: ((sparc_cpu == PROCESSOR_NIAGARA2 \
|| sparc_cpu == PROCESSOR_NIAGARA3) \
? 5 \
- : 3))))
+ : (sparc_cpu == PROCESSOR_NIAGARA4 \
+ ? 2 \
+ : (sparc_cpu == PROCESSOR_NIAGARA7 \
+ ? 1 \
+ : 3))))))
/* Control the assembler format that we output. */
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 7c8ea8c7d5f..cae6547bab7 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -331,7 +331,8 @@
(const_int 2)
(const_int 1))
(eq_attr "type" "sibcall")
- (if_then_else (eq_attr "leaf_function" "true")
+ (if_then_else (ior (eq_attr "leaf_function" "true")
+ (eq_attr "flat" "true"))
(if_then_else (eq_attr "empty_delay_slot" "true")
(const_int 3)
(const_int 2))
@@ -6427,7 +6428,10 @@
(define_expand "return"
[(return)]
"sparc_can_use_return_insn_p ()"
- "")
+{
+ if (cfun->calls_alloca)
+ emit_insn (gen_frame_blockage ());
+})
(define_insn "*return_internal"
[(return)]
diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h
index f2ca526aa17..873557f03f6 100644
--- a/gcc/config/xtensa/xtensa-protos.h
+++ b/gcc/config/xtensa/xtensa-protos.h
@@ -68,6 +68,7 @@ extern rtx xtensa_return_addr (int, rtx);
extern void xtensa_setup_frame_addresses (void);
extern int xtensa_dbx_register_number (int);
extern long compute_frame_size (int);
+extern bool xtensa_use_return_instruction_p (void);
extern void xtensa_expand_prologue (void);
extern void xtensa_expand_epilogue (void);
extern void order_regs_for_local_alloc (void);
diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
index 64d089bdfb0..2bdf5ccef97 100644
--- a/gcc/config/xtensa/xtensa.c
+++ b/gcc/config/xtensa/xtensa.c
@@ -78,11 +78,6 @@ enum internal_test
can support a given mode. */
char xtensa_hard_regno_mode_ok[(int) MAX_MACHINE_MODE][FIRST_PSEUDO_REGISTER];
-/* Current frame size calculated by compute_frame_size. */
-unsigned xtensa_current_frame_size;
-/* Callee-save area size in the current frame calculated by compute_frame_size. */
-int xtensa_callee_save_size;
-
/* Largest block move to handle in-line. */
#define LARGEST_MOVE_RATIO 15
@@ -94,6 +89,13 @@ struct GTY(()) machine_function
bool vararg_a7;
rtx vararg_a7_copy;
rtx_insn *set_frame_ptr_insn;
+ /* Current frame size calculated by compute_frame_size. */
+ unsigned current_frame_size;
+ /* Callee-save area size in the current frame calculated by
+ compute_frame_size. */
+ int callee_save_size;
+ bool frame_laid_out;
+ bool epilogue_done;
};
/* Vector, indexed by hard register number, which contains 1 for a
@@ -1774,7 +1776,8 @@ xtensa_emit_call (int callop, rtx *operands)
rtx tgt = operands[callop];
if (GET_CODE (tgt) == CONST_INT)
- sprintf (result, "call%d\t0x%lx", WINDOW_SIZE, INTVAL (tgt));
+ sprintf (result, "call%d\t" HOST_WIDE_INT_PRINT_HEX,
+ WINDOW_SIZE, INTVAL (tgt));
else if (register_operand (tgt, VOIDmode))
sprintf (result, "callx%d\t%%%d", WINDOW_SIZE, callop);
else
@@ -2345,14 +2348,14 @@ print_operand (FILE *file, rtx x, int letter)
case 'L':
if (GET_CODE (x) == CONST_INT)
- fprintf (file, "%ld", (32 - INTVAL (x)) & 0x1f);
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, (32 - INTVAL (x)) & 0x1f);
else
output_operand_lossage ("invalid %%L value");
break;
case 'R':
if (GET_CODE (x) == CONST_INT)
- fprintf (file, "%ld", INTVAL (x) & 0x1f);
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) & 0x1f);
else
output_operand_lossage ("invalid %%R value");
break;
@@ -2366,7 +2369,7 @@ print_operand (FILE *file, rtx x, int letter)
case 'd':
if (GET_CODE (x) == CONST_INT)
- fprintf (file, "%ld", INTVAL (x));
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
else
output_operand_lossage ("invalid %%d value");
break;
@@ -2431,7 +2434,7 @@ print_operand (FILE *file, rtx x, int letter)
else if (GET_CODE (x) == MEM)
output_address (GET_MODE (x), XEXP (x, 0));
else if (GET_CODE (x) == CONST_INT)
- fprintf (file, "%ld", INTVAL (x));
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
else
output_addr_const (file, x);
}
@@ -2628,24 +2631,29 @@ compute_frame_size (int size)
{
int regno;
+ if (reload_completed && cfun->machine->frame_laid_out)
+ return cfun->machine->current_frame_size;
+
/* Add space for the incoming static chain value. */
if (cfun->static_chain_decl != NULL)
size += (1 * UNITS_PER_WORD);
- xtensa_callee_save_size = 0;
+ cfun->machine->callee_save_size = 0;
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; ++regno)
{
if (xtensa_call_save_reg(regno))
- xtensa_callee_save_size += UNITS_PER_WORD;
+ cfun->machine->callee_save_size += UNITS_PER_WORD;
}
- xtensa_current_frame_size =
+ cfun->machine->current_frame_size =
XTENSA_STACK_ALIGN (size
- + xtensa_callee_save_size
+ + cfun->machine->callee_save_size
+ crtl->outgoing_args_size
+ (WINDOW_SIZE * UNITS_PER_WORD));
- xtensa_callee_save_size = XTENSA_STACK_ALIGN (xtensa_callee_save_size);
- return xtensa_current_frame_size;
+ cfun->machine->callee_save_size =
+ XTENSA_STACK_ALIGN (cfun->machine->callee_save_size);
+ cfun->machine->frame_laid_out = true;
+ return cfun->machine->current_frame_size;
}
@@ -2696,6 +2704,7 @@ xtensa_expand_prologue (void)
{
int regno;
HOST_WIDE_INT offset = 0;
+ int callee_save_size = cfun->machine->callee_save_size;
/* -128 is a limit of single addi instruction. */
if (total_size > 0 && total_size <= 128)
@@ -2709,7 +2718,7 @@ xtensa_expand_prologue (void)
add_reg_note (insn, REG_FRAME_RELATED_EXPR, note_rtx);
offset = total_size - UNITS_PER_WORD;
}
- else if (xtensa_callee_save_size)
+ else if (callee_save_size)
{
/* 1020 is maximal s32i offset, if the frame is bigger than that
* we move sp to the end of callee-saved save area, save and then
@@ -2717,13 +2726,13 @@ xtensa_expand_prologue (void)
if (total_size > 1024)
{
insn = emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- GEN_INT (-xtensa_callee_save_size)));
+ GEN_INT (-callee_save_size)));
RTX_FRAME_RELATED_P (insn) = 1;
note_rtx = gen_rtx_SET (stack_pointer_rtx,
plus_constant (Pmode, stack_pointer_rtx,
- -xtensa_callee_save_size));
+ -callee_save_size));
add_reg_note (insn, REG_FRAME_RELATED_EXPR, note_rtx);
- offset = xtensa_callee_save_size - UNITS_PER_WORD;
+ offset = callee_save_size - UNITS_PER_WORD;
}
else
{
@@ -2759,13 +2768,13 @@ xtensa_expand_prologue (void)
{
rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
emit_move_insn (tmp_reg, GEN_INT (total_size -
- xtensa_callee_save_size));
+ callee_save_size));
insn = emit_insn (gen_subsi3 (stack_pointer_rtx,
stack_pointer_rtx, tmp_reg));
RTX_FRAME_RELATED_P (insn) = 1;
note_rtx = gen_rtx_SET (stack_pointer_rtx,
plus_constant (Pmode, stack_pointer_rtx,
- xtensa_callee_save_size -
+ callee_save_size -
total_size));
add_reg_note (insn, REG_FRAME_RELATED_EXPR, note_rtx);
}
@@ -2833,21 +2842,21 @@ xtensa_expand_epilogue (void)
int regno;
HOST_WIDE_INT offset;
- if (xtensa_current_frame_size > (frame_pointer_needed ? 127 : 1024))
+ if (cfun->machine->current_frame_size > (frame_pointer_needed ? 127 : 1024))
{
rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
- emit_move_insn (tmp_reg, GEN_INT (xtensa_current_frame_size -
- xtensa_callee_save_size));
+ emit_move_insn (tmp_reg, GEN_INT (cfun->machine->current_frame_size -
+ cfun->machine->callee_save_size));
emit_insn (gen_addsi3 (stack_pointer_rtx, frame_pointer_needed ?
hard_frame_pointer_rtx : stack_pointer_rtx,
tmp_reg));
- offset = xtensa_callee_save_size - UNITS_PER_WORD;
+ offset = cfun->machine->callee_save_size - UNITS_PER_WORD;
}
else
{
if (frame_pointer_needed)
emit_move_insn (stack_pointer_rtx, hard_frame_pointer_rtx);
- offset = xtensa_current_frame_size - UNITS_PER_WORD;
+ offset = cfun->machine->current_frame_size - UNITS_PER_WORD;
}
/* Prevent reordering of saved a0 update and loading it back from
@@ -2867,16 +2876,16 @@ xtensa_expand_epilogue (void)
}
}
- if (xtensa_current_frame_size > 0)
+ if (cfun->machine->current_frame_size > 0)
{
if (frame_pointer_needed || /* always reachable with addi */
- xtensa_current_frame_size > 1024 ||
- xtensa_current_frame_size <= 127)
+ cfun->machine->current_frame_size > 1024 ||
+ cfun->machine->current_frame_size <= 127)
{
- if (xtensa_current_frame_size <= 127)
- offset = xtensa_current_frame_size;
+ if (cfun->machine->current_frame_size <= 127)
+ offset = cfun->machine->current_frame_size;
else
- offset = xtensa_callee_save_size;
+ offset = cfun->machine->callee_save_size;
emit_insn (gen_addsi3 (stack_pointer_rtx,
stack_pointer_rtx,
@@ -2885,7 +2894,8 @@ xtensa_expand_epilogue (void)
else
{
rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
- emit_move_insn (tmp_reg, GEN_INT (xtensa_current_frame_size));
+ emit_move_insn (tmp_reg,
+ GEN_INT (cfun->machine->current_frame_size));
emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
tmp_reg));
}
@@ -2896,11 +2906,22 @@ xtensa_expand_epilogue (void)
stack_pointer_rtx,
EH_RETURN_STACKADJ_RTX));
}
- xtensa_current_frame_size = 0;
- xtensa_callee_save_size = 0;
+ cfun->machine->epilogue_done = true;
emit_jump_insn (gen_return ());
}
+bool
+xtensa_use_return_instruction_p (void)
+{
+ if (!reload_completed)
+ return false;
+ if (TARGET_WINDOWED_ABI)
+ return true;
+ if (compute_frame_size (get_frame_size ()) == 0)
+ return true;
+ return cfun->machine->epilogue_done;
+}
+
void
xtensa_set_return_address (rtx address, rtx scratch)
{
@@ -4138,7 +4159,10 @@ hwloop_optimize (hwloop_info loop)
entry_after = BB_END (entry_bb);
while (DEBUG_INSN_P (entry_after)
|| (NOTE_P (entry_after)
- && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))
+ && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK
+ /* Make sure we don't split a call and its corresponding
+ CALL_ARG_LOCATION note. */
+ && NOTE_KIND (entry_after) != NOTE_INSN_CALL_ARG_LOCATION))
entry_after = PREV_INSN (entry_after);
emit_insn_after (seq, entry_after);
diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h
index 82e9900b42a..58eb1b2604a 100644
--- a/gcc/config/xtensa/xtensa.h
+++ b/gcc/config/xtensa/xtensa.h
@@ -23,8 +23,6 @@ along with GCC; see the file COPYING3. If not see
/* External variables defined in xtensa.c. */
-extern unsigned xtensa_current_frame_size;
-
/* Macros used in the machine description to select various Xtensa
configuration options. */
#ifndef XCHAL_HAVE_MUL32_HIGH
@@ -477,14 +475,14 @@ enum reg_class
/* Specify the initial difference between the specified pair of registers. */
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
do { \
- compute_frame_size (get_frame_size ()); \
+ long frame_size = compute_frame_size (get_frame_size ()); \
switch (FROM) \
{ \
case FRAME_POINTER_REGNUM: \
(OFFSET) = 0; \
break; \
case ARG_POINTER_REGNUM: \
- (OFFSET) = xtensa_current_frame_size; \
+ (OFFSET) = frame_size; \
break; \
default: \
gcc_unreachable (); \
diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index db54a12b7bc..fcdb6c8ecad 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -1663,7 +1663,7 @@
(define_insn "return"
[(return)
(use (reg:SI A0_REG))]
- "(TARGET_WINDOWED_ABI || !xtensa_current_frame_size) && reload_completed"
+ "xtensa_use_return_instruction_p ()"
{
return TARGET_WINDOWED_ABI ?
(TARGET_DENSITY ? "retw.n" : "retw") :
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d3a494867f2..c19900bfb26 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,31 @@
+2017-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/81006
+ * semantics.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
+ to sizetype before size_binop.
+
+ PR c++/81011
+ * cp-gimplify.c (cxx_omp_finish_clause): When changing clause
+ to OMP_CLAUSE_SHARED, also clear OMP_CLAUSE_SHARED_FIRSTPRIVATE
+ and OMP_CLAUSE_SHARED_READONLY flags.
+
+2017-05-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/80179 - ICE with initialized flexible array member.
+ * constexpr.c (verify_ctor_sanity): Handle flexible array members.
+
+2017-05-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/80267 - ICE with nested capture of reference
+ PR c++/60992
+ * pt.c (tsubst_copy): Handle lookup finding a capture proxy.
+
+ PR c++/80294 - ICE with constexpr and inheritance.
+ * constexpr.c (reduced_constant_expression_p):
+ A null constructor element is non-constant.
+ (cxx_eval_indirect_ref): Don't VERIFY_CONSTANT before
+ returning an empty base.
+
2017-05-05 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
index a9f0b9b6ce2..e105f6611c1 100644
--- a/gcc/cp/constexpr.c
+++ b/gcc/cp/constexpr.c
@@ -1614,8 +1614,13 @@ reduced_constant_expression_p (tree t)
/* And we need to handle PTRMEM_CST wrapped in a CONSTRUCTOR. */
tree elt; unsigned HOST_WIDE_INT idx;
FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (t), idx, elt)
- if (!reduced_constant_expression_p (elt))
- return false;
+ {
+ if (!elt)
+ /* We're in the middle of initializing this element. */
+ return false;
+ if (!reduced_constant_expression_p (elt))
+ return false;
+ }
return true;
default:
@@ -2496,8 +2501,16 @@ verify_ctor_sanity (const constexpr_ctx *ctx, tree type)
/* We used to check that ctx->ctor was empty, but that isn't the case when
the object is zero-initialized before calling the constructor. */
if (ctx->object)
- gcc_assert (same_type_ignoring_top_level_qualifiers_p
- (type, TREE_TYPE (ctx->object)));
+ {
+ tree otype = TREE_TYPE (ctx->object);
+ gcc_assert (same_type_ignoring_top_level_qualifiers_p (type, otype)
+ /* Handle flexible array members. */
+ || (TREE_CODE (otype) == ARRAY_TYPE
+ && TYPE_DOMAIN (otype) == NULL_TREE
+ && TREE_CODE (type) == ARRAY_TYPE
+ && (same_type_ignoring_top_level_qualifiers_p
+ (TREE_TYPE (type), TREE_TYPE (otype)))));
+ }
gcc_assert (!ctx->object || !DECL_P (ctx->object)
|| *(ctx->values->get (ctx->object)) == ctx->ctor);
}
@@ -3007,12 +3020,10 @@ cxx_eval_indirect_ref (const constexpr_ctx *ctx, tree t,
if (*non_constant_p)
return t;
- /* If we're pulling out the value of an empty base, make sure
- that the whole object is constant and then return an empty
+ /* If we're pulling out the value of an empty base, just return an empty
CONSTRUCTOR. */
if (empty_base && !lval)
{
- VERIFY_CONSTANT (r);
r = build_constructor (TREE_TYPE (t), NULL);
TREE_CONSTANT (r) = true;
}
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index f4beb9733e6..9266b6a3df3 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -1888,7 +1888,11 @@ cxx_omp_finish_clause (tree c, gimple_seq *)
make_shared = true;
if (make_shared)
- OMP_CLAUSE_CODE (c) = OMP_CLAUSE_SHARED;
+ {
+ OMP_CLAUSE_CODE (c) = OMP_CLAUSE_SHARED;
+ OMP_CLAUSE_SHARED_FIRSTPRIVATE (c) = 0;
+ OMP_CLAUSE_SHARED_READONLY (c) = 0;
+ }
}
/* Return true if DECL's DECL_VALUE_EXPR (if any) should be
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 5b0d0b696c2..28bb7853198 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -14086,7 +14086,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
{
/* First try name lookup to find the instantiation. */
r = lookup_name (DECL_NAME (t));
- if (r)
+ if (r && !is_capture_proxy (r))
{
/* Make sure that the one we found is the one we want. */
tree ctx = DECL_CONTEXT (t);
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 2c831bc3053..991f0fbe406 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -4675,9 +4675,9 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
&& TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
== INTEGER_CST)
{
- tree size = size_binop (PLUS_EXPR,
- TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
- size_one_node);
+ tree size
+ = fold_convert (sizetype, TYPE_MAX_VALUE (TYPE_DOMAIN (type)));
+ size = size_binop (PLUS_EXPR, size, size_one_node);
if (TREE_CODE (low_bound) == INTEGER_CST)
{
if (tree_int_cst_lt (size, low_bound))
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 74bb6a8b5ea..ce790d93673 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1063,6 +1063,11 @@ and for cross builds configured with @option{--with-sysroot}, and without
More documentation about multiarch can be found at
@uref{https://wiki.debian.org/Multiarch}.
+@item --enable-sjlj-exceptions
+Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
+@samp{configure} ordinarily picks the correct value based on the platform.
+Only use this option if you are sure you need a different setting.
+
@item --enable-vtable-verify
Specify whether to enable or disable the vtable verification feature.
Enabling this feature causes libstdc++ to be built with its virtual calls
@@ -2319,11 +2324,6 @@ file to compile into a @file{.class} file.
@item --with-libiconv-prefix=DIR
Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
-@item --enable-sjlj-exceptions
-Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
-@samp{configure} ordinarily picks the correct value based on the platform.
-Only use this option if you are sure you need a different setting.
-
@item --with-system-zlib
Use installed @samp{zlib} rather than that included with GCC@.
diff --git a/gcc/doc/lto.texi b/gcc/doc/lto.texi
index 9269e55ca31..970a4d839af 100644
--- a/gcc/doc/lto.texi
+++ b/gcc/doc/lto.texi
@@ -43,7 +43,7 @@ existing build systems, as one can, for instance, produce archives of
the files. Additionally, one might be able to ship one set of fat
objects which could be used both for development and the production of
optimized builds. A, perhaps surprising, side effect of this feature
-is that any mistake in the toolchain that leads to LTO information not
+is that any mistake in the toolchain leads to LTO information not
being used (e.g.@: an older @code{libtool} calling @code{ld} directly).
This is both an advantage, as the system is more robust, and a
disadvantage, as the user is not informed that the optimization has
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 58e9725c2e5..7f9880181da 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2005,6 +2005,9 @@ Target supports @option{-mpe-aligned-commons}.
@item pie
Target supports @option{-pie}, @option{-fpie} and @option{-fPIE}.
+@item rdynamic
+Target supports @option{-rdynamic}.
+
@item section_anchors
Target supports section anchors.
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 494788484d7..5fc73b6f914 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -10493,7 +10493,7 @@ fold_binary_loc (location_t loc,
/* Convert -A / -B to A / B when the type is signed and overflow is
undefined. */
if ((!INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type))
- && TREE_CODE (arg0) == NEGATE_EXPR
+ && TREE_CODE (op0) == NEGATE_EXPR
&& negate_expr_p (op1))
{
if (INTEGRAL_TYPE_P (type))
@@ -14607,6 +14607,24 @@ split_address_to_core_and_offset (tree exp,
&volatilep, false);
core = build_fold_addr_expr_loc (loc, core);
}
+ else if (TREE_CODE (exp) == POINTER_PLUS_EXPR)
+ {
+ core = TREE_OPERAND (exp, 0);
+ STRIP_NOPS (core);
+ *pbitpos = 0;
+ *poffset = TREE_OPERAND (exp, 1);
+ if (TREE_CODE (*poffset) == INTEGER_CST)
+ {
+ offset_int tem = wi::sext (wi::to_offset (*poffset),
+ TYPE_PRECISION (TREE_TYPE (*poffset)));
+ tem = wi::lshift (tem, LOG2_BITS_PER_UNIT);
+ if (wi::fits_shwi_p (tem))
+ {
+ *pbitpos = tem.to_shwi ();
+ *poffset = NULL_TREE;
+ }
+ }
+ }
else
{
core = exp;
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b1480052722..5fb3b2f154c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,31 @@
+2017-06-09 Janus Weil <janus@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/70601
+ * trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable
+ function results.
+
+2017-05-03 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/65542
+ Backport from trunk
+ * intrinsic.c (gfc_intrinsic_func_interface): Return an error
+ for -std=f95 for disallowed transformational functions in
+ initialization expressions.
+
+2017-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/80904
+ Backport from trunk
+ * frontend-passes.c (matmul_lhs_realloc): Correct
+ allocation size for case A1B2.
+
+2017-05-15 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/80752
+ * expr.c (gfc_generate_initializer): If type conversion fails,
+ check for error and return NULL.
+
2017-05-01 Janus Weil <janus@gcc.gnu.org>
Backport from trunk
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 2889025a86a..fd57b0b30bf 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -3983,7 +3983,12 @@ gfc_default_initializer (gfc_typespec *ts)
if ((comp->ts.type != comp->initializer->ts.type
|| comp->ts.kind != comp->initializer->ts.kind)
&& !comp->attr.pointer && !comp->attr.proc_pointer)
- gfc_convert_type_warn (ctor->expr, &comp->ts, 2, false);
+ {
+ bool val;
+ val = gfc_convert_type_warn (ctor->expr, &comp->ts, 1, false);
+ if (val == false)
+ return NULL;
+ }
}
if (comp->attr.allocatable
diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index d26a8ab7325..5bd8fb1e133 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -2306,7 +2306,7 @@ matmul_lhs_realloc (gfc_expr *c, gfc_expr *a, gfc_expr *b,
break;
case A1B2:
- ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, b, 1);
+ ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, b, 2);
cond = build_logical_expr (INTRINSIC_NE,
get_array_inq_function (GFC_ISYM_SIZE, c, 1),
get_array_inq_function (GFC_ISYM_SIZE, b, 2));
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index ee87228f8f7..3772649c378 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -4449,6 +4449,27 @@ gfc_intrinsic_func_interface (gfc_expr *expr, int error_flag)
return MATCH_ERROR;
}
+ /* F95, 7.1.6.1: Only transformational functions REPEAT, RESHAPE,
+ SELECTED_INT_KIND, SELECTED_REAL_KIND, TRANSFER, and TRIM are allowed in
+ initialization expressions. */
+
+ if (gfc_init_expr_flag && isym->transformational)
+ {
+ gfc_isym_id id = isym->id;
+ if (id != GFC_ISYM_REPEAT && id != GFC_ISYM_RESHAPE
+ && id != GFC_ISYM_SI_KIND && id != GFC_ISYM_SR_KIND
+ && id != GFC_ISYM_TRANSFER && id != GFC_ISYM_TRIM
+ && !gfc_notify_std (GFC_STD_F2003, "Transformational function %qs "
+ "at %L is invalid in an initialization "
+ "expression", name, &expr->where))
+ {
+ if (!error_flag)
+ gfc_pop_suppress_errors ();
+
+ return MATCH_ERROR;
+ }
+ }
+
gfc_current_intrinsic_where = &expr->where;
/* Bypass the generic list for min, max and ISO_C_Binding's c_loc. */
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 26cd4392151..31146c290de 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -6072,7 +6072,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
after use. This necessitates the creation of a temporary to
hold the result to prevent duplicate calls. */
if (!byref && sym->ts.type != BT_CHARACTER
- && sym->attr.allocatable && !sym->attr.dimension)
+ && sym->attr.allocatable && !sym->attr.dimension && !comp)
{
tmp = gfc_create_var (TREE_TYPE (se->expr), NULL);
gfc_add_modify (&se->pre, tmp, se->expr);
diff --git a/gcc/gcov-io.c b/gcc/gcov-io.c
index 17fcae00636..cdd9fa975e3 100644
--- a/gcc/gcov-io.c
+++ b/gcc/gcov-io.c
@@ -372,8 +372,12 @@ gcov_write_string (const char *string)
buffer = gcov_write_words (1 + alloc);
buffer[0] = alloc;
- buffer[alloc] = 0;
- memcpy (&buffer[1], string, length);
+
+ if (alloc > 0)
+ {
+ buffer[alloc] = 0; /* place nul terminators. */
+ memcpy (&buffer[1], string, length);
+ }
}
#endif
diff --git a/gcc/gcov-tool.c b/gcc/gcov-tool.c
index f628b603a80..911d9249321 100644
--- a/gcc/gcov-tool.c
+++ b/gcc/gcov-tool.c
@@ -46,6 +46,7 @@ extern int gcov_profile_normalize (struct gcov_info*, gcov_type);
extern int gcov_profile_scale (struct gcov_info*, float, int, int);
extern struct gcov_info* gcov_read_profile_dir (const char*, int);
extern void gcov_do_dump (struct gcov_info *, int);
+extern const char *gcov_get_filename (struct gcov_info *list);
extern void gcov_set_verbose (void);
/* Set to verbose output mode. */
@@ -114,6 +115,14 @@ gcov_output_files (const char *out, struct gcov_info *profile)
if (ret)
fatal_error (input_location, "Cannot change directory to %s", out);
+ /* Verify that output file does not exist (either was removed by
+ unlink_profile_data or removed by user). */
+ const char *filename = gcov_get_filename (profile);
+
+ if (access (filename, F_OK) != -1)
+ fatal_error (input_location, "output file %s already exists in folder %s",
+ filename, out);
+
gcov_do_dump (profile, 0);
ret = chdir (pwd);
diff --git a/gcc/gcov.c b/gcc/gcov.c
index 50061c7d56e..e60392210bf 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -469,7 +469,7 @@ print_usage (int error_p)
FILE *file = error_p ? stderr : stdout;
int status = error_p ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE;
- fnotice (file, "Usage: gcov [OPTION]... SOURCE|OBJ...\n\n");
+ fnotice (file, "Usage: gcov [OPTION...] SOURCE|OBJ...\n\n");
fnotice (file, "Print code coverage information.\n\n");
fnotice (file, " -h, --help Print this help, then exit\n");
fnotice (file, " -a, --all-blocks Show information for every basic block\n");
@@ -602,31 +602,6 @@ process_args (int argc, char **argv)
return optind;
}
-/* Get the name of the gcov file. The return value must be free'd.
-
- It appends the '.gcov' extension to the *basename* of the file.
- The resulting file name will be in PWD.
-
- e.g.,
- input: foo.da, output: foo.da.gcov
- input: a/b/foo.cc, output: foo.cc.gcov */
-
-static char *
-get_gcov_intermediate_filename (const char *file_name)
-{
- const char *gcov = ".gcov";
- char *result;
- const char *cptr;
-
- /* Find the 'basename'. */
- cptr = lbasename (file_name);
-
- result = XNEWVEC (char, strlen (cptr) + strlen (gcov) + 1);
- sprintf (result, "%s%s", cptr, gcov);
-
- return result;
-}
-
/* Output the result in intermediate format used by 'lcov'.
The intermediate format contains a single file named 'foo.cc.gcov',
@@ -792,7 +767,11 @@ output_gcov_file (const char *file_name, source_t *src)
if (gcov_file)
{
fnotice (stdout, "Creating '%s'\n", gcov_file_name);
- output_lines (gcov_file, src);
+
+ if (flag_intermediate_format)
+ output_intermediate_file (gcov_file, src);
+ else
+ output_lines (gcov_file, src);
if (ferror (gcov_file))
fnotice (stderr, "Error writing output file '%s'\n", gcov_file_name);
fclose (gcov_file);
@@ -814,8 +793,6 @@ generate_results (const char *file_name)
unsigned ix;
source_t *src;
function_t *fn;
- FILE *gcov_intermediate_file = NULL;
- char *gcov_intermediate_filename = NULL;
for (ix = n_sources, src = sources; ix--; src++)
if (src->num_lines)
@@ -845,20 +822,6 @@ generate_results (const char *file_name)
file_name = canonicalize_name (file_name);
}
- if (flag_gcov_file && flag_intermediate_format)
- {
- /* Open the intermediate file. */
- gcov_intermediate_filename =
- get_gcov_intermediate_filename (file_name);
- gcov_intermediate_file = fopen (gcov_intermediate_filename, "w");
- if (!gcov_intermediate_file)
- {
- fnotice (stderr, "Cannot open intermediate output file %s\n",
- gcov_intermediate_filename);
- return;
- }
- }
-
for (ix = n_sources, src = sources; ix--; src++)
{
if (flag_relative_only)
@@ -881,23 +844,11 @@ generate_results (const char *file_name)
total_executed += src->coverage.lines_executed;
if (flag_gcov_file)
{
- if (flag_intermediate_format)
- /* Output the intermediate format without requiring source
- files. This outputs a section to a *single* file. */
- output_intermediate_file (gcov_intermediate_file, src);
- else
- output_gcov_file (file_name, src);
+ output_gcov_file (file_name, src);
fnotice (stdout, "\n");
}
}
- if (flag_gcov_file && flag_intermediate_format)
- {
- /* Now we've finished writing the intermediate file. */
- fclose (gcov_intermediate_file);
- XDELETEVEC (gcov_intermediate_filename);
- }
-
if (!file_name)
executed_summary (total_lines, total_executed);
}
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 5bbf82663ad..a559c69c0d8 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -5560,9 +5560,12 @@ fold_ctor_reference (tree type, tree ctor, unsigned HOST_WIDE_INT offset,
&& !compare_tree_int (TYPE_SIZE (TREE_TYPE (ctor)), size))
{
ret = canonicalize_constructor_val (unshare_expr (ctor), from_decl);
- ret = fold_unary (VIEW_CONVERT_EXPR, type, ret);
if (ret)
- STRIP_USELESS_TYPE_CONVERSION (ret);
+ {
+ ret = fold_unary (VIEW_CONVERT_EXPR, type, ret);
+ if (ret)
+ STRIP_USELESS_TYPE_CONVERSION (ret);
+ }
return ret;
}
/* For constants and byte-aligned/sized reads try to go through
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index cbf9bcd5cee..3e170133415 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -1,3 +1,9 @@
+2017-05-11 Ian Lance Taylor <iant@google.com>
+
+ PR go/64238
+ * go-gcc.cc (Gcc_backend::implicit_variable_reference): Set
+ DECL_EXTERNAL, clear TREE_STATIC.
+
2016-12-21 Release Manager
* GCC 6.3.0 released.
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc
index 2793bb6090d..52ac7e59035 100644
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -2738,9 +2738,9 @@ Gcc_backend::implicit_variable_reference(const std::string& name, Btype* btype)
tree decl = build_decl(BUILTINS_LOCATION, VAR_DECL,
get_identifier_from_string(name), type_tree);
- DECL_EXTERNAL(decl) = 0;
+ DECL_EXTERNAL(decl) = 1;
TREE_PUBLIC(decl) = 1;
- TREE_STATIC(decl) = 1;
+ TREE_STATIC(decl) = 0;
DECL_ARTIFICIAL(decl) = 1;
go_preserve_from_gc(decl);
return new Bvariable(decl);
diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c
index fba6cfb1851..c616d216f85 100644
--- a/gcc/graphite-isl-ast-to-gimple.c
+++ b/gcc/graphite-isl-ast-to-gimple.c
@@ -1157,6 +1157,9 @@ bool translate_isl_ast_to_gimple::
is_valid_rename (tree rename, basic_block def_bb, basic_block use_bb,
phi_node_kind phi_kind, tree old_name, basic_block old_bb) const
{
+ if (SSA_NAME_IS_DEFAULT_DEF (rename))
+ return true;
+
/* The def of the rename must either dominate the uses or come from a
back-edge. Also the def must respect the loop closed ssa form. */
if (!is_loop_closed_ssa_use (use_bb, rename))
@@ -1212,6 +1215,7 @@ get_rename (basic_block new_bb, tree old_name, basic_block old_bb,
basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (rename));
if (is_valid_rename (rename, bb, new_bb, phi_kind, old_name, old_bb)
&& (phi_kind == close_phi
+ || ! bb
|| flow_bb_inside_loop_p (bb->loop_father, new_bb)))
return rename;
return NULL_TREE;
@@ -1913,7 +1917,7 @@ copy_loop_phi_nodes (basic_block bb, basic_block new_bb)
if (is_gimple_reg (res) && scev_analyzable_p (res, region->region))
continue;
- gphi *new_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
+ gphi *new_phi = create_phi_node (NULL_TREE, new_bb);
tree new_res = create_new_def_for (res, new_phi,
gimple_phi_result_ptr (new_phi));
set_rename (res, new_res);
@@ -2013,7 +2017,7 @@ add_close_phis_to_outer_loops (tree last_merge_name, edge last_e,
if (!bb_contains_loop_close_phi_nodes (bb) || !single_succ_p (bb))
bb = split_edge (e);
- gphi *close_phi = create_phi_node (SSA_NAME_VAR (last_merge_name), bb);
+ gphi *close_phi = create_phi_node (NULL_TREE, bb);
tree res = create_new_def_for (last_merge_name, close_phi,
gimple_phi_result_ptr (close_phi));
set_rename (old_close_phi_name, res);
@@ -2058,7 +2062,7 @@ add_close_phis_to_merge_points (gphi *old_close_phi, gphi *new_close_phi,
last_merge_name = add_close_phis_to_outer_loops (last_merge_name, merge_e,
old_close_phi);
- gphi *merge_phi = create_phi_node (SSA_NAME_VAR (old_close_phi_name), new_merge_bb);
+ gphi *merge_phi = create_phi_node (NULL_TREE, new_merge_bb);
tree merge_res = create_new_def_for (old_close_phi_name, merge_phi,
gimple_phi_result_ptr (merge_phi));
set_rename (old_close_phi_name, merge_res);
@@ -2111,7 +2115,7 @@ copy_loop_close_phi_args (basic_block old_bb, basic_block new_bb, bool postpone)
/* Loop close phi nodes should not be scev_analyzable_p. */
gcc_unreachable ();
- gphi *new_close_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
+ gphi *new_close_phi = create_phi_node (NULL_TREE, new_bb);
tree new_res = create_new_def_for (res, new_close_phi,
gimple_phi_result_ptr (new_close_phi));
set_rename (res, new_res);
@@ -2494,7 +2498,7 @@ copy_cond_phi_nodes (basic_block bb, basic_block new_bb, vec<tree> iv_map)
if (virtual_operand_p (res))
continue;
- gphi *new_phi = create_phi_node (SSA_NAME_VAR (res), new_bb);
+ gphi *new_phi = create_phi_node (NULL_TREE, new_bb);
tree new_res = create_new_def_for (res, new_phi,
gimple_phi_result_ptr (new_phi));
set_rename (res, new_res);
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 5900d4d9158..98bb9514777 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -537,6 +537,12 @@ determine_versionability (struct cgraph_node *node,
decloned constructors, inlining is always better anyway. */
else if (node->comdat_local_p ())
reason = "comdat-local function";
+ else if (node->calls_comdat_local)
+ {
+ /* TODO: call is versionable if we make sure that all
+ callers are inside of a comdat group. */
+ reason = "calls comdat-local function";
+ }
if (reason && dump_file && !node->alias && !node->thunk.thunk_p)
fprintf (dump_file, "Function %s/%i is not versionable, reason: %s.\n",
diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 981fabf6dc6..0332b3ec616 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -3367,7 +3367,13 @@ dump_possible_polymorphic_call_targets (FILE *f,
fprintf (f, " Speculative targets:");
dump_targets (f, targets);
}
- gcc_assert (targets.length () <= len);
+ /* Ugly: during callgraph construction the target cache may get populated
+ before all targets are found. While this is harmless (because all local
+ types are discovered and only in those case we devirtualize fully and we
+ don't do speculative devirtualization before IPA stage) it triggers
+ assert here when dumping at that stage also populates the case with
+ speculative targets. Quietly ignore this. */
+ gcc_assert (symtab->state < IPA_SSA || targets.length () <= len);
fprintf (f, "\n");
}
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index ac8b4787b10..1262e7e1d13 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -1364,6 +1364,15 @@ split_function (basic_block return_bb, struct split_point *split_point,
node->split_part = true;
+ if (cur_node->same_comdat_group)
+ {
+ /* TODO: call is versionable if we make sure that all
+ callers are inside of a comdat group. */
+ cur_node->calls_comdat_local = 1;
+ node->add_to_same_comdat_group (cur_node);
+ }
+
+
/* Let's take a time profile for splitted function. */
node->tp_first_run = cur_node->tp_first_run + 1;
diff --git a/gcc/plugin.c b/gcc/plugin.c
index 60081a5a53b..a7a318b2449 100644
--- a/gcc/plugin.c
+++ b/gcc/plugin.c
@@ -114,6 +114,16 @@ static const char *str_plugin_init_func_name = "plugin_init";
static const char *str_license = "plugin_is_GPL_compatible";
#endif
+/* Helper function for hashing the base_name of the plugin_name_args
+ structure to be inserted into the hash table. */
+
+static hashval_t
+htab_hash_plugin (const PTR p)
+{
+ const struct plugin_name_args *plugin = (const struct plugin_name_args *) p;
+ return htab_hash_string (plugin->base_name);
+ }
+
/* Helper function for the hash table that compares the base_name of the
existing entry (S1) with the given string (S2). */
@@ -183,10 +193,11 @@ add_new_plugin (const char* plugin_name)
/* If this is the first -fplugin= option we encounter, create
'plugin_name_args_tab' hash table. */
if (!plugin_name_args_tab)
- plugin_name_args_tab = htab_create (10, htab_hash_string, htab_str_eq,
+ plugin_name_args_tab = htab_create (10, htab_hash_plugin, htab_str_eq,
NULL);
- slot = htab_find_slot (plugin_name_args_tab, base_name, INSERT);
+ slot = htab_find_slot_with_hash (plugin_name_args_tab, base_name,
+ htab_hash_string (base_name), INSERT);
/* If the same plugin (name) has been specified earlier, either emit an
error or a warning message depending on if they have identical full
@@ -273,7 +284,8 @@ parse_plugin_arg_opt (const char *arg)
/* Check if the named plugin has already been specified earlier in the
command-line. */
if (plugin_name_args_tab
- && ((slot = htab_find_slot (plugin_name_args_tab, name, NO_INSERT))
+ && ((slot = htab_find_slot_with_hash (plugin_name_args_tab, name,
+ htab_hash_string (name), NO_INSERT))
!= NULL))
{
struct plugin_name_args *plugin = (struct plugin_name_args *) *slot;
@@ -329,7 +341,8 @@ parse_plugin_arg_opt (const char *arg)
static void
register_plugin_info (const char* name, struct plugin_info *info)
{
- void **slot = htab_find_slot (plugin_name_args_tab, name, NO_INSERT);
+ void **slot = htab_find_slot_with_hash (plugin_name_args_tab, name,
+ htab_hash_string (name), NO_INSERT);
struct plugin_name_args *plugin = (struct plugin_name_args *) *slot;
plugin->version = info->version;
plugin->help = info->help;
@@ -627,7 +640,8 @@ init_one_plugin (void **slot, void * ARG_UNUSED (info))
bool ok = try_init_one_plugin (plugin);
if (!ok)
{
- htab_remove_elt (plugin_name_args_tab, plugin->base_name);
+ htab_remove_elt_with_hash (plugin_name_args_tab, plugin->base_name,
+ htab_hash_string (plugin->base_name));
XDELETE (plugin);
}
return 1;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d536a14593a..0ea0587a702 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,208 @@
+2017-06-09 Janus Weil <janus@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/70601
+ * gfortran.dg/proc_ptr_comp_50.f90: New test.
+
+2017-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/81006
+ * c-c++-common/gomp/pr81006.c: New test.
+
+ PR c++/81011
+ * g++.dg/gomp/pr81011.C: New test.
+
+2017-06-06 David S. Miller <davem@davemloft.net>
+
+ * gcc.target/sparc/sparc-ret-3.c: New test.
+
+2017-06-06 Toma Tabacu <toma.tabacu@imgtec.com>
+
+ Backported from mainline
+ 2017-03-09 Toma Tabacu <toma.tabacu@imgtec.com>
+
+ * g++.dg/lto/pr69589_0.C: Add dg-require-effective-target for
+ rdynamic.
+ * lib/target-supports.exp (check_effective_target_rdynamic):
+ New proc.
+
+2017-05-03 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/65542
+ Backport from trunk
+ * gfortran.dg/spread_init_expr_2.f90: New test case.
+
+2017-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/80904
+ Backport from trunk
+ * gfortran.dg/matmul_bounds_12.f90: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-24 Martin Liska <mliska@suse.cz>
+
+ PR middle-end/79931
+ * g++.dg/ipa/pr79931.C: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-11 Martin Liska <mliska@suse.cz>
+
+ PR ipa/80212
+ * g++.dg/ipa/pr80212.C: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-11 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/70878
+ * gcc.dg/ubsan/pr70878.c: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-10 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/80350
+ * c-c++-common/ubsan/pr80350.c: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-06 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/80166
+ * gcc.dg/asan/pr80166.c: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-03-28 Martin Liska <mliska@suse.cz>
+
+ PR ipa/80205
+ * g++.dg/ipa/pr80205.C: New test.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-03-28 Martin Liska <mliska@suse.cz>
+
+ PR ipa/80104
+ * gcc.dg/ipa/pr80104.c: New test.
+
+2017-05-23 Sheldon Lobo <sheldon.lobo@oracle.com>
+
+ Backport from mainline
+ 2017-05-18 Sheldon Lobo <sheldon.lobo@oracle.com>
+
+ * gcc.target/sparc/niagara7-align.c: New test.
+
+2017-05-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2017-05-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gcc.target/powerpc/p8-vec-xl-xst.c: Fix target string to
+ LE-only.
+
+2017-05-19 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2017-05-18 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/80799
+ * g++.dg/other/i386-11.C: New test.
+
+2017-05-15 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/80752
+ * gfortran.dg/pr80752.f90: New test.
+
+2017-05-15 Richard Biener <rguenther@suse.de>
+
+ Revert backport of
+ PR middle-end/80222
+ * g++.dg/pr80222.C: New testcase.
+
+2017-05-13 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2017-05-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gcc.target/powerpc/versioned-copy-loop.c: New file.
+
+2017-05-12 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2017-05-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * gcc.target/powerpc/p8-vec-xl-xst.c: New file.
+
+2017-05-10 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2017-03-17 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80075
+ * g++.dg/torture/pr80075.C: New testcase.
+
+ 2017-03-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80122
+ * gcc.dg/torture/pr80122.c: New testcase.
+
+ 2017-03-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80167
+ * gcc.dg/graphite/pr80167.c: New testcase.
+
+ 2017-03-27 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80171
+ * g++.dg/torture/pr80171.C: New testcase.
+
+2017-05-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2017-03-28 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80222
+ * g++.dg/pr80222.C: New testcase.
+
+ 2017-04-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80262
+ * gcc.target/i386/pr80262.c: New testcase.
+
+ 2017-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80275
+ * g++.dg/opt/pr80275.C: New testcase.
+
+ 2017-04-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80334
+ * g++.dg/torture/pr80334.C: New testcase.
+
+ 2017-04-10 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80362
+ * gcc.dg/torture/pr80362.c: New testcase.
+
+ 2017-04-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80492
+ * gcc.dg/pr80492.c: New testcase.
+
+ 2017-04-27 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/80539
+ * gcc.dg/torture/pr80539.c: New testcase.
+
2017-05-09 Jakub Jelinek <jakub@redhat.com>
PR testsuite/80678
@@ -183,8 +388,8 @@
Backport from mainline
2017-03-30 Martin Jambor <mjambor@suse.cz>
- PR ipa/77333
- * g++.dg/ipa/pr77333.C: New test.
+ PR ipa/77333
+ * g++.dg/ipa/pr77333.C: New test.
2017-04-06 Uros Bizjak <ubizjak@gmail.com>
diff --git a/gcc/testsuite/c-c++-common/gomp/pr81006.c b/gcc/testsuite/c-c++-common/gomp/pr81006.c
new file mode 100644
index 00000000000..a826c5f5a53
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr81006.c
@@ -0,0 +1,10 @@
+/* PR c/81006 */
+/* { dg-do compile } */
+
+int a[] = {};
+
+void foo()
+{
+ #pragma omp task depend(out: a[:]) /* { dg-error "zero length array section in .depend. clause" } */
+ {}
+}
diff --git a/gcc/testsuite/c-c++-common/ubsan/pr80350.c b/gcc/testsuite/c-c++-common/ubsan/pr80350.c
new file mode 100644
index 00000000000..317d2facaf7
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/ubsan/pr80350.c
@@ -0,0 +1,17 @@
+/* PR target/80310 */
+/* { dg-do run } */
+/* { dg-options "-O0 -fsanitize=shift -fno-sanitize-recover=shift" } */
+
+unsigned int x = 1;
+unsigned int y = 0;
+
+void foo() {
+ y = 1 >> (!x * 1111);
+}
+
+int main () {
+ foo ();
+ if (y != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C
new file mode 100644
index 00000000000..58dfe3c908f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C
@@ -0,0 +1,12 @@
+// PR c++/80267
+// { dg-do compile { target c++11 } }
+
+template <typename> void a() {
+ int b;
+ auto &c = b;
+ [&] {
+ c;
+ [&] { c; };
+ };
+}
+void d() { a<int>(); }
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
new file mode 100644
index 00000000000..37e4a53a7a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
@@ -0,0 +1,14 @@
+// PR c++/80294
+// { dg-do compile { target c++14 } }
+// { dg-final { scan-assembler-not "static_init" } }
+
+struct A {
+ constexpr int f() { A a = *this; return 42; }
+};
+struct B: A
+{
+ int i;
+ constexpr B(): i(f()) {}
+};
+
+B b;
diff --git a/gcc/testsuite/g++.dg/ext/flexary24.C b/gcc/testsuite/g++.dg/ext/flexary24.C
new file mode 100644
index 00000000000..c25e540243a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/flexary24.C
@@ -0,0 +1,12 @@
+// PR c++/80179
+// { dg-options "" }
+
+struct S {
+ int n;
+ const char *a[];
+};
+
+void bar (const char *a)
+{
+ static const S t = { 1, { a, "b" } };
+}
diff --git a/gcc/testsuite/g++.dg/gomp/pr81011.C b/gcc/testsuite/g++.dg/gomp/pr81011.C
new file mode 100644
index 00000000000..4abd609596c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr81011.C
@@ -0,0 +1,19 @@
+// PR c++/81011
+// { dg-do compile }
+
+class A { A (const A&); }; // { dg-message "declared private here" }
+void foo (const A&);
+
+void
+bar (A& a)
+{
+#pragma omp task // { dg-error "is private within this context" }
+ foo (a);
+}
+
+void
+baz (A& a)
+{
+#pragma omp task firstprivate (a) // { dg-error "is private within this context" }
+ foo (a);
+}
diff --git a/gcc/testsuite/g++.dg/ipa/pr79931.C b/gcc/testsuite/g++.dg/ipa/pr79931.C
new file mode 100644
index 00000000000..78f6e03c458
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr79931.C
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-ipa-all" } */
+
+class DocumentImpl;
+struct NodeImpl
+{
+ virtual DocumentImpl * getOwnerDocument();
+ virtual NodeImpl * getParentNode();
+ virtual NodeImpl * removeChild(NodeImpl *oldChild);
+};
+struct AttrImpl : NodeImpl
+{
+ NodeImpl *insertBefore(NodeImpl *newChild, NodeImpl *refChild);
+};
+struct DocumentImpl : NodeImpl
+{
+ virtual NodeImpl *removeChild(NodeImpl *oldChild);
+ virtual int* getRanges();
+};
+NodeImpl *AttrImpl::insertBefore(NodeImpl *newChild, NodeImpl *refChild) {
+ NodeImpl *oldparent = newChild->getParentNode();
+ oldparent->removeChild(newChild);
+ this->getOwnerDocument()->getRanges();
+}
diff --git a/gcc/testsuite/g++.dg/ipa/pr80205.C b/gcc/testsuite/g++.dg/ipa/pr80205.C
new file mode 100644
index 00000000000..460bdcb02ca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr80205.C
@@ -0,0 +1,34 @@
+// PR ipa/80205
+// { dg-options "-fnon-call-exceptions --param early-inlining-insns=100 -O2" }
+
+class a
+{
+public:
+ virtual ~a ();
+};
+class b
+{
+public:
+ template <typename c> b (c);
+ ~b () { delete d; }
+ void
+ operator= (b e)
+ {
+ b (e).f (*this);
+ }
+ void
+ f (b &e)
+ {
+ a g;
+ d = e.d;
+ e.d = &g;
+ }
+ a *d;
+};
+void
+h ()
+{
+ b i = int();
+ void j ();
+ i = j;
+}
diff --git a/gcc/testsuite/g++.dg/ipa/pr80212.C b/gcc/testsuite/g++.dg/ipa/pr80212.C
new file mode 100644
index 00000000000..60d3b613035
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr80212.C
@@ -0,0 +1,18 @@
+// PR ipa/80212
+// { dg-options "-O2 --param partial-inlining-entry-probability=403796683 -fno-early-inlining" }
+
+struct b
+{
+ virtual b *c () const;
+};
+struct d : virtual b
+{
+};
+struct e : d
+{
+ e *
+ c () const
+ {
+ }
+};
+main () { e a; }
diff --git a/gcc/testsuite/g++.dg/lto/pr69589_0.C b/gcc/testsuite/g++.dg/lto/pr69589_0.C
index 1457d2eb13e..599d5d44960 100644
--- a/gcc/testsuite/g++.dg/lto/pr69589_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr69589_0.C
@@ -1,7 +1,7 @@
// { dg-lto-do link }
// { dg-lto-options "-O2 -rdynamic" }
// { dg-extra-ld-options "-r -nostdlib" }
-// { dg-skip-if "Skip targets without -rdynamic support" { arm*-none-eabi aarch64*-*-elf } { "*" } { "" } }
+// { dg-require-effective-target rdynamic }
#pragma GCC visibility push(hidden)
struct A { int &operator[] (long); };
diff --git a/gcc/testsuite/g++.dg/opt/pr80275.C b/gcc/testsuite/g++.dg/opt/pr80275.C
new file mode 100644
index 00000000000..7296a07fb2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr80275.C
@@ -0,0 +1,16 @@
+// { dg-do compile { target c++14 } }
+// { dg-options "-O2 -fdump-tree-optimized" }
+
+#include <algorithm>
+
+int g()
+{
+ return 1234;
+}
+
+int f2()
+{
+ return std::min({1, g(), 4});
+}
+
+// { dg-final { scan-tree-dump "return 1;" "optimized" } }
diff --git a/gcc/testsuite/g++.dg/other/i386-11.C b/gcc/testsuite/g++.dg/other/i386-11.C
new file mode 100644
index 00000000000..8e06617fca5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/i386-11.C
@@ -0,0 +1,57 @@
+// PR target/80799
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
+// { dg-require-effective-target c++11 }
+// { dg-options "-O2 -msse2" }
+
+#include <xmmintrin.h>
+#include <emmintrin.h>
+
+class alignas(16) GSVector4i
+{
+public:
+ __m128i m;
+
+ explicit GSVector4i(__m128i m)
+ {
+ this->m = m;
+ }
+
+ static void storel(void* p, const GSVector4i& v)
+ {
+ _mm_storel_epi64((__m128i*)p, v.m);
+ }
+
+ static GSVector4i loadl(const void* p)
+ {
+ return GSVector4i(_mm_loadl_epi64((__m128i*)p));
+ }
+
+ bool eq(const GSVector4i& v) const
+ {
+ return _mm_movemask_epi8(_mm_cmpeq_epi32(m, v.m)) == 0xffff;
+ }
+};
+
+
+union GIFRegTRXPOS
+{
+ unsigned long long u64;
+ void operator = (const GSVector4i& v) {GSVector4i::storel(this, v);}
+ bool operator != (const union GIFRegTRXPOS& r) const {return !((GSVector4i)r).eq(*this);}
+ operator GSVector4i() const {return GSVector4i::loadl(this);}
+};
+
+extern void dummy_call();
+extern GIFRegTRXPOS TRXPOS;
+
+void GIFRegHandlerTRXPOS(const GIFRegTRXPOS& p)
+{
+ if(p != TRXPOS)
+ {
+ dummy_call();
+ }
+
+ TRXPOS = (GSVector4i)p;
+}
+
+// { dg-final { scan-assembler-not "%mm" } }
diff --git a/gcc/testsuite/g++.dg/torture/pr80075.C b/gcc/testsuite/g++.dg/torture/pr80075.C
new file mode 100644
index 00000000000..5bc802027c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr80075.C
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-additional-options "-fnon-call-exceptions" }
+
+struct s {
+ int i;
+};
+
+extern int use_memcpy;
+extern void my_memcpy(void*, void*, int);
+
+int
+f (struct s* p)
+{
+ struct s a;
+
+ try
+ {
+ a = (struct s){};
+ if (!use_memcpy)
+ *p = a;
+ else
+ my_memcpy (p, &a, sizeof (struct s));
+ } catch (...) {
+ return 0;
+ }
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr80171.C b/gcc/testsuite/g++.dg/torture/pr80171.C
new file mode 100644
index 00000000000..81f272583c5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr80171.C
@@ -0,0 +1,183 @@
+// { dg-do compile }
+
+template <typename> struct remove_reference;
+template <typename _Tp> struct remove_reference<_Tp &> { typedef _Tp type; };
+template <typename _Tp> typename remove_reference<_Tp>::type move(_Tp &&p1) {
+ return static_cast<typename remove_reference<_Tp>::type &&>(p1);
+}
+void *operator new(__SIZE_TYPE__, void *p2) { return p2; }
+struct Trans_NS__v1_GenericTlv {
+ virtual int getMinimumValueLength();
+ virtual unsigned long getValueLength() const;
+};
+struct IPv4NeighborAddressSubTlv;
+struct Trans_NS__v1_GenericTlvBase : Trans_NS__v1_GenericTlv {
+ virtual bool operator==(const IPv4NeighborAddressSubTlv &) const;
+};
+struct Trans_NS__v1_GenericUnsupportedTlv;
+template <typename> struct backup_holder {
+ Trans_NS__v1_GenericUnsupportedTlv *backup_;
+ Trans_NS__v1_GenericUnsupportedTlv &get() { return *backup_; }
+};
+template <typename> struct make_reference_content {
+ typedef IPv4NeighborAddressSubTlv type;
+};
+template <typename> struct unwrap_recursive {
+ typedef IPv4NeighborAddressSubTlv type;
+};
+template <typename> struct begin_impl;
+template <typename Sequence> struct begin {
+ typedef typename Sequence::tag tag_;
+ typedef typename begin_impl<tag_>::template apply<Sequence>::type type;
+};
+struct long_ {
+ static const int value = 0;
+};
+template <typename> struct O1_size_impl;
+template <typename Sequence>
+struct O1_size
+ : O1_size_impl<typename Sequence::tag>::template apply<Sequence> {};
+template <typename F, typename T2>
+struct apply_wrap2 : F::template apply<int, T2> {};
+template <int, typename, typename> struct iter_fold_impl;
+template <typename First, typename ForwardOp>
+struct iter_fold_impl<0, First, ForwardOp> {
+ typedef typename apply_wrap2<ForwardOp, First>::type state;
+};
+template <typename Sequence, typename ForwardOp> struct iter_fold {
+ typedef
+ typename iter_fold_impl<O1_size<Sequence>::value,
+ typename begin<Sequence>::type, ForwardOp>::state
+ type;
+};
+template <typename> struct deref;
+template <typename T1> struct pair { typedef T1 first; };
+struct make_initializer_node {
+ template <typename, typename Iterator> struct apply {
+ struct initializer_node {
+ typedef typename deref<Iterator>::type recursive_enabled_T;
+ static int
+ initialize(void *p1,
+ typename unwrap_recursive<recursive_enabled_T>::type) {
+ new (p1) typename make_reference_content<recursive_enabled_T>::type;
+ }
+ };
+ typedef pair<initializer_node> type;
+ };
+};
+struct l_item {
+ typedef int tag;
+ typedef l_item type;
+ typedef long_ size;
+ typedef int item;
+};
+template <> struct O1_size_impl<int> {
+ template <typename List> struct apply : List::size {};
+};
+template <typename> struct l_iter;
+template <typename Node> struct deref<l_iter<Node>> {
+ typedef typename Node::item type;
+};
+template <> struct begin_impl<int> {
+ template <typename List> struct apply {
+ typedef l_iter<typename List::type> type;
+ };
+};
+template <typename, typename, typename, typename, typename, typename, typename>
+struct list : l_item {};
+template <typename... T> struct make_variant_list { typedef list<T...> type; };
+template <typename T> T cast_storage(void *p1) { return *static_cast<T *>(p1); }
+struct visitation_impl_step {
+ typedef Trans_NS__v1_GenericUnsupportedTlv type;
+};
+template <typename Visitor, typename VoidPtrCV, typename T>
+void visitation_impl_invoke_impl(Visitor p1, VoidPtrCV p2, T *) {
+ backup_holder<Trans_NS__v1_GenericUnsupportedTlv> __trans_tmp_8 =
+ cast_storage<backup_holder<T>>(p2);
+ p1.internal_visit(__trans_tmp_8, 0);
+}
+template <typename Visitor, typename VoidPtrCV, typename T,
+ typename NoBackupFlag>
+void visitation_impl_invoke(Visitor p1, VoidPtrCV p2, T p3, NoBackupFlag) {
+ visitation_impl_invoke_impl(p1, p2, p3);
+}
+template <typename Which, typename step0, typename Visitor, typename VoidPtrCV,
+ typename NoBackupFlag>
+void visitation_impl(Visitor p1, VoidPtrCV p2, NoBackupFlag, Which, step0 *) {
+ visitation_impl_invoke(p1, p2, static_cast<typename step0::type *>(0), 0);
+}
+struct move_into {
+ move_into(void *);
+ template <typename T> void internal_visit(backup_holder<T> p1, int) {
+ T __trans_tmp_2 = p1.get();
+ new (0) T(__trans_tmp_2);
+ }
+};
+template <typename, typename... TN> struct variant {
+ struct initializer : iter_fold<typename make_variant_list<int, TN...>::type,
+ make_initializer_node>::type::first {};
+ template <typename T> void convert_construct(T p1, int) {
+ void *__trans_tmp_9 = this;
+ initializer::initialize(__trans_tmp_9, p1);
+ }
+ template <typename T> variant(T p1) { convert_construct(p1, 0); }
+ variant(variant &&p1) {
+ move_into visitor(0);
+ p1.internal_apply_visitor(visitor);
+ }
+ template <typename Visitor> void internal_apply_visitor(Visitor p1) {
+ void *__trans_tmp_10 = this;
+ visitation_impl(p1, __trans_tmp_10, 0, 0,
+ static_cast<visitation_impl_step *>(0));
+ }
+};
+template <class...> struct generic_element_tlvs;
+template <typename TlvConfig, class UnsupportedTlvClass, class TlvF,
+ class... TlvR>
+struct generic_element_tlvs<TlvConfig, UnsupportedTlvClass, TlvF, TlvR...> {
+ typedef variant<UnsupportedTlvClass, TlvF, TlvR...> variant_type;
+};
+template <typename, typename> struct Trans_NS__v1_GenericTlvContainer {
+ template <class TlvClass> void addTlv(const TlvClass &);
+};
+template <typename TlvConfig, typename ElementTlvs>
+template <class TlvClass>
+void Trans_NS__v1_GenericTlvContainer<TlvConfig, ElementTlvs>::addTlv(
+ const TlvClass &p1) {
+ typename ElementTlvs::variant_type wrap(p1);
+ move(wrap);
+}
+template <typename ElementTlvs>
+struct Trans_NS__v1_GenericContainerEntryBase
+ : Trans_NS__v1_GenericTlvContainer<int, ElementTlvs> {};
+template <class>
+struct Trans_NS__v1_GenericFixedLengthTlvBase : Trans_NS__v1_GenericTlvBase {
+ unsigned long getValueLength() const;
+};
+struct Trans_NS__v1_GenericUnsupportedTlv : Trans_NS__v1_GenericTlv {
+ long getHeaderLengthconst;
+};
+using isis_tlv_config = int;
+template <class... TlvClasses>
+using isis_element_tlvs =
+ generic_element_tlvs<isis_tlv_config, Trans_NS__v1_GenericUnsupportedTlv,
+ TlvClasses...>;
+template <int, class, typename ElementTlvs>
+using ContainerEntryBase = Trans_NS__v1_GenericContainerEntryBase<ElementTlvs>;
+template <int, class ImplClass, int>
+using FixedLengthTlvBase = Trans_NS__v1_GenericFixedLengthTlvBase<ImplClass>;
+struct IPv4NeighborAddressSubTlv
+ : FixedLengthTlvBase<0, IPv4NeighborAddressSubTlv, 0> {
+ bool operator==(const IPv4NeighborAddressSubTlv &) const;
+};
+void test() {
+ ContainerEntryBase<
+ 0, int,
+ isis_element_tlvs<
+ FixedLengthTlvBase<0, int, 0>, FixedLengthTlvBase<0, int, 0>,
+ IPv4NeighborAddressSubTlv, FixedLengthTlvBase<0, int, 0>,
+ FixedLengthTlvBase<0, int, 0>, FixedLengthTlvBase<0, int, 0>>>
+ isEntry;
+ IPv4NeighborAddressSubTlv nbAddressSubTlv;
+ isEntry.addTlv(nbAddressSubTlv);
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr80334.C b/gcc/testsuite/g++.dg/torture/pr80334.C
new file mode 100644
index 00000000000..aee15487636
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr80334.C
@@ -0,0 +1,18 @@
+// { dg-do run }
+
+struct A { alignas(16) char c; };
+struct B { A unpacked; char d; } __attribute__((packed));
+
+char x;
+
+int
+main()
+{
+ alignas(__BIGGEST_ALIGNMENT__) B b[3];
+ for (int i = 0; i < 3; i++) b[i].unpacked.c = 'a' + i;
+ for (int i = 0; i < 3; i++)
+ {
+ auto a = new A(b[i].unpacked);
+ x = a->c;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/asan/pr80166.c b/gcc/testsuite/gcc.dg/asan/pr80166.c
new file mode 100644
index 00000000000..629dd23a31c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/asan/pr80166.c
@@ -0,0 +1,24 @@
+/* PR sanitizer/80166 */
+/* { dg-do run } */
+
+#include <sys/types.h>
+#include <unistd.h>
+
+int
+main (int argc, char **argv)
+{
+ gid_t groups;
+ int r = getgroups (0, &groups);
+ if (r < 0)
+ __builtin_abort ();
+
+ r = getgroups (-1, &groups);
+ if (r != -1)
+ __builtin_abort ();
+
+ r = getgroups (-1, NULL);
+ if (r != -1)
+ __builtin_abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/pr80167.c b/gcc/testsuite/gcc.dg/graphite/pr80167.c
new file mode 100644
index 00000000000..990450b2ae6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/pr80167.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-nest-optimize" } */
+
+typedef struct
+{
+ short a;
+ short b;
+ short c;
+} d;
+extern d e[];
+int f[8];
+void
+g (d *i)
+{
+ int h = 0;
+ for (; h < 28; h++)
+ e[h].a = e[h].b = i[h].a;
+ h = 0;
+ for (; h < 8; h++)
+ f[h] = i[h].b + i[h].c;
+ h = 0;
+ for (; h < 8; h++)
+ f[h] = i[h].b;
+}
diff --git a/gcc/testsuite/gcc.dg/ipa/pr80104.c b/gcc/testsuite/gcc.dg/ipa/pr80104.c
new file mode 100644
index 00000000000..7e75c9907e7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr80104.c
@@ -0,0 +1,15 @@
+/* PR ipa/80104 */
+/* { dg-do compile } */
+/* { dg-options "-fipa-icf" } */
+
+float
+a (_Complex float b)
+{
+ return *&b;
+}
+
+float
+c (_Complex float b)
+{
+ return (&b)[0];
+}
diff --git a/gcc/testsuite/gcc.dg/pr80492.c b/gcc/testsuite/gcc.dg/pr80492.c
new file mode 100644
index 00000000000..1721b2dee39
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr80492.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-w -O2 -fdump-tree-optimized" } */
+
+static __inline__ __attribute__((__always_inline__))
+void syscall_7 (int val)
+{
+ register int reg __asm ("4") = val;
+ __asm __volatile__ ("/* Some Code %0 */" :: "r" (reg));
+}
+
+void do_syscalls (void)
+{
+ for (int s = 0; s < 2; s++)
+ {
+ syscall_7 (0);
+ syscall_7 (1);
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "reg = " 4 "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr80122.c b/gcc/testsuite/gcc.dg/torture/pr80122.c
new file mode 100644
index 00000000000..a76d756c32e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr80122.c
@@ -0,0 +1,52 @@
+/* { dg-do run } */
+
+#define __GNU_ALWAYS_INLINE inline __attribute__(( __always_inline__))
+
+#define DEVT_ALL 0
+
+#define CMD_ABI_DEVICES 100
+
+static __GNU_ALWAYS_INLINE int
+send_msg_to_gm_w_dev_t(int msg_type, unsigned int dev_msg_type,
+ int devt, ...)
+{
+ char s[256];
+ int nArgs = __builtin_va_arg_pack_len();
+ if (nArgs != 2)
+ __builtin_abort ();
+ __builtin_sprintf (s, "%d", __builtin_va_arg_pack ());
+ if (__builtin_strcmp (s, "99") != 0)
+ __builtin_abort ();
+ /* do something with nArgs and ... */
+ return 0;
+}
+
+static __GNU_ALWAYS_INLINE int
+send_msg_to_gm(int msg_type, unsigned int dev_msg_type,
+ ...)
+{
+ int nArgs = __builtin_va_arg_pack_len();
+ if (nArgs != 2)
+ __builtin_abort ();
+ return send_msg_to_gm_w_dev_t(msg_type, dev_msg_type,
+ DEVT_ALL, __builtin_va_arg_pack());
+}
+
+static __GNU_ALWAYS_INLINE int
+send_enable(unsigned int dev_msg_type, ...)
+{
+ int nArgs = __builtin_va_arg_pack_len();
+ if (nArgs != 2)
+ __builtin_abort ();
+ return send_msg_to_gm(CMD_ABI_DEVICES, dev_msg_type, __builtin_va_arg_pack());
+}
+
+int
+main(void)
+{
+ int mode = 99;
+
+ send_enable(1, mode, sizeof(mode));
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr80362.c b/gcc/testsuite/gcc.dg/torture/pr80362.c
new file mode 100644
index 00000000000..6d22eb040ad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr80362.c
@@ -0,0 +1,10 @@
+/* { dg-do run } */
+/* { dg-additional-options "-fstrict-overflow" } */
+
+int main()
+{
+ signed char var_0, var_1 = -128;
+ var_0 = (signed char)(-var_1) / 3;
+ if (var_0 > 0)
+ __builtin_abort();
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr80539.c b/gcc/testsuite/gcc.dg/torture/pr80539.c
new file mode 100644
index 00000000000..a66767814d3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr80539.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+
+signed char a, b;
+void fn1()
+{
+ signed char c, e;
+ short d;
+ if (0) {
+ for (; d;) {
+l1:
+ for (c = 7; a; c++)
+ ;
+ e = 6;
+ for (; b; e++)
+ ;
+ }
+ c -= e;
+ }
+ if (d == 7)
+ goto l1;
+ a = c;
+}
diff --git a/gcc/testsuite/gcc.dg/ubsan/pr70878.c b/gcc/testsuite/gcc.dg/ubsan/pr70878.c
new file mode 100644
index 00000000000..acd7fb05e4c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ubsan/pr70878.c
@@ -0,0 +1,9 @@
+/* PR sanitizer/80878 */
+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+/* { dg-options "-fsanitize=object-size" } */
+
+void * sbrk ()
+{
+ volatile register unsigned int sp_r1 __asm__ ("ebx");
+ return __builtin_strcat ((char*)sp_r1, 0); /* { dg-warning "cast to pointer from integer of different size" } */
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr80262.c b/gcc/testsuite/gcc.target/i386/pr80262.c
new file mode 100644
index 00000000000..140edfea53c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr80262.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef struct {
+ int v;
+} S1;
+S1 clearS1 () { S1 s1 = { 0 }; return s1; }
+
+typedef struct {
+ S1 s1[4];
+} S2;
+void clearS2 (__seg_gs S2* p, int n) {
+ for (int i = 0; i < n; ++i)
+ p->s1[i] = clearS1 ();
+}
+
+typedef struct {
+ int pad;
+ S2 s2;
+} S3;
+
+long int BASE;
+
+void fn1(int n) {
+ clearS2 (&(((__seg_gs S3*)(BASE))->s2), n);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c b/gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
new file mode 100644
index 00000000000..d9dc641de77
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/p8-vec-xl-xst.c
@@ -0,0 +1,62 @@
+/* { dg-do compile { target { powerpc64le-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+/* { dg-options "-mcpu=power8 -O2" } */
+
+/* Verify fix for problem where vec_xl and vec_xst are not recognized
+ for the vector char and vector short cases on P8 only. */
+
+#include <altivec.h>
+
+vector unsigned char
+foo (unsigned char * address)
+{
+ return __builtin_vec_xl (0, address);
+}
+
+void
+bar (vector unsigned char x, unsigned char * address)
+{
+ __builtin_vec_xst (x, 0, address);
+}
+
+vector unsigned short
+foot (unsigned short * address)
+{
+ return __builtin_vec_xl (0, address);
+}
+
+void
+bart (vector unsigned short x, unsigned short * address)
+{
+ __builtin_vec_xst (x, 0, address);
+}
+
+vector unsigned char
+fool (unsigned char * address)
+{
+ return vec_xl (0, address);
+}
+
+void
+barl (vector unsigned char x, unsigned char * address)
+{
+ vec_xst (x, 0, address);
+}
+
+vector unsigned short
+footle (unsigned short * address)
+{
+ return vec_xl (0, address);
+}
+
+void
+bartle (vector unsigned short x, unsigned short * address)
+{
+ vec_xst (x, 0, address);
+}
+
+/* { dg-final { scan-assembler-times "lxvd2x" 4 } } */
+/* { dg-final { scan-assembler-times "stxvd2x" 4 } } */
+/* { dg-final { scan-assembler-times "xxpermdi" 8 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c b/gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c
new file mode 100644
index 00000000000..bbfd1652e5e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/versioned-copy-loop.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-O3 -fdump-tree-vect-details" } */
+
+/* Verify that a pure copy loop with a vectorization factor of two
+ that requires alignment will not be vectorized. See the cost
+ model hooks in rs6000.c. */
+
+typedef long unsigned int size_t;
+typedef unsigned char uint8_t;
+
+extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
+
+void foo (void *dstPtr, const void *srcPtr, void *dstEnd)
+{
+ uint8_t *d = (uint8_t*)dstPtr;
+ const uint8_t *s = (const uint8_t*)srcPtr;
+ uint8_t* const e = (uint8_t*)dstEnd;
+
+ do
+ {
+ memcpy (d, s, 8);
+ d += 8;
+ s += 8;
+ }
+ while (d < e);
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.target/sparc/niagara7-align.c b/gcc/testsuite/gcc.target/sparc/niagara7-align.c
new file mode 100644
index 00000000000..a46aac17c32
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sparc/niagara7-align.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-falign-functions -mcpu=niagara7" } */
+/* { dg-final { scan-assembler "\.align 64" } } */
+void foo(void) {}
diff --git a/gcc/testsuite/gcc.target/sparc/sparc-ret-3.c b/gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
new file mode 100644
index 00000000000..7a151f80b42
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
@@ -0,0 +1,53 @@
+/* PR target/80968 */
+/* { dg-do compile } */
+/* { dg-skip-if "no register windows" { *-*-* } { "-mflat" } { "" } } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-mcpu=ultrasparc -O" } */
+
+/* Make sure references to the stack frame do not slip into the delay slot
+ of a return instruction. */
+
+struct crypto_shash {
+ unsigned int descsize;
+};
+struct crypto_shash *tfm;
+
+struct shash_desc {
+ struct crypto_shash *tfm;
+ unsigned int flags;
+
+ void *__ctx[] __attribute__((aligned(8)));
+};
+
+static inline unsigned int crypto_shash_descsize(struct crypto_shash *tfm)
+{
+ return tfm->descsize;
+}
+
+static inline void *shash_desc_ctx(struct shash_desc *desc)
+{
+ return desc->__ctx;
+}
+
+#define SHASH_DESC_ON_STACK(shash, ctx) \
+ char __##shash##_desc[sizeof(struct shash_desc) + \
+ crypto_shash_descsize(ctx)] __attribute__((aligned(8))); \
+ struct shash_desc *shash = (struct shash_desc *)__##shash##_desc
+
+extern int crypto_shash_update(struct shash_desc *, const void *, unsigned int);
+
+unsigned int bug(unsigned int crc, const void *address, unsigned int length)
+{
+ SHASH_DESC_ON_STACK(shash, tfm);
+ unsigned int *ctx = (unsigned int *)shash_desc_ctx(shash);
+ int err;
+
+ shash->tfm = tfm;
+ shash->flags = 0;
+ *ctx = crc;
+
+ err = crypto_shash_update(shash, address, length);
+
+ return *ctx;
+}
+/* { dg-final { scan-assembler "ld\[ \t\]*\\\[%i5\\+8\\\], %i0\n\[^\n\]*return\[ \t\]*%i7\\+8" } } */
diff --git a/gcc/testsuite/gfortran.dg/matmul_bounds_12.f90 b/gcc/testsuite/gfortran.dg/matmul_bounds_12.f90
new file mode 100644
index 00000000000..01b3df92c3f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/matmul_bounds_12.f90
@@ -0,0 +1,17 @@
+! { dg-do run }
+program main
+ real, dimension(3,2) :: a
+ real, dimension(3) :: bp
+ real, dimension(3) :: res1
+ real, dimension(:), allocatable :: c3
+ real, dimension(2) :: res2
+
+ data a /-2., 3., -5., 7., -11., 13./
+ data bp /-23., -31., -41./
+ data res2 /158., -353./
+
+ c3 = matmul(bp,a)
+ if (size(c3,1) /= 2) call abort
+ if (any(c3 /= res2)) call abort
+
+end program main
diff --git a/gcc/testsuite/gfortran.dg/pr80752.f90 b/gcc/testsuite/gfortran.dg/pr80752.f90
new file mode 100644
index 00000000000..00a4b33d29a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr80752.f90
@@ -0,0 +1,20 @@
+! { dg-do compile }
+! PR fortran/80752
+module exchange_utils
+
+ implicit none
+
+ integer, parameter, public :: knd = 8
+
+ type, private :: a
+ logical :: add_vs98 = 0.0_knd ! { dg-error "Can't convert" }
+ end type a
+
+ type, private :: x_param_t
+ type(a) :: m05_m06
+ end type x_param_t
+
+ type(x_param_t), public, save :: x_param
+
+end module exchange_utils
+
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f90
new file mode 100644
index 00000000000..d62d8326dd7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_50.f90
@@ -0,0 +1,26 @@
+! { dg-do compile }
+!
+! PR 70601: [5/6/7 Regression] [OOP] ICE on procedure pointer component call
+!
+! Contributed by zmi <zmi007@gmail.com>
+
+program test
+ implicit none
+
+ type :: concrete_type
+ procedure (run_concrete_type), pointer :: run
+ end type
+
+ type(concrete_type), allocatable :: concrete
+
+ allocate(concrete)
+ concrete % run => run_concrete_type
+ call concrete % run()
+
+contains
+
+ subroutine run_concrete_type(this)
+ class(concrete_type) :: this
+ end subroutine
+
+end
diff --git a/gcc/testsuite/gfortran.dg/spread_init_expr_2.f90 b/gcc/testsuite/gfortran.dg/spread_init_expr_2.f90
new file mode 100644
index 00000000000..19c27fadca8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/spread_init_expr_2.f90
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+module bug
+ integer :: ibug(42) = spread(42, 1, 42) ! { dg-error "invalid in an initialization expression" }
+end module
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 92fd529dfa2..c7bec82293a 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1438,6 +1438,14 @@ proc check_effective_target_static_libgfortran { } {
} "-static"]
}
+# Return 1 if we can use the -rdynamic option, 0 otherwise.
+
+proc check_effective_target_rdynamic { } {
+ return [check_no_compiler_messages rdynamic executable {
+ int main() { return 0; }
+ } "-rdynamic"]
+}
+
# Return 1 if cilk-plus is supported by the target, 0 otherwise.
proc check_effective_target_cilkplus { } {
diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index 007243d77d9..456ef901ac6 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -149,7 +149,12 @@ chrec_fold_plus_poly_poly (enum tree_code code,
/* This function should never be called for chrecs of loops that
do not belong to the same loop nest. */
- gcc_assert (loop0 == loop1);
+ if (loop0 != loop1)
+ {
+ /* It still can happen if we are not in loop-closed SSA form. */
+ gcc_assert (! loops_state_satisfies_p (LOOP_CLOSED_SSA));
+ return chrec_dont_know;
+ }
if (code == PLUS_EXPR || code == POINTER_PLUS_EXPR)
{
@@ -211,7 +216,12 @@ chrec_fold_multiply_poly_poly (tree type,
chrec_fold_multiply (type, CHREC_LEFT (poly0), poly1),
CHREC_RIGHT (poly0));
- gcc_assert (loop0 == loop1);
+ if (loop0 != loop1)
+ {
+ /* It still can happen if we are not in loop-closed SSA form. */
+ gcc_assert (! loops_state_satisfies_p (LOOP_CLOSED_SSA));
+ return chrec_dont_know;
+ }
/* poly0 and poly1 are two polynomials in the same variable,
{a, +, b}_x * {c, +, d}_x -> {a*c, +, a*d + b*c + b*d, +, 2*b*d}_x. */
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 9a67565818c..17c0eeeba54 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -2726,9 +2726,9 @@ tree_could_trap_p (tree expr)
an assignment or a conditional) may throw. */
static bool
-stmt_could_throw_1_p (gimple *stmt)
+stmt_could_throw_1_p (gassign *stmt)
{
- enum tree_code code = gimple_expr_code (stmt);
+ enum tree_code code = gimple_assign_rhs_code (stmt);
bool honor_nans = false;
bool honor_snans = false;
bool fp_operation = false;
@@ -2742,11 +2742,8 @@ stmt_could_throw_1_p (gimple *stmt)
|| TREE_CODE_CLASS (code) == tcc_binary
|| code == FMA_EXPR)
{
- if (is_gimple_assign (stmt)
- && TREE_CODE_CLASS (code) == tcc_comparison)
+ if (TREE_CODE_CLASS (code) == tcc_comparison)
t = TREE_TYPE (gimple_assign_rhs1 (stmt));
- else if (gimple_code (stmt) == GIMPLE_COND)
- t = TREE_TYPE (gimple_cond_lhs (stmt));
else
t = gimple_expr_type (stmt);
fp_operation = FLOAT_TYPE_P (t);
@@ -2759,17 +2756,21 @@ stmt_could_throw_1_p (gimple *stmt)
honor_trapv = true;
}
+ /* First check the LHS. */
+ if (tree_could_trap_p (gimple_assign_lhs (stmt)))
+ return true;
+
/* Check if the main expression may trap. */
- t = is_gimple_assign (stmt) ? gimple_assign_rhs2 (stmt) : NULL;
ret = operation_could_trap_helper_p (code, fp_operation, honor_trapv,
- honor_nans, honor_snans, t,
+ honor_nans, honor_snans,
+ gimple_assign_rhs2 (stmt),
&handled);
if (handled)
return ret;
/* If the expression does not trap, see if any of the individual operands may
trap. */
- for (i = 0; i < gimple_num_ops (stmt); i++)
+ for (i = 1; i < gimple_num_ops (stmt); i++)
if (tree_could_trap_p (gimple_op (stmt, i)))
return true;
@@ -2795,11 +2796,22 @@ stmt_could_throw_p (gimple *stmt)
case GIMPLE_CALL:
return !gimple_call_nothrow_p (as_a <gcall *> (stmt));
- case GIMPLE_ASSIGN:
case GIMPLE_COND:
- if (!cfun->can_throw_non_call_exceptions)
+ {
+ if (!cfun->can_throw_non_call_exceptions)
+ return false;
+ gcond *cond = as_a <gcond *> (stmt);
+ tree lhs = gimple_cond_lhs (cond);
+ return operation_could_trap_p (gimple_cond_code (cond),
+ FLOAT_TYPE_P (TREE_TYPE (lhs)),
+ false, NULL_TREE);
+ }
+
+ case GIMPLE_ASSIGN:
+ if (!cfun->can_throw_non_call_exceptions
+ || gimple_clobber_p (stmt))
return false;
- return stmt_could_throw_1_p (stmt);
+ return stmt_could_throw_1_p (as_a <gassign *> (stmt));
case GIMPLE_ASM:
if (!cfun->can_throw_non_call_exceptions)
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index d08a96d3f7b..741f99ed456 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1845,7 +1845,8 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
call_stmt = dyn_cast <gcall *> (stmt);
if (call_stmt
&& gimple_call_va_arg_pack_p (call_stmt)
- && id->call_stmt)
+ && id->call_stmt
+ && ! gimple_call_va_arg_pack_p (id->call_stmt))
{
/* __builtin_va_arg_pack () should be replaced by
all arguments corresponding to ... in the caller. */
@@ -1925,7 +1926,8 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
&& id->call_stmt
&& (decl = gimple_call_fndecl (stmt))
&& DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL
- && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN)
+ && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN
+ && ! gimple_call_va_arg_pack_p (id->call_stmt))
{
/* __builtin_va_arg_pack_len () should be replaced by
the number of anonymous arguments. */
@@ -2338,50 +2340,56 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
{
walk_tree (&new_res, copy_tree_body_r, id, NULL);
new_phi = create_phi_node (new_res, new_bb);
- FOR_EACH_EDGE (new_edge, ei, new_bb->preds)
+ if (EDGE_COUNT (new_bb->preds) == 0)
{
- edge old_edge = find_edge ((basic_block) new_edge->src->aux, bb);
- tree arg;
- tree new_arg;
- edge_iterator ei2;
- location_t locus;
-
- /* When doing partial cloning, we allow PHIs on the entry block
- as long as all the arguments are the same. Find any input
- edge to see argument to copy. */
- if (!old_edge)
- FOR_EACH_EDGE (old_edge, ei2, bb->preds)
- if (!old_edge->src->aux)
- break;
+ /* Technically we'd want a SSA_DEFAULT_DEF here... */
+ SSA_NAME_DEF_STMT (new_res) = gimple_build_nop ();
+ }
+ else
+ FOR_EACH_EDGE (new_edge, ei, new_bb->preds)
+ {
+ edge old_edge = find_edge ((basic_block) new_edge->src->aux, bb);
+ tree arg;
+ tree new_arg;
+ edge_iterator ei2;
+ location_t locus;
+
+ /* When doing partial cloning, we allow PHIs on the entry block
+ as long as all the arguments are the same. Find any input
+ edge to see argument to copy. */
+ if (!old_edge)
+ FOR_EACH_EDGE (old_edge, ei2, bb->preds)
+ if (!old_edge->src->aux)
+ break;
- arg = PHI_ARG_DEF_FROM_EDGE (phi, old_edge);
- new_arg = arg;
- walk_tree (&new_arg, copy_tree_body_r, id, NULL);
- gcc_assert (new_arg);
- /* With return slot optimization we can end up with
- non-gimple (foo *)&this->m, fix that here. */
- if (TREE_CODE (new_arg) != SSA_NAME
- && TREE_CODE (new_arg) != FUNCTION_DECL
- && !is_gimple_val (new_arg))
- {
- gimple_seq stmts = NULL;
- new_arg = force_gimple_operand (new_arg, &stmts, true, NULL);
- gsi_insert_seq_on_edge (new_edge, stmts);
- inserted = true;
- }
- locus = gimple_phi_arg_location_from_edge (phi, old_edge);
- if (LOCATION_BLOCK (locus))
- {
- tree *n;
- n = id->decl_map->get (LOCATION_BLOCK (locus));
- gcc_assert (n);
- locus = set_block (locus, *n);
- }
- else
- locus = LOCATION_LOCUS (locus);
+ arg = PHI_ARG_DEF_FROM_EDGE (phi, old_edge);
+ new_arg = arg;
+ walk_tree (&new_arg, copy_tree_body_r, id, NULL);
+ gcc_assert (new_arg);
+ /* With return slot optimization we can end up with
+ non-gimple (foo *)&this->m, fix that here. */
+ if (TREE_CODE (new_arg) != SSA_NAME
+ && TREE_CODE (new_arg) != FUNCTION_DECL
+ && !is_gimple_val (new_arg))
+ {
+ gimple_seq stmts = NULL;
+ new_arg = force_gimple_operand (new_arg, &stmts, true, NULL);
+ gsi_insert_seq_on_edge (new_edge, stmts);
+ inserted = true;
+ }
+ locus = gimple_phi_arg_location_from_edge (phi, old_edge);
+ if (LOCATION_BLOCK (locus))
+ {
+ tree *n;
+ n = id->decl_map->get (LOCATION_BLOCK (locus));
+ gcc_assert (n);
+ locus = set_block (locus, *n);
+ }
+ else
+ locus = LOCATION_LOCUS (locus);
- add_phi_arg (new_phi, new_arg, new_edge, locus);
- }
+ add_phi_arg (new_phi, new_arg, new_edge, locus);
+ }
}
}
@@ -4538,7 +4546,7 @@ expand_call_inline (basic_block bb, gimple *stmt, copy_body_data *id)
id->src_fn = fn;
id->src_node = cg_edge->callee;
id->src_cfun = DECL_STRUCT_FUNCTION (fn);
- id->call_stmt = stmt;
+ id->call_stmt = call_stmt;
/* If the src function contains an IFN_VA_ARG, then so will the dst
function after inlining. */
diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h
index 9ca2a91f08f..66793466678 100644
--- a/gcc/tree-inline.h
+++ b/gcc/tree-inline.h
@@ -81,7 +81,7 @@ struct copy_body_data
/* GIMPLE_CALL if va arg parameter packs should be expanded or NULL
is not. */
- gimple *call_stmt;
+ gcall *call_stmt;
/* Exception landing pad the inlined call lies in. */
int eh_lp_nr;
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 2808875e4be..51266746dcd 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1638,6 +1638,13 @@ build_ref_for_offset (location_t loc, tree base, HOST_WIDE_INT offset,
unsigned HOST_WIDE_INT misalign;
unsigned int align;
+ /* Preserve address-space information. */
+ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (base));
+ if (as != TYPE_ADDR_SPACE (exp_type))
+ exp_type = build_qualified_type (exp_type,
+ TYPE_QUALS (exp_type)
+ | ENCODE_QUAL_ADDR_SPACE (as));
+
gcc_checking_assert (offset % BITS_PER_UNIT == 0);
get_object_alignment_1 (base, &align, &misalign);
base = get_addr_base_and_unit_offset (base, &base_offset);
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index a016e9f64c4..a04e8ded2c5 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -7321,7 +7321,11 @@ rewrite_use_address_1 (struct ivopts_data *data,
base_hint = var_at_stmt (data->current_loop, cand, use->stmt);
iv = var_at_stmt (data->current_loop, cand, use->stmt);
- ref = create_mem_ref (&bsi, TREE_TYPE (*use->op_p), &aff,
+ tree type = TREE_TYPE (*use->op_p);
+ unsigned int align = get_object_alignment (*use->op_p);
+ if (align != TYPE_ALIGN (type))
+ type = build_aligned_type (type, align);
+ ref = create_mem_ref (&bsi, type, &aff,
reference_alias_ptr_type (*use->op_p),
iv, base_hint, data->speed);
copy_ref_info (ref, *use->op_p);
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 2e5b15432a0..0155e1d17dc 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -1224,8 +1224,8 @@ vn_reference_maybe_forwprop_address (vec<vn_reference_op_s> *ops,
&& tem[tem.length () - 2].opcode == MEM_REF)
{
vn_reference_op_t new_mem_op = &tem[tem.length () - 2];
- new_mem_op->op0 = fold_convert (TREE_TYPE (mem_op->op0),
- new_mem_op->op0);
+ new_mem_op->op0 = wide_int_to_tree (TREE_TYPE (mem_op->op0),
+ new_mem_op->op0);
}
else
gcc_assert (tem.last ().opcode == STRING_CST);
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 091a20ebaf8..96efc933f38 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -765,7 +765,7 @@ vect_compute_data_ref_alignment (struct data_reference *dr)
base = ref;
while (handled_component_p (base))
base = TREE_OPERAND (base, 0);
- unsigned int base_alignment;
+ unsigned int base_alignment = 0;
unsigned HOST_WIDE_INT base_bitpos;
get_object_alignment_1 (base, &base_alignment, &base_bitpos);
/* As data-ref analysis strips the MEM_REF down to its base operand
@@ -774,8 +774,17 @@ vect_compute_data_ref_alignment (struct data_reference *dr)
DR_BASE_ADDRESS. */
if (TREE_CODE (base) == MEM_REF)
{
- base_bitpos -= mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
- base_bitpos &= (base_alignment - 1);
+ /* Note all this only works if DR_BASE_ADDRESS is the same as
+ MEM_REF operand zero, otherwise DR/SCEV analysis might have factored
+ in other offsets. We need to rework DR to compute the alingment
+ of DR_BASE_ADDRESS as long as all information is still available. */
+ if (operand_equal_p (TREE_OPERAND (base, 0), base_addr, 0))
+ {
+ base_bitpos -= mem_ref_offset (base).to_short_addr () * BITS_PER_UNIT;
+ base_bitpos &= (base_alignment - 1);
+ }
+ else
+ base_bitpos = BITS_PER_UNIT;
}
if (base_bitpos != 0)
base_alignment = base_bitpos & -base_bitpos;
diff --git a/gcc/ubsan.c b/gcc/ubsan.c
index edaecd6a2cb..ff8a52e3ecc 100644
--- a/gcc/ubsan.c
+++ b/gcc/ubsan.c
@@ -1794,7 +1794,11 @@ instrument_object_size (gimple_stmt_iterator *gsi, bool is_lhs)
bool decl_p = DECL_P (inner);
tree base;
if (decl_p)
- base = inner;
+ {
+ if (DECL_REGISTER (inner))
+ return;
+ base = inner;
+ }
else if (TREE_CODE (inner) == MEM_REF)
base = TREE_OPERAND (inner, 0);
else
diff --git a/libada/ChangeLog b/libada/ChangeLog
index 4c642ccce09..adb2f0b2e07 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,10 @@
+2017-06-01 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/80921
+ * configure.ac (default_gnatlib_target): Remove bogus condition.
+ (have_getipinfo): Tweak.
+ * configure: Regenerate.
+
2016-12-21 Release Manager
* GCC 6.3.0 released.
diff --git a/libada/configure b/libada/configure
index 2296096d4d2..e8e0c276135 100755
--- a/libada/configure
+++ b/libada/configure
@@ -2956,9 +2956,7 @@ fi
# Determine what to build for 'gnatlib'
-if test $build = $target \
- && test ${enable_shared} = yes ; then
- # Note that build=target is almost certainly the wrong test; FIXME
+if test ${enable_shared} = yes; then
default_gnatlib_target="gnatlib-shared"
else
default_gnatlib_target="gnatlib-plain"
@@ -3002,9 +3000,10 @@ $as_echo "#define HAVE_GETIPINFO 1" >>confdefs.h
fi
-have_getipinfo=
if test x$have_unwind_getipinfo = xyes; then
have_getipinfo=-DHAVE_GETIPINFO
+else
+ have_getipinfo=
fi
diff --git a/libada/configure.ac b/libada/configure.ac
index 04e06fe2821..3a38c9fd3ec 100644
--- a/libada/configure.ac
+++ b/libada/configure.ac
@@ -127,9 +127,7 @@ AC_PROG_AWK
AC_PROG_LN_S
# Determine what to build for 'gnatlib'
-if test $build = $target \
- && test ${enable_shared} = yes ; then
- # Note that build=target is almost certainly the wrong test; FIXME
+if test ${enable_shared} = yes; then
default_gnatlib_target="gnatlib-shared"
else
default_gnatlib_target="gnatlib-plain"
@@ -138,11 +136,12 @@ AC_SUBST([default_gnatlib_target])
# Check for _Unwind_GetIPInfo
GCC_CHECK_UNWIND_GETIPINFO
-have_getipinfo=
if test x$have_unwind_getipinfo = xyes; then
have_getipinfo=-DHAVE_GETIPINFO
+else
+ have_getipinfo=
fi
-AC_SUBST(have_getipinfo)
+AC_SUBST([have_getipinfo])
# Output: create a Makefile.
AC_CONFIG_FILES([Makefile])
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index ed2b8dd6ed4..8671b75a837 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,52 @@
+2017-05-30 Max Filippov <jcmvbkbc@gmail.com>
+
+ Backport from mainline
+ 2016-10-18 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/t-elf (LIB2ADDEH_XTENSA_UNWIND_DW2_FDE): New
+ definition.
+ * config/xtensa/t-linux (LIB2ADDEH_XTENSA_UNWIND_DW2_FDE): New
+ definition.
+ * config/xtensa/t-windowed (LIB2ADDEH): Use
+ LIB2ADDEH_XTENSA_UNWIND_DW2_FDE defined by either xtensa/t-elf
+ or xtensa/t-linux.
+
+2017-05-26 Richard Henderson <rth@redhat.com>
+
+ Backport from mainline
+ PR libgcc/80037
+ * config/alpha/t-alpha (CRTSTUFF_T_CFLAGS): New.
+
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-18 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/78783
+ * libgcov-driver.c (gcov_get_filename): New function.
+
+2017-05-19 Andreas Tobler <andreast@gcc.gnu.org>
+
+ Backport from mainline
+ 2017-05-17 Andreas Tobler <andreast@gcc.gnu.org>
+
+ * config/arm/unwind-arm.h: Make _Unwind_GetIP, _Unwind_GetIPInfo and
+ _Unwind_SetIP available as functions for arm*-*-freebsd*.
+ * config/arm/unwind-arm.c: Implement the above.
+
+2017-05-15 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * config/sparc/lb1spc.S [__ELF__ && __linux__]: Emit .note.GNU-stack
+ section for a non-executable stack.
+
+2017-05-10 Andreas Tobler <andreast@gcc.gnu.org>
+
+ Backport from mainline
+ 2017-05-09 Andreas Tobler <andreast@gcc.gnu.org>
+
+ * config.host: Use the generic FreeBSD t-slibgcc-elf-ver for
+ arm*-*-freebsd* instead of the t-slibgcc-libgcc.
+
2017-04-07 Alan Modra <amodra@gmail.com>
PR target/45053
diff --git a/libgcc/config.host b/libgcc/config.host
index 1a0884f79f0..d16960c1f25 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -383,7 +383,7 @@ arm-wrs-vxworks)
;;
arm*-*-freebsd*) # ARM FreeBSD EABI
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix arm/t-elf"
- tmake_file="${tmake_file} arm/t-bpabi arm/t-freebsd t-slibgcc-libgcc"
+ tmake_file="${tmake_file} arm/t-bpabi arm/t-freebsd"
tm_file="${tm_file} arm/bpabi-lib.h"
unwind_header=config/arm/unwind-arm.h
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
diff --git a/libgcc/config/alpha/t-alpha b/libgcc/config/alpha/t-alpha
index 0b6ffb1ba34..0c2f8405c93 100644
--- a/libgcc/config/alpha/t-alpha
+++ b/libgcc/config/alpha/t-alpha
@@ -1,2 +1,6 @@
# This is a support routine for longlong.h, used by libgcc2.c.
LIB2ADD += $(srcdir)/config/alpha/qrnnd.S
+
+# When GAS-generated unwind tables are created, they get created
+# after the __FRAME_END__ terminator, which causes an ld error.
+CRTSTUFF_T_CFLAGS = -fno-unwind-tables
diff --git a/libgcc/config/arm/unwind-arm.c b/libgcc/config/arm/unwind-arm.c
index 7e2c0d575ca..6ccd8c18ab9 100644
--- a/libgcc/config/arm/unwind-arm.c
+++ b/libgcc/config/arm/unwind-arm.c
@@ -509,3 +509,25 @@ __aeabi_unwind_cpp_pr2 (_Unwind_State state,
{
return __gnu_unwind_pr_common (state, ucbp, context, 2);
}
+
+#ifdef __FreeBSD__
+/* FreeBSD expects these to be functions */
+inline _Unwind_Ptr
+_Unwind_GetIP (struct _Unwind_Context *context)
+{
+ return _Unwind_GetGR (context, 15) & ~(_Unwind_Word)1;
+}
+
+inline _Unwind_Ptr
+_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
+{
+ *ip_before_insn = 0;
+ return _Unwind_GetIP (context);
+}
+
+inline void
+_Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
+{
+ _Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1));
+}
+#endif
diff --git a/libgcc/config/arm/unwind-arm.h b/libgcc/config/arm/unwind-arm.h
index d67383fb10c..5250d0c9392 100644
--- a/libgcc/config/arm/unwind-arm.h
+++ b/libgcc/config/arm/unwind-arm.h
@@ -72,12 +72,19 @@ extern "C" {
{
return _URC_FAILURE;
}
+#ifndef __FreeBSD__
/* Return the address of the instruction, not the actual IP value. */
#define _Unwind_GetIP(context) \
(_Unwind_GetGR (context, 15) & ~(_Unwind_Word)1)
#define _Unwind_SetIP(context, val) \
_Unwind_SetGR (context, 15, val | (_Unwind_GetGR (context, 15) & 1))
+#else
+ #undef _Unwind_GetIPInfo
+ _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
+ _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *);
+ void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
+#endif
#ifdef __cplusplus
} /* extern "C" */
diff --git a/libgcc/config/sparc/lb1spc.S b/libgcc/config/sparc/lb1spc.S
index b60bd5740e7..e6938646404 100644
--- a/libgcc/config/sparc/lb1spc.S
+++ b/libgcc/config/sparc/lb1spc.S
@@ -5,6 +5,12 @@
slightly edited to match the desired calling convention, and also to
optimize them for our purposes. */
+/* An executable stack is *not* required for these functions. */
+#if defined(__ELF__) && defined(__linux__)
+.section .note.GNU-stack,"",%progbits
+.previous
+#endif
+
#ifdef L_mulsi3
.text
.align 4
diff --git a/libgcc/config/xtensa/t-elf b/libgcc/config/xtensa/t-elf
index 59d51210b95..967cf9bfa6c 100644
--- a/libgcc/config/xtensa/t-elf
+++ b/libgcc/config/xtensa/t-elf
@@ -3,3 +3,5 @@ CRTSTUFF_T_CFLAGS += -mlongcalls
CRTSTUFF_T_CFLAGS_S += -mlongcalls
HOST_LIBGCC2_CFLAGS += -mlongcalls
+
+LIB2ADDEH_XTENSA_UNWIND_DW2_FDE = $(srcdir)/unwind-dw2-fde.c
diff --git a/libgcc/config/xtensa/t-linux b/libgcc/config/xtensa/t-linux
index 6f4ae893486..412eccae18b 100644
--- a/libgcc/config/xtensa/t-linux
+++ b/libgcc/config/xtensa/t-linux
@@ -1 +1,3 @@
SHLIB_MAPFILES += $(srcdir)/config/xtensa/libgcc-glibc.ver
+
+LIB2ADDEH_XTENSA_UNWIND_DW2_FDE = $(srcdir)/unwind-dw2-fde-dip.c
diff --git a/libgcc/config/xtensa/t-windowed b/libgcc/config/xtensa/t-windowed
index a99156cc217..f140136277e 100644
--- a/libgcc/config/xtensa/t-windowed
+++ b/libgcc/config/xtensa/t-windowed
@@ -1,2 +1,2 @@
LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \
- $(srcdir)/unwind-dw2-fde-dip.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+ $(LIB2ADDEH_XTENSA_UNWIND_DW2_FDE) $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
diff --git a/libgcc/libgcov-driver.c b/libgcc/libgcov-driver.c
index 9c4eeca0163..ff1a3d656b3 100644
--- a/libgcc/libgcov-driver.c
+++ b/libgcc/libgcov-driver.c
@@ -848,6 +848,15 @@ gcov_do_dump (struct gcov_info *list, int run_counted)
free (gf.filename);
}
+#if IN_GCOV_TOOL
+const char *
+__attribute__ ((unused))
+gcov_get_filename (struct gcov_info *list)
+{
+ return list->filename;
+}
+#endif
+
#if !IN_GCOV_TOOL
void
__gcov_dump_one (struct gcov_root *root)
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 518210d0447..335942827f2 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,11 @@
+2017-05-19 Janne Blomqvist <jb@gcc.gnu.org>
+
+ Backport from trunk
+ * libgfortran.h: HAVE_SECURE_GETENV: Don't check
+ HAVE___SECURE_GETENV.
+ * environ/runtime.c (secure_getenv): Use __secure_getenv via a
+ weak reference.
+
2017-01-31 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/79305
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index 79f0d61c8e5..ef88eee4ada 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -801,9 +801,7 @@ internal_proto(get_unformatted_convert);
/* Secure getenv() which returns NULL if running as SUID/SGID. */
#ifndef HAVE_SECURE_GETENV
-#ifdef HAVE___SECURE_GETENV
-#define secure_getenv __secure_getenv
-#elif defined(HAVE_GETUID) && defined(HAVE_GETEUID) \
+#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) \
&& defined(HAVE_GETGID) && defined(HAVE_GETEGID)
#define FALLBACK_SECURE_GETENV
extern char *secure_getenv (const char *);
diff --git a/libgfortran/runtime/environ.c b/libgfortran/runtime/environ.c
index 07c6351a8d9..c44542afa02 100644
--- a/libgfortran/runtime/environ.c
+++ b/libgfortran/runtime/environ.c
@@ -37,9 +37,20 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
provided. */
#ifdef FALLBACK_SECURE_GETENV
+
+#if SUPPORTS_WEAKREF && defined(HAVE___SECURE_GETENV)
+static char* weak_secure_getenv (const char*)
+ __attribute__((__weakref__("__secure_getenv")));
+#endif
+
char *
secure_getenv (const char *name)
{
+#if SUPPORTS_WEAKREF && defined(HAVE___SECURE_GETENV)
+ if (weak_secure_getenv)
+ return weak_secure_getenv (name);
+#endif
+
if ((getuid () == geteuid ()) && (getgid () == getegid ()))
return getenv (name);
else
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog
index 3d116719924..1d94670150f 100644
--- a/libsanitizer/ChangeLog
+++ b/libsanitizer/ChangeLog
@@ -1,3 +1,12 @@
+2017-05-26 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-04-06 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/80166
+ * sanitizer_common/sanitizer_common_interceptors.inc (INTERCEPTOR):
+ Cherry-pick upstream r299036.
+
2017-02-17 Andreas Tobler <andreast@gcc.gnu.org>
Backported from mainline
diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
index 8223778cac4..4aab652f536 100644
--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
@@ -3053,7 +3053,8 @@ INTERCEPTOR(int, getgroups, int size, u32 *lst) {
// its metadata. See
// https://code.google.com/p/address-sanitizer/issues/detail?id=321.
int res = REAL(getgroups)(size, lst);
- if (res && lst) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, lst, res * sizeof(*lst));
+ if (res >= 0 && lst && size > 0)
+ COMMON_INTERCEPTOR_WRITE_RANGE(ctx, lst, res * sizeof(*lst));
return res;
}
#define INIT_GETGROUPS COMMON_INTERCEPT_FUNCTION(getgroups);
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 165d3a2ec1d..1287ffdd06d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,7 +1,326 @@
+2017-06-07 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/81002
+ * include/bits/regex_compiler.h (__compile_nfa): Add template argument
+ list to specify traits type.
+ * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New.
+
+2017-05-26 Jonathan Wakely <jwakely@redhat.com>
+
+ Backport from mainline
+ 2017-01-20 Joe Seymour <joe.s@somniumtech.com>
+
+ * acinclude.m4 (GLIBCXX_CHECK_SIZE_T_MANGLING): Support uint20_t.
+ * configure: Regenerate.
+
+ Backport from mainline
+ 2016-12-06 Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
+
+ * src/c++11/cow-stdexcept.cc: Add special case for 16 bit pointers.
+
+2017-05-18 Jonathan Wakely <jwakely@redhat.com>
+
+ Backport from mainline
+ 2016-08-02 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/
+ check_value.cc: Do not add special functions to namespace std in TR1
+ test.
+
+ Backport from mainline
+ 2016-08-02 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/ext/special_functions/conf_hyperg/check_nan.cc: Only
+ run for C++11 and later.
+ * testsuite/ext/special_functions/conf_hyperg/check_value.cc:
+ Likewise.
+ * testsuite/ext/special_functions/conf_hyperg/compile.cc: Likewise.
+ * testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
+ * testsuite/ext/special_functions/hyperg/check_value.cc: Likewise.
+ * testsuite/ext/special_functions/hyperg/compile.cc: Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
+ Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/compile.cc: Likewise.
+ * testsuite/special_functions/01_assoc_laguerre/compile_2.cc:
+ Likewise.
+ * testsuite/special_functions/02_assoc_legendre/check_nan.cc:
+ Likewise.
+ * testsuite/special_functions/02_assoc_legendre/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/02_assoc_legendre/compile.cc: Likewise.
+ * testsuite/special_functions/02_assoc_legendre/compile_2.cc:
+ * testsuite/special_functions/03_beta/check_nan.cc: Likewise.
+ * testsuite/special_functions/03_beta/check_value.cc: Likewise.
+ * testsuite/special_functions/03_beta/compile.cc: Likewise.
+ * testsuite/special_functions/03_beta/compile_2.cc: Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/check_nan.cc: Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/compile.cc: Likewise.
+ * testsuite/special_functions/04_comp_ellint_1/compile_2.cc: Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/check_nan.cc: Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/compile.cc: Likewise.
+ * testsuite/special_functions/05_comp_ellint_2/compile_2.cc: Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/check_nan.cc: Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/compile.cc: Likewise.
+ * testsuite/special_functions/06_comp_ellint_3/compile_2.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/compile.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/compile_2.cc: Likewise.
+ * testsuite/special_functions/07_cyl_bessel_i/pr56216.cc: Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc: Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/compile.cc: Likewise.
+ * testsuite/special_functions/08_cyl_bessel_j/compile_2.cc: Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc: Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/compile.cc: Likewise.
+ * testsuite/special_functions/09_cyl_bessel_k/compile_2.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/check_nan.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/check_value.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/compile.cc: Likewise.
+ * testsuite/special_functions/10_cyl_neumann/compile_2.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/check_value.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/compile.cc: Likewise.
+ * testsuite/special_functions/11_ellint_1/compile_2.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/check_value.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/compile.cc: Likewise.
+ * testsuite/special_functions/12_ellint_2/compile_2.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/check_value.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/compile.cc: Likewise.
+ * testsuite/special_functions/13_ellint_3/compile_2.cc: Likewise.
+ * testsuite/special_functions/14_expint/check_nan.cc: Likewise.
+ * testsuite/special_functions/14_expint/check_value.cc: Likewise.
+ * testsuite/special_functions/14_expint/compile.cc: Likewise.
+ * testsuite/special_functions/14_expint/compile_2.cc: Likewise.
+ * testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
+ * testsuite/special_functions/15_hermite/check_value.cc: Likewise.
+ * testsuite/special_functions/15_hermite/compile.cc: Likewise.
+ * testsuite/special_functions/15_hermite/compile_2.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/check_value.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/compile.cc: Likewise.
+ * testsuite/special_functions/16_laguerre/compile_2.cc: Likewise.
+ * testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
+ * testsuite/special_functions/17_legendre/check_value.cc: Likewise.
+ * testsuite/special_functions/17_legendre/compile.cc: Likewise.
+ * testsuite/special_functions/17_legendre/compile_2.cc: Likewise.
+ * testsuite/special_functions/18_riemann_zeta/check_nan.cc: Likewise.
+ * testsuite/special_functions/18_riemann_zeta/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/18_riemann_zeta/compile.cc: Likewise.
+ * testsuite/special_functions/18_riemann_zeta/compile_2.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/check_nan.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/check_value.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/compile.cc: Likewise.
+ * testsuite/special_functions/19_sph_bessel/compile_2.cc: Likewise.
+ * testsuite/special_functions/20_sph_legendre/check_nan.cc: Likewise.
+ * testsuite/special_functions/20_sph_legendre/check_value.cc:
+ Likewise.
+ * testsuite/special_functions/20_sph_legendre/compile.cc: Likewise.
+ * testsuite/special_functions/20_sph_legendre/compile_2.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/check_nan.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/check_value.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/compile.cc: Likewise.
+ * testsuite/special_functions/21_sph_neumann/compile_2.cc: Likewise.
+
+ Backport from mainline
+ 2016-07-31 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Adjust dg-prune-output pattern for error in C++98 mode.
+
+ Backport from mainline
+ 2016-07-28 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
+ Adjust dg-prune-output pattern for error in C++98 mode.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/list/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_1_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/
+ constructor_2_neg.cc: Likewise.
+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+
+ Backport from mainline
+ 2016-08-01 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: Use
+ C++98-compatible initialization for array.
+
+ Backport from mainline
+ 2016-08-01 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc:
+ Limit test to C++11 and later.
+
+ Backport from mainline
+ 2016-08-17 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/20_util/tuple/67844.cc: Require c++11 effective target.
+ * testsuite/20_util/tuple/cons/nested_tuple_construct.cc: Likewise.
+ * testsuite/27_io/rvalue_streams.cc: Likewise.
+
+ Backport from mainline
+ 2016-08-02 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/18_support/bad_exception/23591_thread-1.c: Skip test if
+ options are present that aren't valid for C.
+ * testsuite/abi/header_cxxabi.c: Likewise.
+
+ Backport from mainline
+ 2016-04-18 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/experimental/memory_resource/null_memory_resource.cc:
+ Don't include internal header.
+ * testsuite/experimental/type_erased_allocator/2.cc: Likewise.
+ * testsuite/experimental/type_erased_allocator/uses_allocator.cc:
+ Likewise. Add licence and change to compile-only test.
+
+ Backport from mainline
+ 2016-08-01 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Make test
+ supported for C++11 and later.
+ * testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise.
+ * testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise.
+
+ Backport from mainline
+ 2017-03-23 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/23_containers/list/operations/78389.cc: Fix for C++11
+ mode. Fix less-than to define a valid strict weak ordering.
+
+ Backport from mainline
+ 2017-04-24 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/80504
+ * include/std/functional (ref, cref): Qualify calls.
+ * testsuite/20_util/reference_wrapper/80504.cc: New test.
+
+ Backport from mainline
+ 2017-04-24 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/80493
+ * include/experimental/optional (optional::swap): Fix exception
+ specification.
+
+ Backport from mainline
+ 2017-04-19 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/80448
+ * include/experimental/bits/fs_dir.h (directory_iterator)
+ (recursive_directory_iterator): Remove noexcept from defaulted
+ constructors.
+
+ Backport from mainline
+ 2017-04-03 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests
+ that no longer fail.
+
+ Backport from mainline
+ 2017-04-03 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/ios_base.h: Correct comment.
+ * testsuite/util/testsuite_hooks.h: Likewise.
+
+ Backport from mainline
+ 2017-03-28 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/80137
+ * include/bits/random.tcc (generate_canonical): Use std::nextafter
+ or numeric_limits::epsilon() to reduce out-of-range values.
+ * testsuite/26_numerics/random/uniform_real_distribution/operators/
+ 64351.cc: Verify complexity requirement is met.
+
+ Backport from mainline
+ 2017-03-16 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/67440
+ * python/libstdcxx/v6/printers.py (find_type): Avoid gdb.Type.name
+ for GDB 7.6 compatibility, use gdb.Type.unqualified instead.
+
+ Backport from mainline
+ 2017-01-17 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/69699
+ * doc/xml/manual/abi.xml (abi.versioning.history): Explain why the
+ _GLIBCXX__ macro is not useful. Remove redundant date information
+ and link to the GCC release timeline.
+ (abi.versioning.active): Move partial sentence into the previous
+ paragraph.
+ * doc/html/*: Regenerate.
+
+ * doc/xml/manual/abi.xml: Document libstdc++.so.6.0.22 version.
+
+ Backport from mainline
+ 2016-12-21 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/71444
+ * config/os/mingw32-w64/error_constants.h
+ (address_family_not_supported, address_in_use, address_not_available)
+ (already_connected, connection_aborted, connection_already_in_progress)
+ connection_refused, connection_reset, cross_device_link)
+ (destination_address_required, host_unreachable, message_size)
+ (network_down, network_reset, network_unreachable, no_buffer_space)
+ (no_protocol_option, not_a_socket, not_connected, operation_canceled)
+ (operation_in_progress, operation_not_supported, protocol_error)
+ (protocol_not_supported, too_many_links, too_many_symbolic_link_levels)
+ (value_too_large, wrong_protocol_type): Define.
+ (bad_message, identifier_removed, no_link, no_message_available)
+ (no_message, no_stream_resources, not_a_stream, owner_dead)
+ (state_not_recoverable, stream_timeout, text_file_busy): Define
+ conditionally.
+ * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
+ Guard test for no_message with _GLIBCXX_HAVE_ENOMSG.
+
+ Backport from mainline
+ 2016-11-09 Tim Shen <timshen@google.com>
+
+ PR libstdc++/78236
+ * libstdc++-v3/include/bits/regex.h (regex_iterator::regex_iterator()):
+ Define end() as _M_pregex == nullptr.
+ * libstdc++-v3/include/bits/regex.tcc (regex_iterator::operator==(),
+ regex_iterator::operator++()): Fix operator==() and operator++() to
+ look at null-ness of _M_pregex on both sides.
+ * testsuite/28_regex/regression.cc: New testcase.
+
+2017-05-18 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/libstdc++-prettyprinters/59161.cc: Fix for C++98 mode.
+
2017-04-03 Ville Voutilainen <ville.voutilainen@gmail.com>
Backport from mainline
- 2017-04-03 Ville Voutilainen <ville.voutilainen@gmail.com>
+ 2017-04-03 Ville Voutilainen <ville.voutilainen@gmail.com>
PR libstdc++/79141
* include/bits/stl_pair.h (__nonesuch_no_braces): New.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 42bd5724b0b..a86360f13a0 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -4468,8 +4468,12 @@ AC_DEFUN([GLIBCXX_CHECK_SIZE_T_MANGLING], [
[glibcxx_cv_size_t_mangling=y], [
AC_TRY_COMPILE([],
[extern __SIZE_TYPE__ x; extern unsigned short x;],
- [glibcxx_cv_size_t_mangling=t],
- [glibcxx_cv_size_t_mangling=x])
+ [glibcxx_cv_size_t_mangling=t], [
+ AC_TRY_COMPILE([],
+ [extern __SIZE_TYPE__ x; extern __int20 unsigned x;],
+ [glibcxx_cv_size_t_mangling=u6uint20],
+ [glibcxx_cv_size_t_mangling=x])
+ ])
])
])
])
diff --git a/libstdc++-v3/config/os/mingw32-w64/error_constants.h b/libstdc++-v3/config/os/mingw32-w64/error_constants.h
index 5cbf63cfe7f..f1003738ff7 100644
--- a/libstdc++-v3/config/os/mingw32-w64/error_constants.h
+++ b/libstdc++-v3/config/os/mingw32-w64/error_constants.h
@@ -41,22 +41,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// replaced by Winsock WSA-prefixed equivalents.
enum class errc
{
-// address_family_not_supported = EAFNOSUPPORT,
-// address_in_use = EADDRINUSE,
-// address_not_available = EADDRNOTAVAIL,
-// already_connected = EISCONN,
+ address_family_not_supported = EAFNOSUPPORT,
+ address_in_use = EADDRINUSE,
+ address_not_available = EADDRNOTAVAIL,
+ already_connected = EISCONN,
argument_list_too_long = E2BIG,
argument_out_of_domain = EDOM,
bad_address = EFAULT,
bad_file_descriptor = EBADF,
-// bad_message = EBADMSG,
+#ifdef _GLIBCXX_HAVE_EBADMSG
+ bad_message = EBADMSG,
+#endif
broken_pipe = EPIPE,
-// connection_aborted = ECONNABORTED,
-// connection_already_in_progress = EALREADY,
-// connection_refused = ECONNREFUSED,
-// connection_reset = ECONNRESET,
-// cross_device_link = EXDEV,
-// destination_address_required = EDESTADDRREQ,
+ connection_aborted = ECONNABORTED,
+ connection_already_in_progress = EALREADY,
+ connection_refused = ECONNREFUSED,
+ connection_reset = ECONNRESET,
+ cross_device_link = EXDEV,
+ destination_address_required = EDESTADDRREQ,
device_or_resource_busy = EBUSY,
directory_not_empty = ENOTEMPTY,
executable_format_error = ENOEXEC,
@@ -64,8 +66,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
file_too_large = EFBIG,
filename_too_long = ENAMETOOLONG,
function_not_supported = ENOSYS,
-// host_unreachable = EHOSTUNREACH,
-// identifier_removed = EIDRM,
+ host_unreachable = EHOSTUNREACH,
+#ifdef _GLIBCXX_HAVE_EIDRM
+ identifier_removed = EIDRM,
+#endif
illegal_byte_sequence = EILSEQ,
inappropriate_io_control_operation = ENOTTY,
interrupted = EINTR,
@@ -73,67 +77,84 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
invalid_seek = ESPIPE,
io_error = EIO,
is_a_directory = EISDIR,
-// message_size = EMSGSIZE,
-// network_down = ENETDOWN,
-// network_reset = ENETRESET,
-// network_unreachable = ENETUNREACH,
-// no_buffer_space = ENOBUFS,
+ message_size = EMSGSIZE,
+ network_down = ENETDOWN,
+ network_reset = ENETRESET,
+ network_unreachable = ENETUNREACH,
+ no_buffer_space = ENOBUFS,
#ifdef _GLIBCXX_HAVE_ECHILD
no_child_process = ECHILD,
#endif
-// no_link = ENOLINK,
+#ifdef _GLIBCXX_HAVE_ENOLINK
+ no_link = ENOLINK,
+#endif
no_lock_available = ENOLCK,
-// no_message_available = ENODATA,
-// no_message = ENOMSG,
-// no_protocol_option = ENOPROTOOPT,
+#ifdef _GLIBCXX_HAVE_ENODATA
+ no_message_available = ENODATA,
+#endif
+#ifdef _GLIBCXX_HAVE_ENOMSG
+ no_message = ENOMSG,
+#endif
+ no_protocol_option = ENOPROTOOPT,
#ifdef _GLIBCXX_HAVE_ENOSPC
no_space_on_device = ENOSPC,
#endif
-// no_stream_resources = ENOSR,
+#ifdef _GLIBCXX_HAVE_ENOSR
+ no_stream_resources = ENOSR,
+#endif
no_such_device_or_address = ENXIO,
no_such_device = ENODEV,
no_such_file_or_directory = ENOENT,
no_such_process = ESRCH,
not_a_directory = ENOTDIR,
-// not_a_socket = ENOTSOCK,
-// not_a_stream = ENOSTR,
-// not_connected = ENOTCONN,
+ not_a_socket = ENOTSOCK,
+#ifdef _GLIBCXX_HAVE_ENOSTR
+ not_a_stream = ENOSTR,
+#endif
+ not_connected = ENOTCONN,
not_enough_memory = ENOMEM,
#ifdef _GLIBCXX_HAVE_ENOTSUP
not_supported = ENOTSUP,
#endif
-// operation_canceled = ECANCELED,
-// operation_in_progress = EINPROGRESS,
+ operation_canceled = ECANCELED,
+ operation_in_progress = EINPROGRESS,
#ifdef _GLIBCXX_HAVE_EPERM
operation_not_permitted = EPERM,
#endif
-// operation_not_supported = EOPNOTSUPP,
+ operation_not_supported = EOPNOTSUPP,
#ifdef _GLIBCXX_HAVE_EWOULDBLOCK
operation_would_block = EWOULDBLOCK,
#endif
-// owner_dead = EOWNERDEAD,
+#ifdef _GLIBCXX_HAVE_EOWNERDEAD
+ owner_dead = EOWNERDEAD,
+#endif
permission_denied = EACCES,
-// protocol_error = EPROTO,
-// protocol_not_supported = EPROTONOSUPPORT,
+ protocol_error = EPROTO,
+ protocol_not_supported = EPROTONOSUPPORT,
read_only_file_system = EROFS,
resource_deadlock_would_occur = EDEADLK,
resource_unavailable_try_again = EAGAIN,
result_out_of_range = ERANGE,
-// state_not_recoverable = ENOTRECOVERABLE,
-// stream_timeout = ETIME,
-// text_file_busy = ETXTBSY,
+#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
+ state_not_recoverable = ENOTRECOVERABLE,
+#endif
+#ifdef _GLIBCXX_HAVE_ETIME
+ stream_timeout = ETIME,
+#endif
+#ifdef _GLIBCXX_HAVE_ETXTBSY
+ text_file_busy = ETXTBSY,
+#endif
#ifdef _GLIBCXX_HAVE_ETIMEDOUT
timed_out = ETIMEDOUT,
#endif
too_many_files_open_in_system = ENFILE,
too_many_files_open = EMFILE,
- too_many_links = EMLINK
-// too_many_symbolic_link_levels = ELOOP,
+ too_many_links = EMLINK,
+ too_many_symbolic_link_levels = ELOOP,
#ifdef _GLIBCXX_HAVE_EOVERFLOW
- ,
- value_too_large = EOVERFLOW
+ value_too_large = EOVERFLOW,
#endif
-// wrong_protocol_type = EPROTOTYPE
+ wrong_protocol_type = EPROTOTYPE
};
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 0bc9126d03c..5c99ebac81a 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -18386,7 +18386,7 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
-#include <math.h>
+ #include <math.h>
#undef isnan
namespace std {
using ::isnan;
@@ -80555,6 +80555,21 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
glibcxx_cv_size_t_mangling=t
else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+extern __SIZE_TYPE__ x; extern __int20 unsigned x;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ glibcxx_cv_size_t_mangling=u6uint20
+else
glibcxx_cv_size_t_mangling=x
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
@@ -80569,6 +80584,9 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_size_t_mangling" >&5
$as_echo "$glibcxx_cv_size_t_mangling" >&6; }
if test $glibcxx_cv_size_t_mangling = x; then
diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html
index 276c2ebb4f3..1d71dc1a359 100644
--- a/libstdc++-v3/doc/html/manual/abi.html
+++ b/libstdc++-v3/doc/html/manual/abi.html
@@ -20,7 +20,7 @@
virtual functions, etc. These details are defined as the compiler
Application Binary Interface, or ABI. The GNU C++ compiler uses an
industry-standard C++ ABI starting with version 3. Details can be
- found in the <a class="link" href="http://mentorembedded.github.com/cxx-abi/abi.html" target="_top">ABI
+ found in the <a class="link" href="http://mentorembedded.github.io/cxx-abi/abi.html" target="_top">ABI
specification</a>.
</p><p>
The GNU C++ compiler, g++, has a compiler command line option to
@@ -111,7 +111,7 @@ compatible.
has the same filename and <code class="constant">DT_SONAME</code> as the
preceding release.
</p><p>It is versioned as follows:
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: libstdc++.so.3.0.0</p></li><li class="listitem"><p>GCC 3.0.1: libstdc++.so.3.0.1</p></li><li class="listitem"><p>GCC 3.0.2: libstdc++.so.3.0.2</p></li><li class="listitem"><p>GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)</p></li><li class="listitem"><p>GCC 3.0.4: libstdc++.so.3.0.4</p></li><li class="listitem"><p>GCC 3.1.0: libstdc++.so.4.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.1.1: libstdc++.so.4.0.1</p></li><li class="listitem"><p>GCC 3.2.0: libstdc++.so.5.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.2.1: libstdc++.so.5.0.1</p></li><li class="listitem"><p>GCC 3.2.2: libstdc++.so.5.0.2</p></li><li class="listitem"><p>GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)</p></li><li class="listitem"><p>GCC 3.3.0: libstdc++.so.5.0.4</p></li><li class="listitem"><p>GCC 3.3.1: libstdc++.so.5.0.5</p></li><li class="listitem"><p>GCC 3.4.0: libstdc++.so.6.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.4.1: libstdc++.so.6.0.1</p></li><li class="listitem"><p>GCC 3.4.2: libstdc++.so.6.0.2</p></li><li class="listitem"><p>GCC 3.4.3: libstdc++.so.6.0.3</p></li><li class="listitem"><p>GCC 4.0.0: libstdc++.so.6.0.4</p></li><li class="listitem"><p>GCC 4.0.1: libstdc++.so.6.0.5</p></li><li class="listitem"><p>GCC 4.0.2: libstdc++.so.6.0.6</p></li><li class="listitem"><p>GCC 4.0.3: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.0: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.1: libstdc++.so.6.0.8</p></li><li class="listitem"><p>GCC 4.2.0: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)</p></li><li class="listitem"><p>GCC 4.2.2: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.3.0: libstdc++.so.6.0.10</p></li><li class="listitem"><p>GCC 4.4.0: libstdc++.so.6.0.11</p></li><li class="listitem"><p>GCC 4.4.1: libstdc++.so.6.0.12</p></li><li class="listitem"><p>GCC 4.4.2: libstdc++.so.6.0.13</p></li><li class="listitem"><p>GCC 4.5.0: libstdc++.so.6.0.14</p></li><li class="listitem"><p>GCC 4.6.0: libstdc++.so.6.0.15</p></li><li class="listitem"><p>GCC 4.6.1: libstdc++.so.6.0.16</p></li><li class="listitem"><p>GCC 4.7.0: libstdc++.so.6.0.17</p></li><li class="listitem"><p>GCC 4.8.0: libstdc++.so.6.0.18</p></li><li class="listitem"><p>GCC 4.8.3: libstdc++.so.6.0.19</p></li><li class="listitem"><p>GCC 4.9.0: libstdc++.so.6.0.20</p></li><li class="listitem"><p>GCC 5.1.0: libstdc++.so.6.0.21</p></li></ul></div><p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: libstdc++.so.3.0.0</p></li><li class="listitem"><p>GCC 3.0.1: libstdc++.so.3.0.1</p></li><li class="listitem"><p>GCC 3.0.2: libstdc++.so.3.0.2</p></li><li class="listitem"><p>GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)</p></li><li class="listitem"><p>GCC 3.0.4: libstdc++.so.3.0.4</p></li><li class="listitem"><p>GCC 3.1.0: libstdc++.so.4.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.1.1: libstdc++.so.4.0.1</p></li><li class="listitem"><p>GCC 3.2.0: libstdc++.so.5.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.2.1: libstdc++.so.5.0.1</p></li><li class="listitem"><p>GCC 3.2.2: libstdc++.so.5.0.2</p></li><li class="listitem"><p>GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)</p></li><li class="listitem"><p>GCC 3.3.0: libstdc++.so.5.0.4</p></li><li class="listitem"><p>GCC 3.3.1: libstdc++.so.5.0.5</p></li><li class="listitem"><p>GCC 3.4.0: libstdc++.so.6.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.4.1: libstdc++.so.6.0.1</p></li><li class="listitem"><p>GCC 3.4.2: libstdc++.so.6.0.2</p></li><li class="listitem"><p>GCC 3.4.3: libstdc++.so.6.0.3</p></li><li class="listitem"><p>GCC 4.0.0: libstdc++.so.6.0.4</p></li><li class="listitem"><p>GCC 4.0.1: libstdc++.so.6.0.5</p></li><li class="listitem"><p>GCC 4.0.2: libstdc++.so.6.0.6</p></li><li class="listitem"><p>GCC 4.0.3: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.0: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.1: libstdc++.so.6.0.8</p></li><li class="listitem"><p>GCC 4.2.0: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)</p></li><li class="listitem"><p>GCC 4.2.2: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.3.0: libstdc++.so.6.0.10</p></li><li class="listitem"><p>GCC 4.4.0: libstdc++.so.6.0.11</p></li><li class="listitem"><p>GCC 4.4.1: libstdc++.so.6.0.12</p></li><li class="listitem"><p>GCC 4.4.2: libstdc++.so.6.0.13</p></li><li class="listitem"><p>GCC 4.5.0: libstdc++.so.6.0.14</p></li><li class="listitem"><p>GCC 4.6.0: libstdc++.so.6.0.15</p></li><li class="listitem"><p>GCC 4.6.1: libstdc++.so.6.0.16</p></li><li class="listitem"><p>GCC 4.7.0: libstdc++.so.6.0.17</p></li><li class="listitem"><p>GCC 4.8.0: libstdc++.so.6.0.18</p></li><li class="listitem"><p>GCC 4.8.3: libstdc++.so.6.0.19</p></li><li class="listitem"><p>GCC 4.9.0: libstdc++.so.6.0.20</p></li><li class="listitem"><p>GCC 5.1.0: libstdc++.so.6.0.21</p></li><li class="listitem"><p>GCC 6.1.0: libstdc++.so.6.0.22</p></li></ul></div><p>
Note 1: Error should be libstdc++.so.3.0.3.
</p><p>
Note 2: Not strictly required.
@@ -153,12 +153,33 @@ compatible.
was released, in compressed ISO date format, as an unsigned long.
</p><p>
This macro is defined in the file "c++config" in the
- "libstdc++-v3/include/bits" directory. (Up to GCC 4.1.0, it was
- changed every night by an automated script. Since GCC 4.1.0, it is
- the same value as gcc/DATESTAMP.)
+ "libstdc++-v3/include/bits" directory. Up to GCC 4.1.0, it was
+ changed every night by an automated script. Since GCC 4.1.0 it is set
+ during configuration to the same value as
+ <code class="filename">gcc/DATESTAMP</code>, so for an official release its value
+ is the same as the date of the release, which is given in the <a class="link" href="https://gcc.gnu.org/develop.html#timeline" target="_top">GCC Release
+ Timeline</a>.
+ </p><p>
+ This macro is not useful for determining whether a particular feature is
+ supported by the version of libstdc++ you are using. The date of a release
+ might be after a feature was added to the development trunk, but the
+ release could be from an older branch. For example, in the 5.4.0 release
+ the macro has the value 20160603 which is greater than the 20160427 value
+ of the macro in the 6.1.0 release, but there are features supported in the
+ 6.1.0 release that are not supported in 5.4.0 release.
+ You also can't test for the exact values listed below to try and
+ identify a release, because a snapshot taken from the gcc-5-branch on
+ 2016-04-27 would have the same value for the macro as the 6.1.0 release
+ despite being a different version.
+ Many GNU/Linux distributions build their GCC packages from snapshots, so
+ the macro can have dates that doesn't correspond to official releases.
</p><p>
It is versioned as follows:
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: 20010615</p></li><li class="listitem"><p>GCC 3.0.1: 20010819</p></li><li class="listitem"><p>GCC 3.0.2: 20011023</p></li><li class="listitem"><p>GCC 3.0.3: 20011220</p></li><li class="listitem"><p>GCC 3.0.4: 20020220</p></li><li class="listitem"><p>GCC 3.1.0: 20020514</p></li><li class="listitem"><p>GCC 3.1.1: 20020725</p></li><li class="listitem"><p>GCC 3.2.0: 20020814</p></li><li class="listitem"><p>GCC 3.2.1: 20021119</p></li><li class="listitem"><p>GCC 3.2.2: 20030205</p></li><li class="listitem"><p>GCC 3.2.3: 20030422</p></li><li class="listitem"><p>GCC 3.3.0: 20030513</p></li><li class="listitem"><p>GCC 3.3.1: 20030804</p></li><li class="listitem"><p>GCC 3.3.2: 20031016</p></li><li class="listitem"><p>GCC 3.3.3: 20040214</p></li><li class="listitem"><p>GCC 3.4.0: 20040419</p></li><li class="listitem"><p>GCC 3.4.1: 20040701</p></li><li class="listitem"><p>GCC 3.4.2: 20040906</p></li><li class="listitem"><p>GCC 3.4.3: 20041105</p></li><li class="listitem"><p>GCC 3.4.4: 20050519</p></li><li class="listitem"><p>GCC 3.4.5: 20051201</p></li><li class="listitem"><p>GCC 3.4.6: 20060306</p></li><li class="listitem"><p>GCC 4.0.0: 20050421</p></li><li class="listitem"><p>GCC 4.0.1: 20050707</p></li><li class="listitem"><p>GCC 4.0.2: 20050921</p></li><li class="listitem"><p>GCC 4.0.3: 20060309</p></li><li class="listitem"><p>GCC 4.1.0: 20060228</p></li><li class="listitem"><p>GCC 4.1.1: 20060524</p></li><li class="listitem"><p>GCC 4.1.2: 20070214</p></li><li class="listitem"><p>GCC 4.2.0: 20070514</p></li><li class="listitem"><p>GCC 4.2.1: 20070719</p></li><li class="listitem"><p>GCC 4.2.2: 20071007</p></li><li class="listitem"><p>GCC 4.2.3: 20080201</p></li><li class="listitem"><p>GCC 4.2.4: 20080519</p></li><li class="listitem"><p>GCC 4.3.0: 20080306</p></li><li class="listitem"><p>GCC 4.3.1: 20080606</p></li><li class="listitem"><p>GCC 4.3.2: 20080827</p></li><li class="listitem"><p>GCC 4.3.3: 20090124</p></li><li class="listitem"><p>GCC 4.3.4: 20090804</p></li><li class="listitem"><p>GCC 4.3.5: 20100522</p></li><li class="listitem"><p>GCC 4.3.6: 20110627</p></li><li class="listitem"><p>GCC 4.4.0: 20090421</p></li><li class="listitem"><p>GCC 4.4.1: 20090722</p></li><li class="listitem"><p>GCC 4.4.2: 20091015</p></li><li class="listitem"><p>GCC 4.4.3: 20100121</p></li><li class="listitem"><p>GCC 4.4.4: 20100429</p></li><li class="listitem"><p>GCC 4.4.5: 20101001</p></li><li class="listitem"><p>GCC 4.4.6: 20110416</p></li><li class="listitem"><p>GCC 4.4.7: 20120313</p></li><li class="listitem"><p>GCC 4.5.0: 20100414</p></li><li class="listitem"><p>GCC 4.5.1: 20100731</p></li><li class="listitem"><p>GCC 4.5.2: 20101216</p></li><li class="listitem"><p>GCC 4.5.3: 20110428</p></li><li class="listitem"><p>GCC 4.5.4: 20120702</p></li><li class="listitem"><p>GCC 4.6.0: 20110325</p></li><li class="listitem"><p>GCC 4.6.1: 20110627</p></li><li class="listitem"><p>GCC 4.6.2: 20111026</p></li><li class="listitem"><p>GCC 4.6.3: 20120301</p></li><li class="listitem"><p>GCC 4.7.0: 20120322</p></li><li class="listitem"><p>GCC 4.7.1: 20120614</p></li><li class="listitem"><p>GCC 4.7.2: 20120920</p></li></ul></div><p></p></li><li class="listitem"><p>
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: 20010615</p></li><li class="listitem"><p>GCC 3.0.1: 20010819</p></li><li class="listitem"><p>GCC 3.0.2: 20011023</p></li><li class="listitem"><p>GCC 3.0.3: 20011220</p></li><li class="listitem"><p>GCC 3.0.4: 20020220</p></li><li class="listitem"><p>GCC 3.1.0: 20020514</p></li><li class="listitem"><p>GCC 3.1.1: 20020725</p></li><li class="listitem"><p>GCC 3.2.0: 20020814</p></li><li class="listitem"><p>GCC 3.2.1: 20021119</p></li><li class="listitem"><p>GCC 3.2.2: 20030205</p></li><li class="listitem"><p>GCC 3.2.3: 20030422</p></li><li class="listitem"><p>GCC 3.3.0: 20030513</p></li><li class="listitem"><p>GCC 3.3.1: 20030804</p></li><li class="listitem"><p>GCC 3.3.2: 20031016</p></li><li class="listitem"><p>GCC 3.3.3: 20040214</p></li><li class="listitem"><p>GCC 3.4.0: 20040419</p></li><li class="listitem"><p>GCC 3.4.1: 20040701</p></li><li class="listitem"><p>GCC 3.4.2: 20040906</p></li><li class="listitem"><p>GCC 3.4.3: 20041105</p></li><li class="listitem"><p>GCC 3.4.4: 20050519</p></li><li class="listitem"><p>GCC 3.4.5: 20051201</p></li><li class="listitem"><p>GCC 3.4.6: 20060306</p></li><li class="listitem"><p>GCC 4.0.0: 20050421</p></li><li class="listitem"><p>GCC 4.0.1: 20050707</p></li><li class="listitem"><p>GCC 4.0.2: 20050921</p></li><li class="listitem"><p>GCC 4.0.3: 20060309</p></li><li class="listitem"><p>
+ GCC 4.1.0 and later: the GCC release date, as shown in the
+ <a class="link" href="https://gcc.gnu.org/develop.html#timeline" target="_top">GCC
+ Release Timeline</a>
+ </p></li></ul></div><p></p></li><li class="listitem"><p>
Incremental bumping of a library pre-defined macro,
_GLIBCPP_VERSION. This macro is defined as the released version of
the library, as a string literal. This is only implemented in
@@ -226,13 +247,12 @@ compatible.
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="abi.versioning.active"></a>Checking Active</h4></div></div></div><p>
When the GNU C++ library is being built with symbol versioning
on, you should see the following at configure time for
- libstdc++:
+ libstdc++ (showing either 'gnu' or another of the supported styles):
</p><pre class="screen">
<code class="computeroutput">
checking versioning on shared library symbols... gnu
</code>
</pre><p>
- or another of the supported styles.
If you don't see this line in the configure output, or if this line
appears but the last word is 'no', then you are out of luck.
</p><p>
@@ -292,7 +312,7 @@ class that would otherwise have implicit versions. This will change
the way the compiler deals with this class in by-value return
statements or parameters: instead of passing instances of this
class in registers, the compiler will be forced to use memory. See the
-section on <a class="link" href="http://mentorembedded.github.com/cxx-abi/abi.html#calls" target="_top">Function
+section on <a class="link" href="http://mentorembedded.github.io/cxx-abi/abi.html#calls" target="_top">Function
Calling Conventions and APIs</a>
of the C++ ABI documentation for further details.
</p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="abi.impl"></a>Implementation</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
@@ -490,7 +510,7 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.
ABIcheck
</a>
</em>. </span></p></div><div class="biblioentry"><a id="biblio.cxxabi"></a><p>[biblio.cxxabi] <span class="title"><em>
- <a class="link" href="http://www.codesourcery.com/cxx-abi/" target="_top">
+ <a class="link" href="http://mentorembedded.github.io/cxx-abi/" target="_top">
C++ ABI Summary
</a>
</em>. </span></p></div><div class="biblioentry"><a id="id-1.3.6.3.6.10.4"></a><p><span class="title"><em>
diff --git a/libstdc++-v3/doc/html/manual/bugs.html b/libstdc++-v3/doc/html/manual/bugs.html
index a0000450bc8..b485d8c4349 100644
--- a/libstdc++-v3/doc/html/manual/bugs.html
+++ b/libstdc++-v3/doc/html/manual/bugs.html
@@ -447,6 +447,10 @@
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2440" target="_top">2440</a>:
<span class="emphasis"><em><code class="code">seed_seq::size()</code> should be <code class="code">noexcept</code></em></span>
</span></dt><dd><p>Add <code class="code">noexcept</code>.
+ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2442" target="_top">2442</a>:
+ <span class="emphasis"><em><code class="code">call_once()</code> shouldn't <code class="code">DECAY_COPY()</code></em></span>
+ </span></dt><dd><p>Remove indirection through call wrapper that made copies
+ of arguments and forward arguments straight to <code class="code">std::invoke</code>.
</p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2454" target="_top">2454</a>:
<span class="emphasis"><em>Add <code class="code">raw_storage_iterator::base()</code> member
</em></span>
@@ -463,4 +467,9 @@
<span class="emphasis"><em><code class="code">allocator_traits::max_size()</code> default behavior is incorrect
</em></span>
</span></dt><dd><p>Divide by the object type.
+ </p></dd><dt><span class="term"><a class="link" href="../ext/lwg-defects.html#2484" target="_top">2484</a>:
+ <span class="emphasis"><em><code class="code">rethrow_if_nested()</code> is doubly unimplementable
+ </em></span>
+ </span></dt><dd><p>Avoid using <code class="code">dynamic_cast</code> when it would be
+ ill-formed.
</p></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="license.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="status.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">License </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Setup</td></tr></table></div></body></html> \ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index a7def2bb3d7..ebea3fcdd1e 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -172,7 +172,7 @@ This page describes the C++11 support in the GCC 6 series.
</td></tr><tr><td align="left">20.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.2</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.2.2</td><td align="left">Swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.2.3</td><td align="left"><code class="code">forward</code> and <code class="code">move</code> helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.2.4</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Pairs</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.2</td><td align="left">Class template <code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.3</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.4</td><td align="left">Tuple-like access to <code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.5</td><td align="left">Piecewise construction</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4</td><td align="left">Tuples</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Class template <code class="code">tuple</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.2.1</td><td align="left">Construction</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.2</td><td align="left">Assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.3</td><td align="left">Swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.4</td><td align="left">Tuple creation functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.5</td><td align="left">Tuple helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.6</td><td align="left">Element access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.7</td><td align="left">Relational operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.8</td><td align="left">Tuple traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2.9</td><td align="left">Tuple specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5</td><td align="left">Class template <code class="code">bitset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5.1</td><td align="left"><code class="code">bitset</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5.2</td><td align="left"><code class="code">bitset</code> members</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5.3</td><td align="left"><code class="code">bitset</code> hash support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5.4</td><td align="left"><code class="code">bitset</code> operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6</td><td align="left">Memory</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.10</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.11</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.12</td><td align="left">Specialized algorithms</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.12.1</td><td align="left"><code class="code">addressof</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.12.2</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.12.3</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.12.4</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.13</td><td align="left">C library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2</td><td align="left">Shared-ownership pointers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">Y</td><td align="left">
Uses code from
<a class="link" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>.
- </td></tr><tr><td align="left">20.7.2.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.4</td><td align="left">Class template <code class="code">emable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.5</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.6</td><td align="left">Smart pointer hash support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.3</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.4</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.5</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.6</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.7</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.8</td><td align="left">Negators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.9</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.10</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.11.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.11.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Partial</td><td align="left">Missing allocator support</td></tr><tr><td align="left">20.8.12</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4.1</td><td align="left">Primary type categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4.3</td><td align="left">Type properties</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.6</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.2</td><td align="left">Header <code class="code">&lt;ratio&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.3</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.4</td><td align="left">Arithmetic on <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.5</td><td align="left">Comparison of <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.6</td><td align="left">SI types for <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.4.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.7.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.2</td><td align="left">Class <code class="code">steady_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.8</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12</td><td align="left">Scoped allocator adaptor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.1</td><td align="left">Header <code class="code">&lt;scoped_allocator&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.12.2</td><td align="left">Scoped allocator adaptor member types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.3</td><td align="left">Scoped allocator adaptor constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.12.4</td><td align="left">Scoped allocator adaptor members</td><td align="left">Partial</td><td align="left">OUTERMOST is not recursive.</td></tr><tr><td align="left">20.12.5</td><td align="left">Scoped allocator operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.13</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ </td></tr><tr><td align="left">20.7.2.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.4</td><td align="left">Class template <code class="code">emable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.5</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2.6</td><td align="left">Smart pointer hash support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.3</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.4</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.5</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.6</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.7</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.8</td><td align="left">Negators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.9</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.10</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.11.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.11.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Partial</td><td align="left">Missing allocator support</td></tr><tr><td align="left">20.8.12</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4.1</td><td align="left">Primary type categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.4.3</td><td align="left">Type properties</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.7.6</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.2</td><td align="left">Header <code class="code">&lt;ratio&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.3</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.4</td><td align="left">Arithmetic on <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.5</td><td align="left">Comparison of <code class="code">ratio</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.6</td><td align="left">SI types for <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.4.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.4.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.11.7.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.2</td><td align="left">Class <code class="code">steady_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.7.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11.8</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12</td><td align="left">Scoped allocator adaptor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.1</td><td align="left">Header <code class="code">&lt;scoped_allocator&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.12.2</td><td align="left">Scoped allocator adaptor member types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.3</td><td align="left">Scoped allocator adaptor constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.4</td><td align="left">Scoped allocator adaptor members</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.12.5</td><td align="left">Scoped allocator operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.13</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
<span class="emphasis"><em>21</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Strings</em></span>
diff --git a/libstdc++-v3/doc/html/manual/using_macros.html b/libstdc++-v3/doc/html/manual/using_macros.html
index 0998b389355..ea146f1d582 100644
--- a/libstdc++-v3/doc/html/manual/using_macros.html
+++ b/libstdc++-v3/doc/html/manual/using_macros.html
@@ -87,6 +87,11 @@
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL</code></span></dt><dd><p>Undefined by default. When defined, compiles user code
using the <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel
mode</a>.
+ </p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL_ASSERTIONS</code></span></dt><dd><p>Undefined by default, but when any parallel mode header is included
+ this macro will be defined to a non-zero value if
+ <code class="code">_GLIBCXX_ASSERTIONS</code> has a non-zero value, otherwise to zero.
+ When defined to a non-zero value, it enables extra error checking and
+ assertions in the parallel mode.
</p></dd><dt><span class="term"><code class="code">_GLIBCXX_PROFILE</code></span></dt><dd><p>Undefined by default. When defined, compiles user code
using the <a class="link" href="profile_mode.html" title="Chapter 19. Profile Mode">profile
mode</a>.
diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml
index 8636124cbb7..8566f3f7d89 100644
--- a/libstdc++-v3/doc/xml/manual/abi.xml
+++ b/libstdc++-v3/doc/xml/manual/abi.xml
@@ -265,6 +265,7 @@ compatible.
<listitem><para>GCC 4.8.3: libstdc++.so.6.0.19</para></listitem>
<listitem><para>GCC 4.9.0: libstdc++.so.6.0.20</para></listitem>
<listitem><para>GCC 5.1.0: libstdc++.so.6.0.21</para></listitem>
+ <listitem><para>GCC 6.1.0: libstdc++.so.6.0.22</para></listitem>
</itemizedlist>
<para>
Note 1: Error should be libstdc++.so.3.0.3.
@@ -393,10 +394,32 @@ compatible.
<para>
This macro is defined in the file "c++config" in the
- "libstdc++-v3/include/bits" directory. (Up to GCC 4.1.0, it was
- changed every night by an automated script. Since GCC 4.1.0, it is
- the same value as gcc/DATESTAMP.)
+ "libstdc++-v3/include/bits" directory. Up to GCC 4.1.0, it was
+ changed every night by an automated script. Since GCC 4.1.0 it is set
+ during configuration to the same value as
+ <filename>gcc/DATESTAMP</filename>, so for an official release its value
+ is the same as the date of the release, which is given in the <link
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xlink:href="https://gcc.gnu.org/develop.html#timeline">GCC Release
+ Timeline</link>.
</para>
+
+ <para>
+ This macro is not useful for determining whether a particular feature is
+ supported by the version of libstdc++ you are using. The date of a release
+ might be after a feature was added to the development trunk, but the
+ release could be from an older branch. For example, in the 5.4.0 release
+ the macro has the value 20160603 which is greater than the 20160427 value
+ of the macro in the 6.1.0 release, but there are features supported in the
+ 6.1.0 release that are not supported in 5.4.0 release.
+ You also can't test for the exact values listed below to try and
+ identify a release, because a snapshot taken from the gcc-5-branch on
+ 2016-04-27 would have the same value for the macro as the 6.1.0 release
+ despite being a different version.
+ Many GNU/Linux distributions build their GCC packages from snapshots, so
+ the macro can have dates that doesn't correspond to official releases.
+ </para>
+
<para>
It is versioned as follows:
</para>
@@ -427,41 +450,12 @@ compatible.
<listitem><para>GCC 4.0.1: 20050707</para></listitem>
<listitem><para>GCC 4.0.2: 20050921</para></listitem>
<listitem><para>GCC 4.0.3: 20060309</para></listitem>
- <listitem><para>GCC 4.1.0: 20060228</para></listitem>
- <listitem><para>GCC 4.1.1: 20060524</para></listitem>
- <listitem><para>GCC 4.1.2: 20070214</para></listitem>
- <listitem><para>GCC 4.2.0: 20070514</para></listitem>
- <listitem><para>GCC 4.2.1: 20070719</para></listitem>
- <listitem><para>GCC 4.2.2: 20071007</para></listitem>
- <listitem><para>GCC 4.2.3: 20080201</para></listitem>
- <listitem><para>GCC 4.2.4: 20080519</para></listitem>
- <listitem><para>GCC 4.3.0: 20080306</para></listitem>
- <listitem><para>GCC 4.3.1: 20080606</para></listitem>
- <listitem><para>GCC 4.3.2: 20080827</para></listitem>
- <listitem><para>GCC 4.3.3: 20090124</para></listitem>
- <listitem><para>GCC 4.3.4: 20090804</para></listitem>
- <listitem><para>GCC 4.3.5: 20100522</para></listitem>
- <listitem><para>GCC 4.3.6: 20110627</para></listitem>
- <listitem><para>GCC 4.4.0: 20090421</para></listitem>
- <listitem><para>GCC 4.4.1: 20090722</para></listitem>
- <listitem><para>GCC 4.4.2: 20091015</para></listitem>
- <listitem><para>GCC 4.4.3: 20100121</para></listitem>
- <listitem><para>GCC 4.4.4: 20100429</para></listitem>
- <listitem><para>GCC 4.4.5: 20101001</para></listitem>
- <listitem><para>GCC 4.4.6: 20110416</para></listitem>
- <listitem><para>GCC 4.4.7: 20120313</para></listitem>
- <listitem><para>GCC 4.5.0: 20100414</para></listitem>
- <listitem><para>GCC 4.5.1: 20100731</para></listitem>
- <listitem><para>GCC 4.5.2: 20101216</para></listitem>
- <listitem><para>GCC 4.5.3: 20110428</para></listitem>
- <listitem><para>GCC 4.5.4: 20120702</para></listitem>
- <listitem><para>GCC 4.6.0: 20110325</para></listitem>
- <listitem><para>GCC 4.6.1: 20110627</para></listitem>
- <listitem><para>GCC 4.6.2: 20111026</para></listitem>
- <listitem><para>GCC 4.6.3: 20120301</para></listitem>
- <listitem><para>GCC 4.7.0: 20120322</para></listitem>
- <listitem><para>GCC 4.7.1: 20120614</para></listitem>
- <listitem><para>GCC 4.7.2: 20120920</para></listitem>
+ <listitem><para>
+ GCC 4.1.0 and later: the GCC release date, as shown in the
+ <link xmlns:xlink="http://www.w3.org/1999/xlink"
+ xlink:href="https://gcc.gnu.org/develop.html#timeline">GCC
+ Release Timeline</link>
+ </para></listitem>
</itemizedlist>
<para/>
</listitem>
@@ -619,7 +613,7 @@ compatible.
<para>
When the GNU C++ library is being built with symbol versioning
on, you should see the following at configure time for
- libstdc++:
+ libstdc++ (showing either 'gnu' or another of the supported styles):
</para>
<screen>
@@ -629,7 +623,6 @@ compatible.
</screen>
<para>
- or another of the supported styles.
If you don't see this line in the configure output, or if this line
appears but the last word is 'no', then you are out of luck.
</para>
diff --git a/libstdc++-v3/include/bits/ios_base.h b/libstdc++-v3/include/bits/ios_base.h
index 84c03a94f6a..be8b9c12f15 100644
--- a/libstdc++-v3/include/bits/ios_base.h
+++ b/libstdc++-v3/include/bits/ios_base.h
@@ -52,8 +52,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// The following definitions of bitmask types are enums, not ints,
// as permitted (but not required) in the standard, in order to provide
- // better type safety in iostream calls. A side effect is that
- // expressions involving them are no longer compile-time constants.
+ // better type safety in iostream calls. A side effect is that in C++98
+ // expressions involving them are not compile-time constants.
enum _Ios_Fmtflags
{
_S_boolalpha = 1L << 0,
diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h
index d8cfcb10143..983bdef3871 100644
--- a/libstdc++-v3/include/bits/regex.h
+++ b/libstdc++-v3/include/bits/regex.h
@@ -2454,7 +2454,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
* one-past-the-end of a range.
*/
regex_iterator()
- : _M_match()
+ : _M_pregex()
{ }
/**
diff --git a/libstdc++-v3/include/bits/regex.tcc b/libstdc++-v3/include/bits/regex.tcc
index 4a3d7c36cf8..3f8969d1611 100644
--- a/libstdc++-v3/include/bits/regex.tcc
+++ b/libstdc++-v3/include/bits/regex.tcc
@@ -496,12 +496,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
regex_iterator<_Bi_iter, _Ch_type, _Rx_traits>::
operator==(const regex_iterator& __rhs) const
{
- return (_M_match.empty() && __rhs._M_match.empty())
- || (_M_begin == __rhs._M_begin
- && _M_end == __rhs._M_end
- && _M_pregex == __rhs._M_pregex
- && _M_flags == __rhs._M_flags
- && _M_match[0] == __rhs._M_match[0]);
+ if (_M_pregex == nullptr && __rhs._M_pregex == nullptr)
+ return true;
+ return _M_pregex == __rhs._M_pregex
+ && _M_begin == __rhs._M_begin
+ && _M_end == __rhs._M_end
+ && _M_flags == __rhs._M_flags
+ && _M_match[0] == __rhs._M_match[0];
}
template<typename _Bi_iter,
@@ -525,7 +526,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
if (__start == _M_end)
{
- _M_match = value_type();
+ _M_pregex = nullptr;
return *this;
}
else
@@ -558,7 +559,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_M_match._M_begin = _M_begin;
}
else
- _M_match = value_type();
+ _M_pregex = nullptr;
}
return *this;
}
diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h
index 410d61b7da1..a6f016b0e28 100644
--- a/libstdc++-v3/include/bits/regex_compiler.h
+++ b/libstdc++-v3/include/bits/regex_compiler.h
@@ -200,9 +200,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const typename _TraitsT::locale_type& __loc,
regex_constants::syntax_option_type __flags)
{
- basic_string<typename _TraitsT::char_type> __str(__first, __last);
- return __compile_nfa(__str.data(), __str.data() + __str.size(), __loc,
- __flags);
+ using char_type = typename _TraitsT::char_type;
+ const basic_string<char_type> __str(__first, __last);
+ return __compile_nfa<const char_type*, _TraitsT>(__str.data(),
+ __str.data() + __str.size(), __loc, __flags);
}
// [28.13.14]
diff --git a/libstdc++-v3/include/experimental/bits/fs_dir.h b/libstdc++-v3/include/experimental/bits/fs_dir.h
index 818e7ff5efc..c362bd2c844 100644
--- a/libstdc++-v3/include/experimental/bits/fs_dir.h
+++ b/libstdc++-v3/include/experimental/bits/fs_dir.h
@@ -181,7 +181,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
typedef const directory_entry& reference;
typedef input_iterator_tag iterator_category;
- directory_iterator() noexcept = default;
+ directory_iterator() = default;
explicit
directory_iterator(const path& __p)
@@ -262,7 +262,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
typedef const directory_entry& reference;
typedef input_iterator_tag iterator_category;
- recursive_directory_iterator() noexcept = default;
+ recursive_directory_iterator() = default;
explicit
recursive_directory_iterator(const path& __p)
@@ -282,8 +282,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
recursive_directory_iterator(
const recursive_directory_iterator&) = default;
- recursive_directory_iterator(
- recursive_directory_iterator&&) noexcept = default;
+ recursive_directory_iterator(recursive_directory_iterator&&) = default;
~recursive_directory_iterator();
diff --git a/libstdc++-v3/include/experimental/optional b/libstdc++-v3/include/experimental/optional
index fc992ceb20b..00964207b6b 100644
--- a/libstdc++-v3/include/experimental/optional
+++ b/libstdc++-v3/include/experimental/optional
@@ -690,7 +690,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
void
swap(optional& __other)
noexcept(is_nothrow_move_constructible<_Tp>()
- && noexcept(swap(declval<_Tp&>(), declval<_Tp&>())))
+ && __is_nothrow_swappable<_Tp>::value)
{
using std::swap;
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 03b8fc7c3be..ecc9fa94d1a 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -485,17 +485,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
void cref(const _Tp&&) = delete;
- /// Partial specialization.
+ /// std::ref overload to prevent wrapping a reference_wrapper
template<typename _Tp>
inline reference_wrapper<_Tp>
ref(reference_wrapper<_Tp> __t) noexcept
- { return ref(__t.get()); }
+ { return std::ref(__t.get()); }
- /// Partial specialization.
+ /// std::cref overload to prevent wrapping a reference_wrapper
template<typename _Tp>
inline reference_wrapper<const _Tp>
cref(reference_wrapper<_Tp> __t) noexcept
- { return cref(__t.get()); }
+ { return std::cref(__t.get()); }
// @} group functors
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index ca4b92487dd..040715a9073 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -85,9 +85,8 @@ except ImportError:
def find_type(orig, name):
typ = orig.strip_typedefs()
while True:
- # Use typ.name here instead of str(typ) to discard any const,etc.
- # qualifiers. PR 67440.
- search = typ.name + '::' + name
+ # Strip cv-qualifiers. PR 67440.
+ search = '%s::%s' % (typ.unqualified(), name)
try:
return gdb.lookup_type(search)
except RuntimeError:
diff --git a/libstdc++-v3/src/c++11/cow-stdexcept.cc b/libstdc++-v3/src/c++11/cow-stdexcept.cc
index 31a89dfd554..641b372ccf8 100644
--- a/libstdc++-v3/src/c++11/cow-stdexcept.cc
+++ b/libstdc++-v3/src/c++11/cow-stdexcept.cc
@@ -208,6 +208,8 @@ extern void* _ZGTtnaX (size_t sz) __attribute__((weak));
extern void _ZGTtdlPv (void* ptr) __attribute__((weak));
extern uint8_t _ITM_RU1(const uint8_t *p)
ITM_REGPARM __attribute__((weak));
+extern uint16_t _ITM_RU2(const uint16_t *p)
+ ITM_REGPARM __attribute__((weak));
extern uint32_t _ITM_RU4(const uint32_t *p)
ITM_REGPARM __attribute__((weak));
extern uint64_t _ITM_RU8(const uint64_t *p)
@@ -272,12 +274,15 @@ _txnal_cow_string_C1_for_exceptions(void* that, const char* s,
static void* txnal_read_ptr(void* const * ptr)
{
static_assert(sizeof(uint64_t) == sizeof(void*)
- || sizeof(uint32_t) == sizeof(void*),
- "Pointers must be 32 bits or 64 bits wide");
+ || sizeof(uint32_t) == sizeof(void*)
+ || sizeof(uint16_t) == sizeof(void*),
+ "Pointers must be 16 bits, 32 bits or 64 bits wide");
#if __UINTPTR_MAX__ == __UINT64_MAX__
return (void*)_ITM_RU8((const uint64_t*)ptr);
-#else
+#elif __UINTPTR_MAX__ == __UINT32_MAX__
return (void*)_ITM_RU4((const uint32_t*)ptr);
+#else
+ return (void*)_ITM_RU2((const uint16_t*)ptr);
#endif
}
diff --git a/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c b/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
index a0fe0d7c806..2cfc04b42c9 100644
--- a/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
+++ b/libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
@@ -1,4 +1,5 @@
// { dg-require-sharedlib "" }
+// { dg-skip-if "invalid options for C" { *-*-* } { "-std=c++??" "-std=gnu++??" } }
// { dg-options "-g -O2 -pthread -ldl -x c -fvtable-verify=none" { target *-*-linux* *-*-gnu* *-*-solaris2.1[2-9]* } }
// Copyright (C) 2005-2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc b/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
index 529b9508353..b8e6e2458c8 100644
--- a/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
@@ -83,7 +83,9 @@ void test01()
TEST_ERRC(no_message_available);
#endif
+#ifdef _GLIBCXX_HAVE_ENOMSG
TEST_ERRC(no_message);
+#endif
TEST_ERRC(no_protocol_option);
TEST_ERRC(no_space_on_device);
diff --git a/libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc b/libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
new file mode 100644
index 00000000000..727a560cd17
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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, or (at your option)
+// any later version.
+
+// This library 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 this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do compile { target c++11 } }
+
+#include <functional>
+
+namespace X {
+ struct Y { };
+ template<typename T> void ref(T) { }
+ template<typename T> void cref(T) { }
+}
+
+int main()
+{
+ X::Y i;
+ std::reference_wrapper<X::Y> r(i);
+ ref(r);
+ cref(r);
+}
diff --git a/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc b/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
index fe4d0c7c06b..24aa6d1ed9a 100644
--- a/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
+++ b/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
@@ -75,8 +75,7 @@ void test01()
int (::X::* p_foo_c)(float) const = &::X::foo_c;
int (::X::* p_foo_v)(float) volatile = &::X::foo_v;
int (::X::* p_foo_cv)(float) const volatile = &::X::foo_cv;
- int (::X::* p_foo_varargs)(float, ...) __attribute__((unused))
- = &::X::foo_varargs;
+ int (::X::* p_foo_varargs)(float, ...) = &::X::foo_varargs;
int ::X::* p_bar = &::X::bar;
const float pi = 3.14;
@@ -98,10 +97,10 @@ void test01()
VERIFY(ref(p_foo_v)(xp, pi) == 3);
VERIFY(ref(p_foo_cv)(x, pi) == 3);
VERIFY(ref(p_foo_cv)(xp, pi) == 3);
- // VERIFY(ref(p_foo_varargs)(x, pi) == 3);
- // VERIFY(ref(p_foo_varargs)(xp, pi, 1, 1) == 3);
- // VERIFY(ref(p_foo_varargs)(x, pi, 1, 1) == 3);
- // VERIFY(ref(p_foo_varargs)(xp, pi) == 3);
+ VERIFY(ref(p_foo_varargs)(x, pi) == 3);
+ VERIFY(ref(p_foo_varargs)(xp, pi, 1, 1) == 3);
+ VERIFY(ref(p_foo_varargs)(x, pi, 1, 1) == 3);
+ VERIFY(ref(p_foo_varargs)(xp, pi) == 3);
// Member data pointers
VERIFY(ref(p_bar)(x) == 17);
diff --git a/libstdc++-v3/testsuite/20_util/tuple/67844.cc b/libstdc++-v3/testsuite/20_util/tuple/67844.cc
index 0416a51a202..d515b7bebb3 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/67844.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/67844.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// Copyright (C) 2015-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
index fe9bea678a4..a9bf9542dbf 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
@@ -15,6 +15,8 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
+// { dg-do compile { target c++11 } }
+
#include <tuple>
using namespace std;
@@ -27,4 +29,3 @@ int main() {
tuple<Something> t1;
tuple<Something> t2 = t1;
}
-
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
index 39a4f73c1d4..d3162ecf561 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
@@ -1,3 +1,5 @@
+// { dg-do run { target c++11 } }
+
// Copyright (C) 2015-2016 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
index 7851243df50..49a05e607f2 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1879 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
#include <deque>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
index 2debd58ec3b..7b52fe2e325 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1812 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <deque>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
index 5aa86269c50..02a2d3b8a72 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1812 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <deque>
#include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
index 5742198bb98..90c004062f7 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1963 }
+// { dg-prune-output "no matching function .*_M_fill_insert" }
#include <deque>
diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc b/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
index ac36f9c94d8..a3713a55569 100644
--- a/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
@@ -19,20 +19,20 @@
// 23.2.2.4 list operations [lib.list.ops]
-#include <testsuite_hooks.h>
-
#include <list>
+#include <testsuite_hooks.h>
struct ThrowingComparator
{
- unsigned int throw_after = 0;
- unsigned int count = 0;
- bool operator()(int, int) {
- if (++count >= throw_after) {
- throw 666;
- }
- return true;
+ ThrowingComparator(unsigned n) : throw_after(n), count(0) { }
+ unsigned int throw_after;
+ unsigned int count;
+ bool operator()(int, int) {
+ if (++count >= throw_after) {
+ throw 666;
}
+ return false;
+ }
};
struct X
@@ -48,7 +48,7 @@ bool operator<(const X&, const X&) {
if (++count_X >= throw_after_X) {
throw 666;
}
- return true;
+ return false;
}
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
index b956db648fe..90e3c07e687 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1740 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
#include <list>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
index 3400695b9b2..32815f446ec 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1692 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <list>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
index 313c54a91e3..769d6156d8d 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1682 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <list>
#include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
index 75b33f28f0a..fff543e50ae 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1692 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <list>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
index 898431e738e..50e665d17d0 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1325 }
+// { dg-prune-output "no matching function .*_M_fill_assign" }
#include <vector>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
index 3e27d5290cc..c8521b773c8 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1251 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <vector>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
index 680a84b16f0..bc75eb4ae3f 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1251 }
+// { dg-prune-output "no matching function .*_M_fill_initialize" }
#include <vector>
#include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
index 9c9dd600ac0..c73f861be5d 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-prune-output 1366 }
+// { dg-prune-output "no matching function .*_M_fill_insert" }
#include <vector>
diff --git a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc b/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
index f22452ecc8a..1554df0d97f 100644
--- a/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
@@ -42,6 +42,6 @@ struct A_int_comparer
void test01()
{
- A as[] { 0, 1, 2, 3 };
+ A as[] = { 0, 1, 2, 3 };
std::lower_bound(as, as + 4, 1, A_int_comparer());
}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc b/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
index d786e103438..c0e94877aac 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-Wall" { target *-*-* } }
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wall" }
// -*- C++ -*-
// Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -75,6 +75,7 @@ case_labels(bitmask_type b)
case ~__INT_MAX__:
break;
}
- static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+ using underlying_type = std::underlying_type<bitmask_type>::type;
+ static_assert( sizeof(underlying_type) == sizeof(int),
"underlying type has same range of values as int");
}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc b/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
index 7d777b89c67..5ca9f5f8759 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-Wall" { target *-*-* } }
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wall" }
// -*- C++ -*-
// Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -47,6 +47,7 @@ case_labels(bitmask_type b)
case ~__INT_MAX__:
break;
}
- static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+ using underlying_type = std::underlying_type<bitmask_type>::type;
+ static_assert( sizeof(underlying_type) == sizeof(int),
"underlying type has same range of values as int");
}
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc b/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
index bb9e96e260c..14a4984105b 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
@@ -1,5 +1,5 @@
-// { dg-do compile }
-// { dg-options "-Wall" { target *-*-* } }
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wall" }
// -*- C++ -*-
// Copyright (C) 2004-2016 Free Software Foundation, Inc.
@@ -51,6 +51,7 @@ case_labels(bitmask_type b)
case ~__INT_MAX__:
break;
}
- static_assert( sizeof(std::underlying_type_t<bitmask_type>) == sizeof(int),
+ using underlying_type = std::underlying_type<bitmask_type>::type;
+ static_assert( sizeof(underlying_type) == sizeof(int),
"underlying type has same range of values as int");
}
diff --git a/libstdc++-v3/testsuite/27_io/rvalue_streams.cc b/libstdc++-v3/testsuite/27_io/rvalue_streams.cc
index eba5bc35961..bff6e5ee3dc 100644
--- a/libstdc++-v3/testsuite/27_io/rvalue_streams.cc
+++ b/libstdc++-v3/testsuite/27_io/rvalue_streams.cc
@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
-// { dg-do run }
+// { dg-do run { target c++11 } }
#include <sstream>
#include <string>
diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
new file mode 100644
index 00000000000..7776c5fd557
--- /dev/null
+++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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, or (at your option)
+// any later version.
+
+// This library 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 this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do compile { target c++11 } }
+
+#include <regex>
+#include <testsuite_iterators.h>
+
+void
+test01()
+{
+ char s[] = "";
+ __gnu_test::test_container<char, __gnu_test::forward_iterator_wrapper> c(s);
+ std::regex r1(c.begin(), c.end());
+ std::regex r2(c.begin(), c.end(), std::regex_constants::grep);
+}
diff --git a/libstdc++-v3/testsuite/28_regex/regression.cc b/libstdc++-v3/testsuite/28_regex/regression.cc
index c9a3402011e..e5aec9ea05d 100644
--- a/libstdc++-v3/testsuite/28_regex/regression.cc
+++ b/libstdc++-v3/testsuite/28_regex/regression.cc
@@ -48,11 +48,33 @@ test02()
VERIFY(std::regex_search("/abcd", rx));
}
+// PR libstdc++/78236
+void
+test06()
+{
+ char const s[] = "afoo";
+ std::basic_regex<char> r("(f+)");
+ {
+ std::cregex_iterator i(s, s+sizeof(s), r);
+ std::cregex_iterator j(s, s+sizeof(s), r);
+ VERIFY(i == j);
+ }
+ // The iterator manipulation code must be repeated in the same scope
+ // to expose the undefined read during the execution of the ==
+ // operator (stack location reuse)
+ {
+ std::cregex_iterator i(s, s+sizeof(s), r);
+ std::cregex_iterator j;
+ VERIFY(!(i == j));
+ }
+}
+
int
main()
{
test01();
test02();
+ test06();
return 0;
}
diff --git a/libstdc++-v3/testsuite/abi/header_cxxabi.c b/libstdc++-v3/testsuite/abi/header_cxxabi.c
index b424d8f8a99..3b1a7dceda2 100644
--- a/libstdc++-v3/testsuite/abi/header_cxxabi.c
+++ b/libstdc++-v3/testsuite/abi/header_cxxabi.c
@@ -1,4 +1,5 @@
// { dg-do compile }
+// { dg-skip-if "invalid options for C" { *-*-* } { "-std=c++??" "-std=gnu++??" } }
// { dg-options "-x c" }
// Copyright (C) 2006-2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc b/libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
index 09d9af0ba8c..3fc42a464ef 100644
--- a/libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
+++ b/libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
@@ -1,4 +1,4 @@
-// { dg-options "-std=gnu++14" }
+// { dg-do run { target c++14 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
@@ -18,7 +18,6 @@
// <http://www.gnu.org/licenses/>.
#include <experimental/memory_resource>
-#include <bits/uses_allocator.h>
#include <testsuite_hooks.h>
using std::experimental::pmr::memory_resource;
diff --git a/libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc b/libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
index fb927dc27af..8f7d0b5d24b 100644
--- a/libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
+++ b/libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
@@ -20,7 +20,6 @@
#include <memory>
#include <experimental/memory_resource>
#include <experimental/utility>
-#include <bits/uses_allocator.h>
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
diff --git a/libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc b/libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
index fc8acf16dcd..d3d53ee566a 100644
--- a/libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
+++ b/libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
@@ -1,7 +1,25 @@
-#include <bits/uses_allocator.h>
+// Copyright (C) 2015-2016 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library 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, or (at your option)
+// any later version.
+
+// This library 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 this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-do compile { target c++14 } }
+
#include <vector>
-#include <experimental/utility>
#include <memory>
+#include <experimental/utility>
using std::vector;
using std::allocator;
@@ -11,12 +29,5 @@ struct A {
using allocator_type = std::experimental::erased_type;
};
-void test01() {
- static_assert(uses_allocator<vector<int>, allocator<int>>());
- static_assert(uses_allocator<A, allocator<A>>());
-}
-
-int main() {
- test01();
- return 0;
-}
+static_assert(uses_allocator<vector<int>, allocator<int>>(), "");
+static_assert(uses_allocator<A, allocator<A>>(), "");
diff --git a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
index 7119ce74f74..d6108d5fd4b 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
@@ -1,6 +1,7 @@
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-do run { target c++11 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
index 276efd6db74..d863ae8df93 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
@@ -1,4 +1,5 @@
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-do run { target c++11 } }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
index e811c5c359b..36f9a2cc4a9 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
index ba381ca3803..8806a3c2b1d 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
@@ -1,6 +1,7 @@
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+// { dg-do run { target c++11 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
index d87fcef03ee..5a7a4a6f670 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
@@ -1,5 +1,6 @@
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__ -ffp-contract=off" }
// { dg-additional-options "-ffloat-store" { target { m68*-*-* || ia32 } } }
+// { dg-do run { target c++11 } }
// Copyright (C) 2016 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc b/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
index bf76d7861cc..3748f6ebd3e 100644
--- a/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
+++ b/libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
index d8fef27bbb5..a2d7f967635 100644
--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
@@ -59,8 +59,7 @@ int main()
std::set<C>::iterator siter = s.begin();
// { dg-final { regexp-test siter {ref = @0x.*} } }
- std::vector<C> v;
- v.push_back(c);
+ std::vector<C> v(1, c);
std::vector<C>::iterator viter = v.begin();
// { dg-final { regexp-test viter {ref = @0x.*} } }
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
index c415ce16596..60c6871811d 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
index 89f317dfaac..d6a4f55fb7c 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
index 2214c62fd09..c2d32b79387 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
index 71af880c60d..d6a0ad1727d 100644
--- a/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
index 63a8de3c49d..ec916ff8cfe 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
index 0c60ac64a1b..9028872c87e 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__ -ffp-contract=off" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
index 5c7e6510a49..e088030370d 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
index 9641f3aab5a..06b9a9a7c83 100644
--- a/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc b/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
index 3dc9f33a898..07ea9fa8bd8 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc b/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
index 9cc0b3528e8..93348810f79 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc b/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
index eb5e4d02fc3..25e5f063ea1 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc b/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
index a6eb6acad1a..76ee9fcdbed 100644
--- a/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
index 33e63c5c400..7d0eb0a2f81 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
index b2bf414bf0f..f9e99528d44 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
index cd95b6b9a97..87987f56bd4 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
index de4ef4b95b5..b3d6bfd1579 100644
--- a/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
index e4a912f1b05..72e1d107a69 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
index 649b8e55767..eda301254d0 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
index a00a031c5cb..9fe4058f4d6 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
index 4707bab5e9f..6d198ff14e3 100644
--- a/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
index 0bc697cf554..62be47da3bd 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
index 694bf42fbd6..6ac640fbe07 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
index 0bd99a65fd3..e38010e5df7 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
index 76da042fd32..e09580ffad5 100644
--- a/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
index 3639d103818..0bf026414c8 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
index 792e0f14cbe..923122118ec 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
index 1d13223f33b..1237398be5f 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
index 33d3fe3bbb5..39dddc820ae 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
index 31ca8944a10..e4a2ef46281 100644
--- a/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
+++ b/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2015 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
index 481a94c5f1f..719dac93dd5 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
index 9a6255b6ce9..1c7c16a85b9 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
index 336b54ad4b3..7a55aa07ecb 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
index 8b25dd0a69e..1b2cf615623 100644
--- a/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
index 48a77478906..b58a6fb9550 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
index 2bd1fa27993..b3607aa7e5b 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
index feb42faf75e..db2c447b43d 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
index 4726e67050d..6e50bdbdbb8 100644
--- a/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
index bb9d927bd62..487d82e0489 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
index 5d320f67e44..03d6b82b5d0 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
index c9a49509e90..9a7db53d0eb 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
index 4cf86309a0f..1d1eabd03c0 100644
--- a/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
index e5150faf090..71760204bf9 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
index 10bc509e936..b2040c7c9e7 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
index f4502691f9e..50ad2e15adf 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
index 0effa24003c..568d0c64edb 100644
--- a/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
index 4878577d5ef..9b2eba0738b 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
index 39f3cc63522..b49a4cc61a5 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
index bd3350cd549..71206de5e4e 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
index 098f301fca7..e0f8cb04773 100644
--- a/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
index a524c37d443..bdec59e5e1b 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
index 4332b5fe30e..d806d4880f0 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
index 02fa02d00f0..0bba92475f8 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
index 6e8f2fd019d..7e4fa00b821 100644
--- a/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc b/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
index dfb96de5107..7c0c5e49e9c 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc b/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
index dcd943b0316..5b3f8e0bea6 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc b/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
index 9bbd9536195..facdab9ae18 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc b/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
index c501bfd2f0b..452b35f4de2 100644
--- a/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
index e6fecef2115..cf5357e2e55 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
index a6b6a3f7a80..a805549758a 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
index 948d907e310..d97d2d4e5bf 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc b/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
index f792e1740ab..28a525bde50 100644
--- a/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
index 9ae721c86de..b73c3db3508 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
index 82f48724796..3447ad8e14a 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
index b6636413174..7e248612297 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
index 70c85ccf498..5bb244531e1 100644
--- a/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
index 98a9a30741c..26fa341ec8b 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
index 58944783928..626bdc90635 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
index 820293a1ba1..4d60fb91b75 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
index 00458b190cb..ff720fb072a 100644
--- a/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
index 59c67919747..1e49e9312c7 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
index f84edd86bb8..7ab4ea0988a 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
index e655a1e0a9e..d14dbed976b 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
index e6e3cd989c9..9b7c3d144af 100644
--- a/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
index 28a98966bc8..dd99d669e77 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
index 6ad21af3a4b..38e61626b3d 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
index 3ad65a23e99..c7ec036c261 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
index 1fb7c2dedb3..054e44294f8 100644
--- a/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
index caa7aff820e..8e2558d4118 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
index 994054a5912..5e4344e8572 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
index a10e090a0a2..89ffc218d0d 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
index 81cc52516fa..357dbdea871 100644
--- a/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
index e85a64323c5..03bc64399d0 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-require-c-std "" }
// { dg-add-options ieee }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
index 441594f2615..371501d0e05 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
@@ -1,3 +1,4 @@
+// { dg-do run { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
//
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
index 208b809b5a1..02404b5cffc 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
index b9d83862244..456d98624d3 100644
--- a/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
+++ b/libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
@@ -1,4 +1,4 @@
-// { dg-do compile }
+// { dg-do compile { target c++11 } }
// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
// Copyright (C) 2016 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
index b8605d8aea7..ff4b7b1c301 100644
--- a/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
+++ b/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
@@ -1,5 +1,3 @@
-// { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
-//
// Copyright (C) 2016 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
diff --git a/libstdc++-v3/testsuite/util/testsuite_hooks.h b/libstdc++-v3/testsuite/util/testsuite_hooks.h
index 98ee30e1607..e14cbb5f516 100644
--- a/libstdc++-v3/testsuite/util/testsuite_hooks.h
+++ b/libstdc++-v3/testsuite/util/testsuite_hooks.h
@@ -233,9 +233,9 @@ namespace __gnu_test
private:
static unsigned int _M_count;
};
-
- // An class of objects that can be used for validating various
- // behaviours and guarantees of containers and algorithms defined in
+
+ // A class of objects that can be used for validating various
+ // behaviors and guarantees of containers and algorithms defined in
// the standard library.
class copy_tracker
{