diff -Nru gccgo-4.9-4.9-20140321/debian/changelog gccgo-4.9-4.9-20140330/debian/changelog --- gccgo-4.9-4.9-20140321/debian/changelog 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/changelog 2014-03-30 16:51:36.000000000 +0000 @@ -1,3 +1,9 @@ +gccgo-4.9 (4.9-20140330-0ubuntu1) trusty; urgency=medium + + * Package GCC 4.9 snapshot 20140330. + + -- Matthias Klose Sun, 30 Mar 2014 10:59:30 +0200 + gccgo-4.9 (4.9-20140321-0ubuntu1) trusty; urgency=medium * Package GCC 4.9 snapshot 20140321. diff -Nru gccgo-4.9-4.9-20140321/debian/control.m4 gccgo-4.9-4.9-20140330/debian/control.m4 --- gccgo-4.9-4.9-20140321/debian/control.m4 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/control.m4 2014-03-30 16:51:36.000000000 +0000 @@ -55,18 +55,18 @@ ifdef(`TARGET',`dnl cross Build-Depends: debhelper (>= 5.0.62), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP - LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTOGEN_BUILD_DEP AUTO_BUILD_DEP + LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP SOURCE_BUILD_DEP CROSS_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, - zlib1g-dev, gawk, lzma, xz-utils, patchutils, + autogen, zlib1g-dev, gawk, lzma, xz-utils, patchutils, bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, quilt ',`dnl native Build-Depends: debhelper (>= 5.0.62), GCC_MULTILIB_BUILD_DEP LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], - AUTO_BUILD_DEP AUTOGEN_BUILD_DEP + AUTO_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], - zlib1g-dev, gawk, lzma, xz-utils, patchutils, + autogen, zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSBDV) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), locales, sharutils, diff -Nru gccgo-4.9-4.9-20140321/debian/libasan.symbols.common gccgo-4.9-4.9-20140330/debian/libasan.symbols.common --- gccgo-4.9-4.9-20140321/debian/libasan.symbols.common 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/libasan.symbols.common 2014-03-30 16:51:36.000000000 +0000 @@ -15,6 +15,7 @@ __asan_backtrace_initialize@Base 4.9 __asan_backtrace_open@Base 4.9 __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 __asan_backtrace_release_view@Base 4.9 __asan_backtrace_syminfo@Base 4.9 __asan_backtrace_vector_finish@Base 4.9 diff -Nru gccgo-4.9-4.9-20140321/debian/liblsan0.symbols gccgo-4.9-4.9-20140330/debian/liblsan0.symbols --- gccgo-4.9-4.9-20140321/debian/liblsan0.symbols 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/liblsan0.symbols 2014-03-30 16:51:36.000000000 +0000 @@ -18,6 +18,7 @@ __asan_backtrace_initialize@Base 4.9 __asan_backtrace_open@Base 4.9 __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 __asan_backtrace_release_view@Base 4.9 __asan_backtrace_syminfo@Base 4.9 __asan_backtrace_vector_finish@Base 4.9 diff -Nru gccgo-4.9-4.9-20140321/debian/libtsan0.symbols gccgo-4.9-4.9-20140330/debian/libtsan0.symbols --- gccgo-4.9-4.9-20140321/debian/libtsan0.symbols 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/libtsan0.symbols 2014-03-30 16:51:36.000000000 +0000 @@ -42,6 +42,7 @@ WTFAnnotateHappensBefore@Base 4.9 _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 _ZN11__sanitizer7OnPrintEPKc@Base 4.9 + _ZN6__tsan10OnFinalizeEb@Base 4.9 _ZN6__tsan8OnReportEPKNS_10ReportDescEb@Base 4.9 _ZdaPv@Base 4.9 _ZdaPvRKSt9nothrow_t@Base 4.9 @@ -60,6 +61,7 @@ __asan_backtrace_initialize@Base 4.9 __asan_backtrace_open@Base 4.9 __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 __asan_backtrace_release_view@Base 4.9 __asan_backtrace_syminfo@Base 4.9 __asan_backtrace_vector_finish@Base 4.9 @@ -1172,6 +1174,7 @@ __tsan_atomic8_store@Base 4.9 __tsan_atomic_signal_fence@Base 4.9 __tsan_atomic_thread_fence@Base 4.9 + __tsan_default_options@Base 4.9 __tsan_func_entry@Base 4.9 __tsan_func_exit@Base 4.9 __tsan_init@Base 4.9 diff -Nru gccgo-4.9-4.9-20140321/debian/libubsan0.symbols gccgo-4.9-4.9-20140330/debian/libubsan0.symbols --- gccgo-4.9-4.9-20140321/debian/libubsan0.symbols 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/libubsan0.symbols 2014-03-30 16:51:36.000000000 +0000 @@ -10,6 +10,7 @@ __asan_backtrace_initialize@Base 4.9 __asan_backtrace_open@Base 4.9 __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 __asan_backtrace_release_view@Base 4.9 __asan_backtrace_syminfo@Base 4.9 __asan_backtrace_vector_finish@Base 4.9 diff -Nru gccgo-4.9-4.9-20140321/debian/patches/ada-ppc64.diff gccgo-4.9-4.9-20140330/debian/patches/ada-ppc64.diff --- gccgo-4.9-4.9-20140321/debian/patches/ada-ppc64.diff 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/patches/ada-ppc64.diff 2014-03-30 16:51:36.000000000 +0000 @@ -11,7 +11,7 @@ - ifeq ($(strip $(shell $(GCC_FOR_TARGET) $(GNATLIBCFLAGS) -print-multi-os-directory)),../lib64) - LIBGNAT_TARGET_PAIRS = \ - $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64) -+ ifeq ($(strip $(filter-out powerpc64,$(arch))),) ++ ifeq ($(strip $(filter-out powerpc64%,$(arch))),) + ifeq ($(strip $(MULTISUBDIR)),/32) + LIBGNAT_TARGET_PAIRS = \ + $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32) diff -Nru gccgo-4.9-4.9-20140321/debian/rules2 gccgo-4.9-4.9-20140330/debian/rules2 --- gccgo-4.9-4.9-20140321/debian/rules2 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/rules2 2014-03-30 16:51:36.000000000 +0000 @@ -334,7 +334,7 @@ endif endif -ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-kfreebsd-gnu s390x-linux-gnu)) +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-kfreebsd-gnu s390x-linux-gnu)) ifneq ($(biarch32),yes) CONFARGS += --disable-multilib endif @@ -505,11 +505,14 @@ ifeq ($(DEB_TARGET_ARCH),amd64) CONFARGS += --with-abi=m64 endif +ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-abi=mx32 +endif ifeq ($(multilib),yes) ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32) else ifeq ($(DEB_TARGET_ARCH),x32) - CONFARGS += --with-abi=mx32 --with-multilib-list=mx32,m64,m32 + CONFARGS += --with-multilib-list=mx32,m64,m32 endif CONFARGS += --enable-multilib endif diff -Nru gccgo-4.9-4.9-20140321/debian/rules.conf gccgo-4.9-4.9-20140330/debian/rules.conf --- gccgo-4.9-4.9-20140321/debian/rules.conf 2014-03-30 16:51:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/debian/rules.conf 2014-03-30 16:51:36.000000000 +0000 @@ -373,9 +373,6 @@ endif CHECK_BUILD_DEP := dejagnu [$(check_no_archs)], -ifneq (,$(findstring gcc,$(PKGSOURCE))) - CHECK_BUILD_DEP += autogen, -endif AUTO_BUILD_DEP := m4, libtool, AUTO_BUILD_DEP += autoconf2.64, @@ -587,7 +584,6 @@ -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ -DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \ -DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \ - -DAUTOGEN_BUILD_DEP="$(AUTOGEN_BUILD_DEP)" \ -DCLOOG_BUILD_DEP="$(CLOOG_BUILD_DEP)" \ -DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \ -DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \ Binary files /tmp/9V0oDgQXwl/gccgo-4.9-4.9-20140321/gcc-20140321.tar.xz and /tmp/2ABzN3b6hr/gccgo-4.9-4.9-20140330/gcc-20140321.tar.xz differ Binary files /tmp/9V0oDgQXwl/gccgo-4.9-4.9-20140321/gcc-20140330.tar.xz and /tmp/2ABzN3b6hr/gccgo-4.9-4.9-20140330/gcc-20140330.tar.xz differ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/ChangeLog 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/ChangeLog 2014-03-27 17:33:34.000000000 +0000 @@ -1,3 +1,22 @@ +2014-03-28 Yaakov Selkowitz + + * Makefile.def (dependencies): Make all-ld depend on all-binutils + for WINDRES_FOR_TARGET in default-manifest.o rule. + * Makefile.in: Regenerate. + +2014-03-26 Dominique d'Humieres + + * MAINTAINERS (Write After Approval): Add myself. + +2014-03-26 Jakub Jelinek + + PR sanitizer/56781 + * Makefile.def: Set bootstrap=true; for host fixincludes. + * configure.ac: Don't bootstrap host fixincludes unless + --with-build-config=bootstrap-{a,ub}san. + * Makefile.in: Regenerated. + * configure: Regenerated. + 2014-03-21 Jakub Jelinek * configure.ac: Move BUILD_CONFIG set up earlier. Add diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/configure gccgo-4.9-4.9-20140330/=unpacked-tar1=/configure --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/configure 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/configure 2014-03-27 17:33:34.000000000 +0000 @@ -7163,6 +7163,7 @@ # build configuration in Makefile. target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'` build_configdirs=`echo "${build_configdirs}" | sed -e 's/build-//g'` +bootstrap_fixincludes=no # If we are building libgomp, bootstrap it. if echo " ${target_configdirs} " | grep " libgomp " > /dev/null 2>&1 ; then @@ -7175,6 +7176,7 @@ case "$BUILD_CONFIG" in *bootstrap-asan* | *bootstrap-ubsan* ) bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer, + bootstrap_fixincludes=yes ;; esac fi @@ -7257,11 +7259,15 @@ fi done fi + case ${module},${bootstrap_fixincludes} in + fixincludes,no) host_bootstrap_suffix=no-bootstrap ;; + *) host_bootstrap_suffix=$bootstrap_suffix ;; + esac extrasub_host="$extrasub_host /^@if $module\$/d /^@endif $module\$/d -/^@if $module-$bootstrap_suffix\$/d -/^@endif $module-$bootstrap_suffix\$/d" +/^@if $module-$host_bootstrap_suffix\$/d +/^@endif $module-$host_bootstrap_suffix\$/d" done extrasub_target= for module in ${target_configdirs} ; do diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/configure.ac gccgo-4.9-4.9-20140330/=unpacked-tar1=/configure.ac --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/configure.ac 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/configure.ac 2014-03-27 17:33:34.000000000 +0000 @@ -2532,6 +2532,7 @@ # build configuration in Makefile. target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'` build_configdirs=`echo "${build_configdirs}" | sed -e 's/build-//g'` +bootstrap_fixincludes=no # If we are building libgomp, bootstrap it. if echo " ${target_configdirs} " | grep " libgomp " > /dev/null 2>&1 ; then @@ -2544,6 +2545,7 @@ case "$BUILD_CONFIG" in *bootstrap-asan* | *bootstrap-ubsan* ) bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer, + bootstrap_fixincludes=yes ;; esac fi @@ -2626,11 +2628,15 @@ fi done fi + case ${module},${bootstrap_fixincludes} in + fixincludes,no) host_bootstrap_suffix=no-bootstrap ;; + *) host_bootstrap_suffix=$bootstrap_suffix ;; + esac extrasub_host="$extrasub_host /^@if $module\$/d /^@endif $module\$/d -/^@if $module-$bootstrap_suffix\$/d -/^@endif $module-$bootstrap_suffix\$/d" +/^@if $module-$host_bootstrap_suffix\$/d +/^@endif $module-$host_bootstrap_suffix\$/d" done extrasub_target= for module in ${target_configdirs} ; do diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/bb-reorder.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/bb-reorder.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/bb-reorder.c 2014-01-20 11:15:29.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/bb-reorder.c 2014-03-26 08:19:16.000000000 +0000 @@ -1826,9 +1826,8 @@ edge e; edge_iterator ei; - /* Find EDGE_CAN_FALLTHRU edge. */ FOR_EACH_EDGE (e, ei, cur_bb->succs) - if (e->flags & EDGE_CAN_FALLTHRU) + if (e->flags & EDGE_FALLTHRU) { fall_thru = e; break; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-decl.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-decl.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-decl.c 2014-03-07 09:59:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-decl.c 2014-03-28 19:04:53.000000000 +0000 @@ -4568,8 +4568,8 @@ cleanup = build_unary_op (input_location, ADDR_EXPR, decl, 0); vec_alloc (v, 1); v->quick_push (cleanup); - cleanup = build_function_call_vec (DECL_SOURCE_LOCATION (decl), - vNULL, cleanup_decl, v, NULL); + cleanup = c_build_function_call_vec (DECL_SOURCE_LOCATION (decl), + vNULL, cleanup_decl, v, NULL); vec_free (v); /* Don't warn about decl unused; the cleanup uses it. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/ChangeLog 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/ChangeLog 2014-03-28 19:04:53.000000000 +0000 @@ -1,3 +1,16 @@ +2014-03-28 Jakub Jelinek + + PR c++/60689 + * c-tree.h (c_build_function_call_vec): New prototype. + * c-typeck.c (build_function_call_vec): Don't call + resolve_overloaded_builtin here. + (c_build_function_call_vec): New wrapper function around + build_function_call_vec. Call resolve_overloaded_builtin here. + (convert_lvalue_to_rvalue, build_function_call, build_atomic_assign): + Call c_build_function_call_vec instead of build_function_call_vec. + * c-parser.c (c_parser_postfix_expression_after_primary): Likewise. + * c-decl.c (finish_decl): Likewise. + 2014-03-18 Manuel López-Ibáñez PR c/55383 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-parser.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-parser.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-parser.c 2014-02-21 09:32:56.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-parser.c 2014-03-28 19:04:53.000000000 +0000 @@ -7703,8 +7703,9 @@ expr.value, exprlist, sizeof_arg, sizeof_ptr_memacc_comptypes); - expr.value = build_function_call_vec (expr_loc, arg_loc, expr.value, - exprlist, origtypes); + expr.value + = c_build_function_call_vec (expr_loc, arg_loc, expr.value, + exprlist, origtypes); expr.original_code = ERROR_MARK; if (TREE_CODE (expr.value) == INTEGER_CST && TREE_CODE (orig_expr.value) == FUNCTION_DECL diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-tree.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-tree.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-tree.h 2014-02-09 10:14:56.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-tree.h 2014-03-28 19:04:53.000000000 +0000 @@ -643,6 +643,8 @@ extern tree c_build_va_arg (location_t, tree, tree); extern tree c_finish_transaction (location_t, tree, int); extern bool c_tree_equal (tree, tree); +extern tree c_build_function_call_vec (location_t, vec, tree, + vec *, vec *); /* Set to 0 at beginning of a function definition, set to 1 if a return statement that specifies a return value is seen. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-typeck.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-typeck.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c/c-typeck.c 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c/c-typeck.c 2014-03-28 19:04:53.000000000 +0000 @@ -2016,7 +2016,7 @@ params->quick_push (expr_addr); params->quick_push (tmp_addr); params->quick_push (seq_cst); - func_call = build_function_call_vec (loc, vNULL, fndecl, params, NULL); + func_call = c_build_function_call_vec (loc, vNULL, fndecl, params, NULL); /* EXPR is always read. */ mark_exp_read (exp.value); @@ -2801,7 +2801,7 @@ vec_alloc (v, list_length (params)); for (; params; params = TREE_CHAIN (params)) v->quick_push (TREE_VALUE (params)); - ret = build_function_call_vec (loc, vNULL, function, v, NULL); + ret = c_build_function_call_vec (loc, vNULL, function, v, NULL); vec_free (v); return ret; } @@ -2840,14 +2840,6 @@ /* Convert anything with function type to a pointer-to-function. */ if (TREE_CODE (function) == FUNCTION_DECL) { - /* Implement type-directed function overloading for builtins. - resolve_overloaded_builtin and targetm.resolve_overloaded_builtin - handle all the type checking. The result is a complete expression - that implements this function call. */ - tem = resolve_overloaded_builtin (loc, function, params); - if (tem) - return tem; - name = DECL_NAME (function); if (flag_tm) @@ -2970,6 +2962,30 @@ } return require_complete_type (result); } + +/* Like build_function_call_vec, but call also resolve_overloaded_builtin. */ + +tree +c_build_function_call_vec (location_t loc, vec arg_loc, + tree function, vec *params, + vec *origtypes) +{ + /* Strip NON_LVALUE_EXPRs, etc., since we aren't using as an lvalue. */ + STRIP_TYPE_NOPS (function); + + /* Convert anything with function type to a pointer-to-function. */ + if (TREE_CODE (function) == FUNCTION_DECL) + { + /* Implement type-directed function overloading for builtins. + resolve_overloaded_builtin and targetm.resolve_overloaded_builtin + handle all the type checking. The result is a complete expression + that implements this function call. */ + tree tem = resolve_overloaded_builtin (loc, function, params); + if (tem) + return tem; + } + return build_function_call_vec (loc, arg_loc, function, params, origtypes); +} /* Convert the argument expressions in the vector VALUES to the types in the list TYPELIST. @@ -3634,7 +3650,7 @@ params->quick_push (lhs_addr); params->quick_push (rhs); params->quick_push (seq_cst); - func_call = build_function_call_vec (loc, vNULL, fndecl, params, NULL); + func_call = c_build_function_call_vec (loc, vNULL, fndecl, params, NULL); add_stmt (func_call); /* Finish the compound statement. */ @@ -3666,7 +3682,7 @@ params->quick_push (lhs_addr); params->quick_push (old_addr); params->quick_push (seq_cst); - func_call = build_function_call_vec (loc, vNULL, fndecl, params, NULL); + func_call = c_build_function_call_vec (loc, vNULL, fndecl, params, NULL); add_stmt (func_call); params->truncate (0); @@ -3705,7 +3721,7 @@ params->quick_push (integer_zero_node); params->quick_push (seq_cst); params->quick_push (seq_cst); - func_call = build_function_call_vec (loc, vNULL, fndecl, params, NULL); + func_call = c_build_function_call_vec (loc, vNULL, fndecl, params, NULL); goto_stmt = build1 (GOTO_EXPR, void_type_node, done_decl); SET_EXPR_LOCATION (goto_stmt, loc); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/c-common.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/c-common.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/c-common.c 2014-02-28 00:03:07.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/c-common.c 2014-03-28 19:04:53.000000000 +0000 @@ -10453,6 +10453,7 @@ len = params->length (); vec_alloc (v, len + 1); + v->quick_push (build_int_cst (size_type_node, n)); for (z = 0; z < len; z++) v->quick_push ((*params)[z]); f = build_function_call_vec (loc, vNULL, function, v, NULL); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/ChangeLog 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/ChangeLog 2014-03-28 19:04:53.000000000 +0000 @@ -1,3 +1,21 @@ +2014-03-28 Jakub Jelinek + + PR c++/60689 + * c-common.c (add_atomic_size_parameter): When creating new + params vector, push the size argument first. + +2014-03-26 Jakub Jelinek + + * c-ubsan.c (ubsan_instrument_division, ubsan_instrument_shift, + ubsan_instrument_vla, ubsan_instrument_return): Adjust + ubsan_create_data callers. + +2014-03-22 Jakub Jelinek + + PR debug/60603 + * c-opts.c (c_finish_options): Restore cb_file_change call to + . + 2014-03-13 Jakub Jelinek PR middle-end/36282 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/c-opts.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/c-opts.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/c-opts.c 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/c-opts.c 2014-03-22 12:09:05.000000000 +0000 @@ -1274,17 +1274,18 @@ { size_t i; - { - /* Make sure all of the builtins about to be declared have - BUILTINS_LOCATION has their source_location. */ - source_location builtins_loc = BUILTINS_LOCATION; - cpp_force_token_locations (parse_in, &builtins_loc); + cb_file_change (parse_in, + linemap_add (line_table, LC_RENAME, 0, + _(""), 0)); + /* Make sure all of the builtins about to be declared have + BUILTINS_LOCATION has their source_location. */ + source_location builtins_loc = BUILTINS_LOCATION; + cpp_force_token_locations (parse_in, &builtins_loc); - cpp_init_builtins (parse_in, flag_hosted); - c_cpp_builtins (parse_in); + cpp_init_builtins (parse_in, flag_hosted); + c_cpp_builtins (parse_in); - cpp_stop_forcing_token_locations (parse_in); - } + cpp_stop_forcing_token_locations (parse_in); /* We're about to send user input to cpplib, so make it warn for things that we previously (when we sent it internal definitions) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/c-ubsan.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/c-ubsan.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/c-family/c-ubsan.c 2014-01-05 19:58:09.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/c-family/c-ubsan.c 2014-03-27 17:33:34.000000000 +0000 @@ -73,7 +73,7 @@ make sure it gets evaluated before the condition. */ t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), op0, t); tree data = ubsan_create_data ("__ubsan_overflow_data", - loc, NULL, + &loc, NULL, ubsan_type_descriptor (type, false), NULL_TREE); data = build_fold_addr_expr_loc (loc, data); @@ -142,7 +142,7 @@ make sure it gets evaluated before the condition. */ t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), op0, t); tree data = ubsan_create_data ("__ubsan_shift_data", - loc, NULL, + &loc, NULL, ubsan_type_descriptor (type0, false), ubsan_type_descriptor (type1, false), NULL_TREE); @@ -169,7 +169,7 @@ t = fold_build2 (LE_EXPR, boolean_type_node, size, build_int_cst (type, 0)); tree data = ubsan_create_data ("__ubsan_vla_data", - loc, NULL, + &loc, NULL, ubsan_type_descriptor (type, false), NULL_TREE); data = build_fold_addr_expr_loc (loc, data); @@ -185,7 +185,7 @@ tree ubsan_instrument_return (location_t loc) { - tree data = ubsan_create_data ("__ubsan_missing_return_data", loc, + tree data = ubsan_create_data ("__ubsan_missing_return_data", &loc, NULL, NULL_TREE); tree t = builtin_decl_explicit (BUILT_IN_UBSAN_HANDLE_MISSING_RETURN); return build_call_expr_loc (loc, t, 1, build_fold_addr_expr_loc (loc, data)); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cgraph.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cgraph.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cgraph.c 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cgraph.c 2014-03-30 07:40:38.000000000 +0000 @@ -61,6 +61,8 @@ #include "ipa-inline.h" #include "cfgloop.h" #include "gimple-pretty-print.h" +#include "expr.h" +#include "tree-dfa.h" /* FIXME: Only for PROP_loops, but cgraph shouldn't have to know about this. */ #include "tree-pass.h" @@ -1329,6 +1331,7 @@ cgraph_redirect_edge_call_stmt_to_callee (struct cgraph_edge *e) { tree decl = gimple_call_fndecl (e->call_stmt); + tree lhs = gimple_call_lhs (e->call_stmt); gimple new_stmt; gimple_stmt_iterator gsi; #ifdef ENABLE_CHECKING @@ -1471,6 +1474,30 @@ update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt); } + /* If the call becomes noreturn, remove the lhs. */ + if (lhs && (gimple_call_flags (new_stmt) & ECF_NORETURN)) + { + if (TREE_CODE (lhs) == SSA_NAME) + { + gsi = gsi_for_stmt (new_stmt); + + tree var = create_tmp_var (TREE_TYPE (lhs), NULL); + tree def = get_or_create_ssa_default_def + (DECL_STRUCT_FUNCTION (e->caller->decl), var); + gimple set_stmt = gimple_build_assign (lhs, def); + gsi_insert_before (&gsi, set_stmt, GSI_SAME_STMT); + } + gimple_call_set_lhs (new_stmt, NULL_TREE); + update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt); + } + + /* If new callee has no static chain, remove it. */ + if (gimple_call_chain (new_stmt) && !DECL_STATIC_CHAIN (e->callee->decl)) + { + gimple_call_set_chain (new_stmt, NULL); + update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt); + } + cgraph_set_call_stmt_including_clones (e->caller, e->call_stmt, new_stmt, false); if (cgraph_dump_file) @@ -2612,6 +2639,12 @@ || node->in_other_partition || e->callee->in_other_partition) return false; + + /* Optimizers can redirect unreachable calls or calls triggering undefined + behaviour to builtin_unreachable. */ + if (DECL_BUILT_IN_CLASS (e->callee->decl) == BUILT_IN_NORMAL + && DECL_FUNCTION_CODE (e->callee->decl) == BUILT_IN_UNREACHABLE) + return false; node = cgraph_function_or_thunk_node (node, NULL); if (e->callee->former_clone_of != node->decl diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cgraphclones.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cgraphclones.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cgraphclones.c 2014-02-05 09:15:43.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cgraphclones.c 2014-03-26 08:19:16.000000000 +0000 @@ -238,8 +238,12 @@ FOR_EACH_VEC_ELT (redirect_callers, i, e) { /* Redirect calls to the old version node to point to its new - version. */ - cgraph_redirect_edge_callee (e, new_node); + version. The only exception is when the edge was proved to + be unreachable during the clonning procedure. */ + if (!e->callee + || DECL_BUILT_IN_CLASS (e->callee->decl) != BUILT_IN_NORMAL + || DECL_FUNCTION_CODE (e->callee->decl) != BUILT_IN_UNREACHABLE) + cgraph_redirect_edge_callee (e, new_node); } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ChangeLog 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ChangeLog 2014-03-30 07:40:38.000000000 +0000 @@ -1,3 +1,424 @@ +2014-03-28 Jan Hubicka + + * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Clear + static chain if needed. + +2014-03-28 Vladimir Makarov + + PR target/60697 + * lra-constraints.c (index_part_to_reg): New. + (process_address): Use it. + +2014-03-27 Jeff Law + Jakub Jelinek + + PR target/60648 + * expr.c (do_tablejump): Use simplify_gen_binary rather than + gen_rtx_{PLUS,MULT} to build up the address expression. + + * i386/i386.c (ix86_legitimize_address): Use copy_addr_to_reg to avoid + creating non-canonical RTL. + +2014-03-28 Jan Hubicka + + PR ipa/60243 + * ipa-inline.c (want_inline_small_function_p): Short circuit large + functions; reorganize to make cheap checks first. + (inline_small_functions): Do not estimate growth when dumping; + it is expensive. + * ipa-inline.h (inline_summary): Add min_size. + (growth_likely_positive): New function. + * ipa-inline-analysis.c (dump_inline_summary): Add min_size. + (set_cond_stmt_execution_predicate): Cleanup. + (estimate_edge_size_and_time): Compute min_size. + (estimate_calls_size_and_time): Likewise. + (estimate_node_size_and_time): Likewise. + (inline_update_overall_summary): Update min_size. + (do_estimate_edge_time): Likewise. + (do_estimate_edge_size): Update. + (do_estimate_edge_hints): Update. + (growth_likely_positive): New function. + +2014-03-28 Jakub Jelinek + + PR target/60693 + * config/i386/i386.c (ix86_copy_addr_to_reg): Call copy_addr_to_reg + also if addr has VOIDmode. + +2014-03-28 Kyrylo Tkachov + + * config/arm/aarch-common.c (aarch_crypto_can_dual_issue): New. + * config/arm/aarch-common-protos.h (aarch_crypto_can_dual_issue): + Declare extern. + * config/arm/cortex-a53.md: Add reservations and bypass for crypto + instructions as well as AdvancedSIMD loads. + +2014-03-28 Kyrylo Tkachov + + * config/aarch64/aarch64-simd.md (aarch64_crypto_aesv16qi): + Use crypto_aese type. + (aarch64_crypto_aesv16qi): Use crypto_aesmc type. + * config/arm/arm.md (is_neon_type): Replace crypto_aes with + crypto_aese, crypto_aesmc. Move to types.md. + * config/arm/types.md (crypto_aes): Split into crypto_aese, + crypto_aesmc. + * config/arm/iterators.md (crypto_type): Likewise. + +2014-03-28 Jan Hubicka + + * cgraph.c: Include expr.h and tree-dfa.h. + (cgraph_redirect_edge_call_stmt_to_callee): If call in noreturn; remove LHS. + +2014-03-28 Vladimir Makarov + + PR target/60675 + * lra-assigns.c (find_hard_regno_for): Remove unavailable hard + regs from checking multi-reg pseudos. + +2014-03-28 Ramana Radhakrishnan + + * config/arm/t-aprofile (MULTILIB_MATCHES): Correct A12 rule. + +2014-03-28 Ulrich Weigand + + * config/rs6000/rs6000.c (fusion_gpr_load_p): Refuse optimization + if it would clobber the stack pointer, even temporarily. + +2014-03-28 Eric Botcazou + + * mode-switching.c: Make small adjustments to the top comment. + +2014-03-27 Michael Meissner + + * config/rs6000/constraints.md (wD constraint): New constraint to + match the constant integer to get the top DImode/DFmode out of a + vector in a VSX register. + + * config/rs6000/predicates.md (vsx_scalar_64bit): New predicate to + match the constant integer to get the top DImode/DFmode out of a + vector in a VSX register. + + * config/rs6000/rs6000-builtins.def (VBPERMQ): Add vbpermq builtin + for ISA 2.07. + + * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add + vbpermq builtins. + + * config/rs6000/rs6000.c (rs6000_debug_reg_global): If + -mdebug=reg, print value of VECTOR_ELEMENT_SCALAR_64BIT. + + * config/rs6000/vsx.md (vsx_extract_, V2DI/V2DF modes): + Optimize vec_extract of 64-bit values, where the value being + extracted is in the top word, where we can use scalar + instructions. Add direct move and store support. Combine the big + endian/little endian vector select load support into a single + insn. + (vsx_extract__internal1): Likewise. + (vsx_extract__internal2): Likewise. + (vsx_extract__load): Likewise. + (vsx_extract__store): Likewise. + (vsx_extract__zero): Delete, big and little endian insns are + combined into vsx_extract__load. + (vsx_extract__one_le): Likewise. + + * config/rs6000/rs6000.h (VECTOR_ELEMENT_SCALAR_64BIT): Macro to + define the top 64-bit vector element. + + * doc/md.texi (PowerPC and IBM RS6000 constraints): Document wD + constraint. + + * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): + Document vec_vbpermq builtin. + + PR target/60672 + * config/rs6000/altivec.h (vec_xxsldwi): Add missing define to + enable use of xxsldwi and xxpermdi builtin functions. + (vec_xxpermdi): Likewise. + + * doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions): + Document use of vec_xxsldwi and vec_xxpermdi builtins. + +2014-03-27 Vladimir Makarov + + PR rtl-optimization/60650 + * lra-asign.c (find_hard_regno_for, spill_for): Add parameter + first_p. Use it. + (find_spills_for): New. + (assign_by_spills): Pass the new parameter to find_hard_regno_for. + Spill all pseudos on the second iteration. + +2014-03-27 Marek Polacek + + PR c/50347 + * doc/extend.texi (ffs Builtins): Change unsigned types to signed + types. + +2014-03-27 Andreas Krebbel + + * config/s390/s390.c (s390_can_use_return_insn): Check for + call-saved FPRs on 31 bit. + +2014-03-27 Jakub Jelinek + + PR middle-end/60682 + * omp-low.c (lower_omp_1): For gimple_clobber_p stmts, + if they need regimplification, just drop them instead of + calling gimple_regimplify_operands on them. + +2014-03-27 Marcus Shawcroft + + PR target/60580 + * config/aarch64/aarch64.c (faked_omit_frame_pointer): Remove. + (aarch64_frame_pointer_required): Adjust logic. + (aarch64_can_eliminate): Adjust logic. + (aarch64_override_options_after_change): Adjust logic. + +2014-03-27 Dehao Chen + + * ipa-inline.c (early_inliner): Update node's inline info. + +2014-03-26 Dehao Chen + + * dojump.c (do_compare_rtx_and_jump): Sets correct probability for + compiler inserted conditional jumps for NAN float check. + +2014-03-26 Jakub Jelinek + + * ubsan.h (ubsan_create_data): Change second argument's type + to const location_t *. + * ubsan.c (ubsan_source_location): If xloc.file is NULL, set it to + _(""). + (ubsan_create_data): Change second argument to const location_t *PLOC. + Create Loc field whenever PLOC is non-NULL. + (ubsan_instrument_unreachable, ubsan_expand_null_ifn, + ubsan_build_overflow_builtin, instrument_bool_enum_load): Adjust + callers. + + PR other/59545 + * real.c (real_to_integer2): Change type of low to UHWI. + +2014-03-26 Tobias Burnus + + * gcc.c (LINK_COMMAND_SPEC): Use libcilkrts.spec for -fcilkplus. + (CILK_SELF_SPECS): New define. + (driver_self_specs): Use it. + +2014-03-26 Richard Biener + + * tree-pretty-print.c (percent_K_format): Implement special + case for LTO and its stripped down BLOCK tree. + +2014-03-26 Jakub Jelinek + + PR sanitizer/60636 + * ubsan.c (instrument_si_overflow): Instrument ABS_EXPR. + + * tree-vrp.c (simplify_internal_call_using_ranges): If only + one range is range_int_cst_p, but not both, at least optimize + addition/subtraction of 0 and multiplication by 0 or 1. + * gimple-fold.c (gimple_fold_call): Fold + IFN_UBSAN_CHECK_{ADD,SUB,MUL}. + (gimple_fold_stmt_to_constant_1): If both op0 and op1 aren't + INTEGER_CSTs, try to fold at least x * 0 and y - y. + +2014-03-26 Eric Botcazou + + PR rtl-optimization/60452 + * rtlanal.c (rtx_addr_can_trap_p_1): Fix head comment. + : Return 1 for invalid offsets from the frame pointer. + +2014-03-26 Marek Polacek + + PR c/37428 + * doc/extend.texi (C Extensions): Mention variable-length arrays in + a structure/union. + +2014-03-26 Marek Polacek + + PR c/39525 + * doc/extend.texi (Designated Inits): Describe what happens to omitted + field members. + +2014-03-26 Marek Polacek + + PR other/59545 + * ira-color.c (update_conflict_hard_regno_costs): Perform the + multiplication in unsigned type. + +2014-03-26 Chung-Ju Wu + + * doc/install.texi: Document nds32le-*-elf and nds32be-*-elf. + +2014-03-26 Chung-Ju Wu + + * doc/contrib.texi: Add myself as Andes nds32 port contributor. + +2014-03-25 Jan Hubicka + + PR ipa/60315 + * cif-code.def (UNREACHABLE) New code. + * ipa-inline.c (inline_small_functions): Skip edges to __builtlin_unreachable. + (estimate_edge_growth): Allow edges to __builtlin_unreachable. + * ipa-inline-analysis.c (edge_set_predicate): Redirect edges with false + predicate to __bulitin_unreachable. + (set_cond_stmt_execution_predicate): Fix issue when invert_tree_comparison + returns ERROR_MARK. + * ipa-pure-const.c (propagate_pure_const, propagate_nothrow): Do not + propagate to inline clones. + * cgraph.c (verify_edge_corresponds_to_fndecl): Allow redirection + to unreachable. + * ipa-cp.c (create_specialized_node): Be ready for new node to appear. + * cgraphclones.c (cgraph_clone_node): If call destination is already + ureachable, do not redirect it back. + * tree-inline.c (fold_marked_statements): Hanlde calls becoming + unreachable. + +2014-03-25 Jan Hubicka + + * ipa-pure-const.c (propagate_pure_const, propagate_nothrow): + Do not modify inline clones. + +2014-03-25 Jakub Jelinek + + * config/i386/i386.md (general_sext_operand): New mode attr. + (addv4, subv4, mulv4): If operands[2] is CONST_INT, + don't generate (sign_extend (const_int)). + (*addv4, *subv4, *mulv4): Disallow CONST_INT_P + operands[2]. Use We constraint instead of and + predicate instead of . + (*addv4_1, *subv4_1, *mulv4_1): New insns. + * config/i386/constraints.md (We): New constraint. + * config/i386/predicates.md (x86_64_sext_operand, + sext_operand): New predicates. + +2014-03-25 Martin Jambor + + PR ipa/60600 + * ipa-cp.c (ipa_get_indirect_edge_target_1): Redirect type + inconsistent devirtualizations to __builtin_unreachable. + +2014-03-25 Marek Polacek + + PR c/35449 + * doc/extend.texi (Example of asm with clobbered asm reg): Fix typo. + +2014-03-25 Alan Lawrence + + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Reverse + order of elements for big-endian. + +2014-03-25 Richard Biener + + PR middle-end/60635 + * gimplify-me.c (gimple_regimplify_operands): Update the + re-gimplifed stmt. + +2014-03-25 Martin Jambor + + PR ipa/59176 + * lto-cgraph.c (lto_output_node): Stream body_removed flag. + (lto_output_varpool_node): Likewise. + (input_overwrite_node): Likewise. + (input_varpool_node): Likewise. + +2014-03-25 Richard Biener + + * lto-wrapper.c (merge_and_complain): Handle OPT_fPIE like + OPT_fpie. + (run_gcc): Likewise. + +2014-03-25 Jakub Jelinek + + * combine.c (simplify_compare_const): Add MODE argument. + Handle mode_width 0 as very large mode_width. + (try_combine, simplify_comparison): Adjust callers. + + * cselib.c (cselib_hash_rtx): Perform addition in unsigned + type to avoid signed integer overflow. + * explow.c (plus_constant): Likewise. + +2014-03-25 Dominik Vogt + + * doc/generic.texi: Correct typos. + +2014-03-24 Tobias Burnus + + * doc/invoke.texi (-flto): Expand section about + using static libraries with LTO. + +2014-03-24 Andreas Krebbel + + PR rtl-optimization/60501 + * optabs.def (addptr3_optab): New optab. + * optabs.c (gen_addptr3_insn, have_addptr3_insn): New function. + * doc/md.texi ("addptrm3"): Document new RTL standard expander. + * expr.h (gen_addptr3_insn, have_addptr3_insn): Add prototypes. + + * lra.c (emit_add3_insn): Use the addptr pattern if available. + + * config/s390/s390.md ("addptrdi3", "addptrsi3"): New expanders. + +2014-03-24 Ulrich Drepper + + * config/i386/avx512fintrin.h: Define _mm512_set1_ps and + _mm512_set1_pd. + + * config/i386/avxintrin.h (_mm256_undefined_si256): Define. + (_mm256_undefined_ps): Define. + (_mm256_undefined_pd): Define. + * config/i386/emmintrin.h (_mm_undefined_si128): Define. + (_mm_undefined_pd): Define. + * config/i386/xmmintrin.h (_mm_undefined_ps): Define. + * config/i386/avx512fintrin.h (_mm512_undefined_si512): Define. + (_mm512_undefined_ps): Define. + (_mm512_undefined_pd): Define. + Use _mm*_undefined_*. + * config/i386/avx2intrin.h: Use _mm*_undefined_*. + +2014-03-24 Alex Velenko + + * config/aarch64/aarch64-simd-builtins.def (lshr): DI mode excluded. + (lshr_simd): DI mode added. + * config/aarch64/aarch64-simd.md (aarch64_lshr_simddi): New pattern. + (aarch64_ushr_simddi): Likewise. + * config/aarch64/aarch64.md (UNSPEC_USHR64): New unspec. + * config/aarch64/arm_neon.h (vshr_n_u64): Intrinsic fixed. + (vshrd_n_u64): Likewise. + +2014-03-24 Rainer Orth + + * Makefile.in (s-macro_list): Depend on cc1. + +2014-03-23 Teresa Johnson + + * ipa-utils.c (ipa_print_order): Use specified dump file. + +2014-03-23 Eric Botcazou + + PR rtl-optimization/60601 + * bb-reorder.c (fix_up_fall_thru_edges): Test EDGE_FALLTHRU everywhere. + + * gcc.c (eval_spec_function): Initialize save_growing_value. + +2014-03-22 Jakub Jelinek + + PR sanitizer/60613 + * internal-fn.c (ubsan_expand_si_overflow_addsub_check): For + code == MINUS_EXPR, never swap op0 with op1. + + * toplev.c (init_local_tick): Avoid signed integer multiplication + overflow. + * genautomata.c (reserv_sets_hash_value): Fix rotate idiom, avoid + shift by first operand's bitsize. + +2014-03-21 Jakub Jelinek + + PR target/60610 + * config/i386/i386.h (TARGET_64BIT_P): If not TARGET_BI_ARCH, + redefine to 1 or 0. + * config/i386/darwin.h (TARGET_64BIT_P): Redefine to + TARGET_ISA_64BIT_P(x). + 2014-03-21 Bill Schmidt * config/rs6000/rs6000.c (rs6000_expand_vector_set): Generate a @@ -128,15 +549,15 @@ 2014-03-18 Basile Starynkevitch - * plugin.def: Improve comment for PLUGIN_INCLUDE_FILE. - * doc/plugins.texi (Plugin callbacks): Mention - PLUGIN_INCLUDE_FILE. - Italicize plugin event names in description. Explain that - PLUGIN_PRAGMAS has no sense for lto1. Explain - PLUGIN_INCLUDE_FILE. - Remind that no GCC functions should be called after - PLUGIN_FINISH. - Explain what pragmas with expansion are. + * plugin.def: Improve comment for PLUGIN_INCLUDE_FILE. + * doc/plugins.texi (Plugin callbacks): Mention + PLUGIN_INCLUDE_FILE. + Italicize plugin event names in description. Explain that + PLUGIN_PRAGMAS has no sense for lto1. Explain + PLUGIN_INCLUDE_FILE. + Remind that no GCC functions should be called after + PLUGIN_FINISH. + Explain what pragmas with expansion are. 2014-03-18 Martin Liska @@ -372,7 +793,7 @@ (splitters for the fop_* register patterns): Remove. (fscalexf4_i387): Rename from *fscalexf4_i387. (ldexpxf3): Use gen_floatsixf2 and gen_fscalexf4_i387. - + 2014-03-13 Jakub Jelinek PR tree-optimization/59779 @@ -792,11 +1213,11 @@ optimization levels. (run_gcc): And pass it through to the link options. -2014-03-06 Alexandre Oliva +2014-03-06 Alexandre Oliva PR debug/60381 Revert: - 2014-02-28 Alexandre Oliva + 2014-02-28 Alexandre Oliva PR debug/59992 * cselib.c (remove_useless_values): Skip to avoid quadratic behavior if the condition moved from... @@ -1006,7 +1427,7 @@ and latches. Also honor LOOPS_MAY_HAVE_MULTIPLE_LATCHES. (remove_forwarder_block): Properly update the latch of a loop. -2014-02-28 Alexandre Oliva +2014-02-28 Alexandre Oliva PR debug/59992 * cselib.c (cselib_hasher::equal): Special-case VALUE lookup. @@ -1017,14 +1438,14 @@ (cselib_finish): Release it. (dump_cselib_table): Dump it. -2014-02-28 Alexandre Oliva +2014-02-28 Alexandre Oliva PR debug/59992 * cselib.c (remove_useless_values): Skip to avoid quadratic behavior if the condition moved from... (cselib_process_insn): ... here holds. -2014-02-28 Alexandre Oliva +2014-02-28 Alexandre Oliva PR debug/57232 * var-tracking.c (vt_initialize): Apply the same condition to @@ -1299,22 +1720,22 @@ (sched_rgn_init): ... here. (schedule_region): Check for SCHED_PRESSURE_NONE earlier. -2014-02-23 David Holsgrove +2014-02-23 David Holsgrove * config/microblaze/microblaze.md: Correct ashrsi_reg / lshrsi_reg names. -2014-02-23 Edgar E. Iglesias +2014-02-23 Edgar E. Iglesias * config/microblaze/microblaze.h: Remove SECONDARY_MEMORY_NEEDED definition. -2014-02-23 David Holsgrove +2014-02-23 David Holsgrove * /config/microblaze/microblaze.c: Add microblaze_asm_output_mi_thunk, define TARGET_ASM_OUTPUT_MI_THUNK and TARGET_ASM_CAN_OUTPUT_MI_THUNK. -2014-02-23 David Holsgrove +2014-02-23 David Holsgrove * config/microblaze/predicates.md: Add cmp_op predicate. * config/microblaze/microblaze.md: Add branch_compare instruction @@ -2027,16 +2448,16 @@ * config.gcc (i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*, *-*-solaris2.9*): Use it. -2014-02-10 Nagaraju Mekala +2014-02-10 Nagaraju Mekala * config/microblaze/microblaze.md: Add movsi4_rev insn pattern. * config/microblaze/predicates.md: Add reg_or_mem_operand predicate. -2014-02-10 Nagaraju Mekala +2014-02-10 Nagaraju Mekala * config/microblaze/microblaze.c: Extend mcpu version format -2014-02-10 David Holsgrove +2014-02-10 David Holsgrove * config/microblaze/microblaze.h: Define SIZE_TYPE and PTRDIFF_TYPE. @@ -3059,7 +3480,7 @@ * README.Portability: Fix typo. -2014-01-30 David Holsgrove +2014-01-30 David Holsgrove * config/microblaze/microblaze.md(cstoresf4, cbranchsf4): Replace comparison_operator with ordered_comparison_operator. @@ -3809,7 +4230,7 @@ * config/aarch64/aarch64.md (UNSPEC_LD1): New unspec definition. (UNSPEC_ST1): Likewise. -2014-01-23 David Holsgrove +2014-01-23 David Holsgrove * config/microblaze/microblaze.md: Add trap insn and attribute @@ -3865,7 +4286,7 @@ * config/mips/mips.c (mips_reorg_process_insns): Check which asm operands have been referenced when recording LO_SUM references. -2014-01-22 David Holsgrove +2014-01-22 David Holsgrove * config/microblaze/microblaze.md: Correct bswaphi2 insn. @@ -4139,7 +4560,7 @@ (ipcp_edge_removal_hook): New function. (ipcp_driver): Register ipcp_edge_removal_hook. -2014-01-17 Andrew Pinski +2014-01-17 Andrew Pinski Steve Ellcey PR target/59462 @@ -5014,7 +5435,7 @@ one successor with a block with no successors, remove any BARRIER after the second block. -2014-01-07 Dan Xio Qiang +2014-01-07 Dan Xio Qiang * hw-doloop.c (reorg_loops): Release the bitmap obstack. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cif-code.def gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cif-code.def --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cif-code.def 2014-02-05 09:15:43.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cif-code.def 2014-03-26 08:19:16.000000000 +0000 @@ -127,3 +127,7 @@ /* We can't inline because of mismatched caller/callee attributes. */ DEFCIFCODE(ATTRIBUTE_MISMATCH, CIF_FINAL_NORMAL, N_("function attribute mismatch")) + +/* We proved that the call is unreachable. */ +DEFCIFCODE(UNREACHABLE, CIF_FINAL_NORMAL, + N_("unreachable")) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/combine.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/combine.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/combine.c 2014-02-28 00:03:09.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/combine.c 2014-03-26 08:19:16.000000000 +0000 @@ -446,7 +446,8 @@ int); static int recog_for_combine (rtx *, rtx, rtx *); static rtx gen_lowpart_for_combine (enum machine_mode, rtx); -static enum rtx_code simplify_compare_const (enum rtx_code, rtx, rtx *); +static enum rtx_code simplify_compare_const (enum rtx_code, enum machine_mode, + rtx, rtx *); static enum rtx_code simplify_comparison (enum rtx_code, rtx *, rtx *); static void update_table_tick (rtx); static void record_value_for_reg (rtx, rtx, rtx); @@ -2949,7 +2950,7 @@ { compare_code = orig_compare_code = GET_CODE (*cc_use_loc); compare_code = simplify_compare_const (compare_code, - op0, &op1); + GET_MODE (i2dest), op0, &op1); target_canonicalize_comparison (&compare_code, &op0, &op1, 1); } @@ -10817,9 +10818,9 @@ *POP1 may be updated. */ static enum rtx_code -simplify_compare_const (enum rtx_code code, rtx op0, rtx *pop1) +simplify_compare_const (enum rtx_code code, enum machine_mode mode, + rtx op0, rtx *pop1) { - enum machine_mode mode = GET_MODE (op0); unsigned int mode_width = GET_MODE_PRECISION (mode); HOST_WIDE_INT const_op = INTVAL (*pop1); @@ -10835,7 +10836,7 @@ if (const_op && (code == EQ || code == NE || code == GE || code == GEU || code == LT || code == LTU) - && mode_width <= HOST_BITS_PER_WIDE_INT + && mode_width - 1 < HOST_BITS_PER_WIDE_INT && exact_log2 (const_op & GET_MODE_MASK (mode)) >= 0 && (nonzero_bits (op0, mode) == (unsigned HOST_WIDE_INT) (const_op & GET_MODE_MASK (mode)))) @@ -10882,7 +10883,7 @@ /* If we are doing a <= 0 comparison on a value known to have a zero sign bit, we can replace this with == 0. */ else if (const_op == 0 - && mode_width <= HOST_BITS_PER_WIDE_INT + && mode_width - 1 < HOST_BITS_PER_WIDE_INT && (nonzero_bits (op0, mode) & ((unsigned HOST_WIDE_INT) 1 << (mode_width - 1))) == 0) @@ -10911,7 +10912,7 @@ /* If we are doing a > 0 comparison on a value known to have a zero sign bit, we can replace this with != 0. */ else if (const_op == 0 - && mode_width <= HOST_BITS_PER_WIDE_INT + && mode_width - 1 < HOST_BITS_PER_WIDE_INT && (nonzero_bits (op0, mode) & ((unsigned HOST_WIDE_INT) 1 << (mode_width - 1))) == 0) @@ -10927,7 +10928,7 @@ /* ... fall through ... */ } /* (unsigned) < 0x80000000 is equivalent to >= 0. */ - else if (mode_width <= HOST_BITS_PER_WIDE_INT + else if (mode_width - 1 < HOST_BITS_PER_WIDE_INT && (unsigned HOST_WIDE_INT) const_op == (unsigned HOST_WIDE_INT) 1 << (mode_width - 1)) { @@ -10943,7 +10944,7 @@ if (const_op == 0) code = EQ; /* (unsigned) <= 0x7fffffff is equivalent to >= 0. */ - else if (mode_width <= HOST_BITS_PER_WIDE_INT + else if (mode_width - 1 < HOST_BITS_PER_WIDE_INT && (unsigned HOST_WIDE_INT) const_op == ((unsigned HOST_WIDE_INT) 1 << (mode_width - 1)) - 1) { @@ -10962,7 +10963,7 @@ } /* (unsigned) >= 0x80000000 is equivalent to < 0. */ - else if (mode_width <= HOST_BITS_PER_WIDE_INT + else if (mode_width - 1 < HOST_BITS_PER_WIDE_INT && (unsigned HOST_WIDE_INT) const_op == (unsigned HOST_WIDE_INT) 1 << (mode_width - 1)) { @@ -10978,7 +10979,7 @@ if (const_op == 0) code = NE; /* (unsigned) > 0x7fffffff is equivalent to < 0. */ - else if (mode_width <= HOST_BITS_PER_WIDE_INT + else if (mode_width - 1 < HOST_BITS_PER_WIDE_INT && (unsigned HOST_WIDE_INT) const_op == ((unsigned HOST_WIDE_INT) 1 << (mode_width - 1)) - 1) { @@ -11185,7 +11186,7 @@ /* Try to simplify the compare to constant, possibly changing the comparison op, and/or changing op1 to zero. */ - code = simplify_compare_const (code, op0, &op1); + code = simplify_compare_const (code, mode, op0, &op1); const_op = INTVAL (op1); /* Compute some predicates to simplify code below. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64-builtins.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64-builtins.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64-builtins.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64-builtins.c 2014-03-26 08:19:17.000000000 +0000 @@ -183,6 +183,10 @@ #define TYPES_GETLANE (aarch64_types_getlane_qualifiers) #define TYPES_SHIFTIMM (aarch64_types_getlane_qualifiers) static enum aarch64_type_qualifiers +aarch64_types_unsigned_shift_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_unsigned, qualifier_unsigned, qualifier_immediate }; +#define TYPES_USHIFTIMM (aarch64_types_unsigned_shift_qualifiers) +static enum aarch64_type_qualifiers aarch64_types_setlane_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_none, qualifier_none, qualifier_none, qualifier_immediate }; #define TYPES_SETLANE (aarch64_types_setlane_qualifiers) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64.c 2014-03-27 17:33:35.000000000 +0000 @@ -315,10 +315,6 @@ #define AARCH64_NUM_BITMASKS 5334 static unsigned HOST_WIDE_INT aarch64_bitmasks[AARCH64_NUM_BITMASKS]; -/* Did we set flag_omit_frame_pointer just so - aarch64_frame_pointer_required would be called? */ -static bool faked_omit_frame_pointer; - typedef enum aarch64_cond_code { AARCH64_EQ = 0, AARCH64_NE, AARCH64_CS, AARCH64_CC, AARCH64_MI, AARCH64_PL, @@ -1694,17 +1690,15 @@ if (cfun->calls_alloca) return true; - /* We may have turned flag_omit_frame_pointer on in order to have this - function called; if we did, we also set the 'faked_omit_frame_pointer' flag - and we'll check it here. - If we really did set flag_omit_frame_pointer normally, then we return false - (no frame pointer required) in all cases. */ + /* In aarch64_override_options_after_change + flag_omit_leaf_frame_pointer turns off the frame pointer by + default. Turn it back on now if we've not got a leaf + function. */ + if (flag_omit_leaf_frame_pointer + && (!crtl->is_leaf || df_regs_ever_live_p (LR_REGNUM))) + return true; - if (flag_omit_frame_pointer && !faked_omit_frame_pointer) - return false; - else if (flag_omit_leaf_frame_pointer) - return !crtl->is_leaf || df_regs_ever_live_p (LR_REGNUM); - return true; + return false; } /* Mark the registers that need to be saved by the callee and calculate @@ -4132,23 +4126,8 @@ return true; if (from == FRAME_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM) return true; - return false; - } - else - { - /* If we decided that we didn't need a leaf frame pointer but then used - LR in the function, then we'll want a frame pointer after all, so - prevent this elimination to ensure a frame pointer is used. - - NOTE: the original value of flag_omit_frame_pointer gets trashed - IFF flag_omit_leaf_frame_pointer is true, so we check the value - of faked_omit_frame_pointer here (which is true when we always - wish to keep non-leaf frame pointers but only wish to keep leaf frame - pointers when LR is clobbered). */ - if (to == STACK_POINTER_REGNUM - && df_regs_ever_live_p (LR_REGNUM) - && faked_omit_frame_pointer) - return false; + + return false; } return true; @@ -5278,17 +5257,10 @@ static void aarch64_override_options_after_change (void) { - faked_omit_frame_pointer = false; - - /* To omit leaf frame pointers, we need to turn flag_omit_frame_pointer on so - that aarch64_frame_pointer_required will be called. We need to remember - whether flag_omit_frame_pointer was turned on normally or just faked. */ - - if (flag_omit_leaf_frame_pointer && !flag_omit_frame_pointer) - { - flag_omit_frame_pointer = true; - faked_omit_frame_pointer = true; - } + if (flag_omit_frame_pointer) + flag_omit_leaf_frame_pointer = false; + else if (flag_omit_leaf_frame_pointer) + flag_omit_frame_pointer = true; } static struct machine_function * @@ -6566,7 +6538,9 @@ /* Splat vector constant out into a byte vector. */ for (i = 0; i < n_elts; i++) { - rtx el = CONST_VECTOR_ELT (op, i); + /* The vector is provided in gcc endian-neutral fashion. For aarch64_be, + it must be laid out in the vector register in reverse order. */ + rtx el = CONST_VECTOR_ELT (op, BYTES_BIG_ENDIAN ? (n_elts - 1 - i) : i); unsigned HOST_WIDE_INT elpart; unsigned int part, parts; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64.md 2014-01-24 11:57:54.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64.md 2014-03-26 08:19:17.000000000 +0000 @@ -101,6 +101,7 @@ UNSPEC_TLS UNSPEC_TLSDESC UNSPEC_USHL_2S + UNSPEC_USHR64 UNSPEC_VSTRUCTDUMMY ]) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd-builtins.def gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd-builtins.def --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd-builtins.def 2014-01-24 11:57:54.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd-builtins.def 2014-03-26 08:19:17.000000000 +0000 @@ -192,7 +192,8 @@ BUILTIN_VDQ_I (SHIFTIMM, ashr, 3) VAR1 (SHIFTIMM, ashr_simd, 0, di) - BUILTIN_VSDQ_I_DI (SHIFTIMM, lshr, 3) + BUILTIN_VDQ_I (SHIFTIMM, lshr, 3) + VAR1 (USHIFTIMM, lshr_simd, 0, di) /* Implemented by aarch64_shr_n. */ BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0) BUILTIN_VSDQ_I_DI (SHIFTIMM, urshr_n, 0) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd.md 2014-02-06 13:16:16.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/aarch64-simd.md 2014-03-28 19:04:55.000000000 +0000 @@ -724,6 +724,31 @@ DONE; }) +(define_expand "aarch64_lshr_simddi" + [(match_operand:DI 0 "register_operand" "=w") + (match_operand:DI 1 "register_operand" "w") + (match_operand:SI 2 "aarch64_shift_imm64_di" "")] + "TARGET_SIMD" + { + if (INTVAL (operands[2]) == 64) + emit_insn (gen_aarch64_ushr_simddi (operands[0], operands[1])); + else + emit_insn (gen_lshrdi3 (operands[0], operands[1], operands[2])); + DONE; + } +) + +;; SIMD shift by 64. This pattern is a special case as standard pattern does +;; not handle NEON shifts by 64. +(define_insn "aarch64_ushr_simddi" + [(set (match_operand:DI 0 "register_operand" "=w") + (unspec:DI + [(match_operand:DI 1 "register_operand" "w")] UNSPEC_USHR64))] + "TARGET_SIMD" + "ushr\t%d0, %d1, 64" + [(set_attr "type" "neon_shift_imm")] +) + (define_expand "vec_set" [(match_operand:VQ_S 0 "register_operand") (match_operand: 1 "register_operand") @@ -4225,7 +4250,7 @@ CRYPTO_AES))] "TARGET_SIMD && TARGET_CRYPTO" "aes\\t%0.16b, %2.16b" - [(set_attr "type" "crypto_aes")] + [(set_attr "type" "crypto_aese")] ) (define_insn "aarch64_crypto_aesv16qi" @@ -4234,7 +4259,7 @@ CRYPTO_AESMC))] "TARGET_SIMD && TARGET_CRYPTO" "aes\\t%0.16b, %1.16b" - [(set_attr "type" "crypto_aes")] + [(set_attr "type" "crypto_aesmc")] ) ;; sha1 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/arm_neon.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/arm_neon.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/aarch64/arm_neon.h 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/aarch64/arm_neon.h 2014-03-26 08:19:17.000000000 +0000 @@ -23364,7 +23364,7 @@ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) vshr_n_u64 (uint64x1_t __a, const int __b) { - return (uint64x1_t) __builtin_aarch64_lshrdi ((int64x1_t) __a, __b); + return __builtin_aarch64_lshr_simddi_uus ( __a, __b); } __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) @@ -23421,10 +23421,10 @@ return (int64x1_t) __builtin_aarch64_ashr_simddi (__a, __b); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vshrd_n_u64 (uint64x1_t __a, const int __b) +__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) +vshrd_n_u64 (uint64_t __a, const int __b) { - return (uint64x1_t) __builtin_aarch64_lshrdi (__a, __b); + return __builtin_aarch64_lshr_simddi_uus (__a, __b); } /* vsli */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/aarch-common.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/aarch-common.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/aarch-common.c 2014-01-05 19:58:26.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/aarch-common.c 2014-03-28 19:04:56.000000000 +0000 @@ -31,6 +31,42 @@ #include "c-family/c-common.h" #include "rtl.h" +/* In ARMv8-A there's a general expectation that AESE/AESMC + and AESD/AESIMC sequences of the form: + + AESE Vn, _ + AESMC Vn, Vn + + will issue both instructions in a single cycle on super-scalar + implementations. This function identifies such pairs. */ + +int +aarch_crypto_can_dual_issue (rtx producer, rtx consumer) +{ + rtx producer_src, consumer_src; + + producer = single_set (producer); + consumer = single_set (consumer); + + producer_src = producer ? SET_SRC (producer) : NULL; + consumer_src = consumer ? SET_SRC (consumer) : NULL; + + if (producer_src && consumer_src + && GET_CODE (producer_src) == UNSPEC && GET_CODE (consumer_src) == UNSPEC + && ((XINT (producer_src, 1) == UNSPEC_AESE + && XINT (consumer_src, 1) == UNSPEC_AESMC) + || (XINT (producer_src, 1) == UNSPEC_AESD + && XINT (consumer_src, 1) == UNSPEC_AESIMC))) + { + unsigned int regno = REGNO (SET_DEST (producer)); + + return REGNO (SET_DEST (consumer)) == regno + && REGNO (XVECEXP (consumer_src, 0, 0)) == regno; + } + + return 0; +} + typedef struct { rtx_code search_code; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/aarch-common-protos.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/aarch-common-protos.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/aarch-common-protos.h 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/aarch-common-protos.h 2014-03-28 19:04:56.000000000 +0000 @@ -23,6 +23,7 @@ #ifndef GCC_AARCH_COMMON_PROTOS_H #define GCC_AARCH_COMMON_PROTOS_H +extern int aarch_crypto_can_dual_issue (rtx, rtx); extern int arm_early_load_addr_dep (rtx, rtx); extern int arm_early_store_addr_dep (rtx, rtx); extern int arm_mac_accumulator_is_mul_result (rtx, rtx); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/arm.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/arm.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/arm.md 2014-01-05 19:58:26.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/arm.md 2014-03-28 19:04:56.000000000 +0000 @@ -262,105 +262,6 @@ ; initialized by arm_option_override() (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched"))) -; YES if the "type" attribute assigned to the insn denotes an -; Advanced SIMD instruction, NO otherwise. -(define_attr "is_neon_type" "yes,no" - (if_then_else (eq_attr "type" - "neon_add, neon_add_q, neon_add_widen, neon_add_long,\ - neon_qadd, neon_qadd_q, neon_add_halve, neon_add_halve_q,\ - neon_add_halve_narrow_q,\ - neon_sub, neon_sub_q, neon_sub_widen, neon_sub_long, neon_qsub,\ - neon_qsub_q, neon_sub_halve, neon_sub_halve_q,\ - neon_sub_halve_narrow_q,\ - neon_abs, neon_abs_q, neon_neg, neon_neg_q, neon_qneg,\ - neon_qneg_q, neon_qabs, neon_qabs_q, neon_abd, neon_abd_q,\ - neon_abd_long, neon_minmax, neon_minmax_q, neon_compare,\ - neon_compare_q, neon_compare_zero, neon_compare_zero_q,\ - neon_arith_acc, neon_arith_acc_q, neon_reduc_add,\ - neon_reduc_add_q, neon_reduc_add_long, neon_reduc_add_acc,\ - neon_reduc_add_acc_q, neon_reduc_minmax, neon_reduc_minmax_q,\ - neon_logic, neon_logic_q, neon_tst, neon_tst_q,\ - neon_shift_imm, neon_shift_imm_q, neon_shift_imm_narrow_q,\ - neon_shift_imm_long, neon_shift_reg, neon_shift_reg_q,\ - neon_shift_acc, neon_shift_acc_q, neon_sat_shift_imm,\ - neon_sat_shift_imm_q, neon_sat_shift_imm_narrow_q,\ - neon_sat_shift_reg, neon_sat_shift_reg_q,\ - neon_ins, neon_ins_q, neon_move, neon_move_q, neon_move_narrow_q,\ - neon_permute, neon_permute_q, neon_zip, neon_zip_q, neon_tbl1,\ - neon_tbl1_q, neon_tbl2, neon_tbl2_q, neon_tbl3, neon_tbl3_q,\ - neon_tbl4, neon_tbl4_q, neon_bsl, neon_bsl_q, neon_cls,\ - neon_cls_q, neon_cnt, neon_cnt_q, neon_dup, neon_dup_q,\ - neon_ext, neon_ext_q, neon_rbit, neon_rbit_q,\ - neon_rev, neon_rev_q, neon_mul_b, neon_mul_b_q, neon_mul_h,\ - neon_mul_h_q, neon_mul_s, neon_mul_s_q, neon_mul_b_long,\ - neon_mul_h_long, neon_mul_s_long, neon_mul_d_long, neon_mul_h_scalar,\ - neon_mul_h_scalar_q, neon_mul_s_scalar, neon_mul_s_scalar_q,\ - neon_mul_h_scalar_long, neon_mul_s_scalar_long, neon_sat_mul_b,\ - neon_sat_mul_b_q, neon_sat_mul_h, neon_sat_mul_h_q,\ - neon_sat_mul_s, neon_sat_mul_s_q, neon_sat_mul_b_long,\ - neon_sat_mul_h_long, neon_sat_mul_s_long, neon_sat_mul_h_scalar,\ - neon_sat_mul_h_scalar_q, neon_sat_mul_s_scalar,\ - neon_sat_mul_s_scalar_q, neon_sat_mul_h_scalar_long,\ - neon_sat_mul_s_scalar_long, neon_mla_b, neon_mla_b_q, neon_mla_h,\ - neon_mla_h_q, neon_mla_s, neon_mla_s_q, neon_mla_b_long,\ - neon_mla_h_long, neon_mla_s_long, neon_mla_h_scalar,\ - neon_mla_h_scalar_q, neon_mla_s_scalar, neon_mla_s_scalar_q,\ - neon_mla_h_scalar_long, neon_mla_s_scalar_long,\ - neon_sat_mla_b_long, neon_sat_mla_h_long,\ - neon_sat_mla_s_long, neon_sat_mla_h_scalar_long,\ - neon_sat_mla_s_scalar_long,\ - neon_to_gp, neon_to_gp_q, neon_from_gp, neon_from_gp_q,\ - neon_ldr, neon_load1_1reg, neon_load1_1reg_q, neon_load1_2reg,\ - neon_load1_2reg_q, neon_load1_3reg, neon_load1_3reg_q,\ - neon_load1_4reg, neon_load1_4reg_q, neon_load1_all_lanes,\ - neon_load1_all_lanes_q, neon_load1_one_lane, neon_load1_one_lane_q,\ - neon_load2_2reg, neon_load2_2reg_q, neon_load2_4reg,\ - neon_load2_4reg_q, neon_load2_all_lanes, neon_load2_all_lanes_q,\ - neon_load2_one_lane, neon_load2_one_lane_q,\ - neon_load3_3reg, neon_load3_3reg_q, neon_load3_all_lanes,\ - neon_load3_all_lanes_q, neon_load3_one_lane, neon_load3_one_lane_q,\ - neon_load4_4reg, neon_load4_4reg_q, neon_load4_all_lanes,\ - neon_load4_all_lanes_q, neon_load4_one_lane, neon_load4_one_lane_q,\ - neon_str, neon_store1_1reg, neon_store1_1reg_q, neon_store1_2reg,\ - neon_store1_2reg_q, neon_store1_3reg, neon_store1_3reg_q,\ - neon_store1_4reg, neon_store1_4reg_q, neon_store1_one_lane,\ - neon_store1_one_lane_q, neon_store2_2reg, neon_store2_2reg_q,\ - neon_store2_4reg, neon_store2_4reg_q, neon_store2_one_lane,\ - neon_store2_one_lane_q, neon_store3_3reg, neon_store3_3reg_q,\ - neon_store3_one_lane, neon_store3_one_lane_q, neon_store4_4reg,\ - neon_store4_4reg_q, neon_store4_one_lane, neon_store4_one_lane_q,\ - neon_fp_abd_s, neon_fp_abd_s_q, neon_fp_abd_d, neon_fp_abd_d_q,\ - neon_fp_addsub_s, neon_fp_addsub_s_q, neon_fp_addsub_d,\ - neon_fp_addsub_d_q, neon_fp_compare_s, neon_fp_compare_s_q,\ - neon_fp_compare_d, neon_fp_compare_d_q, neon_fp_minmax_s,\ - neon_fp_minmax_s_q, neon_fp_minmax_d, neon_fp_minmax_d_q,\ - neon_fp_reduc_add_s, neon_fp_reduc_add_s_q, neon_fp_reduc_add_d,\ - neon_fp_reduc_add_d_q, neon_fp_reduc_minmax_s, - neon_fp_reduc_minmax_s_q, neon_fp_reduc_minmax_d,\ - neon_fp_reduc_minmax_d_q,\ - neon_fp_cvt_narrow_s_q, neon_fp_cvt_narrow_d_q,\ - neon_fp_cvt_widen_h, neon_fp_cvt_widen_s, neon_fp_to_int_s,\ - neon_fp_to_int_s_q, neon_int_to_fp_s, neon_int_to_fp_s_q,\ - neon_fp_round_s, neon_fp_round_s_q, neon_fp_recpe_s,\ - neon_fp_recpe_s_q,\ - neon_fp_recpe_d, neon_fp_recpe_d_q, neon_fp_recps_s,\ - neon_fp_recps_s_q, neon_fp_recps_d, neon_fp_recps_d_q,\ - neon_fp_recpx_s, neon_fp_recpx_s_q, neon_fp_recpx_d,\ - neon_fp_recpx_d_q, neon_fp_rsqrte_s, neon_fp_rsqrte_s_q,\ - neon_fp_rsqrte_d, neon_fp_rsqrte_d_q, neon_fp_rsqrts_s,\ - neon_fp_rsqrts_s_q, neon_fp_rsqrts_d, neon_fp_rsqrts_d_q,\ - neon_fp_mul_s, neon_fp_mul_s_q, neon_fp_mul_s_scalar,\ - neon_fp_mul_s_scalar_q, neon_fp_mul_d, neon_fp_mul_d_q,\ - neon_fp_mul_d_scalar_q, neon_fp_mla_s, neon_fp_mla_s_q,\ - neon_fp_mla_s_scalar, neon_fp_mla_s_scalar_q, neon_fp_mla_d,\ - neon_fp_mla_d_q, neon_fp_mla_d_scalar_q, neon_fp_sqrt_s,\ - neon_fp_sqrt_s_q, neon_fp_sqrt_d, neon_fp_sqrt_d_q,\ - neon_fp_div_s, neon_fp_div_s_q, neon_fp_div_d, neon_fp_div_d_q, crypto_aes,\ - crypto_sha1_xor, crypto_sha1_fast, crypto_sha1_slow, crypto_sha256_fast,\ - crypto_sha256_slow") - (const_string "yes") - (const_string "no"))) - ; condition codes: this one is used by final_prescan_insn to speed up ; conditionalizing instructions. It saves having to scan the rtl to see if ; it uses or alters the condition codes. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/cortex-a53.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/cortex-a53.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/cortex-a53.md 2014-01-05 19:58:26.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/cortex-a53.md 2014-03-28 19:04:56.000000000 +0000 @@ -61,6 +61,11 @@ (define_cpu_unit "cortex_a53_fp_div_sqrt" "cortex_a53") +;; The Advanced SIMD pipelines. + +(define_cpu_unit "cortex_a53_simd0" "cortex_a53") +(define_cpu_unit "cortex_a53_simd1" "cortex_a53") + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ALU instructions. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -248,6 +253,39 @@ "cortex_a53_slot0, cortex_a53_fp_div_sqrt * 28") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ARMv8-A Cryptographic extensions. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define_insn_reservation "cortex_a53_crypto_aese" 2 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "crypto_aese")) + "cortex_a53_simd0") + +(define_insn_reservation "cortex_a53_crypto_aesmc" 2 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "crypto_aesmc")) + "cortex_a53_simd0 | cortex_a53_simd1") + +(define_insn_reservation "cortex_a53_crypto_sha1_fast" 2 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "crypto_sha1_fast, crypto_sha256_fast")) + "cortex_a53_simd0") + +(define_insn_reservation "cortex_a53_crypto_sha1_xor" 3 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "crypto_sha1_xor")) + "cortex_a53_simd0") + +(define_insn_reservation "cortex_a53_crypto_sha_slow" 5 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "crypto_sha1_slow, crypto_sha256_slow")) + "cortex_a53_simd0") + +(define_bypass 0 "cortex_a53_crypto_aese" + "cortex_a53_crypto_aesmc" + "aarch_crypto_can_dual_issue") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; VFP to/from core transfers. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -284,6 +322,16 @@ (eq_attr "type" "f_loadd")) "cortex_a53_slot0") +(define_insn_reservation "cortex_a53_f_load_2reg" 5 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "neon_load2_2reg_q")) + "(cortex_a53_slot_any+cortex_a53_ls)*2") + +(define_insn_reservation "cortex_a53_f_loadq" 5 + (and (eq_attr "tune" "cortexa53") + (eq_attr "type" "neon_load1_1reg_q")) + "cortex_a53_slot_any+cortex_a53_ls") + (define_insn_reservation "cortex_a53_f_stores" 0 (and (eq_attr "tune" "cortexa53") (eq_attr "type" "f_stores")) @@ -307,3 +355,11 @@ cortex_a53_fdivs, cortex_a53_fdivd,\ cortex_a53_f2r") +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Crude Advanced SIMD approximation. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define_insn_reservation "cortex_53_advsimd" 4 + (and (eq_attr "tune" "cortexa53") + (eq_attr "is_neon_type" "yes")) + "cortex_a53_simd0") diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/iterators.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/iterators.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/iterators.md 2014-01-05 19:58:26.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/iterators.md 2014-03-28 19:04:56.000000000 +0000 @@ -551,8 +551,8 @@ (UNSPEC_SHA256SU1 "sha256su1")]) (define_int_attr crypto_type - [(UNSPEC_AESE "crypto_aes") (UNSPEC_AESD "crypto_aes") - (UNSPEC_AESMC "crypto_aes") (UNSPEC_AESIMC "crypto_aes") + [(UNSPEC_AESE "crypto_aese") (UNSPEC_AESD "crypto_aese") + (UNSPEC_AESMC "crypto_aesmc") (UNSPEC_AESIMC "crypto_aesmc") (UNSPEC_SHA1C "crypto_sha1_slow") (UNSPEC_SHA1P "crypto_sha1_slow") (UNSPEC_SHA1M "crypto_sha1_slow") (UNSPEC_SHA1SU1 "crypto_sha1_fast") (UNSPEC_SHA1SU0 "crypto_sha1_xor") (UNSPEC_SHA256H "crypto_sha256_slow") diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/t-aprofile gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/t-aprofile --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/t-aprofile 2014-01-29 19:18:15.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/t-aprofile 2014-03-28 19:04:56.000000000 +0000 @@ -81,7 +81,8 @@ MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 -MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15=mcpu?cortex-a12 +MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15 +MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a12 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15.cortex-a7 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/types.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/types.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/arm/types.md 2014-01-05 19:58:26.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/arm/types.md 2014-03-28 19:04:56.000000000 +0000 @@ -524,7 +524,8 @@ ; ; The classification below is for Crypto instructions. ; -; crypto_aes +; crypto_aese +; crypto_aesmc ; crypto_sha1_xor ; crypto_sha1_fast ; crypto_sha1_slow @@ -1051,7 +1052,8 @@ neon_fp_div_d,\ neon_fp_div_d_q,\ \ - crypto_aes,\ + crypto_aese,\ + crypto_aesmc,\ crypto_sha1_xor,\ crypto_sha1_fast,\ crypto_sha1_slow,\ @@ -1075,3 +1077,102 @@ "smlalxy,umull,umulls,umaal,umlal,umlals,smull,smulls,smlal,smlals") (const_string "yes") (const_string "no"))) + +; YES if the "type" attribute assigned to the insn denotes an +; Advanced SIMD instruction, NO otherwise. +(define_attr "is_neon_type" "yes,no" + (if_then_else (eq_attr "type" + "neon_add, neon_add_q, neon_add_widen, neon_add_long,\ + neon_qadd, neon_qadd_q, neon_add_halve, neon_add_halve_q,\ + neon_add_halve_narrow_q,\ + neon_sub, neon_sub_q, neon_sub_widen, neon_sub_long, neon_qsub,\ + neon_qsub_q, neon_sub_halve, neon_sub_halve_q,\ + neon_sub_halve_narrow_q,\ + neon_abs, neon_abs_q, neon_neg, neon_neg_q, neon_qneg,\ + neon_qneg_q, neon_qabs, neon_qabs_q, neon_abd, neon_abd_q,\ + neon_abd_long, neon_minmax, neon_minmax_q, neon_compare,\ + neon_compare_q, neon_compare_zero, neon_compare_zero_q,\ + neon_arith_acc, neon_arith_acc_q, neon_reduc_add,\ + neon_reduc_add_q, neon_reduc_add_long, neon_reduc_add_acc,\ + neon_reduc_add_acc_q, neon_reduc_minmax, neon_reduc_minmax_q,\ + neon_logic, neon_logic_q, neon_tst, neon_tst_q,\ + neon_shift_imm, neon_shift_imm_q, neon_shift_imm_narrow_q,\ + neon_shift_imm_long, neon_shift_reg, neon_shift_reg_q,\ + neon_shift_acc, neon_shift_acc_q, neon_sat_shift_imm,\ + neon_sat_shift_imm_q, neon_sat_shift_imm_narrow_q,\ + neon_sat_shift_reg, neon_sat_shift_reg_q,\ + neon_ins, neon_ins_q, neon_move, neon_move_q, neon_move_narrow_q,\ + neon_permute, neon_permute_q, neon_zip, neon_zip_q, neon_tbl1,\ + neon_tbl1_q, neon_tbl2, neon_tbl2_q, neon_tbl3, neon_tbl3_q,\ + neon_tbl4, neon_tbl4_q, neon_bsl, neon_bsl_q, neon_cls,\ + neon_cls_q, neon_cnt, neon_cnt_q, neon_dup, neon_dup_q,\ + neon_ext, neon_ext_q, neon_rbit, neon_rbit_q,\ + neon_rev, neon_rev_q, neon_mul_b, neon_mul_b_q, neon_mul_h,\ + neon_mul_h_q, neon_mul_s, neon_mul_s_q, neon_mul_b_long,\ + neon_mul_h_long, neon_mul_s_long, neon_mul_d_long, neon_mul_h_scalar,\ + neon_mul_h_scalar_q, neon_mul_s_scalar, neon_mul_s_scalar_q,\ + neon_mul_h_scalar_long, neon_mul_s_scalar_long, neon_sat_mul_b,\ + neon_sat_mul_b_q, neon_sat_mul_h, neon_sat_mul_h_q,\ + neon_sat_mul_s, neon_sat_mul_s_q, neon_sat_mul_b_long,\ + neon_sat_mul_h_long, neon_sat_mul_s_long, neon_sat_mul_h_scalar,\ + neon_sat_mul_h_scalar_q, neon_sat_mul_s_scalar,\ + neon_sat_mul_s_scalar_q, neon_sat_mul_h_scalar_long,\ + neon_sat_mul_s_scalar_long, neon_mla_b, neon_mla_b_q, neon_mla_h,\ + neon_mla_h_q, neon_mla_s, neon_mla_s_q, neon_mla_b_long,\ + neon_mla_h_long, neon_mla_s_long, neon_mla_h_scalar,\ + neon_mla_h_scalar_q, neon_mla_s_scalar, neon_mla_s_scalar_q,\ + neon_mla_h_scalar_long, neon_mla_s_scalar_long,\ + neon_sat_mla_b_long, neon_sat_mla_h_long,\ + neon_sat_mla_s_long, neon_sat_mla_h_scalar_long,\ + neon_sat_mla_s_scalar_long,\ + neon_to_gp, neon_to_gp_q, neon_from_gp, neon_from_gp_q,\ + neon_ldr, neon_load1_1reg, neon_load1_1reg_q, neon_load1_2reg,\ + neon_load1_2reg_q, neon_load1_3reg, neon_load1_3reg_q,\ + neon_load1_4reg, neon_load1_4reg_q, neon_load1_all_lanes,\ + neon_load1_all_lanes_q, neon_load1_one_lane, neon_load1_one_lane_q,\ + neon_load2_2reg, neon_load2_2reg_q, neon_load2_4reg,\ + neon_load2_4reg_q, neon_load2_all_lanes, neon_load2_all_lanes_q,\ + neon_load2_one_lane, neon_load2_one_lane_q,\ + neon_load3_3reg, neon_load3_3reg_q, neon_load3_all_lanes,\ + neon_load3_all_lanes_q, neon_load3_one_lane, neon_load3_one_lane_q,\ + neon_load4_4reg, neon_load4_4reg_q, neon_load4_all_lanes,\ + neon_load4_all_lanes_q, neon_load4_one_lane, neon_load4_one_lane_q,\ + neon_str, neon_store1_1reg, neon_store1_1reg_q, neon_store1_2reg,\ + neon_store1_2reg_q, neon_store1_3reg, neon_store1_3reg_q,\ + neon_store1_4reg, neon_store1_4reg_q, neon_store1_one_lane,\ + neon_store1_one_lane_q, neon_store2_2reg, neon_store2_2reg_q,\ + neon_store2_4reg, neon_store2_4reg_q, neon_store2_one_lane,\ + neon_store2_one_lane_q, neon_store3_3reg, neon_store3_3reg_q,\ + neon_store3_one_lane, neon_store3_one_lane_q, neon_store4_4reg,\ + neon_store4_4reg_q, neon_store4_one_lane, neon_store4_one_lane_q,\ + neon_fp_abd_s, neon_fp_abd_s_q, neon_fp_abd_d, neon_fp_abd_d_q,\ + neon_fp_addsub_s, neon_fp_addsub_s_q, neon_fp_addsub_d,\ + neon_fp_addsub_d_q, neon_fp_compare_s, neon_fp_compare_s_q,\ + neon_fp_compare_d, neon_fp_compare_d_q, neon_fp_minmax_s,\ + neon_fp_minmax_s_q, neon_fp_minmax_d, neon_fp_minmax_d_q,\ + neon_fp_reduc_add_s, neon_fp_reduc_add_s_q, neon_fp_reduc_add_d,\ + neon_fp_reduc_add_d_q, neon_fp_reduc_minmax_s, + neon_fp_reduc_minmax_s_q, neon_fp_reduc_minmax_d,\ + neon_fp_reduc_minmax_d_q,\ + neon_fp_cvt_narrow_s_q, neon_fp_cvt_narrow_d_q,\ + neon_fp_cvt_widen_h, neon_fp_cvt_widen_s, neon_fp_to_int_s,\ + neon_fp_to_int_s_q, neon_int_to_fp_s, neon_int_to_fp_s_q,\ + neon_fp_round_s, neon_fp_round_s_q, neon_fp_recpe_s,\ + neon_fp_recpe_s_q,\ + neon_fp_recpe_d, neon_fp_recpe_d_q, neon_fp_recps_s,\ + neon_fp_recps_s_q, neon_fp_recps_d, neon_fp_recps_d_q,\ + neon_fp_recpx_s, neon_fp_recpx_s_q, neon_fp_recpx_d,\ + neon_fp_recpx_d_q, neon_fp_rsqrte_s, neon_fp_rsqrte_s_q,\ + neon_fp_rsqrte_d, neon_fp_rsqrte_d_q, neon_fp_rsqrts_s,\ + neon_fp_rsqrts_s_q, neon_fp_rsqrts_d, neon_fp_rsqrts_d_q,\ + neon_fp_mul_s, neon_fp_mul_s_q, neon_fp_mul_s_scalar,\ + neon_fp_mul_s_scalar_q, neon_fp_mul_d, neon_fp_mul_d_q,\ + neon_fp_mul_d_scalar_q, neon_fp_mla_s, neon_fp_mla_s_q,\ + neon_fp_mla_s_scalar, neon_fp_mla_s_scalar_q, neon_fp_mla_d,\ + neon_fp_mla_d_q, neon_fp_mla_d_scalar_q, neon_fp_sqrt_s,\ + neon_fp_sqrt_s_q, neon_fp_sqrt_d, neon_fp_sqrt_d_q,\ + neon_fp_div_s, neon_fp_div_s_q, neon_fp_div_d, neon_fp_div_d_q, crypto_aese,\ + crypto_aesmc, crypto_sha1_xor, crypto_sha1_fast, crypto_sha1_slow,\ + crypto_sha256_fast, crypto_sha256_slow") + (const_string "yes") + (const_string "no"))) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/avx2intrin.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/avx2intrin.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/avx2intrin.h 2014-01-05 19:58:22.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/avx2intrin.h 2014-03-26 08:19:17.000000000 +0000 @@ -1233,10 +1233,10 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm_i32gather_pd (double const *base, __m128i index, const int scale) { - __v2df src = _mm_setzero_pd (); - __v2df mask = _mm_cmpeq_pd (src, src); + __v2df zero = _mm_setzero_pd (); + __v2df mask = _mm_cmpeq_pd (zero, zero); - return (__m128d) __builtin_ia32_gathersiv2df (src, + return (__m128d) __builtin_ia32_gathersiv2df (_mm_undefined_pd (), base, (__v4si)index, mask, @@ -1259,10 +1259,10 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_i32gather_pd (double const *base, __m128i index, const int scale) { - __v4df src = _mm256_setzero_pd (); - __v4df mask = _mm256_cmp_pd (src, src, _CMP_EQ_OQ); + __v4df zero = _mm256_setzero_pd (); + __v4df mask = _mm256_cmp_pd (zero, zero, _CMP_EQ_OQ); - return (__m256d) __builtin_ia32_gathersiv4df (src, + return (__m256d) __builtin_ia32_gathersiv4df (_mm256_undefined_pd (), base, (__v4si)index, mask, diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/avx512fintrin.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/avx512fintrin.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/avx512fintrin.h 2014-02-28 00:03:09.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/avx512fintrin.h 2014-03-26 08:19:17.000000000 +0000 @@ -108,6 +108,52 @@ extern __inline __m512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_undefined_ps (void) +{ + __m512 __Y = __Y; + return __Y; +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_undefined_pd (void) +{ + __m512d __Y = __Y; + return __Y; +} + +extern __inline __m512i +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_undefined_si512 (void) +{ + __m512i __Y = __Y; + return __Y; +} + +extern __inline __m512d +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set1_pd (double __A) +{ + return (__m512d) __builtin_ia32_broadcastsd512 (__extension__ + (__v2df) { __A, }, + (__v8df) + _mm512_undefined_pd (), + (__mmask8) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +_mm512_set1_ps (float __A) +{ + return (__m512) __builtin_ia32_broadcastss512 (__extension__ + (__v4sf) { __A, }, + (__v16sf) + _mm512_undefined_ps (), + (__mmask16) -1); +} + +extern __inline __m512 +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_setzero_ps (void) { return __extension__ (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, @@ -389,7 +435,7 @@ return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -420,7 +466,7 @@ return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X, (__v16si) __Y, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -452,7 +498,7 @@ return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X, (__v16si) __Y, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -484,7 +530,7 @@ return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X, (__v16si) __Y, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -516,7 +562,7 @@ return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -548,7 +594,7 @@ return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -580,7 +626,7 @@ return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X, (__v8di) __Y, (__v8di) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -612,7 +658,7 @@ return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X, (__v8di) __Y, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -644,7 +690,7 @@ return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X, (__v8di) __Y, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -676,7 +722,7 @@ return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -708,7 +754,7 @@ return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, (__v16si) __Y, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -739,7 +785,7 @@ return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -771,7 +817,7 @@ return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, (__v16si) __Y, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -802,7 +848,7 @@ { return (__m512i) __builtin_ia32_psllqi512_mask ((__v8di) __A, __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -828,7 +874,7 @@ #else #define _mm512_slli_epi64(X, C) \ ((__m512i) __builtin_ia32_psllqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ - (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__v8di)(__m512i)_mm512_undefined_si512 (),\ (__mmask8)-1)) #define _mm512_mask_slli_epi64(W, U, X, C) \ @@ -849,7 +895,7 @@ return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A, (__v2di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -881,7 +927,7 @@ { return (__m512i) __builtin_ia32_psrlqi512_mask ((__v8di) __A, __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -907,7 +953,7 @@ #else #define _mm512_srli_epi64(X, C) \ ((__m512i) __builtin_ia32_psrlqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ - (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__v8di)(__m512i)_mm512_undefined_si512 (),\ (__mmask8)-1)) #define _mm512_mask_srli_epi64(W, U, X, C) \ @@ -928,7 +974,7 @@ return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A, (__v2di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -960,7 +1006,7 @@ { return (__m512i) __builtin_ia32_psraqi512_mask ((__v8di) __A, __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -986,7 +1032,7 @@ #else #define _mm512_srai_epi64(X, C) \ ((__m512i) __builtin_ia32_psraqi512_mask ((__v8di)(__m512i)(X), (int)(C),\ - (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__v8di)(__m512i)_mm512_undefined_si512 (),\ (__mmask8)-1)) #define _mm512_mask_srai_epi64(W, U, X, C) \ @@ -1007,7 +1053,7 @@ return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A, (__v2di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1039,7 +1085,7 @@ { return (__m512i) __builtin_ia32_pslldi512_mask ((__v16si) __A, __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1065,7 +1111,7 @@ #else #define _mm512_slli_epi32(X, C) \ ((__m512i) __builtin_ia32_pslldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ - (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__v16si)(__m512i)_mm512_undefined_si512 (),\ (__mmask16)-1)) #define _mm512_mask_slli_epi32(W, U, X, C) \ @@ -1086,7 +1132,7 @@ return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A, (__v4si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1118,7 +1164,7 @@ { return (__m512i) __builtin_ia32_psrldi512_mask ((__v16si) __A, __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1144,7 +1190,7 @@ #else #define _mm512_srli_epi32(X, C) \ ((__m512i) __builtin_ia32_psrldi512_mask ((__v16si)(__m512i)(X), (int)(C),\ - (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__v16si)(__m512i)_mm512_undefined_si512 (),\ (__mmask16)-1)) #define _mm512_mask_srli_epi32(W, U, X, C) \ @@ -1165,7 +1211,7 @@ return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A, (__v4si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1197,7 +1243,7 @@ { return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1223,7 +1269,7 @@ #else #define _mm512_srai_epi32(X, C) \ ((__m512i) __builtin_ia32_psradi512_mask ((__v16si)(__m512i)(X), (int)(C),\ - (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__v16si)(__m512i)_mm512_undefined_si512 (),\ (__mmask16)-1)) #define _mm512_mask_srai_epi32(W, U, X, C) \ @@ -1244,7 +1290,7 @@ return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A, (__v4si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1414,7 +1460,7 @@ { return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -1443,7 +1489,7 @@ { return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -1488,7 +1534,7 @@ { return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -1517,7 +1563,7 @@ { return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -1563,7 +1609,7 @@ { return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -1593,7 +1639,7 @@ { return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -1635,7 +1681,7 @@ } #else #define _mm512_sqrt_round_pd(A, C) \ - (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) + (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, C) #define _mm512_mask_sqrt_round_pd(W, U, A, C) \ (__m512d)__builtin_ia32_sqrtpd512_mask(A, W, U, C) @@ -1644,7 +1690,7 @@ (__m512d)__builtin_ia32_sqrtpd512_mask(A, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_sqrt_round_ps(A, C) \ - (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) + (__m512)__builtin_ia32_sqrtps512_mask(A, (__v16sf)_mm512_undefined_ps(), -1, C) #define _mm512_mask_sqrt_round_ps(W, U, A, C) \ (__m512)__builtin_ia32_sqrtps512_mask(A, W, U, C) @@ -1665,7 +1711,7 @@ { return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1694,7 +1740,7 @@ { return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1723,7 +1769,7 @@ { return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1752,7 +1798,7 @@ { return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1781,7 +1827,7 @@ { return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1810,7 +1856,7 @@ { return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1839,7 +1885,7 @@ { return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1868,7 +1914,7 @@ { return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -1897,7 +1943,7 @@ { return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1926,7 +1972,7 @@ { return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -1957,7 +2003,7 @@ return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -1991,7 +2037,7 @@ return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2024,7 +2070,7 @@ return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -2058,7 +2104,7 @@ return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2085,7 +2131,7 @@ } #else #define _mm512_add_round_pd(A, B, C) \ - (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C) #define _mm512_mask_add_round_pd(W, U, A, B, C) \ (__m512d)__builtin_ia32_addpd512_mask(A, B, W, U, C) @@ -2094,7 +2140,7 @@ (__m512d)__builtin_ia32_addpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_add_round_ps(A, B, C) \ - (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C) #define _mm512_mask_add_round_ps(W, U, A, B, C) \ (__m512)__builtin_ia32_addps512_mask(A, B, W, U, C) @@ -2103,7 +2149,7 @@ (__m512)__builtin_ia32_addps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) #define _mm512_sub_round_pd(A, B, C) \ - (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C) #define _mm512_mask_sub_round_pd(W, U, A, B, C) \ (__m512d)__builtin_ia32_subpd512_mask(A, B, W, U, C) @@ -2112,7 +2158,7 @@ (__m512d)__builtin_ia32_subpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_sub_round_ps(A, B, C) \ - (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + (__m512)__builtin_ia32_subps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C) #define _mm512_mask_sub_round_ps(W, U, A, B, C) \ (__m512)__builtin_ia32_subps512_mask(A, B, W, U, C) @@ -2129,7 +2175,7 @@ return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -2163,7 +2209,7 @@ return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2196,7 +2242,7 @@ return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, (__v8df) __V, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -2230,7 +2276,7 @@ return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2294,7 +2340,7 @@ #else #define _mm512_mul_round_pd(A, B, C) \ - (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C) #define _mm512_mask_mul_round_pd(W, U, A, B, C) \ (__m512d)__builtin_ia32_mulpd512_mask(A, B, W, U, C) @@ -2303,7 +2349,7 @@ (__m512d)__builtin_ia32_mulpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_mul_round_ps(A, B, C) \ - (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C) #define _mm512_mask_mul_round_ps(W, U, A, B, C) \ (__m512)__builtin_ia32_mulps512_mask(A, B, W, U, C) @@ -2312,7 +2358,7 @@ (__m512)__builtin_ia32_mulps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C) #define _mm512_div_round_pd(A, B, C) \ - (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C) #define _mm512_mask_div_round_pd(W, U, A, B, C) \ (__m512d)__builtin_ia32_divpd512_mask(A, B, W, U, C) @@ -2321,7 +2367,7 @@ (__m512d)__builtin_ia32_divpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_div_round_ps(A, B, C) \ - (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + (__m512)__builtin_ia32_divps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C) #define _mm512_mask_div_round_ps(W, U, A, B, C) \ (__m512)__builtin_ia32_divps512_mask(A, B, W, U, C) @@ -2350,7 +2396,7 @@ return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -2384,7 +2430,7 @@ return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2417,7 +2463,7 @@ return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -2451,7 +2497,7 @@ return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2478,7 +2524,7 @@ } #else #define _mm512_max_round_pd(A, B, R) \ - (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, R) + (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R) #define _mm512_mask_max_round_pd(W, U, A, B, R) \ (__m512d)__builtin_ia32_maxpd512_mask(A, B, W, U, R) @@ -2487,7 +2533,7 @@ (__m512d)__builtin_ia32_maxpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R) #define _mm512_max_round_ps(A, B, R) \ - (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_pd(), -1, R) + (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_undefined_pd(), -1, R) #define _mm512_mask_max_round_ps(W, U, A, B, R) \ (__m512)__builtin_ia32_maxps512_mask(A, B, W, U, R) @@ -2496,7 +2542,7 @@ (__m512)__builtin_ia32_maxps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, R) #define _mm512_min_round_pd(A, B, R) \ - (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, R) + (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, R) #define _mm512_mask_min_round_pd(W, U, A, B, R) \ (__m512d)__builtin_ia32_minpd512_mask(A, B, W, U, R) @@ -2505,7 +2551,7 @@ (__m512d)__builtin_ia32_minpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, R) #define _mm512_min_round_ps(A, B, R) \ - (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, R) + (__m512)__builtin_ia32_minps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, R) #define _mm512_mask_min_round_ps(W, U, A, B, R) \ (__m512)__builtin_ia32_minps512_mask(A, B, W, U, R) @@ -2522,7 +2568,7 @@ return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -2556,7 +2602,7 @@ return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -2602,7 +2648,7 @@ } #else #define _mm512_scalef_round_pd(A, B, C) \ - (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), -1, C) + (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C) #define _mm512_mask_scalef_round_pd(W, U, A, B, C) \ (__m512d)__builtin_ia32_scalefpd512_mask(A, B, W, U, C) @@ -2611,7 +2657,7 @@ (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C) #define _mm512_scalef_round_ps(A, B, C) \ - (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), -1, C) + (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C) #define _mm512_mask_scalef_round_ps(W, U, A, B, C) \ (__m512)__builtin_ia32_scalefps512_mask(A, B, W, U, C) @@ -3294,7 +3340,7 @@ { return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -3323,7 +3369,7 @@ { return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -3350,8 +3396,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcastss_ps (__m128 __A) { - __v16sf __O; - return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, __O, + return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, + (__v16sf) + _mm512_undefined_ps (), (__mmask16) -1); } @@ -3377,8 +3424,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcastsd_pd (__m128d __A) { - __v8df __O; - return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, __O, + return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, + (__v8df) + _mm512_undefined_pd (), (__mmask8) -1); } @@ -3404,8 +3452,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcastd_epi32 (__m128i __A) { - __v16si __O; - return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, __O, + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, + (__v16si) + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -3431,8 +3480,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_set1_epi32 (int __A) { - __v16si __O; - return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, __O, + return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, + (__v16si) + _mm512_undefined_si512 (), (__mmask16)(-1)); } @@ -3458,8 +3508,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcastq_epi64 (__m128i __A) { - __v8di __O; - return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, __O, + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, + (__v8di) + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -3485,12 +3536,15 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_set1_epi64 (long long __A) { - __v8di __O; #ifdef TARGET_64BIT - return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, __O, + return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, + (__v8di) + _mm512_undefined_si512 (), (__mmask8)(-1)); #else - return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A, __O, + return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A, + (__v8di) + _mm512_undefined_si512 (), (__mmask8)(-1)); #endif } @@ -3529,8 +3583,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcast_f32x4 (__m128 __A) { - __v16sf __O; - return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, __O, + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, + (__v16sf) + _mm512_undefined_ps (), (__mmask16) -1); } @@ -3557,9 +3612,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcast_i32x4 (__m128i __A) { - __v16si __O; return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, - __O, + (__v16si) + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -3586,9 +3641,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcast_f64x4 (__m256d __A) { - __v8df __O; return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, - __O, + (__v8df) + _mm512_undefined_pd (), (__mmask8) -1); } @@ -3615,9 +3670,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_broadcast_i64x4 (__m256i __A) { - __v8di __O; return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, - __O, + (__v8di) + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -3738,7 +3793,7 @@ return (__m512i) __builtin_ia32_pshufd512_mask ((__v16si) __A, __mask, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -3771,7 +3826,7 @@ return (__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di) __A, (__v8di) __B, __imm, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -3806,7 +3861,7 @@ (__v16si) __B, __imm, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -3842,7 +3897,7 @@ return (__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df) __A, (__v8df) __B, __imm, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -3876,7 +3931,7 @@ return (__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf) __A, (__v16sf) __B, __imm, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -3906,7 +3961,7 @@ #else #define _mm512_shuffle_epi32(X, C) \ ((__m512i) __builtin_ia32_pshufd512_mask ((__v16si)(__m512i)(X), (int)(C),\ - (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__v16si)(__m512i)_mm512_undefined_si512 (),\ (__mmask16)-1)) #define _mm512_mask_shuffle_epi32(W, U, X, C) \ @@ -3922,7 +3977,7 @@ #define _mm512_shuffle_i64x2(X, Y, C) \ ((__m512i) __builtin_ia32_shuf_i64x2_mask ((__v8di)(__m512i)(X), \ (__v8di)(__m512i)(Y), (int)(C),\ - (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__v8di)(__m512i)_mm512_undefined_si512 (),\ (__mmask8)-1)) #define _mm512_mask_shuffle_i64x2(W, U, X, Y, C) \ @@ -3940,7 +3995,7 @@ #define _mm512_shuffle_i32x4(X, Y, C) \ ((__m512i) __builtin_ia32_shuf_i32x4_mask ((__v16si)(__m512i)(X), \ (__v16si)(__m512i)(Y), (int)(C),\ - (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__v16si)(__m512i)_mm512_undefined_si512 (),\ (__mmask16)-1)) #define _mm512_mask_shuffle_i32x4(W, U, X, Y, C) \ @@ -3958,7 +4013,7 @@ #define _mm512_shuffle_f64x2(X, Y, C) \ ((__m512d) __builtin_ia32_shuf_f64x2_mask ((__v8df)(__m512d)(X), \ (__v8df)(__m512d)(Y), (int)(C),\ - (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__v8df)(__m512d)_mm512_undefined_pd(),\ (__mmask8)-1)) #define _mm512_mask_shuffle_f64x2(W, U, X, Y, C) \ @@ -3976,7 +4031,7 @@ #define _mm512_shuffle_f32x4(X, Y, C) \ ((__m512) __builtin_ia32_shuf_f32x4_mask ((__v16sf)(__m512)(X), \ (__v16sf)(__m512)(Y), (int)(C),\ - (__v16sf)(__m512)_mm512_setzero_ps(),\ + (__v16sf)(__m512)_mm512_undefined_ps(),\ (__mmask16)-1)) #define _mm512_mask_shuffle_f32x4(W, U, X, Y, C) \ @@ -3999,7 +4054,7 @@ return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -4031,7 +4086,7 @@ return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -4063,7 +4118,7 @@ return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -4095,7 +4150,7 @@ return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -4127,7 +4182,7 @@ { return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, __R); } @@ -4157,7 +4212,7 @@ { return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, __R); } @@ -4182,7 +4237,7 @@ } #else #define _mm512_cvtt_roundpd_epi32(A, B) \ - ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B)) #define _mm512_mask_cvtt_roundpd_epi32(W, U, A, B) \ ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)(W), U, B)) @@ -4191,7 +4246,7 @@ ((__m256i)__builtin_ia32_cvttpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B)) #define _mm512_cvtt_roundpd_epu32(A, B) \ - ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B)) #define _mm512_mask_cvtt_roundpd_epu32(W, U, A, B) \ ((__m256i)__builtin_ia32_cvttpd2udq512_mask(A, (__v8si)(W), U, B)) @@ -4207,7 +4262,7 @@ { return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, __R); } @@ -4237,7 +4292,7 @@ { return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, __R); } @@ -4262,7 +4317,7 @@ } #else #define _mm512_cvt_roundpd_epi32(A, B) \ - ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B)) #define _mm512_mask_cvt_roundpd_epi32(W, U, A, B) \ ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)(W), U, B)) @@ -4271,7 +4326,7 @@ ((__m256i)__builtin_ia32_cvtpd2dq512_mask(A, (__v8si)_mm256_setzero_si256(), U, B)) #define _mm512_cvt_roundpd_epu32(A, B) \ - ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_setzero_si256(), -1, B)) + ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)_mm256_undefined_si256(), -1, B)) #define _mm512_mask_cvt_roundpd_epu32(W, U, A, B) \ ((__m256i)__builtin_ia32_cvtpd2udq512_mask(A, (__v8si)(W), U, B)) @@ -4287,7 +4342,7 @@ { return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, __R); } @@ -4317,7 +4372,7 @@ { return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, __R); } @@ -4342,7 +4397,7 @@ } #else #define _mm512_cvtt_roundps_epi32(A, B) \ - ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B)) #define _mm512_mask_cvtt_roundps_epi32(W, U, A, B) \ ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)(W), U, B)) @@ -4351,7 +4406,7 @@ ((__m512i)__builtin_ia32_cvttps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B)) #define _mm512_cvtt_roundps_epu32(A, B) \ - ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B)) #define _mm512_mask_cvtt_roundps_epu32(W, U, A, B) \ ((__m512i)__builtin_ia32_cvttps2udq512_mask(A, (__v16si)(W), U, B)) @@ -4367,7 +4422,7 @@ { return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, __R); } @@ -4397,7 +4452,7 @@ { return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, __R); } @@ -4422,7 +4477,7 @@ } #else #define _mm512_cvt_roundps_epi32(A, B) \ - ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B)) #define _mm512_mask_cvt_roundps_epi32(W, U, A, B) \ ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)(W), U, B)) @@ -4431,7 +4486,7 @@ ((__m512i)__builtin_ia32_cvtps2dq512_mask(A, (__v16si)_mm512_setzero_si512 (), U, B)) #define _mm512_cvt_roundps_epu32(A, B) \ - ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_setzero_si512 (), -1, B)) + ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)_mm512_undefined_si512 (), -1, B)) #define _mm512_mask_cvt_roundps_epu32(W, U, A, B) \ ((__m512i)__builtin_ia32_cvtps2udq512_mask(A, (__v16si)(W), U, B)) @@ -4553,8 +4608,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtepi32_epi8 (__m512i __A) { - __v16qi __O; - return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, __O, + return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A, + (__v16qi) + _mm_undefined_si128 (), (__mmask16) -1); } @@ -4587,8 +4643,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtsepi32_epi8 (__m512i __A) { - __v16qi __O; - return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A, __O, + return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A, + (__v16qi) + _mm_undefined_si128 (), (__mmask16) -1); } @@ -4621,8 +4678,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtusepi32_epi8 (__m512i __A) { - __v16qi __O; - return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A, __O, + return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A, + (__v16qi) + _mm_undefined_si128 (), (__mmask16) -1); } @@ -4656,8 +4714,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtepi32_epi16 (__m512i __A) { - __v16hi __O; - return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, __O, + return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A, + (__v16hi) + _mm256_undefined_si256 (), (__mmask16) -1); } @@ -4690,8 +4749,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtsepi32_epi16 (__m512i __A) { - __v16hi __O; - return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A, __O, + return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A, + (__v16hi) + _mm256_undefined_si256 (), (__mmask16) -1); } @@ -4724,8 +4784,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtusepi32_epi16 (__m512i __A) { - __v16hi __O; - return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A, __O, + return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A, + (__v16hi) + _mm256_undefined_si256 (), (__mmask16) -1); } @@ -4759,8 +4820,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtepi64_epi32 (__m512i __A) { - __v8si __O; - return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A, __O, + return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A, + (__v8si) + _mm256_undefined_si256 (), (__mmask8) -1); } @@ -4794,7 +4856,9 @@ _mm512_cvtsepi64_epi32 (__m512i __A) { __v8si __O; - return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A, __O, + return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A, + (__v8si) + _mm256_undefined_si256 (), (__mmask8) -1); } @@ -4827,8 +4891,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtusepi64_epi32 (__m512i __A) { - __v8si __O; - return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A, __O, + return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A, + (__v8si) + _mm256_undefined_si256 (), (__mmask8) -1); } @@ -4861,8 +4926,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtepi64_epi16 (__m512i __A) { - __v8hi __O; - return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, __O, + return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A, + (__v8hi) + _mm_undefined_si128 (), (__mmask8) -1); } @@ -4895,8 +4961,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtsepi64_epi16 (__m512i __A) { - __v8hi __O; - return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A, __O, + return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A, + (__v8hi) + _mm_undefined_si128 (), (__mmask8) -1); } @@ -4929,8 +4996,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtusepi64_epi16 (__m512i __A) { - __v8hi __O; - return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A, __O, + return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A, + (__v8hi) + _mm_undefined_si128 (), (__mmask8) -1); } @@ -4963,8 +5031,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtepi64_epi8 (__m512i __A) { - __v16qi __O; - return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A, __O, + return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A, + (__v16qi) + _mm_undefined_si128 (), (__mmask8) -1); } @@ -4997,8 +5066,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtsepi64_epi8 (__m512i __A) { - __v16qi __O; - return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A, __O, + return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A, + (__v16qi) + _mm_undefined_si128 (), (__mmask8) -1); } @@ -5031,8 +5101,9 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_cvtusepi64_epi8 (__m512i __A) { - __v16qi __O; - return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A, __O, + return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A, + (__v16qi) + _mm_undefined_si128 (), (__mmask8) -1); } @@ -5068,7 +5139,7 @@ { return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -5097,7 +5168,7 @@ { return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -5127,7 +5198,7 @@ { return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -5157,7 +5228,7 @@ { return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -5183,7 +5254,7 @@ #else #define _mm512_cvt_roundepi32_ps(A, B) \ - (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), -1, B) + (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B) #define _mm512_mask_cvt_roundepi32_ps(W, U, A, B) \ (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), W, U, B) @@ -5192,7 +5263,7 @@ (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), U, B) #define _mm512_cvt_roundepu32_ps(A, B) \ - (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_setzero_ps(), -1, B) + (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), (__v16sf)_mm512_undefined_ps(), -1, B) #define _mm512_mask_cvt_roundepu32_ps(W, U, A, B) \ (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), W, U, B) @@ -5209,7 +5280,7 @@ return (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, __imm, (__v4df) - _mm256_setzero_pd (), + _mm256_undefined_pd (), (__mmask8) -1); } @@ -5242,7 +5313,7 @@ return (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A, __imm, (__v4sf) - _mm_setzero_ps (), + _mm_undefined_ps (), (__mmask8) -1); } @@ -5275,7 +5346,7 @@ return (__m256i) __builtin_ia32_extracti64x4_mask ((__v8di) __A, __imm, (__v4di) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1); } @@ -5308,7 +5379,7 @@ return (__m128i) __builtin_ia32_extracti32x4_mask ((__v16si) __A, __imm, (__v4si) - _mm_setzero_si128 (), + _mm_undefined_si128 (), (__mmask8) -1); } @@ -5338,7 +5409,7 @@ #define _mm512_extractf64x4_pd(X, C) \ ((__m256d) __builtin_ia32_extractf64x4_mask ((__v8df)(__m512d) (X), \ (int) (C),\ - (__v4df)(__m256d)_mm256_setzero_pd(),\ + (__v4df)(__m256d)_mm256_undefined_pd(),\ (__mmask8)-1)) #define _mm512_mask_extractf64x4_pd(W, U, X, C) \ @@ -5356,7 +5427,7 @@ #define _mm512_extractf32x4_ps(X, C) \ ((__m128) __builtin_ia32_extractf32x4_mask ((__v16sf)(__m512) (X), \ (int) (C),\ - (__v4sf)(__m128)_mm_setzero_ps(),\ + (__v4sf)(__m128)_mm_undefined_ps(),\ (__mmask8)-1)) #define _mm512_mask_extractf32x4_ps(W, U, X, C) \ @@ -5374,7 +5445,7 @@ #define _mm512_extracti64x4_epi64(X, C) \ ((__m256i) __builtin_ia32_extracti64x4_mask ((__v8di)(__m512i) (X), \ (int) (C),\ - (__v4di)(__m256i)_mm256_setzero_si256 (),\ + (__v4di)(__m256i)_mm256_undefined_si256 (),\ (__mmask8)-1)) #define _mm512_mask_extracti64x4_epi64(W, U, X, C) \ @@ -5392,7 +5463,7 @@ #define _mm512_extracti32x4_epi32(X, C) \ ((__m128i) __builtin_ia32_extracti32x4_mask ((__v16si)(__m512i) (X), \ (int) (C),\ - (__v4si)(__m128i)_mm_setzero_si128 (),\ + (__v4si)(__m128i)_mm_undefined_si128 (),\ (__mmask8)-1)) #define _mm512_mask_extracti32x4_epi32(W, U, X, C) \ @@ -5437,7 +5508,7 @@ (__v4di) __B, __imm, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -5474,7 +5545,7 @@ (__v4df) __B, __imm, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -5514,7 +5585,7 @@ #define _mm512_insertf64x4(X, Y, C) \ ((__m512d) __builtin_ia32_insertf64x4_mask ((__v8df)(__m512d) (X), \ (__v4df)(__m256d) (Y), (int) (C), \ - (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__v8df)(__m512d)_mm512_undefined_pd(), \ (__mmask8)-1)) #define _mm512_mask_insertf64x4(W, U, X, Y, C) \ @@ -5532,7 +5603,7 @@ #define _mm512_inserti64x4(X, Y, C) \ ((__m512i) __builtin_ia32_inserti64x4_mask ((__v8di)(__m512i) (X), \ (__v4di)(__m256i) (Y), (int) (C), \ - (__v8di)(__m512i)_mm512_setzero_si512 (), \ + (__v8di)(__m512i)_mm512_undefined_si512 (), \ (__mmask8)-1)) #define _mm512_mask_inserti64x4(W, U, X, Y, C) \ @@ -5554,7 +5625,7 @@ { return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *) __P, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -5599,7 +5670,7 @@ { return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *) __P, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -5717,7 +5788,7 @@ return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A, (__v8di) __C, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -5749,7 +5820,7 @@ return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A, (__v16si) __C, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -5968,7 +6039,7 @@ { return (__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df) __X, __C, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -5997,7 +6068,7 @@ { return (__m512) __builtin_ia32_vpermilps512_mask ((__v16sf) __X, __C, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -6022,7 +6093,7 @@ #else #define _mm512_permute_pd(X, C) \ ((__m512d) __builtin_ia32_vpermilpd512_mask ((__v8df)(__m512d)(X), (int)(C), \ - (__v8df)(__m512d)(X), \ + (__v8df)(__m512d)_mm512_undefined_pd(),\ (__mmask8)(-1))) #define _mm512_mask_permute_pd(W, U, X, C) \ @@ -6037,7 +6108,7 @@ #define _mm512_permute_ps(X, C) \ ((__m512) __builtin_ia32_vpermilps512_mask ((__v16sf)(__m512)(X), (int)(C), \ - (__v16sf)(__m512)(X), \ + (__v16sf)(__m512)_mm512_undefined_ps(),\ (__mmask16)(-1))) #define _mm512_mask_permute_ps(W, U, X, C) \ @@ -6058,7 +6129,7 @@ { return (__m512i) __builtin_ia32_permdi512_mask ((__v8di) __X, __I, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) (-1)); } @@ -6088,7 +6159,7 @@ { return (__m512d) __builtin_ia32_permdf512_mask ((__v8df) __X, __M, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -6113,7 +6184,8 @@ #else #define _mm512_permutex_pd(X, M) \ ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \ - (__v8df)(__m512d)(X), (__mmask8)-1)) + (__v8df)(__m512d)_mm512_undefined_pd(),\ + (__mmask8)-1)) #define _mm512_mask_permutex_pd(W, U, X, M) \ ((__m512d) __builtin_ia32_permdf512_mask ((__v8df)(__m512d)(X), (int)(M), \ @@ -6127,7 +6199,8 @@ #define _mm512_permutex_epi64(X, I) \ ((__m512i) __builtin_ia32_permdi512_mask ((__v8di)(__m512i)(X), \ (int)(I), \ - (__v8di)(__m512i)(X), \ + (__v8di)(__m512i) \ + (_mm512_undefined_si512 ()),\ (__mmask8)(-1))) #define _mm512_maskz_permutex_epi64(M, X, I) \ @@ -6162,7 +6235,7 @@ return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y, (__v8di) __X, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -6195,7 +6268,7 @@ return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y, (__v16si) __X, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6217,7 +6290,7 @@ return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y, (__v8di) __X, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -6249,7 +6322,7 @@ return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y, (__v16si) __X, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -6282,7 +6355,7 @@ return (__m512) __builtin_ia32_shufps512_mask ((__v16sf) __M, (__v16sf) __V, __imm, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -6315,7 +6388,7 @@ return (__m512d) __builtin_ia32_shufpd512_mask ((__v8df) __M, (__v8df) __V, __imm, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -6485,7 +6558,7 @@ #define _mm512_shuffle_pd(X, Y, C) \ ((__m512d)__builtin_ia32_shufpd512_mask ((__v8df)(__m512d)(X), \ (__v8df)(__m512d)(Y), (int)(C),\ - (__v8df)(__m512d)_mm512_setzero_pd(),\ + (__v8df)(__m512d)_mm512_undefined_pd(),\ (__mmask8)-1)) #define _mm512_mask_shuffle_pd(W, U, X, Y, C) \ @@ -6503,7 +6576,7 @@ #define _mm512_shuffle_ps(X, Y, C) \ ((__m512)__builtin_ia32_shufps512_mask ((__v16sf)(__m512)(X), \ (__v16sf)(__m512)(Y), (int)(C),\ - (__v16sf)(__m512)_mm512_setzero_ps(),\ + (__v16sf)(__m512)_mm512_undefined_ps(),\ (__mmask16)-1)) #define _mm512_mask_shuffle_ps(W, U, X, Y, C) \ @@ -6585,7 +6658,7 @@ { return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -6614,7 +6687,7 @@ { return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -6644,7 +6717,7 @@ return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6655,7 +6728,7 @@ return (__m512i) __builtin_ia32_pord512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6687,7 +6760,7 @@ return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -6719,7 +6792,7 @@ return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6730,7 +6803,7 @@ return (__m512i) __builtin_ia32_pxord512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6762,7 +6835,7 @@ return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -6794,7 +6867,7 @@ { return (__m512i) __builtin_ia32_prold512_mask ((__v16si) __A, __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6823,7 +6896,7 @@ { return (__m512i) __builtin_ia32_prord512_mask ((__v16si) __A, __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6852,7 +6925,7 @@ { return (__m512i) __builtin_ia32_prolq512_mask ((__v8di) __A, __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -6881,7 +6954,7 @@ { return (__m512i) __builtin_ia32_prorq512_mask ((__v8di) __A, __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -6908,7 +6981,7 @@ #define _mm512_rol_epi32(A, B) \ ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \ (int)(B), \ - (__v16si)_mm512_setzero_si512 (), \ + (__v16si)_mm512_undefined_si512 (), \ (__mmask16)(-1))) #define _mm512_mask_rol_epi32(W, U, A, B) \ ((__m512i)__builtin_ia32_prold512_mask ((__v16si)(__m512i)(A), \ @@ -6923,7 +6996,7 @@ #define _mm512_ror_epi32(A, B) \ ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \ (int)(B), \ - (__v16si)_mm512_setzero_si512 (), \ + (__v16si)_mm512_undefined_si512 (), \ (__mmask16)(-1))) #define _mm512_mask_ror_epi32(W, U, A, B) \ ((__m512i)__builtin_ia32_prord512_mask ((__v16si)(__m512i)(A), \ @@ -6938,7 +7011,7 @@ #define _mm512_rol_epi64(A, B) \ ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \ (int)(B), \ - (__v8di)_mm512_setzero_si512 (), \ + (__v8di)_mm512_undefined_si512 (), \ (__mmask8)(-1))) #define _mm512_mask_rol_epi64(W, U, A, B) \ ((__m512i)__builtin_ia32_prolq512_mask ((__v8di)(__m512i)(A), \ @@ -6954,7 +7027,7 @@ #define _mm512_ror_epi64(A, B) \ ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \ (int)(B), \ - (__v8di)_mm512_setzero_si512 (), \ + (__v8di)_mm512_undefined_si512 (), \ (__mmask8)(-1))) #define _mm512_mask_ror_epi64(W, U, A, B) \ ((__m512i)__builtin_ia32_prorq512_mask ((__v8di)(__m512i)(A), \ @@ -6975,7 +7048,7 @@ return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -6986,7 +7059,7 @@ return (__m512i) __builtin_ia32_pandd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -7018,7 +7091,7 @@ return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -7049,7 +7122,7 @@ return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -7060,7 +7133,7 @@ return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -7092,7 +7165,7 @@ return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -7190,7 +7263,7 @@ return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -7223,7 +7296,7 @@ return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -7255,7 +7328,7 @@ return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -7288,7 +7361,7 @@ return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -7571,7 +7644,7 @@ { return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -7601,7 +7674,7 @@ return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -7633,7 +7706,7 @@ return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1); } @@ -7665,7 +7738,7 @@ return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -7697,7 +7770,7 @@ { return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -7727,7 +7800,7 @@ { return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -7758,7 +7831,7 @@ return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, __I, (__v16hi) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), -1); } @@ -7769,7 +7842,7 @@ return (__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf) __A, __I, (__v16hi) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), -1); } @@ -7817,7 +7890,7 @@ } #else #define _mm512_cvt_roundps_pd(A, B) \ - (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), -1, B) + (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_undefined_pd(), -1, B) #define _mm512_mask_cvt_roundps_pd(W, U, A, B) \ (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)(W), U, B) @@ -7826,7 +7899,7 @@ (__m512d)__builtin_ia32_cvtps2pd512_mask(A, (__v8df)_mm512_setzero_pd(), U, B) #define _mm512_cvt_roundph_ps(A, B) \ - (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), -1, B) + (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_undefined_ps(), -1, B) #define _mm512_mask_cvt_roundph_ps(W, U, A, B) \ (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)(W), U, B) @@ -7836,10 +7909,10 @@ #define _mm512_cvt_roundps_ph(A, I) \ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ - (__v16hi)_mm256_setzero_si256 (), -1)) + (__v16hi)_mm256_undefined_si256 (), -1)) #define _mm512_cvtps_ph(A, I) \ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ - (__v16hi)_mm256_setzero_si256 (), -1)) + (__v16hi)_mm256_undefined_si256 (), -1)) #define _mm512_mask_cvt_roundps_ph(U, W, A, I) \ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ (__v16hi)(__m256i)(U), (__mmask16) (W))) @@ -7861,7 +7934,7 @@ { return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, (__v8sf) - _mm256_setzero_ps (), + _mm256_undefined_ps (), (__mmask8) -1, __R); } @@ -7904,7 +7977,7 @@ } #else #define _mm512_cvt_roundpd_ps(A, B) \ - (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_setzero_ps(), -1, B) + (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)_mm256_undefined_ps(), -1, B) #define _mm512_mask_cvt_roundpd_ps(W, U, A, B) \ (__m256)__builtin_ia32_cvtpd2ps512_mask(A, (__v8sf)(W), U, B) @@ -7972,7 +8045,7 @@ { return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -8002,7 +8075,7 @@ { return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -8049,7 +8122,7 @@ { return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, (__C << 2) | __B, - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, __R); } @@ -8085,7 +8158,7 @@ { return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, (__C << 2) | __B, - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, __R); } @@ -8142,7 +8215,7 @@ #define _mm512_getmant_round_pd(X, B, C, R) \ ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ (int)(((C)<<2) | (B)), \ - (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__v8df)(__m512d)_mm512_undefined_pd(), \ (__mmask8)-1,\ (R))) @@ -8162,7 +8235,7 @@ #define _mm512_getmant_round_ps(X, B, C, R) \ ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ (int)(((C)<<2) | (B)), \ - (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__v16sf)(__m512)_mm512_undefined_ps(), \ (__mmask16)-1,\ (R))) @@ -8199,7 +8272,7 @@ #define _mm512_getexp_round_ps(A, R) \ ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ - (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, R)) + (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, R)) #define _mm512_mask_getexp_round_ps(W, U, A, R) \ ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ @@ -8211,7 +8284,7 @@ #define _mm512_getexp_round_pd(A, R) \ ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ - (__v8df)_mm512_setzero_pd(), (__mmask8)-1, R)) + (__v8df)_mm512_undefined_pd(), (__mmask8)-1, R)) #define _mm512_mask_getexp_round_pd(W, U, A, R) \ ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ @@ -8228,7 +8301,9 @@ _mm512_roundscale_round_ps (__m512 __A, const int __imm, const int __R) { return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm, - (__v16sf) __A, -1, __R); + (__v16sf) + _mm512_undefined_ps (), + -1, __R); } extern __inline __m512 @@ -8258,7 +8333,9 @@ _mm512_roundscale_round_pd (__m512d __A, const int __imm, const int __R) { return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm, - (__v8df) __A, -1, __R); + (__v8df) + _mm512_undefined_pd (), + -1, __R); } extern __inline __m512d @@ -8303,7 +8380,7 @@ #else #define _mm512_roundscale_round_ps(A, B, R) \ ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\ - (__v16sf)(__m512)(A), (__mmask16)(-1), R)) + (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), R)) #define _mm512_mask_roundscale_round_ps(A, B, C, D, R) \ ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \ (int)(D), \ @@ -8316,7 +8393,7 @@ (__mmask16)(A), R)) #define _mm512_roundscale_round_pd(A, B, R) \ ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\ - (__v8df)(__m512d)(A), (__mmask8)(-1), R)) + (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), R)) #define _mm512_mask_roundscale_round_pd(A, B, C, D, R) \ ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \ (int)(D), \ @@ -8423,7 +8500,7 @@ return (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A, (__v16si) __B, __imm, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -8457,7 +8534,7 @@ return (__m512i) __builtin_ia32_alignq512_mask ((__v8di) __A, (__v8di) __B, __imm, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -8486,7 +8563,7 @@ #else #define _mm512_alignr_epi32(X, Y, C) \ ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \ - (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_undefined_si512 (),\ (__mmask16)-1)) #define _mm512_mask_alignr_epi32(W, U, X, Y, C) \ @@ -8496,12 +8573,13 @@ #define _mm512_maskz_alignr_epi32(U, X, Y, C) \ ((__m512i)__builtin_ia32_alignd512_mask ((__v16si)(__m512i)(X), \ - (__v16si)(__m512i)(Y), (int)(C), (__v16si)(__m512i)_mm512_setzero_si512 (),\ + (__v16si)(__m512i)(Y), (int)(C), (__v16si)_mm512_setzero_si512 (),\ (__mmask16)(U))) #define _mm512_alignr_epi64(X, Y, C) \ ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \ - (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)(X), (__mmask8)-1)) + (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_undefined_si512 (), \ + (__mmask8)-1)) #define _mm512_mask_alignr_epi64(W, U, X, Y, C) \ ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \ @@ -8509,7 +8587,7 @@ #define _mm512_maskz_alignr_epi64(U, X, Y, C) \ ((__m512i)__builtin_ia32_alignq512_mask ((__v8di)(__m512i)(X), \ - (__v8di)(__m512i)(Y), (int)(C), (__v8di)(__m512i)_mm512_setzero_si512 (),\ + (__v8di)(__m512i)(Y), (int)(C), (__v8di)_mm512_setzero_si512 (),\ (__mmask8)(U))) #endif @@ -8976,7 +9054,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i32gather_ps (__m512i __index, float const *__addr, int __scale) { - __m512 v1_old = _mm512_setzero_ps (); + __m512 v1_old = _mm512_undefined_ps (); __mmask16 mask = 0xFFFF; return (__m512) __builtin_ia32_gathersiv16sf ((__v16sf) v1_old, @@ -9000,7 +9078,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i32gather_pd (__m256i __index, double const *__addr, int __scale) { - __m512d v1_old = _mm512_setzero_pd (); + __m512d v1_old = _mm512_undefined_pd (); __mmask8 mask = 0xFF; return (__m512d) __builtin_ia32_gathersiv8df ((__v8df) v1_old, @@ -9024,7 +9102,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i64gather_ps (__m512i __index, float const *__addr, int __scale) { - __m256 v1_old = _mm256_setzero_ps (); + __m256 v1_old = _mm256_undefined_ps (); __mmask8 mask = 0xFF; return (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf) v1_old, @@ -9048,7 +9126,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i64gather_pd (__m512i __index, double const *__addr, int __scale) { - __m512d v1_old = _mm512_setzero_pd (); + __m512d v1_old = _mm512_undefined_pd (); __mmask8 mask = 0xFF; return (__m512d) __builtin_ia32_gatherdiv8df ((__v8df) v1_old, @@ -9072,7 +9150,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i32gather_epi32 (__m512i __index, int const *__addr, int __scale) { - __m512i v1_old = _mm512_setzero_si512 (); + __m512i v1_old = _mm512_undefined_si512 (); __mmask16 mask = 0xFFFF; return (__m512i) __builtin_ia32_gathersiv16si ((__v16si) v1_old, @@ -9096,7 +9174,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i32gather_epi64 (__m256i __index, long long const *__addr, int __scale) { - __m512i v1_old = _mm512_setzero_si512 (); + __m512i v1_old = _mm512_undefined_si512 (); __mmask8 mask = 0xFF; return (__m512i) __builtin_ia32_gathersiv8di ((__v8di) v1_old, @@ -9121,7 +9199,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i64gather_epi32 (__m512i __index, int const *__addr, int __scale) { - __m256i v1_old = _mm256_setzero_si256 (); + __m256i v1_old = _mm256_undefined_si256 (); __mmask8 mask = 0xFF; return (__m256i) __builtin_ia32_gatherdiv16si ((__v8si) v1_old, @@ -9145,7 +9223,7 @@ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm512_i64gather_epi64 (__m512i __index, long long const *__addr, int __scale) { - __m512i v1_old = _mm512_setzero_si512 (); + __m512i v1_old = _mm512_undefined_si512 (); __mmask8 mask = 0xFF; return (__m512i) __builtin_ia32_gatherdiv8di ((__v8di) v1_old, @@ -9309,7 +9387,7 @@ } #else #define _mm512_i32gather_ps(INDEX, ADDR, SCALE) \ - (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_setzero_ps(), \ + (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\ (float const *)ADDR, \ (__v16si)(__m512i)INDEX, \ (__mmask16)0xFFFF, (int)SCALE) @@ -9321,7 +9399,7 @@ (__mmask16)MASK, (int)SCALE) #define _mm512_i32gather_pd(INDEX, ADDR, SCALE) \ - (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_setzero_pd(), \ + (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(), \ (double const *)ADDR, \ (__v8si)(__m256i)INDEX, \ (__mmask8)0xFF, (int)SCALE) @@ -9333,7 +9411,7 @@ (__mmask8)MASK, (int)SCALE) #define _mm512_i64gather_ps(INDEX, ADDR, SCALE) \ - (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_setzero_ps(), \ + (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(), \ (float const *)ADDR, \ (__v8di)(__m512i)INDEX, \ (__mmask8)0xFF, (int)SCALE) @@ -9345,7 +9423,7 @@ (__mmask8)MASK, (int)SCALE) #define _mm512_i64gather_pd(INDEX, ADDR, SCALE) \ - (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_setzero_pd(), \ + (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(), \ (double const *)ADDR, \ (__v8di)(__m512i)INDEX, \ (__mmask8)0xFF, (int)SCALE) @@ -9357,7 +9435,7 @@ (__mmask8)MASK, (int)SCALE) #define _mm512_i32gather_epi32(INDEX, ADDR, SCALE) \ - (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_setzero_si512 (), \ + (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_si512 (), \ (int const *)ADDR, \ (__v16si)(__m512i)INDEX, \ (__mmask16)0xFFFF, (int)SCALE) @@ -9369,7 +9447,7 @@ (__mmask16)MASK, (int)SCALE) #define _mm512_i32gather_epi64(INDEX, ADDR, SCALE) \ - (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_setzero_si512 (), \ + (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_si512 (), \ (long long const *)ADDR, \ (__v8si)(__m256i)INDEX, \ (__mmask8)0xFF, (int)SCALE) @@ -9381,7 +9459,7 @@ (__mmask8)MASK, (int)SCALE) #define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \ - (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_setzero_si256(), \ + (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \ (int const *)ADDR, \ (__v8di)(__m512i)INDEX, \ (__mmask8)0xFF, (int)SCALE) @@ -9393,7 +9471,7 @@ (__mmask8)MASK, (int)SCALE) #define _mm512_i64gather_epi64(INDEX, ADDR, SCALE) \ - (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_setzero_si512 (), \ + (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_si512 (), \ (long long const *)ADDR, \ (__v8di)(__m512i)INDEX, \ (__mmask8)0xFF, (int)SCALE) @@ -9889,7 +9967,7 @@ return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -9920,7 +9998,7 @@ return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -9951,7 +10029,7 @@ return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -9982,7 +10060,7 @@ return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A, (__v8di) __B, (__v8di) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask8) -1); } @@ -10013,7 +10091,7 @@ return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -10044,7 +10122,7 @@ return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -10075,7 +10153,7 @@ return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -10106,7 +10184,7 @@ return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A, (__v16si) __B, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1); } @@ -10137,7 +10215,7 @@ return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1); } @@ -10382,7 +10460,7 @@ { return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10414,7 +10492,7 @@ { return (__m512) __builtin_ia32_sqrtps512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10447,7 +10525,7 @@ return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10482,7 +10560,7 @@ return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10517,7 +10595,7 @@ return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10552,7 +10630,7 @@ return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10587,7 +10665,7 @@ return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10622,7 +10700,7 @@ return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10657,7 +10735,7 @@ return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __M, (__v8df) __V, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10692,7 +10770,7 @@ return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10727,7 +10805,7 @@ return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10762,7 +10840,7 @@ return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10797,7 +10875,7 @@ return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10832,7 +10910,7 @@ return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10867,7 +10945,7 @@ return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A, (__v8df) __B, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -10902,7 +10980,7 @@ return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A, (__v16sf) __B, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11482,7 +11560,7 @@ { return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11514,7 +11592,7 @@ { return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11546,7 +11624,7 @@ { return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11578,7 +11656,7 @@ { return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A, (__v8si) - _mm256_setzero_si256 (), + _mm256_undefined_si256 (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11610,7 +11688,7 @@ { return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11642,7 +11720,7 @@ { return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11674,7 +11752,7 @@ { return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11706,7 +11784,7 @@ { return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A, (__v16si) - _mm512_setzero_si512 (), + _mm512_undefined_si512 (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11764,7 +11842,7 @@ { return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -11796,7 +11874,7 @@ { return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12141,7 +12219,7 @@ { return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12173,7 +12251,7 @@ { return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12205,7 +12283,7 @@ { return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A, (__v8sf) - _mm256_setzero_ps (), + _mm256_undefined_ps (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12238,7 +12316,7 @@ { return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A, (__v16sf) - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12270,7 +12348,7 @@ { return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A, (__v8df) - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12321,7 +12399,7 @@ { return (__m512d) __builtin_ia32_getmantpd512_mask ((__v8df) __A, (__C << 2) | __B, - _mm512_setzero_pd (), + _mm512_undefined_pd (), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12357,7 +12435,7 @@ { return (__m512) __builtin_ia32_getmantps512_mask ((__v16sf) __A, (__C << 2) | __B, - _mm512_setzero_ps (), + _mm512_undefined_ps (), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); } @@ -12412,7 +12490,7 @@ #define _mm512_getmant_pd(X, B, C) \ ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ (int)(((C)<<2) | (B)), \ - (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__v8df)_mm512_undefined_pd(), \ (__mmask8)-1,\ _MM_FROUND_CUR_DIRECTION)) @@ -12426,13 +12504,13 @@ #define _mm512_maskz_getmant_pd(U, X, B, C) \ ((__m512d)__builtin_ia32_getmantpd512_mask ((__v8df)(__m512d)(X), \ (int)(((C)<<2) | (B)), \ - (__v8df)(__m512d)_mm512_setzero_pd(), \ + (__v8df)_mm512_setzero_pd(), \ (__mmask8)(U),\ _MM_FROUND_CUR_DIRECTION)) #define _mm512_getmant_ps(X, B, C) \ ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ (int)(((C)<<2) | (B)), \ - (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__v16sf)_mm512_undefined_ps(), \ (__mmask16)-1,\ _MM_FROUND_CUR_DIRECTION)) @@ -12446,7 +12524,7 @@ #define _mm512_maskz_getmant_ps(U, X, B, C) \ ((__m512)__builtin_ia32_getmantps512_mask ((__v16sf)(__m512)(X), \ (int)(((C)<<2) | (B)), \ - (__v16sf)(__m512)_mm512_setzero_ps(), \ + (__v16sf)_mm512_setzero_ps(), \ (__mmask16)(U),\ _MM_FROUND_CUR_DIRECTION)) #define _mm_getmant_sd(X, Y, C, D) \ @@ -12471,7 +12549,7 @@ #define _mm512_getexp_ps(A) \ ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ - (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION)) + (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION)) #define _mm512_mask_getexp_ps(W, U, A) \ ((__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \ @@ -12483,7 +12561,7 @@ #define _mm512_getexp_pd(A) \ ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ - (__v8df)_mm512_setzero_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION)) + (__v8df)_mm512_undefined_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION)) #define _mm512_mask_getexp_pd(W, U, A) \ ((__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \ @@ -12500,7 +12578,9 @@ _mm512_roundscale_ps (__m512 __A, const int __imm) { return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, __imm, - (__v16sf) __A, -1, + (__v16sf) + _mm512_undefined_ps (), + -1, _MM_FROUND_CUR_DIRECTION); } @@ -12532,7 +12612,9 @@ _mm512_roundscale_pd (__m512d __A, const int __imm) { return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, __imm, - (__v8df) __A, -1, + (__v8df) + _mm512_undefined_pd (), + -1, _MM_FROUND_CUR_DIRECTION); } @@ -12580,7 +12662,7 @@ #else #define _mm512_roundscale_ps(A, B) \ ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(A), (int)(B),\ - (__v16sf)(__m512)(A), (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION)) + (__v16sf)_mm512_undefined_ps(), (__mmask16)(-1), _MM_FROUND_CUR_DIRECTION)) #define _mm512_mask_roundscale_ps(A, B, C, D) \ ((__m512) __builtin_ia32_rndscaleps_mask ((__v16sf)(__m512)(C), \ (int)(D), \ @@ -12593,7 +12675,7 @@ (__mmask16)(A), _MM_FROUND_CUR_DIRECTION)) #define _mm512_roundscale_pd(A, B) \ ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(A), (int)(B),\ - (__v8df)(__m512d)(A), (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION)) + (__v8df)_mm512_undefined_pd(), (__mmask8)(-1), _MM_FROUND_CUR_DIRECTION)) #define _mm512_mask_roundscale_pd(A, B, C, D) \ ((__m512d) __builtin_ia32_rndscalepd_mask ((__v8df)(__m512d)(C), \ (int)(D), \ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/avxintrin.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/avxintrin.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/avxintrin.h 2014-01-05 19:58:22.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/avxintrin.h 2014-03-26 08:19:17.000000000 +0000 @@ -1168,6 +1168,27 @@ } extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +_mm256_undefined_pd (void) +{ + __m256d __Y = __Y; + return __Y; +} + +extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +_mm256_undefined_ps (void) +{ + __m256 __Y = __Y; + return __Y; +} + +extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +_mm256_undefined_si256 (void) +{ + __m256i __Y = __Y; + return __Y; +} + +extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm256_setzero_pd (void) { return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 }; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/constraints.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/constraints.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/constraints.md 2014-02-04 12:24:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/constraints.md 2014-03-26 08:19:17.000000000 +0000 @@ -220,6 +220,13 @@ ;; We use W prefix to denote any number of ;; constant-or-symbol-reference constraints +(define_constraint "We" + "32-bit signed integer constant, or a symbolic reference known + to fit that range (for sign-extending conversion operations that + require non-VOIDmode immediate operands)." + (and (match_operand 0 "x86_64_immediate_operand") + (match_test "GET_MODE (op) != VOIDmode"))) + (define_constraint "Wz" "32-bit unsigned integer constant, or a symbolic reference known to fit that range (for zero-extending conversion operations that diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/darwin.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/darwin.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/darwin.h 2014-01-05 19:58:22.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/darwin.h 2014-03-22 12:09:07.000000000 +0000 @@ -26,7 +26,9 @@ #define DARWIN_X86 1 #undef TARGET_64BIT +#undef TARGET_64BIT_P #define TARGET_64BIT TARGET_ISA_64BIT +#define TARGET_64BIT_P(x) TARGET_ISA_64BIT_P(x) #ifdef IN_LIBGCC2 #undef TARGET_64BIT diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/emmintrin.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/emmintrin.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/emmintrin.h 2014-01-05 19:58:22.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/emmintrin.h 2014-03-26 08:19:17.000000000 +0000 @@ -86,6 +86,14 @@ return __extension__ (__m128d){ __W, __X }; } +/* Create an undefined vector. */ +extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +_mm_undefined_pd (void) +{ + __m128d __Y = __Y; + return __Y; +} + /* Create a vector of zeros. */ extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_setzero_pd (void) @@ -728,6 +736,14 @@ return (__m128i)__builtin_ia32_movq128 ((__v2di) __A); } +/* Create an undefined vector. */ +extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +_mm_undefined_si128 (void) +{ + __m128i __Y = __Y; + return __Y; +} + /* Create a vector of zeros. */ extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_setzero_si128 (void) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/i386.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/i386.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/i386.c 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/i386.c 2014-03-30 07:40:41.000000000 +0000 @@ -13925,13 +13925,13 @@ if (GET_CODE (XEXP (x, 0)) == MULT) { changed = 1; - XEXP (x, 0) = force_operand (XEXP (x, 0), 0); + XEXP (x, 0) = copy_addr_to_reg (XEXP (x, 0)); } if (GET_CODE (XEXP (x, 1)) == MULT) { changed = 1; - XEXP (x, 1) = force_operand (XEXP (x, 1), 0); + XEXP (x, 1) = copy_addr_to_reg (XEXP (x, 1)); } if (changed @@ -22755,7 +22755,7 @@ static rtx ix86_copy_addr_to_reg (rtx addr) { - if (GET_MODE (addr) == Pmode) + if (GET_MODE (addr) == Pmode || GET_MODE (addr) == VOIDmode) return copy_addr_to_reg (addr); else { diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/i386.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/i386.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/i386.h 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/i386.h 2014-03-22 12:09:07.000000000 +0000 @@ -284,10 +284,13 @@ #else #ifndef TARGET_BI_ARCH #undef TARGET_64BIT +#undef TARGET_64BIT_P #if TARGET_64BIT_DEFAULT #define TARGET_64BIT 1 +#define TARGET_64BIT_P(x) 1 #else #define TARGET_64BIT 0 +#define TARGET_64BIT_P(x) 0 #endif #endif #endif diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/i386.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/i386.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/i386.md 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/i386.md 2014-03-26 08:19:17.000000000 +0000 @@ -971,6 +971,15 @@ (DI "x86_64_general_operand") (TI "x86_64_general_operand")]) +;; General sign extend operand predicate for integer modes, +;; which disallows VOIDmode operands and thus it is suitable +;; for use inside sign_extend. +(define_mode_attr general_sext_operand + [(QI "sext_operand") + (HI "sext_operand") + (SI "x86_64_sext_operand") + (DI "x86_64_sext_operand")]) + ;; General sign/zero extend operand predicate for integer modes. (define_mode_attr general_szext_operand [(QI "general_operand") @@ -5821,10 +5830,11 @@ (eq:CCO (plus: (sign_extend: (match_operand:SWI 1 "nonimmediate_operand")) - (sign_extend: - (match_operand:SWI 2 ""))) + (match_dup 4)) (sign_extend: - (plus:SWI (match_dup 1) (match_dup 2))))) + (plus:SWI (match_dup 1) + (match_operand:SWI 2 + ""))))) (set (match_operand:SWI 0 "register_operand") (plus:SWI (match_dup 1) (match_dup 2)))]) (set (pc) (if_then_else @@ -5832,7 +5842,13 @@ (label_ref (match_operand 3)) (pc)))] "" - "ix86_fixup_binary_operands_no_copy (PLUS, mode, operands);") +{ + ix86_fixup_binary_operands_no_copy (PLUS, mode, operands); + if (CONST_INT_P (operands[2])) + operands[4] = operands[2]; + else + operands[4] = gen_rtx_SIGN_EXTEND (mode, operands[2]); +}) (define_insn "*addv4" [(set (reg:CCO FLAGS_REG) @@ -5840,7 +5856,8 @@ (sign_extend: (match_operand:SWI 1 "nonimmediate_operand" "%0,0")) (sign_extend: - (match_operand:SWI 2 "" ","))) + (match_operand:SWI 2 "" + "mWe,We"))) (sign_extend: (plus:SWI (match_dup 1) (match_dup 2))))) (set (match_operand:SWI 0 "nonimmediate_operand" "=,m") @@ -5850,6 +5867,31 @@ [(set_attr "type" "alu") (set_attr "mode" "")]) +(define_insn "*addv4_1" + [(set (reg:CCO FLAGS_REG) + (eq:CCO (plus: + (sign_extend: + (match_operand:SWI 1 "nonimmediate_operand" "0")) + (match_operand: 3 "const_int_operand" "i")) + (sign_extend: + (plus:SWI (match_dup 1) + (match_operand:SWI 2 "x86_64_immediate_operand" + ""))))) + (set (match_operand:SWI 0 "nonimmediate_operand" "=m") + (plus:SWI (match_dup 1) (match_dup 2)))] + "ix86_binary_operator_ok (PLUS, mode, operands) + && CONST_INT_P (operands[2]) + && INTVAL (operands[2]) == INTVAL (operands[3])" + "add{}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") + (set_attr "mode" "") + (set (attr "length_immediate") + (cond [(match_test "IN_RANGE (INTVAL (operands[2]), -128, 127)") + (const_string "1") + (match_test " == 8") + (const_string "4")] + (const_string "")))]) + ;; The lea patterns for modes less than 32 bits need to be matched by ;; several insns converted to real lea by splitters. @@ -6093,10 +6135,11 @@ (eq:CCO (minus: (sign_extend: (match_operand:SWI 1 "nonimmediate_operand")) - (sign_extend: - (match_operand:SWI 2 ""))) + (match_dup 4)) (sign_extend: - (minus:SWI (match_dup 1) (match_dup 2))))) + (minus:SWI (match_dup 1) + (match_operand:SWI 2 + ""))))) (set (match_operand:SWI 0 "register_operand") (minus:SWI (match_dup 1) (match_dup 2)))]) (set (pc) (if_then_else @@ -6104,7 +6147,13 @@ (label_ref (match_operand 3)) (pc)))] "" - "ix86_fixup_binary_operands_no_copy (MINUS, mode, operands);") +{ + ix86_fixup_binary_operands_no_copy (MINUS, mode, operands); + if (CONST_INT_P (operands[2])) + operands[4] = operands[2]; + else + operands[4] = gen_rtx_SIGN_EXTEND (mode, operands[2]); +}) (define_insn "*subv4" [(set (reg:CCO FLAGS_REG) @@ -6112,7 +6161,8 @@ (sign_extend: (match_operand:SWI 1 "nonimmediate_operand" "0,0")) (sign_extend: - (match_operand:SWI 2 "" ",m"))) + (match_operand:SWI 2 "" + "We,m"))) (sign_extend: (minus:SWI (match_dup 1) (match_dup 2))))) (set (match_operand:SWI 0 "nonimmediate_operand" "=m,") @@ -6122,6 +6172,31 @@ [(set_attr "type" "alu") (set_attr "mode" "")]) +(define_insn "*subv4_1" + [(set (reg:CCO FLAGS_REG) + (eq:CCO (minus: + (sign_extend: + (match_operand:SWI 1 "nonimmediate_operand" "0")) + (match_operand: 3 "const_int_operand" "i")) + (sign_extend: + (minus:SWI (match_dup 1) + (match_operand:SWI 2 "x86_64_immediate_operand" + ""))))) + (set (match_operand:SWI 0 "nonimmediate_operand" "=m") + (minus:SWI (match_dup 1) (match_dup 2)))] + "ix86_binary_operator_ok (MINUS, mode, operands) + && CONST_INT_P (operands[2]) + && INTVAL (operands[2]) == INTVAL (operands[3])" + "sub{}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") + (set_attr "mode" "") + (set (attr "length_immediate") + (cond [(match_test "IN_RANGE (INTVAL (operands[2]), -128, 127)") + (const_string "1") + (match_test " == 8") + (const_string "4")] + (const_string "")))]) + (define_insn "*sub_3" [(set (reg FLAGS_REG) (compare (match_operand:SWI 1 "nonimmediate_operand" "0,0") @@ -6442,52 +6517,98 @@ (eq:CCO (mult: (sign_extend: (match_operand:SWI48 1 "register_operand")) - (sign_extend: - (match_operand:SWI48 2 ""))) + (match_dup 4)) (sign_extend: - (mult:SWI48 (match_dup 1) (match_dup 2))))) + (mult:SWI48 (match_dup 1) + (match_operand:SWI48 2 + ""))))) (set (match_operand:SWI48 0 "register_operand") (mult:SWI48 (match_dup 1) (match_dup 2)))]) (set (pc) (if_then_else (eq (reg:CCO FLAGS_REG) (const_int 0)) (label_ref (match_operand 3)) - (pc)))]) + (pc)))] + "" +{ + if (CONST_INT_P (operands[2])) + operands[4] = operands[2]; + else + operands[4] = gen_rtx_SIGN_EXTEND (mode, operands[2]); +}) (define_insn "*mulv4" [(set (reg:CCO FLAGS_REG) (eq:CCO (mult: (sign_extend: - (match_operand:SWI 1 "nonimmediate_operand" "%rm,rm,0")) + (match_operand:SWI48 1 "nonimmediate_operand" "%rm,0")) (sign_extend: - (match_operand:SWI 2 "" "K,,mr"))) + (match_operand:SWI48 2 "" + "We,mr"))) (sign_extend: - (mult:SWI (match_dup 1) (match_dup 2))))) - (set (match_operand:SWI 0 "register_operand" "=r,r,r") - (mult:SWI (match_dup 1) (match_dup 2)))] + (mult:SWI48 (match_dup 1) (match_dup 2))))) + (set (match_operand:SWI48 0 "register_operand" "=r,r") + (mult:SWI48 (match_dup 1) (match_dup 2)))] "!(MEM_P (operands[1]) && MEM_P (operands[2]))" "@ imul{}\t{%2, %1, %0|%0, %1, %2} - imul{}\t{%2, %1, %0|%0, %1, %2} imul{}\t{%2, %0|%0, %2}" [(set_attr "type" "imul") - (set_attr "prefix_0f" "0,0,1") + (set_attr "prefix_0f" "0,1") (set (attr "athlon_decode") (cond [(eq_attr "cpu" "athlon") (const_string "vector") - (eq_attr "alternative" "1") + (eq_attr "alternative" "0") (const_string "vector") - (and (eq_attr "alternative" "2") + (and (eq_attr "alternative" "1") (match_operand 1 "memory_operand")) (const_string "vector")] (const_string "direct"))) (set (attr "amdfam10_decode") - (cond [(and (eq_attr "alternative" "0,1") + (cond [(and (eq_attr "alternative" "1") (match_operand 1 "memory_operand")) (const_string "vector")] (const_string "direct"))) (set_attr "bdver1_decode" "direct") (set_attr "mode" "")]) +(define_insn "*mulv4_1" + [(set (reg:CCO FLAGS_REG) + (eq:CCO (mult: + (sign_extend: + (match_operand:SWI48 1 "nonimmediate_operand" "rm,rm")) + (match_operand: 3 "const_int_operand" "K,i")) + (sign_extend: + (mult:SWI48 (match_dup 1) + (match_operand:SWI 2 "x86_64_immediate_operand" + "K,"))))) + (set (match_operand:SWI48 0 "register_operand" "=r,r") + (mult:SWI48 (match_dup 1) (match_dup 2)))] + "!(MEM_P (operands[1]) && MEM_P (operands[2])) + && CONST_INT_P (operands[2]) + && INTVAL (operands[2]) == INTVAL (operands[3])" + "@ + imul{}\t{%2, %1, %0|%0, %1, %2} + imul{}\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "imul") + (set (attr "athlon_decode") + (cond [(eq_attr "cpu" "athlon") + (const_string "vector") + (eq_attr "alternative" "1") + (const_string "vector")] + (const_string "direct"))) + (set (attr "amdfam10_decode") + (cond [(match_operand 1 "memory_operand") + (const_string "vector")] + (const_string "direct"))) + (set_attr "bdver1_decode" "direct") + (set_attr "mode" "") + (set (attr "length_immediate") + (cond [(match_test "IN_RANGE (INTVAL (operands[2]), -128, 127)") + (const_string "1") + (match_test " == 8") + (const_string "4")] + (const_string "")))]) + (define_expand "mul3" [(parallel [(set (match_operand: 0 "register_operand") (mult: diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/predicates.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/predicates.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/predicates.md 2014-03-04 22:24:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/predicates.md 2014-03-26 08:19:17.000000000 +0000 @@ -338,6 +338,20 @@ (match_operand 0 "x86_64_immediate_operand")) (match_operand 0 "general_operand"))) +;; Return true if OP is non-VOIDmode general operand representable +;; on x86_64. This predicate is used in sign-extending conversion +;; operations that require non-VOIDmode immediate operands. +(define_predicate "x86_64_sext_operand" + (and (match_test "GET_MODE (op) != VOIDmode") + (match_operand 0 "x86_64_general_operand"))) + +;; Return true if OP is non-VOIDmode general operand. This predicate +;; is used in sign-extending conversion operations that require +;; non-VOIDmode immediate operands. +(define_predicate "sext_operand" + (and (match_test "GET_MODE (op) != VOIDmode") + (match_operand 0 "general_operand"))) + ;; Return true if OP is representable on x86_64 as zero-extended operand. ;; This predicate is used in zero-extending conversion operations that ;; require non-VOIDmode immediate operands. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/xmmintrin.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/xmmintrin.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/i386/xmmintrin.h 2014-03-03 23:53:40.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/i386/xmmintrin.h 2014-03-26 08:19:17.000000000 +0000 @@ -102,6 +102,14 @@ #define _MM_FLUSH_ZERO_ON 0x8000 #define _MM_FLUSH_ZERO_OFF 0x0000 +/* Create an undefined vector. */ +extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +_mm_undefined_ps (void) +{ + __m128 __Y = __Y; + return __Y; +} + /* Create a vector of zeros. */ extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_setzero_ps (void) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/altivec.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/altivec.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/altivec.h 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/altivec.h 2014-03-28 19:04:55.000000000 +0000 @@ -319,6 +319,11 @@ #define vec_sqrt __builtin_vec_sqrt #define vec_vsx_ld __builtin_vec_vsx_ld #define vec_vsx_st __builtin_vec_vsx_st + +/* Note, xxsldi and xxpermdi were added as __builtin_vsx_ functions + instead of __builtin_vec_ */ +#define vec_xxsldwi __builtin_vsx_xxsldwi +#define vec_xxpermdi __builtin_vsx_xxpermdi #endif #ifdef _ARCH_PWR8 @@ -329,6 +334,7 @@ #define vec_vaddcuq __builtin_vec_vaddcuq #define vec_vaddudm __builtin_vec_vaddudm #define vec_vadduqm __builtin_vec_vadduqm +#define vec_vbpermq __builtin_vec_vbpermq #define vec_vclz __builtin_vec_vclz #define vec_vclzb __builtin_vec_vclzb #define vec_vclzd __builtin_vec_vclzd diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/altivec.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/altivec.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/altivec.md 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/altivec.md 2014-03-28 19:04:55.000000000 +0000 @@ -142,6 +142,7 @@ UNSPEC_VSUBCUQ UNSPEC_VSUBEUQM UNSPEC_VSUBECUQ + UNSPEC_VBPERMQ ]) (define_c_enum "unspecv" @@ -3322,3 +3323,14 @@ [(set_attr "length" "4") (set_attr "type" "vecsimple")]) +;; We use V2DI as the output type to simplify converting the permute +;; bits into an integer +(define_insn "altivec_vbpermq" + [(set (match_operand:V2DI 0 "register_operand" "=v") + (unspec:V2DI [(match_operand:V16QI 1 "register_operand" "v") + (match_operand:V16QI 2 "register_operand" "v")] + UNSPEC_VBPERMQ))] + "TARGET_P8_VECTOR" + "vbpermq %0,%1,%2" + [(set_attr "length" "4") + (set_attr "type" "vecsimple")]) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/constraints.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/constraints.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/constraints.md 2014-03-03 01:43:59.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/constraints.md 2014-03-28 19:04:55.000000000 +0000 @@ -106,6 +106,11 @@ (define_register_constraint "wz" "rs6000_constraints[RS6000_CONSTRAINT_wz]" "Floating point register if the LFIWZX instruction is enabled or NO_REGS.") +(define_constraint "wD" + "Int constant that is the element number of the 64-bit scalar in a vector." + (and (match_code "const_int") + (match_test "TARGET_VSX && (ival == VECTOR_ELEMENT_SCALAR_64BIT)"))) + ;; Lq/stq validates the address for load/store quad (define_memory_constraint "wQ" "Memory operand suitable for the load/store quad instructions" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/predicates.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/predicates.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/predicates.md 2014-01-24 11:57:54.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/predicates.md 2014-03-28 19:04:55.000000000 +0000 @@ -981,6 +981,14 @@ (ior (match_operand 0 "zero_fp_constant") (match_operand 0 "reg_or_mem_operand"))) +;; Return 1 if the operand is a CONST_INT and it is the element for 64-bit +;; data types inside of a vector that scalar instructions operate on +(define_predicate "vsx_scalar_64bit" + (match_code "const_int") +{ + return (INTVAL (op) == VECTOR_ELEMENT_SCALAR_64BIT); +}) + ;; Return 1 if the operand is a general register or memory operand without ;; pre_inc or pre_dec or pre_modify, which produces invalid form of PowerPC ;; lwa instruction. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000-builtin.def gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000-builtin.def --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000-builtin.def 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000-builtin.def 2014-03-28 19:04:55.000000000 +0000 @@ -1374,6 +1374,7 @@ BU_P8V_AV_2 (VMAXUD, "vmaxud", CONST, umaxv2di3) BU_P8V_AV_2 (VMRGEW, "vmrgew", CONST, p8_vmrgew) BU_P8V_AV_2 (VMRGOW, "vmrgow", CONST, p8_vmrgow) +BU_P8V_AV_2 (VBPERMQ, "vbpermq", CONST, altivec_vbpermq) BU_P8V_AV_2 (VPKUDUM, "vpkudum", CONST, altivec_vpkudum) BU_P8V_AV_2 (VPKSDSS, "vpksdss", CONST, altivec_vpksdss) BU_P8V_AV_2 (VPKUDUS, "vpkudus", CONST, altivec_vpkudus) @@ -1448,6 +1449,7 @@ BU_P8V_OVERLOAD_2 (VADDCUQ, "vaddcuq") BU_P8V_OVERLOAD_2 (VADDUDM, "vaddudm") BU_P8V_OVERLOAD_2 (VADDUQM, "vadduqm") +BU_P8V_OVERLOAD_2 (VBPERMQ, "vbpermq") BU_P8V_OVERLOAD_2 (VMAXSD, "vmaxsd") BU_P8V_OVERLOAD_2 (VMAXUD, "vmaxud") BU_P8V_OVERLOAD_2 (VMINSD, "vminsd") diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000.c 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000.c 2014-03-28 19:04:55.000000000 +0000 @@ -2310,6 +2310,10 @@ (int)END_BUILTINS); fprintf (stderr, DEBUG_FMT_D, "Number of rs6000 builtins", (int)RS6000_BUILTIN_COUNT); + + if (TARGET_VSX) + fprintf (stderr, DEBUG_FMT_D, "VSX easy 64-bit scalar element", + (int)VECTOR_ELEMENT_SCALAR_64BIT); } @@ -32519,6 +32523,11 @@ if (!peep2_reg_dead_p (2, addis_reg)) return false; + + /* If the target register being loaded is the stack pointer, we must + avoid loading any other value into it, even temporarily. */ + if (REG_P (target) && REGNO (target) == STACK_POINTER_REGNUM) + return false; } base_reg = XEXP (addr, 0); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000-c.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000-c.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000-c.c 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000-c.c 2014-03-28 19:04:55.000000000 +0000 @@ -3778,6 +3778,12 @@ RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V1TI, 0 }, + { P8V_BUILTIN_VEC_VBPERMQ, P8V_BUILTIN_VBPERMQ, + RS6000_BTI_V2DI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, + { P8V_BUILTIN_VEC_VBPERMQ, P8V_BUILTIN_VBPERMQ, + RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, + RS6000_BTI_unsigned_V16QI, 0 }, + { P8V_BUILTIN_VEC_VCLZ, P8V_BUILTIN_VCLZB, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0, 0 }, { P8V_BUILTIN_VEC_VCLZ, P8V_BUILTIN_VCLZB, diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/rs6000.h 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/rs6000.h 2014-03-28 19:04:55.000000000 +0000 @@ -477,6 +477,10 @@ #define VECTOR_ELT_ORDER_BIG \ (BYTES_BIG_ENDIAN || (rs6000_altivec_element_order == 2)) +/* Element number of the 64-bit value in a 128-bit vector that can be accessed + with scalar instructions. */ +#define VECTOR_ELEMENT_SCALAR_64BIT ((BYTES_BIG_ENDIAN) ? 0 : 1) + /* Alignment options for fields in structures for sub-targets following AIX-like ABI. ALIGN_POWER word-aligns FP doubles (default AIX ABI). diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/vsx.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/vsx.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/rs6000/vsx.md 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/rs6000/vsx.md 2014-03-28 19:04:55.000000000 +0000 @@ -1531,52 +1531,129 @@ [(set_attr "type" "vecperm")]) ;; Extract a DF/DI element from V2DF/V2DI -(define_insn "vsx_extract_" - [(set (match_operand: 0 "vsx_register_operand" "=ws,d,?wa") - (vec_select: (match_operand:VSX_D 1 "vsx_register_operand" "wd,wd,wa") +(define_expand "vsx_extract_" + [(set (match_operand: 0 "register_operand" "") + (vec_select: (match_operand:VSX_D 1 "register_operand" "") (parallel - [(match_operand:QI 2 "u5bit_cint_operand" "i,i,i")])))] + [(match_operand:QI 2 "u5bit_cint_operand" "")])))] "VECTOR_MEM_VSX_P (mode)" + "") + +;; Optimize cases were we can do a simple or direct move. +;; Or see if we can avoid doing the move at all +(define_insn "*vsx_extract__internal1" + [(set (match_operand: 0 "register_operand" "=d,ws,?wa,r") + (vec_select: + (match_operand:VSX_D 1 "register_operand" "d,wd,wa,wm") + (parallel + [(match_operand:QI 2 "vsx_scalar_64bit" "wD,wD,wD,wD")])))] + "VECTOR_MEM_VSX_P (mode) && TARGET_POWERPC64 && TARGET_DIRECT_MOVE" +{ + int op0_regno = REGNO (operands[0]); + int op1_regno = REGNO (operands[1]); + + if (op0_regno == op1_regno) + return "nop"; + + if (INT_REGNO_P (op0_regno)) + return "mfvsrd %0,%x1"; + + if (FP_REGNO_P (op0_regno) && FP_REGNO_P (op1_regno)) + return "fmr %0,%1"; + + return "xxlor %x0,%x1,%x1"; +} + [(set_attr "type" "fp,vecsimple,vecsimple,mftgpr") + (set_attr "length" "4")]) + +(define_insn "*vsx_extract__internal2" + [(set (match_operand: 0 "vsx_register_operand" "=d,ws,ws,?wa") + (vec_select: + (match_operand:VSX_D 1 "vsx_register_operand" "d,wd,wd,wa") + (parallel [(match_operand:QI 2 "u5bit_cint_operand" "wD,wD,i,i")])))] + "VECTOR_MEM_VSX_P (mode) + && (!TARGET_POWERPC64 || !TARGET_DIRECT_MOVE + || INTVAL (operands[2]) != VECTOR_ELEMENT_SCALAR_64BIT)" { int fldDM; gcc_assert (UINTVAL (operands[2]) <= 1); + + if (INTVAL (operands[2]) == VECTOR_ELEMENT_SCALAR_64BIT) + { + int op0_regno = REGNO (operands[0]); + int op1_regno = REGNO (operands[1]); + + if (op0_regno == op1_regno) + return "nop"; + + if (FP_REGNO_P (op0_regno) && FP_REGNO_P (op1_regno)) + return "fmr %0,%1"; + + return "xxlor %x0,%x1,%x1"; + } + fldDM = INTVAL (operands[2]) << 1; if (!BYTES_BIG_ENDIAN) fldDM = 3 - fldDM; operands[3] = GEN_INT (fldDM); - return \"xxpermdi %x0,%x1,%x1,%3\"; + return "xxpermdi %x0,%x1,%x1,%3"; } - [(set_attr "type" "vecperm")]) + [(set_attr "type" "fp,vecsimple,vecperm,vecperm") + (set_attr "length" "4")]) -;; Optimize extracting element 0 from memory -(define_insn "*vsx_extract__zero" - [(set (match_operand: 0 "vsx_register_operand" "=ws,d,?wa") +;; Optimize extracting a single scalar element from memory if the scalar is in +;; the correct location to use a single load. +(define_insn "*vsx_extract__load" + [(set (match_operand: 0 "register_operand" "=d,wv,wr") (vec_select: - (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z,Z,Z") - (parallel [(const_int 0)])))] - "VECTOR_MEM_VSX_P (mode) && WORDS_BIG_ENDIAN" - "lxsd%U1x %x0,%y1" - [(set (attr "type") - (if_then_else - (match_test "update_indexed_address_mem (operands[1], VOIDmode)") - (const_string "fpload_ux") - (const_string "fpload"))) - (set_attr "length" "4")]) - -;; Optimize extracting element 1 from memory for little endian -(define_insn "*vsx_extract__one_le" - [(set (match_operand: 0 "vsx_register_operand" "=ws,d,?wa") + (match_operand:VSX_D 1 "memory_operand" "m,Z,m") + (parallel [(match_operand:QI 2 "vsx_scalar_64bit" "wD,wD,wD")])))] + "VECTOR_MEM_VSX_P (mode)" + "@ + lfd%U1%X1 %0,%1 + lxsd%U1x %x0,%y1 + ld%U1%X1 %0,%1" + [(set_attr_alternative "type" + [(if_then_else + (match_test "update_indexed_address_mem (operands[1], VOIDmode)") + (const_string "fpload_ux") + (if_then_else + (match_test "update_address_mem (operands[1], VOIDmode)") + (const_string "fpload_u") + (const_string "fpload"))) + (const_string "fpload") + (if_then_else + (match_test "update_indexed_address_mem (operands[1], VOIDmode)") + (const_string "load_ux") + (if_then_else + (match_test "update_address_mem (operands[1], VOIDmode)") + (const_string "load_u") + (const_string "load")))]) + (set_attr "length" "4")]) + +;; Optimize storing a single scalar element that is the right location to +;; memory +(define_insn "*vsx_extract__store" + [(set (match_operand: 0 "memory_operand" "=m,Z,?Z") (vec_select: - (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z,Z,Z") - (parallel [(const_int 1)])))] - "VECTOR_MEM_VSX_P (mode) && !WORDS_BIG_ENDIAN" - "lxsd%U1x %x0,%y1" - [(set (attr "type") - (if_then_else - (match_test "update_indexed_address_mem (operands[1], VOIDmode)") - (const_string "fpload_ux") - (const_string "fpload"))) - (set_attr "length" "4")]) + (match_operand:VSX_D 1 "register_operand" "d,wd,wa") + (parallel [(match_operand:QI 2 "vsx_scalar_64bit" "wD,wD,wD")])))] + "VECTOR_MEM_VSX_P (mode)" + "@ + stfd%U0%X0 %1,%0 + stxsd%U0x %x1,%y0 + stxsd%U0x %x1,%y0" + [(set_attr_alternative "type" + [(if_then_else + (match_test "update_indexed_address_mem (operands[0], VOIDmode)") + (const_string "fpstore_ux") + (if_then_else + (match_test "update_address_mem (operands[0], VOIDmode)") + (const_string "fpstore_u") + (const_string "fpstore"))) + (const_string "fpstore") + (const_string "fpstore")]) + (set_attr "length" "4")]) ;; Extract a SF element from V4SF (define_insn_and_split "vsx_extract_v4sf" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/s390/s390.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/s390/s390.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/s390/s390.c 2014-02-13 13:24:46.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/s390/s390.c 2014-03-27 17:33:35.000000000 +0000 @@ -9225,6 +9225,13 @@ if (cfun_gpr_save_slot (i)) return false; + /* For 31 bit this is not covered by the frame_size check below + since f4, f6 are saved in the register save area without needing + additional stack space. */ + if (!TARGET_64BIT + && (cfun_fpr_save_p (FPR4_REGNUM) || cfun_fpr_save_p (FPR6_REGNUM))) + return false; + if (cfun->machine->base_reg && !call_really_used_regs[REGNO (cfun->machine->base_reg)]) return false; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/s390/s390.md gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/s390/s390.md --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/config/s390/s390.md 2014-02-07 14:55:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/config/s390/s390.md 2014-03-26 08:19:16.000000000 +0000 @@ -5034,6 +5034,57 @@ [(set_attr "op_type" ",RXE") (set_attr "type" "fsimp")]) +; +; Pointer add instruction patterns +; + +; This will match "*la_64" +(define_expand "addptrdi3" + [(set (match_operand:DI 0 "register_operand" "") + (plus:DI (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "nonmemory_operand" "")))] + "TARGET_64BIT" +{ + HOST_WIDE_INT c = INTVAL (operands[2]); + + if (GET_CODE (operands[2]) == CONST_INT) + { + if (!CONST_OK_FOR_CONSTRAINT_P (c, 'K', "K") + && !CONST_OK_FOR_CONSTRAINT_P (c, 'O', "Os")) + { + operands[2] = force_const_mem (DImode, operands[2]); + operands[2] = force_reg (DImode, operands[2]); + } + else if (!DISP_IN_RANGE (INTVAL (operands[2]))) + operands[2] = force_reg (DImode, operands[2]); + } +}) + +; For 31 bit we have to prevent the generated pattern from matching +; normal ADDs since la only does a 31 bit add. This is supposed to +; match "force_la_31". +(define_expand "addptrsi3" + [(parallel + [(set (match_operand:SI 0 "register_operand" "") + (plus:SI (match_operand:SI 1 "register_operand" "") + (match_operand:SI 2 "nonmemory_operand" ""))) + (use (const_int 0))])] + "!TARGET_64BIT" +{ + HOST_WIDE_INT c = INTVAL (operands[2]); + + if (GET_CODE (operands[2]) == CONST_INT) + { + if (!CONST_OK_FOR_CONSTRAINT_P (c, 'K', "K") + && !CONST_OK_FOR_CONSTRAINT_P (c, 'O', "Os")) + { + operands[2] = force_const_mem (SImode, operands[2]); + operands[2] = force_reg (SImode, operands[2]); + } + else if (!DISP_IN_RANGE (INTVAL (operands[2]))) + operands[2] = force_reg (SImode, operands[2]); + } +}) ;; ;;- Subtract instructions. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/ChangeLog 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/ChangeLog 2014-03-30 07:40:41.000000000 +0000 @@ -1,3 +1,63 @@ +2014-03-29 Adam Butcher + + PR c++/60626 + * parser.c (cp_parser_init_declarator): Handle erroneous generic type + usage in non-functions with pushed scope. + +2014-03-28 Adam Butcher + + PR c++/60573 + * name-lookup.h (cp_binding_level): New transient field defining_class_p + to indicate whether a scope is in the process of defining a class. + * semantics.c (begin_class_definition): Set defining_class_p. + * name-lookup.c (leave_scope): Reset defining_class_p. + * parser.c (synthesize_implicit_template_parm): Use cp_binding_level:: + defining_class_p rather than TYPE_BEING_DEFINED as the predicate for + unwinding to class-defining scope to handle the erroneous definition of + a generic function of an arbitrarily nested class within an enclosing + class. + +2014-03-26 Fabien Chêne + + PR c++/52369 + * cp/method.c (walk_field_subobs): improve the diagnostic + locations for both REFERENCE_TYPEs and non-static const members. + * cp/init.c (diagnose_uninitialized_cst_or_ref_member): use %q#D + instead of %qD to be consistent with the c++11 diagnostic. + +2014-03-25 Jason Merrill + + PR c++/60566 + PR c++/58678 + * class.c (build_vtbl_initializer): Handle abstract dtors here. + * search.c (get_pure_virtuals): Not here. + + PR c++/60375 + * parser.c (cp_parser_lambda_expression): Don't parse the body of + a lambda in unevaluated context. + + PR c++/60628 + * decl.c (create_array_type_for_decl): Complain about array of auto. + +2014-03-25 Jakub Jelinek + + PR c++/60331 + * semantics.c (potential_constant_expression_1): Handle + DECL_EXPR. + +2014-03-24 Adam Butcher + + PR c++/60627 + * parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from + introducing an implicit function template parameter within an explicit + instantiation. + +2014-03-22 Jason Merrill + + PR c++/60574 + * decl.c (grokdeclarator): Change permerror about 'virtual auto' + to error. + 2014-03-21 Paolo Carlini PR c++/60384 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/class.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/class.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/class.c 2014-02-28 00:03:08.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/class.c 2014-03-27 17:33:35.000000000 +0000 @@ -9017,6 +9017,16 @@ if (!TARGET_VTABLE_USES_DESCRIPTORS) init = fold_convert (vfunc_ptr_type_node, build_fold_addr_expr (fn)); + /* Don't refer to a virtual destructor from a constructor + vtable or a vtable for an abstract class, since destroying + an object under construction is undefined behavior and we + don't want it to be considered a candidate for speculative + devirtualization. But do create the thunk for ABI + compliance. */ + if (DECL_DESTRUCTOR_P (fn_original) + && (CLASSTYPE_PURE_VIRTUALS (DECL_CONTEXT (fn_original)) + || orig_binfo != binfo)) + init = size_zero_node; } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/decl.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/decl.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/decl.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/decl.c 2014-03-26 08:19:15.000000000 +0000 @@ -8534,6 +8534,14 @@ && (flag_iso || warn_vla > 0)) pedwarn (input_location, OPT_Wvla, "array of array of runtime bound"); + /* 8.3.4p1: ...if the type of the identifier of D contains the auto + type-specifier, the program is ill-formed. */ + if (type_uses_auto (type)) + { + error ("%qD declared as array of %qT", name, type); + return error_mark_node; + } + /* Figure out the index type for the array. */ if (size) itype = compute_array_index_type (name, size, tf_warning_or_error); @@ -9553,8 +9561,8 @@ "-std=gnu++1y"); } else if (virtualp) - permerror (input_location, "virtual function cannot " - "have deduced return type"); + error ("virtual function cannot " + "have deduced return type"); } else if (!is_auto (type)) { diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/init.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/init.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/init.c 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/init.c 2014-03-27 17:33:35.000000000 +0000 @@ -2157,7 +2157,7 @@ "of %q#T", DECL_CONTEXT (field), origin); } inform (DECL_SOURCE_LOCATION (field), - "%qD should be initialized", field); + "%q#D should be initialized", field); } } @@ -2185,7 +2185,7 @@ "of %q#T", DECL_CONTEXT (field), origin); } inform (DECL_SOURCE_LOCATION (field), - "%qD should be initialized", field); + "%q#D should be initialized", field); } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/method.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/method.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/method.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/method.c 2014-03-27 17:33:35.000000000 +0000 @@ -1110,15 +1110,23 @@ && default_init_uninitialized_part (mem_type)) { if (diag) - error ("uninitialized non-static const member %q#D", - field); + { + error ("uninitialized const member in %q#T", + current_class_type); + inform (DECL_SOURCE_LOCATION (field), + "%q#D should be initialized", field); + } bad = true; } else if (TREE_CODE (mem_type) == REFERENCE_TYPE) { if (diag) - error ("uninitialized non-static reference member %q#D", - field); + { + error ("uninitialized reference member in %q#T", + current_class_type); + inform (DECL_SOURCE_LOCATION (field), + "%q#D should be initialized", field); + } bad = true; } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/name-lookup.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/name-lookup.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/name-lookup.c 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/name-lookup.c 2014-03-30 07:40:41.000000000 +0000 @@ -1630,10 +1630,14 @@ free_binding_level = scope; } - /* Find the innermost enclosing class scope, and reset - CLASS_BINDING_LEVEL appropriately. */ if (scope->kind == sk_class) { + /* Reset DEFINING_CLASS_P to allow for reuse of a + class-defining scope in a non-defining context. */ + scope->defining_class_p = 0; + + /* Find the innermost enclosing class scope, and reset + CLASS_BINDING_LEVEL appropriately. */ class_binding_level = NULL; for (scope = current_binding_level; scope; scope = scope->level_chain) if (scope->kind == sk_class) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/name-lookup.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/name-lookup.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/name-lookup.h 2014-01-05 19:58:15.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/name-lookup.h 2014-03-30 07:40:41.000000000 +0000 @@ -255,7 +255,14 @@ unsigned more_cleanups_ok : 1; unsigned have_cleanups : 1; - /* 24 bits left to fill a 32-bit word. */ + /* Transient state set if this scope is of sk_class kind + and is in the process of defining 'this_entity'. Reset + on leaving the class definition to allow for the scope + to be subsequently re-used as a non-defining scope for + 'this_entity'. */ + unsigned defining_class_p : 1; + + /* 23 bits left to fill a 32-bit word. */ }; /* The binding level currently in effect. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/parser.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/parser.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/parser.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/parser.c 2014-03-30 07:40:41.000000000 +0000 @@ -8718,14 +8718,17 @@ { tree lambda_expr = build_lambda_expr (); tree type; - bool ok; + bool ok = true; LAMBDA_EXPR_LOCATION (lambda_expr) = cp_lexer_peek_token (parser->lexer)->location; if (cp_unevaluated_operand) - error_at (LAMBDA_EXPR_LOCATION (lambda_expr), - "lambda-expression in unevaluated context"); + { + error_at (LAMBDA_EXPR_LOCATION (lambda_expr), + "lambda-expression in unevaluated context"); + ok = false; + } /* We may be in the middle of deferred access check. Disable it now. */ @@ -8770,12 +8773,15 @@ /* By virtue of defining a local class, a lambda expression has access to the private variables of enclosing classes. */ - ok = cp_parser_lambda_declarator_opt (parser, lambda_expr); + ok &= cp_parser_lambda_declarator_opt (parser, lambda_expr); if (ok) cp_parser_lambda_body (parser, lambda_expr); else if (cp_parser_require (parser, CPP_OPEN_BRACE, RT_OPEN_BRACE)) - cp_parser_skip_to_end_of_block_or_statement (parser); + { + if (cp_parser_skip_to_closing_brace (parser)) + cp_lexer_consume_token (parser->lexer); + } /* The capture list was built up in reverse order; fix that now. */ LAMBDA_EXPR_CAPTURE_LIST (lambda_expr) @@ -16823,7 +16829,14 @@ been issued. */ if (parser->fully_implicit_function_template_p) if (!function_declarator_p (declarator)) - finish_fully_implicit_template (parser, /*member_decl_opt=*/0); + { + if (pushed_scope) + { + pop_scope (pushed_scope); + pushed_scope = 0; + } + finish_fully_implicit_template (parser, /*member_decl_opt=*/0); + } /* For an in-class declaration, use `grokfield' to create the declaration. */ @@ -18207,7 +18220,9 @@ (void) cleanup; - if (!processing_specialization && !processing_template_parmlist) + if (!processing_specialization + && !processing_template_parmlist + && !processing_explicit_instantiation) if (!current_function_decl || (current_class_type && LAMBDA_TYPE_P (current_class_type))) parser->auto_is_implicit_function_template_parm_p = true; @@ -31991,7 +32006,7 @@ { /* If not defining a class, then any class scope is a scope level in an out-of-line member definition. In this case simply wind back - beyond the first such scope to inject the template argument list. + beyond the first such scope to inject the template parameter list. Otherwise wind back to the class being defined. The latter can occur in class member friend declarations such as: @@ -32002,12 +32017,23 @@ friend void A::foo (auto); }; - The template argument list synthesized for the friend declaration - must be injected in the scope of 'B', just beyond the scope of 'A' - introduced by 'A::'. */ + The template parameter list synthesized for the friend declaration + must be injected in the scope of 'B'. This can also occur in + erroneous cases such as: + + struct A { + struct B { + void foo (auto); + }; + void B::foo (auto) {} + }; + + Here the attempted definition of 'B::foo' within 'A' is ill-formed + but, nevertheless, the template parameter list synthesized for the + declarator should be injected into the scope of 'A' as if the + ill-formed template was specified explicitly. */ - while (scope->kind == sk_class - && !TYPE_BEING_DEFINED (scope->this_entity)) + while (scope->kind == sk_class && !scope->defining_class_p) { parent_scope = scope; scope = scope->level_chain; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/search.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/search.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/search.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/search.c 2014-03-27 17:33:35.000000000 +0000 @@ -2115,22 +2115,6 @@ which it is a primary base will contain vtable entries for the pure virtuals in the base class. */ dfs_walk_once (TYPE_BINFO (type), NULL, dfs_get_pure_virtuals, type); - - /* Treat a virtual destructor in an abstract class as pure even if it - isn't declared as pure; there is no way it would be called through the - vtable except during construction, which causes undefined behavior. */ - if (CLASSTYPE_PURE_VIRTUALS (type) - && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)) - { - tree dtor = CLASSTYPE_DESTRUCTORS (type); - if (dtor && DECL_VIRTUAL_P (dtor) && !DECL_PURE_VIRTUAL_P (dtor)) - { - tree clone; - DECL_PURE_VIRTUAL_P (dtor) = true; - FOR_EACH_CLONE (clone, dtor) - DECL_PURE_VIRTUAL_P (clone) = true; - } - } } /* Debug info for C++ classes can get very large; try to avoid diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/semantics.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/semantics.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cp/semantics.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cp/semantics.c 2014-03-30 07:40:41.000000000 +0000 @@ -2777,6 +2777,7 @@ maybe_process_partial_specialization (t); pushclass (t); TYPE_BEING_DEFINED (t) = 1; + class_binding_level->defining_class_p = 1; if (flag_pack_struct) { @@ -10253,6 +10254,7 @@ case DO_STMT: case FOR_STMT: case WHILE_STMT: + case DECL_EXPR: if (flags & tf_error) error ("expression %qE is not a constant-expression", t); return false; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cselib.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cselib.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/cselib.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/cselib.c 2014-03-26 08:19:16.000000000 +0000 @@ -1137,7 +1137,7 @@ return hash ? hash : (unsigned int) ENTRY_VALUE; case CONST_INT: - hash += ((unsigned) CONST_INT << 7) + INTVAL (x); + hash += ((unsigned) CONST_INT << 7) + UINTVAL (x); return hash ? hash : (unsigned int) CONST_INT; case CONST_DOUBLE: diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/DATESTAMP gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/DATESTAMP --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/DATESTAMP 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/DATESTAMP 2014-03-30 07:40:38.000000000 +0000 @@ -1 +1 @@ -20140321 +20140330 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/contrib.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/contrib.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/contrib.texi 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/contrib.texi 2014-03-26 08:19:12.000000000 +0000 @@ -1050,6 +1050,9 @@ Tom Wood for work on the m88k port. @item +Chung-Ju Wu for his work on the Andes NDS32 port. + +@item Canqun Yang for work on GNU Fortran. @item diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/extend.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/extend.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/extend.texi 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/extend.texi 2014-03-28 19:04:53.000000000 +0000 @@ -1592,6 +1592,18 @@ storage. Jumping into the scope is not allowed; you get an error message for it. +@cindex variable-length array in a structure +As an extension, GCC accepts variable-length arrays as a member of +a structure or a union. For example: + +@smallexample +void +foo (int n) +@{ + struct S @{ int x[n]; @}; +@} +@end smallexample + @cindex @code{alloca} vs variable-length arrays You can use the function @code{alloca} to get an effect much like variable-length arrays. The function @code{alloca} is available in @@ -1967,6 +1979,9 @@ struct point p = @{ y: yvalue, x: xvalue @}; @end smallexample +Omitted field members are implicitly initialized the same as objects +that have static storage duration. + @cindex designators The @samp{[@var{index}]} or @samp{.@var{fieldname}} is known as a @dfn{designator}. You can also use a designator (or the obsolete colon @@ -6343,7 +6358,7 @@ int *y = &x; int result; asm ("magic stuff accessing an 'int' pointed to by '%1'" - : "=&d" (r) : "a" (y), "m" (*y)); + : "=&d" (result) : "a" (y), "m" (*y)); return result; @} @end smallexample @@ -8963,7 +8978,7 @@ Similar to @code{__builtin_nans}, except the return type is @code{long double}. @end deftypefn -@deftypefn {Built-in Function} int __builtin_ffs (unsigned int x) +@deftypefn {Built-in Function} int __builtin_ffs (int x) Returns one plus the index of the least significant 1-bit of @var{x}, or if @var{x} is zero, returns zero. @end deftypefn @@ -8993,9 +9008,9 @@ modulo 2. @end deftypefn -@deftypefn {Built-in Function} int __builtin_ffsl (unsigned long) +@deftypefn {Built-in Function} int __builtin_ffsl (long) Similar to @code{__builtin_ffs}, except the argument type is -@code{unsigned long}. +@code{long}. @end deftypefn @deftypefn {Built-in Function} int __builtin_clzl (unsigned long) @@ -9023,9 +9038,9 @@ @code{unsigned long}. @end deftypefn -@deftypefn {Built-in Function} int __builtin_ffsll (unsigned long long) +@deftypefn {Built-in Function} int __builtin_ffsll (long long) Similar to @code{__builtin_ffs}, except the argument type is -@code{unsigned long long}. +@code{long long}. @end deftypefn @deftypefn {Built-in Function} int __builtin_clzll (unsigned long long) @@ -14844,6 +14859,35 @@ void vec_vsx_st (vector bool char, int, vector bool char *); void vec_vsx_st (vector bool char, int, unsigned char *); void vec_vsx_st (vector bool char, int, signed char *); + +vector double vec_xxpermdi (vector double, vector double, int); +vector float vec_xxpermdi (vector float, vector float, int); +vector long long vec_xxpermdi (vector long long, vector long long, int); +vector unsigned long long vec_xxpermdi (vector unsigned long long, + vector unsigned long long, int); +vector int vec_xxpermdi (vector int, vector int, int); +vector unsigned int vec_xxpermdi (vector unsigned int, + vector unsigned int, int); +vector short vec_xxpermdi (vector short, vector short, int); +vector unsigned short vec_xxpermdi (vector unsigned short, + vector unsigned short, int); +vector signed char vec_xxpermdi (vector signed char, vector signed char, int); +vector unsigned char vec_xxpermdi (vector unsigned char, + vector unsigned char, int); + +vector double vec_xxsldi (vector double, vector double, int); +vector float vec_xxsldi (vector float, vector float, int); +vector long long vec_xxsldi (vector long long, vector long long, int); +vector unsigned long long vec_xxsldi (vector unsigned long long, + vector unsigned long long, int); +vector int vec_xxsldi (vector int, vector int, int); +vector unsigned int vec_xxsldi (vector unsigned int, vector unsigned int, int); +vector short vec_xxsldi (vector short, vector short, int); +vector unsigned short vec_xxsldi (vector unsigned short, + vector unsigned short, int); +vector signed char vec_xxsldi (vector signed char, vector signed char, int); +vector unsigned char vec_xxsldi (vector unsigned char, + vector unsigned char, int); @end smallexample Note that the @samp{vec_ld} and @samp{vec_st} built-in functions always @@ -15031,6 +15075,9 @@ vector unsigned long long vec_vaddudm (vector unsigned long long, vector bool unsigned long long); +vector long long vec_vbpermq (vector signed char, vector signed char); +vector long long vec_vbpermq (vector unsigned char, vector unsigned char); + vector long long vec_vclz (vector long long); vector unsigned long long vec_vclz (vector unsigned long long); vector int vec_vclz (vector int); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/generic.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/generic.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/generic.texi 2014-01-05 19:58:01.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/generic.texi 2014-03-26 08:19:12.000000000 +0000 @@ -13,7 +13,7 @@ The purpose of GENERIC is simply to provide a language-independent way of representing an entire function in trees. To this end, it was necessary to add a few new tree codes -to the back end, but most everything was already there. If you +to the back end, but almost everything was already there. If you can express it with the codes in @code{gcc/tree.def}, it's GENERIC@. @@ -203,7 +203,7 @@ @tindex IDENTIFIER_NODE An @code{IDENTIFIER_NODE} represents a slightly more general concept -that the standard C or C++ concept of identifier. In particular, an +than the standard C or C++ concept of identifier. In particular, an @code{IDENTIFIER_NODE} may contain a @samp{$}, or other extraordinary characters. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/install.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/install.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/install.texi 2014-02-26 07:37:37.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/install.texi 2014-03-26 08:19:12.000000000 +0000 @@ -3144,6 +3144,10 @@ @item @uref{#mips-sgi-irix6,,mips-sgi-irix6} @item +@uref{#nds32le-x-elf,,nds32le-*-elf} +@item +@uref{#nds32be-x-elf,,nds32be-*-elf} +@item @uref{#powerpc-x-x,,powerpc*-*-*} @item @uref{#powerpc-x-darwin,,powerpc-*-darwin*} @@ -4099,6 +4103,20 @@ @html
+@end html +@anchor{nds32le-x-elf} +@heading nds32le-*-elf +Andes NDS32 target in little endian mode. + +@html +
+@end html +@anchor{nds32be-x-elf} +@heading nds32be-*-elf +Andes NDS32 target in big endian mode. + +@html +
@end html @anchor{powerpc-x-x} @heading powerpc-*-* diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/invoke.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/invoke.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/invoke.texi 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/invoke.texi 2014-03-26 08:19:12.000000000 +0000 @@ -8664,8 +8664,13 @@ If object files containing GIMPLE bytecode are stored in a library archive, say @file{libfoo.a}, it is possible to extract and use them in an LTO link if you -are using a linker with plugin support. To enable this feature, use -the flag @option{-fuse-linker-plugin} at link time: +are using a linker with plugin support. To create static libraries suitable +for LTO, use @command{gcc-ar} and @command{gcc-ranlib} instead of @command{ar} +and @code{ranlib}; to show the symbols of object files with GIMPLE bytecode, use +@command{gcc-nm}. Those commands require that @command{ar}, @command{ranlib} +and @command{nm} have been compiled with plugin support. At link time, use the the +flag @option{-fuse-linker-plugin} to ensure that the library participates in +the LTO optimization process: @smallexample gcc -o myprog -O2 -flto -fuse-linker-plugin a.o b.o -lfoo @@ -8678,7 +8683,9 @@ If you are not using a linker with plugin support and/or do not enable the linker plugin, then the objects inside @file{libfoo.a} are extracted and linked as usual, but they do not participate -in the LTO optimization process. +in the LTO optimization process. In order to make a static library suitable +for both LTO optimization and usual linkage, compile its object files with +@option{-flto} @code{-ffat-lto-objects}. Link-time optimizations do not require the presence of the whole program to operate. If the program does not require any symbols to be exported, it is diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/md.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/md.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/doc/md.texi 2014-01-29 10:48:02.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/doc/md.texi 2014-03-28 19:04:53.000000000 +0000 @@ -2162,6 +2162,9 @@ @item wz Floating point register if the LFIWZX instruction is enabled or NO_REGS. +@item wD +Int constant that is the element number of the 64-bit scalar in a vector. + @item wQ A memory address that will work with the @code{lq} and @code{stq} instructions. @@ -4720,6 +4723,17 @@ must have mode @var{m}. This can be used even on two-address machines, by means of constraints requiring operands 1 and 0 to be the same location. +@cindex @code{addptr@var{m}3} instruction pattern +@item @samp{addptr@var{m}3} +Like @code{add@var{m}3} but is guaranteed to only be used for address +calculations. The expanded code is not allowed to clobber the +condition code. It only needs to be defined if @code{add@var{m}3} +sets the condition code. If adds used for address calculations and +normal adds are not compatible it is required to expand a distinct +pattern (e.g. using an unspec). The pattern is used by LRA to emit +address calculations. @code{add@var{m}3} is used if +@code{addptr@var{m}3} is not defined. + @cindex @code{ssadd@var{m}3} instruction pattern @cindex @code{usadd@var{m}3} instruction pattern @cindex @code{sub@var{m}3} instruction pattern diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/dojump.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/dojump.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/dojump.c 2014-01-05 19:58:16.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/dojump.c 2014-03-27 17:33:35.000000000 +0000 @@ -1103,6 +1103,11 @@ else { + int first_prob = prob; + if (first_code == UNORDERED) + first_prob = REG_BR_PROB_BASE / 100; + else if (first_code == ORDERED) + first_prob = REG_BR_PROB_BASE - REG_BR_PROB_BASE / 100; if (and_them) { rtx dest_label; @@ -1116,11 +1121,13 @@ else dest_label = if_false_label; do_compare_rtx_and_jump (op0, op1, first_code, unsignedp, mode, - size, dest_label, NULL_RTX, prob); + size, dest_label, NULL_RTX, + first_prob); } else do_compare_rtx_and_jump (op0, op1, first_code, unsignedp, mode, - size, NULL_RTX, if_true_label, prob); + size, NULL_RTX, if_true_label, + first_prob); } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/explow.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/explow.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/explow.c 2014-01-05 19:58:18.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/explow.c 2014-03-26 08:19:16.000000000 +0000 @@ -110,7 +110,7 @@ return immed_double_int_const (v, mode); } - return gen_int_mode (INTVAL (x) + c, mode); + return gen_int_mode (UINTVAL (x) + c, mode); case CONST_DOUBLE: { diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/expr.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/expr.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/expr.c 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/expr.c 2014-03-30 07:40:41.000000000 +0000 @@ -11134,11 +11134,12 @@ GET_MODE_SIZE, because this indicates how large insns are. The other uses should all be Pmode, because they are addresses. This code could fail if addresses and insns are not the same size. */ - index = gen_rtx_PLUS - (Pmode, - gen_rtx_MULT (Pmode, index, - gen_int_mode (GET_MODE_SIZE (CASE_VECTOR_MODE), Pmode)), - gen_rtx_LABEL_REF (Pmode, table_label)); + index = simplify_gen_binary (MULT, Pmode, index, + gen_int_mode (GET_MODE_SIZE (CASE_VECTOR_MODE), + Pmode)); + index = simplify_gen_binary (PLUS, Pmode, index, + gen_rtx_LABEL_REF (Pmode, table_label)); + #ifdef PIC_CASE_VECTOR_ADDRESS if (flag_pic) index = PIC_CASE_VECTOR_ADDRESS (index); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/expr.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/expr.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/expr.h 2014-02-07 14:55:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/expr.h 2014-03-26 08:19:16.000000000 +0000 @@ -180,10 +180,12 @@ Likewise for subtraction and for just copying. */ extern rtx gen_add2_insn (rtx, rtx); extern rtx gen_add3_insn (rtx, rtx, rtx); +extern rtx gen_addptr3_insn (rtx, rtx, rtx); extern rtx gen_sub2_insn (rtx, rtx); extern rtx gen_sub3_insn (rtx, rtx, rtx); extern rtx gen_move_insn (rtx, rtx); extern int have_add2_insn (rtx, rtx); +extern int have_addptr3_insn (rtx, rtx, rtx); extern int have_sub2_insn (rtx, rtx); /* Emit a pair of rtl insns to compare two rtx's and to jump diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/ChangeLog 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/ChangeLog 2014-03-30 07:40:41.000000000 +0000 @@ -1,3 +1,44 @@ +2014-03-28 Mikael Morin + Tobias Burnus + + PR fortran/60576 + * trans-expr.c (gfc_conv_derived_to_class): Avoid + generation of out-of-bounds range expr. + +2014-03-28 Mikael Morin + + PR fortran/60677 + * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Enlarge argument + list buffer. + +2014-03-27 Thomas Koenig + + PR fortran/60522 + * frontend-passes.c (cfe_code): Do not walk subtrees + for WHERE. + +2014-03-27 Tobias Burnus + + PR fortran/58880 + * trans-expr.c (gfc_conv_scalar_to_descriptor): Fix handling + of nonpointers. + +2014-03-26 Dominique d'Humieres + + PR fortran/34928 + * fortran.texi: Document Volatile COMMON as not supported. + +2014-03-22 Jakub Jelinek + + PR debug/60603 + * cpp.c (gfc_cpp_init): Restore cb_change_file call to + . + +2014-03-21 Jerry DeLisle + + PR fortran/60148 + * gfortran.texi: Add description of namelist DELIM= behavior. + 2014-03-19 Tobias Burnus PR fortran/60543 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/cpp.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/cpp.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/cpp.c 2014-01-10 08:27:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/cpp.c 2014-03-22 12:09:06.000000000 +0000 @@ -576,6 +576,7 @@ if (gfc_option.flag_preprocessed) return; + cpp_change_file (cpp_in, LC_RENAME, _("")); if (!gfc_cpp_option.no_predefined) { /* Make sure all of the builtins about to be declared have diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/frontend-passes.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/frontend-passes.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/frontend-passes.c 2014-03-03 01:43:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/frontend-passes.c 2014-03-28 19:04:55.000000000 +0000 @@ -627,12 +627,35 @@ to insert statements as needed. */ static int -cfe_code (gfc_code **c, int *walk_subtrees ATTRIBUTE_UNUSED, - void *data ATTRIBUTE_UNUSED) +cfe_code (gfc_code **c, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) { current_code = c; inserted_block = NULL; changed_statement = NULL; + + /* Do not do anything inside a WHERE statement; scalar assignments, BLOCKs + and allocation on assigment are prohibited inside WHERE, and finally + masking an expression would lead to wrong-code when replacing + + WHERE (a>0) + b = sum(foo(a) + foo(a)) + END WHERE + + with + + WHERE (a > 0) + tmp = foo(a) + b = sum(tmp + tmp) + END WHERE +*/ + + if ((*c)->op == EXEC_WHERE) + { + *walk_subtrees = 0; + return 0; + } + + return 0; } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/gfortran.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/gfortran.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/gfortran.texi 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/gfortran.texi 2014-03-27 17:33:35.000000000 +0000 @@ -1494,6 +1494,12 @@ / @end smallexample +When writing a namelist, if no @code{DELIM=} is specified, by default a +double quote is used to delimit character strings. If -std=F95, F2003, +or F2008, etc, the delim status is set to 'none'. Defaulting to +quotes ensures that namelists with character strings can be subsequently +read back in accurately. + @node X format descriptor without count field @subsection @code{X} format descriptor without count field @@ -1997,6 +2003,7 @@ @c * CARRIAGECONTROL, DEFAULTFILE, DISPOSE and RECORDTYPE I/O specifiers:: @c * Omitted arguments in procedure call:: * Alternate complex function syntax:: +* Volatile COMMON blocks:: @end menu @@ -2191,6 +2198,18 @@ common, but not the former. +@node Volatile COMMON blocks +@subsection Volatile @code{COMMON} blocks +@cindex @code{VOLATILE} +@cindex @code{COMMON} + +Some Fortran compilers, including @command{g77}, let the user declare +@code{COMMON} with the @code{VOLATILE} attribute. This is +invalid standard Fortran syntax and is not supported by +@command{gfortran}. Note that @command{gfortran} accepts +@code{VOLATILE} variables in @code{COMMON} blocks since revision 4.3. + + @c --------------------------------------------------------------------- @c Mixed-Language Programming diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/trans-expr.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/trans-expr.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/trans-expr.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/trans-expr.c 2014-03-30 07:40:41.000000000 +0000 @@ -69,14 +69,16 @@ type = get_scalar_to_descriptor_type (scalar, attr); desc = gfc_create_var (type, "desc"); DECL_ARTIFICIAL (desc) = 1; + + if (!POINTER_TYPE_P (TREE_TYPE (scalar))) + scalar = gfc_build_addr_expr (NULL_TREE, scalar); gfc_add_modify (&se->pre, gfc_conv_descriptor_dtype (desc), gfc_get_dtype (type)); gfc_conv_descriptor_data_set (&se->pre, desc, scalar); /* Copy pointer address back - but only if it could have changed and if the actual argument is a pointer and not, e.g., NULL(). */ - if ((attr.pointer || attr.allocatable) - && attr.intent != INTENT_IN && POINTER_TYPE_P (TREE_TYPE (scalar))) + if ((attr.pointer || attr.allocatable) && attr.intent != INTENT_IN) gfc_add_modify (&se->post, scalar, fold_convert (TREE_TYPE (scalar), gfc_conv_descriptor_data_get (desc))); @@ -424,7 +426,11 @@ gfc_conv_expr_descriptor (parmse, e); if (e->rank != class_ts.u.derived->components->as->rank) - class_array_data_assign (&block, ctree, parmse->expr, true); + { + gcc_assert (class_ts.u.derived->components->as->type + == AS_ASSUMED_RANK); + class_array_data_assign (&block, ctree, parmse->expr, false); + } else { if (gfc_expr_attr (e).codimension) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/trans-intrinsic.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/trans-intrinsic.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/fortran/trans-intrinsic.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/fortran/trans-intrinsic.c 2014-03-28 19:04:55.000000000 +0000 @@ -4687,7 +4687,7 @@ static void gfc_conv_intrinsic_ichar (gfc_se * se, gfc_expr * expr) { - tree args[2], type, pchartype; + tree args[3], type, pchartype; int nargs; nargs = gfc_intrinsic_argument_list_length (expr); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/gcc.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/gcc.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/gcc.c 2014-03-06 14:11:07.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/gcc.c 2014-03-27 17:33:34.000000000 +0000 @@ -766,6 +766,7 @@ %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " VTABLE_VERIFICATION_SPEC " \ %{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\ %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\ + %{fcilkplus:%:include(libcilkrts.spec)%(link_cilkrts)}\ %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \ @@ -932,9 +933,15 @@ #define GTM_SELF_SPECS "%{fgnu-tm: -pthread}" #endif +/* Likewise for -fcilkplus. */ +#ifndef CILK_SELF_SPECS +#define CILK_SELF_SPECS "%{fcilkplus: -pthread}" +#endif + static const char *const driver_self_specs[] = { "%{fdump-final-insns:-fdump-final-insns=.} %> i) - | (*reserv_ptr << ((sizeof (set_el_t) * CHAR_BIT) & -i))); + | (*reserv_ptr << (((sizeof (set_el_t) * CHAR_BIT) - 1) & -i))); i++; if (i == sizeof (set_el_t) * CHAR_BIT) i = 0; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/gimple-fold.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/gimple-fold.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/gimple-fold.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/gimple-fold.c 2014-03-27 17:33:35.000000000 +0000 @@ -1186,13 +1186,56 @@ else if (gimple_call_builtin_p (stmt, BUILT_IN_MD)) changed |= targetm.gimple_fold_builtin (gsi); } - else if (gimple_call_internal_p (stmt) - && gimple_call_internal_fn (stmt) == IFN_BUILTIN_EXPECT) + else if (gimple_call_internal_p (stmt)) { - tree result = fold_builtin_expect (gimple_location (stmt), - gimple_call_arg (stmt, 0), - gimple_call_arg (stmt, 1), - gimple_call_arg (stmt, 2)); + enum tree_code subcode = ERROR_MARK; + tree result = NULL_TREE; + switch (gimple_call_internal_fn (stmt)) + { + case IFN_BUILTIN_EXPECT: + result = fold_builtin_expect (gimple_location (stmt), + gimple_call_arg (stmt, 0), + gimple_call_arg (stmt, 1), + gimple_call_arg (stmt, 2)); + break; + case IFN_UBSAN_CHECK_ADD: + subcode = PLUS_EXPR; + break; + case IFN_UBSAN_CHECK_SUB: + subcode = MINUS_EXPR; + break; + case IFN_UBSAN_CHECK_MUL: + subcode = MULT_EXPR; + break; + default: + break; + } + if (subcode != ERROR_MARK) + { + tree arg0 = gimple_call_arg (stmt, 0); + tree arg1 = gimple_call_arg (stmt, 1); + /* x = y + 0; x = y - 0; x = y * 0; */ + if (integer_zerop (arg1)) + result = subcode == MULT_EXPR + ? build_zero_cst (TREE_TYPE (arg0)) + : arg0; + /* x = 0 + y; x = 0 * y; */ + else if (subcode != MINUS_EXPR && integer_zerop (arg0)) + result = subcode == MULT_EXPR + ? build_zero_cst (TREE_TYPE (arg0)) + : arg1; + /* x = y - y; */ + else if (subcode == MINUS_EXPR && operand_equal_p (arg0, arg1, 0)) + result = build_zero_cst (TREE_TYPE (arg0)); + /* x = y * 1; x = 1 * y; */ + else if (subcode == MULT_EXPR) + { + if (integer_onep (arg1)) + result = arg0; + else if (integer_onep (arg0)) + result = arg1; + } + } if (result) { if (!update_call_from_tree (gsi, result)) @@ -2688,15 +2731,32 @@ default: return NULL_TREE; } - tree op0 = (*valueize) (gimple_call_arg (stmt, 0)); - tree op1 = (*valueize) (gimple_call_arg (stmt, 1)); + tree arg0 = gimple_call_arg (stmt, 0); + tree arg1 = gimple_call_arg (stmt, 1); + tree op0 = (*valueize) (arg0); + tree op1 = (*valueize) (arg1); if (TREE_CODE (op0) != INTEGER_CST || TREE_CODE (op1) != INTEGER_CST) - return NULL_TREE; - tree res = fold_binary_loc (loc, subcode, - TREE_TYPE (gimple_call_arg (stmt, 0)), - op0, op1); + { + switch (subcode) + { + case MULT_EXPR: + /* x * 0 = 0 * x = 0 without overflow. */ + if (integer_zerop (op0) || integer_zerop (op1)) + return build_zero_cst (TREE_TYPE (arg0)); + break; + case MINUS_EXPR: + /* y - y = 0 without overflow. */ + if (operand_equal_p (op0, op1, 0)) + return build_zero_cst (TREE_TYPE (arg0)); + break; + default: + break; + } + } + tree res + = fold_binary_loc (loc, subcode, TREE_TYPE (arg0), op0, op1); if (res && TREE_CODE (res) == INTEGER_CST && !TREE_OVERFLOW (res)) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/gimplify-me.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/gimplify-me.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/gimplify-me.c 2014-01-05 19:58:11.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/gimplify-me.c 2014-03-26 08:19:14.000000000 +0000 @@ -315,6 +315,8 @@ gsi_insert_after (gsi_p, post_stmt, GSI_NEW_STMT); pop_gimplify_context (NULL); + + update_stmt (stmt); } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/go/gofrontend/expressions.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/go/gofrontend/expressions.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/go/gofrontend/expressions.cc 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/go/gofrontend/expressions.cc 2014-03-28 19:04:55.000000000 +0000 @@ -4262,8 +4262,12 @@ go_assert(!this->expr_->is_composite_literal() || this->expr_->is_immutable()); - Unary_expression* ue = static_cast(this->expr_); - go_assert(ue == NULL || ue->op() != OPERATOR_AND); + if (this->expr_->classification() == EXPRESSION_UNARY) + { + Unary_expression* ue = + static_cast(this->expr_); + go_assert(ue->op() != OPERATOR_AND); + } } // Build a decl for a constant constructor. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/internal-fn.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/internal-fn.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/internal-fn.c 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/internal-fn.c 2014-03-26 08:19:14.000000000 +0000 @@ -221,14 +221,15 @@ res = expand_binop (mode, code == PLUS_EXPR ? add_optab : sub_optab, op0, op1, NULL_RTX, false, OPTAB_LIB_WIDEN); - /* If we can prove one of the arguments is always non-negative - or always negative, we can do just one comparison and - conditional jump instead of 2 at runtime, 3 present in the + /* If we can prove one of the arguments (for MINUS_EXPR only + the second operand, as subtraction is not commutative) is always + non-negative or always negative, we can do just one comparison + and conditional jump instead of 2 at runtime, 3 present in the emitted code. If one of the arguments is CONST_INT, all we need is to make sure it is op1, then the first emit_cmp_and_jump_insns will be just folded. Otherwise try to use range info if available. */ - if (CONST_INT_P (op0)) + if (code == PLUS_EXPR && CONST_INT_P (op0)) { rtx tem = op0; op0 = op1; @@ -236,7 +237,7 @@ } else if (CONST_INT_P (op1)) ; - else if (TREE_CODE (arg0) == SSA_NAME) + else if (code == PLUS_EXPR && TREE_CODE (arg0) == SSA_NAME) { double_int arg0_min, arg0_max; if (get_range_info (arg0, &arg0_min, &arg0_max) == VR_RANGE) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-cp.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-cp.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-cp.c 2014-02-26 07:37:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-cp.c 2014-03-26 08:19:14.000000000 +0000 @@ -1639,11 +1639,18 @@ return NULL_TREE; target = gimple_get_virt_method_for_binfo (token, binfo); } -#ifdef ENABLE_CHECKING - if (target) - gcc_assert (possible_polymorphic_call_target_p - (ie, cgraph_get_node (target))); -#endif + + if (target && !possible_polymorphic_call_target_p (ie, + cgraph_get_node (target))) + { + if (dump_file) + fprintf (dump_file, + "Type inconsident devirtualization: %s/%i->%s\n", + ie->caller->name (), ie->caller->order, + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (target))); + target = builtin_decl_implicit (BUILT_IN_UNREACHABLE); + cgraph_get_create_node (target); + } return target; } @@ -2804,9 +2811,7 @@ if (aggvals) ipa_dump_agg_replacement_values (dump_file, aggvals); } - gcc_checking_assert (ipa_node_params_vector.exists () - && (ipa_node_params_vector.length () - > (unsigned) cgraph_max_uid)); + ipa_check_create_node_params (); update_profiling_info (node, new_node); new_info = IPA_NODE_REF (new_node); new_info->ipcp_orig_node = node; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-devirt.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-devirt.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-devirt.c 2014-03-03 01:43:59.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-devirt.c 2014-03-27 17:33:35.000000000 +0000 @@ -1261,7 +1261,7 @@ } /* If the function is constructor or destructor, then - the type is possibly in consturction, but we know + the type is possibly in construction, but we know it is not derived type. */ if (DECL_CXX_CONSTRUCTOR_P (fndecl) || DECL_CXX_DESTRUCTOR_P (fndecl)) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-inline-analysis.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-inline-analysis.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-inline-analysis.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-inline-analysis.c 2014-03-30 07:40:41.000000000 +0000 @@ -746,6 +746,20 @@ edge_set_predicate (struct cgraph_edge *e, struct predicate *predicate) { struct inline_edge_summary *es = inline_edge_summary (e); + + /* If the edge is determined to be never executed, redirect it + to BUILTIN_UNREACHABLE to save inliner from inlining into it. */ + if (predicate && false_predicate_p (predicate) && e->callee) + { + struct cgraph_node *callee = !e->inline_failed ? e->callee : NULL; + + cgraph_redirect_edge_callee (e, + cgraph_get_create_node + (builtin_decl_implicit (BUILT_IN_UNREACHABLE))); + e->inline_failed = CIF_UNREACHABLE; + if (callee) + cgraph_remove_node_and_inline_clones (callee, NULL); + } if (predicate && !true_predicate_p (predicate)) { if (!es->predicate) @@ -1383,6 +1397,7 @@ fprintf (f, " global time: %i\n", s->time); fprintf (f, " self size: %i\n", s->self_size); fprintf (f, " global size: %i\n", s->size); + fprintf (f, " min size: %i\n", s->min_size); fprintf (f, " self stack: %i\n", (int) s->estimated_self_stack_size); fprintf (f, " global stack: %i\n", (int) s->estimated_stack_size); @@ -1724,12 +1739,19 @@ FOR_EACH_EDGE (e, ei, bb->succs) { - struct predicate p = add_condition (summary, index, &aggpos, - e->flags & EDGE_TRUE_VALUE - ? code : inverted_code, - gimple_cond_rhs (last)); - e->aux = pool_alloc (edge_predicate_pool); - *(struct predicate *) e->aux = p; + enum tree_code this_code = (e->flags & EDGE_TRUE_VALUE + ? code : inverted_code); + /* invert_tree_comparison will return ERROR_MARK on FP + comparsions that are not EQ/NE instead of returning proper + unordered one. Be sure it is not confused with NON_CONSTANT. */ + if (this_code != ERROR_MARK) + { + struct predicate p = add_condition (summary, index, &aggpos, + this_code, + gimple_cond_rhs (last)); + e->aux = pool_alloc (edge_predicate_pool); + *(struct predicate *) e->aux = p; + } } } @@ -2969,10 +2991,15 @@ return isummary->inlinable; } -/* Increase SIZE and TIME for size and time needed to handle edge E. */ +/* Increase SIZE, MIN_SIZE (if non-NULL) and TIME for size and time needed to + handle edge E with probability PROB. + Set HINTS if edge may be devirtualized. + KNOWN_VALS, KNOWN_AGGS and KNOWN_BINFOS describe context of the call + site. */ static inline void -estimate_edge_size_and_time (struct cgraph_edge *e, int *size, int *time, +estimate_edge_size_and_time (struct cgraph_edge *e, int *size, int *min_size, + int *time, int prob, vec known_vals, vec known_binfos, @@ -2982,12 +3009,16 @@ struct inline_edge_summary *es = inline_edge_summary (e); int call_size = es->call_stmt_size; int call_time = es->call_stmt_time; + int cur_size; if (!e->callee && estimate_edge_devirt_benefit (e, &call_size, &call_time, known_vals, known_binfos, known_aggs) && hints && cgraph_maybe_hot_edge_p (e)) *hints |= INLINE_HINT_indirect_call; - *size += call_size * INLINE_SIZE_SCALE; + cur_size = call_size * INLINE_SIZE_SCALE; + *size += cur_size; + if (min_size) + *min_size += cur_size; *time += apply_probability ((gcov_type) call_time, prob) * e->frequency * (INLINE_TIME_SCALE / CGRAPH_FREQ_BASE); if (*time > MAX_TIME * INLINE_TIME_SCALE) @@ -2996,12 +3027,14 @@ -/* Increase SIZE and TIME for size and time needed to handle all calls in NODE. - POSSIBLE_TRUTHS, KNOWN_VALS and KNOWN_BINFOS describe context of the call - site. */ +/* Increase SIZE, MIN_SIZE and TIME for size and time needed to handle all + calls in NODE. + POSSIBLE_TRUTHS, KNOWN_VALS, KNOWN_AGGS and KNOWN_BINFOS describe context of + the call site. */ static void -estimate_calls_size_and_time (struct cgraph_node *node, int *size, int *time, +estimate_calls_size_and_time (struct cgraph_node *node, int *size, + int *min_size, int *time, inline_hints *hints, clause_t possible_truths, vec known_vals, @@ -3019,12 +3052,15 @@ { /* Predicates of calls shall not use NOT_CHANGED codes, sowe do not need to compute probabilities. */ - estimate_edge_size_and_time (e, size, time, REG_BR_PROB_BASE, + estimate_edge_size_and_time (e, size, + es->predicate ? NULL : min_size, + time, REG_BR_PROB_BASE, known_vals, known_binfos, known_aggs, hints); } else - estimate_calls_size_and_time (e->callee, size, time, hints, + estimate_calls_size_and_time (e->callee, size, min_size, time, + hints, possible_truths, known_vals, known_binfos, known_aggs); @@ -3035,7 +3071,9 @@ struct inline_edge_summary *es = inline_edge_summary (e); if (!es->predicate || evaluate_predicate (es->predicate, possible_truths)) - estimate_edge_size_and_time (e, size, time, REG_BR_PROB_BASE, + estimate_edge_size_and_time (e, size, + es->predicate ? NULL : min_size, + time, REG_BR_PROB_BASE, known_vals, known_binfos, known_aggs, hints); } @@ -3043,8 +3081,13 @@ /* Estimate size and time needed to execute NODE assuming - POSSIBLE_TRUTHS clause, and KNOWN_VALS and KNOWN_BINFOS information - about NODE's arguments. */ + POSSIBLE_TRUTHS clause, and KNOWN_VALS, KNOWN_AGGS and KNOWN_BINFOS + information about NODE's arguments. If non-NULL use also probability + information present in INLINE_PARAM_SUMMARY vector. + Additionally detemine hints determined by the context. Finally compute + minimal size needed for the call that is independent on the call context and + can be used for fast estimates. Return the values in RET_SIZE, + RET_MIN_SIZE, RET_TIME and RET_HINTS. */ static void estimate_node_size_and_time (struct cgraph_node *node, @@ -3052,7 +3095,7 @@ vec known_vals, vec known_binfos, vec known_aggs, - int *ret_size, int *ret_time, + int *ret_size, int *ret_min_size, int *ret_time, inline_hints *ret_hints, vec inline_param_summary) @@ -3061,6 +3104,7 @@ size_time_entry *e; int size = 0; int time = 0; + int min_size = 0; inline_hints hints = 0; int i; @@ -3106,6 +3150,8 @@ gcc_checking_assert (time >= 0); } + gcc_checking_assert (true_predicate_p (&(*info->entry)[0].predicate)); + min_size = (*info->entry)[0].size; gcc_checking_assert (size >= 0); gcc_checking_assert (time >= 0); @@ -3123,12 +3169,13 @@ if (DECL_DECLARED_INLINE_P (node->decl)) hints |= INLINE_HINT_declared_inline; - estimate_calls_size_and_time (node, &size, &time, &hints, possible_truths, + estimate_calls_size_and_time (node, &size, &min_size, &time, &hints, possible_truths, known_vals, known_binfos, known_aggs); gcc_checking_assert (size >= 0); gcc_checking_assert (time >= 0); time = RDIV (time, INLINE_TIME_SCALE); size = RDIV (size, INLINE_SIZE_SCALE); + min_size = RDIV (min_size, INLINE_SIZE_SCALE); if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "\n size:%i time:%i\n", (int) size, (int) time); @@ -3136,6 +3183,8 @@ *ret_time = time; if (ret_size) *ret_size = size; + if (ret_min_size) + *ret_min_size = min_size; if (ret_hints) *ret_hints = hints; return; @@ -3160,7 +3209,7 @@ clause = evaluate_conditions_for_known_args (node, false, known_vals, known_aggs); estimate_node_size_and_time (node, clause, known_vals, known_binfos, - known_aggs, ret_size, ret_time, hints, vNULL); + known_aggs, ret_size, NULL, ret_time, hints, vNULL); } /* Translate all conditions from callee representation into caller @@ -3561,7 +3610,8 @@ if (info->time > MAX_TIME * INLINE_TIME_SCALE) info->time = MAX_TIME * INLINE_TIME_SCALE; } - estimate_calls_size_and_time (node, &info->size, &info->time, NULL, + estimate_calls_size_and_time (node, &info->size, &info->min_size, + &info->time, NULL, ~(clause_t) (1 << predicate_false_condition), vNULL, vNULL, vNULL); info->time = (info->time + INLINE_TIME_SCALE / 2) / INLINE_TIME_SCALE; @@ -3606,6 +3656,7 @@ vec known_binfos; vec known_aggs; struct inline_edge_summary *es = inline_edge_summary (edge); + int min_size; callee = cgraph_function_or_thunk_node (edge->callee, NULL); @@ -3614,7 +3665,7 @@ &clause, &known_vals, &known_binfos, &known_aggs); estimate_node_size_and_time (callee, clause, known_vals, known_binfos, - known_aggs, &size, &time, &hints, es->param); + known_aggs, &size, &min_size, &time, &hints, es->param); known_vals.release (); known_binfos.release (); known_aggs.release (); @@ -3624,6 +3675,7 @@ /* When caching, update the cache entry. */ if (edge_growth_cache.exists ()) { + inline_summary (edge->callee)->min_size = min_size; if ((int) edge_growth_cache.length () <= edge->uid) edge_growth_cache.safe_grow_cleared (cgraph_edge_max_uid); edge_growth_cache[edge->uid].time = time + (time >= 0); @@ -3667,7 +3719,7 @@ &clause, &known_vals, &known_binfos, &known_aggs); estimate_node_size_and_time (callee, clause, known_vals, known_binfos, - known_aggs, &size, NULL, NULL, vNULL); + known_aggs, &size, NULL, NULL, NULL, vNULL); known_vals.release (); known_binfos.release (); known_aggs.release (); @@ -3706,7 +3758,7 @@ &clause, &known_vals, &known_binfos, &known_aggs); estimate_node_size_and_time (callee, clause, known_vals, known_binfos, - known_aggs, NULL, NULL, &hints, vNULL); + known_aggs, NULL, NULL, NULL, &hints, vNULL); known_vals.release (); known_binfos.release (); known_aggs.release (); @@ -3826,6 +3878,55 @@ } +/* Make cheap estimation if growth of NODE is likely positive knowing + EDGE_GROWTH of one particular edge. + We assume that most of other edges will have similar growth + and skip computation if there are too many callers. */ + +bool +growth_likely_positive (struct cgraph_node *node, int edge_growth ATTRIBUTE_UNUSED) +{ + int max_callers; + int ret; + struct cgraph_edge *e; + gcc_checking_assert (edge_growth > 0); + + /* Unlike for functions called once, we play unsafe with + COMDATs. We can allow that since we know functions + in consideration are small (and thus risk is small) and + moreover grow estimates already accounts that COMDAT + functions may or may not disappear when eliminated from + current unit. With good probability making aggressive + choice in all units is going to make overall program + smaller. + + Consequently we ask cgraph_can_remove_if_no_direct_calls_p + instead of + cgraph_will_be_removed_from_program_if_no_direct_calls */ + if (DECL_EXTERNAL (node->decl) + || !cgraph_can_remove_if_no_direct_calls_p (node)) + return true; + + /* If there is cached value, just go ahead. */ + if ((int)node_growth_cache.length () > node->uid + && (ret = node_growth_cache[node->uid])) + return ret > 0; + if (!cgraph_will_be_removed_from_program_if_no_direct_calls (node) + && (!DECL_COMDAT (node->decl) + || !cgraph_can_remove_if_no_direct_calls_p (node))) + return true; + max_callers = inline_summary (node)->size * 4 / edge_growth + 2; + + for (e = node->callers; e; e = e->next_caller) + { + max_callers--; + if (!max_callers) + return true; + } + return estimate_growth (node) > 0; +} + + /* This function performs intraprocedural analysis in NODE that is required to inline indirect calls. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-inline.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-inline.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-inline.c 2014-02-21 09:32:57.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-inline.c 2014-03-30 07:40:41.000000000 +0000 @@ -573,6 +573,24 @@ e->inline_failed = CIF_FUNCTION_NOT_INLINE_CANDIDATE; want_inline = false; } + /* Do fast and conservative check if the function can be good + inline cnadidate. At themoment we allow inline hints to + promote non-inline function to inline and we increase + MAX_INLINE_INSNS_SINGLE 16fold for inline functions. */ + else if (!DECL_DECLARED_INLINE_P (callee->decl) + && inline_summary (callee)->min_size - inline_edge_summary (e)->call_stmt_size + > MAX (MAX_INLINE_INSNS_SINGLE, MAX_INLINE_INSNS_AUTO)) + { + e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; + want_inline = false; + } + else if (DECL_DECLARED_INLINE_P (callee->decl) + && inline_summary (callee)->min_size - inline_edge_summary (e)->call_stmt_size + > 16 * MAX_INLINE_INSNS_SINGLE) + { + e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; + want_inline = false; + } else { int growth = estimate_edge_growth (e); @@ -585,56 +603,26 @@ hints suggests that inlining given function is very profitable. */ else if (DECL_DECLARED_INLINE_P (callee->decl) && growth >= MAX_INLINE_INSNS_SINGLE - && !big_speedup - && !(hints & (INLINE_HINT_indirect_call - | INLINE_HINT_loop_iterations - | INLINE_HINT_array_index - | INLINE_HINT_loop_stride))) + && ((!big_speedup + && !(hints & (INLINE_HINT_indirect_call + | INLINE_HINT_loop_iterations + | INLINE_HINT_array_index + | INLINE_HINT_loop_stride))) + || growth >= MAX_INLINE_INSNS_SINGLE * 16)) { e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT; want_inline = false; } - /* Before giving up based on fact that caller size will grow, allow - functions that are called few times and eliminating the offline - copy will lead to overall code size reduction. - Not all of these will be handled by subsequent inlining of functions - called once: in particular weak functions are not handled or funcitons - that inline to multiple calls but a lot of bodies is optimized out. - Finally we want to inline earlier to allow inlining of callbacks. - - This is slightly wrong on aggressive side: it is entirely possible - that function is called many times with a context where inlining - reduces code size and few times with a context where inlining increase - code size. Resoluting growth estimate will be negative even if it - would make more sense to keep offline copy and do not inline into the - call sites that makes the code size grow. - - When badness orders the calls in a way that code reducing calls come - first, this situation is not a problem at all: after inlining all - "good" calls, we will realize that keeping the function around is - better. */ - else if (growth <= MAX_INLINE_INSNS_SINGLE - /* Unlike for functions called once, we play unsafe with - COMDATs. We can allow that since we know functions - in consideration are small (and thus risk is small) and - moreover grow estimates already accounts that COMDAT - functions may or may not disappear when eliminated from - current unit. With good probability making aggressive - choice in all units is going to make overall program - smaller. - - Consequently we ask cgraph_can_remove_if_no_direct_calls_p - instead of - cgraph_will_be_removed_from_program_if_no_direct_calls */ - && !DECL_EXTERNAL (callee->decl) - && cgraph_can_remove_if_no_direct_calls_p (callee) - && estimate_growth (callee) <= 0) - ; else if (!DECL_DECLARED_INLINE_P (callee->decl) && !flag_inline_functions) { - e->inline_failed = CIF_NOT_DECLARED_INLINED; - want_inline = false; + /* growth_likely_positive is expensive, always test it last. */ + if (growth >= MAX_INLINE_INSNS_SINGLE + || growth_likely_positive (callee, growth)) + { + e->inline_failed = CIF_NOT_DECLARED_INLINED; + want_inline = false; + } } /* Apply MAX_INLINE_INSNS_AUTO limit for functions not declared inline Upgrade it to MAX_INLINE_INSNS_SINGLE when hints suggests that @@ -649,11 +637,18 @@ MAX_INLINE_INSNS_SINGLE) : MAX_INLINE_INSNS_AUTO)) { - e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; - want_inline = false; + /* growth_likely_positive is expensive, always test it last. */ + if (growth >= MAX_INLINE_INSNS_SINGLE + || growth_likely_positive (callee, growth)) + { + e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; + want_inline = false; + } } /* If call is cold, do not inline when function body would grow. */ - else if (!cgraph_maybe_hot_edge_p (e)) + else if (!cgraph_maybe_hot_edge_p (e) + && (growth >= MAX_INLINE_INSNS_SINGLE + || growth_likely_positive (callee, growth))) { e->inline_failed = CIF_UNLIKELY_CALL; want_inline = false; @@ -1685,7 +1680,7 @@ edge = (struct cgraph_edge *) fibheap_extract_min (edge_heap); gcc_assert (edge->aux); edge->aux = NULL; - if (!edge->inline_failed) + if (!edge->inline_failed || !edge->callee->analyzed) continue; /* Be sure that caches are maintained consistent. @@ -1723,14 +1718,12 @@ inline_summary (callee)->size); fprintf (dump_file, " to be inlined into %s/%i in %s:%i\n" - " Estimated growth after inlined into all is %+i insns.\n" " Estimated badness is %i, frequency %.2f.\n", edge->caller->name (), edge->caller->order, flag_wpa ? "unknown" : gimple_filename ((const_gimple) edge->call_stmt), flag_wpa ? -1 : gimple_lineno ((const_gimple) edge->call_stmt), - estimate_growth (callee), badness, edge->frequency / (double)CGRAPH_FREQ_BASE); if (edge->count) @@ -2318,6 +2311,8 @@ edge->call_stmt, edge->callee->decl, false)) edge->call_stmt_cannot_inline_p = true; } + if (iterations < PARAM_VALUE (PARAM_EARLY_INLINER_MAX_ITERATIONS) - 1) + inline_update_overall_summary (node); timevar_pop (TV_INTEGRATION); iterations++; inlined = false; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-inline.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-inline.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-inline.h 2014-02-21 09:32:57.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-inline.h 2014-03-30 07:40:41.000000000 +0000 @@ -117,6 +117,8 @@ int self_size; /* Time of the function body. */ int self_time; + /* Minimal size increase after inlining. */ + int min_size; /* False when there something makes inlining impossible (such as va_arg). */ unsigned inlinable : 1; @@ -220,6 +222,7 @@ vec, int *, int *, inline_hints *); int do_estimate_growth (struct cgraph_node *); +bool growth_likely_positive (struct cgraph_node *, int); void inline_merge_summary (struct cgraph_edge *edge); void inline_update_overall_summary (struct cgraph_node *node); int do_estimate_edge_size (struct cgraph_edge *edge); @@ -285,7 +288,8 @@ estimate_edge_growth (struct cgraph_edge *edge) { #ifdef ENABLE_CHECKING - gcc_checking_assert (inline_edge_summary (edge)->call_stmt_size); + gcc_checking_assert (inline_edge_summary (edge)->call_stmt_size + || !edge->callee->analyzed); #endif return (estimate_edge_size (edge) - inline_edge_summary (edge)->call_stmt_size); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-pure-const.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-pure-const.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-pure-const.c 2014-01-05 19:58:16.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-pure-const.c 2014-03-26 08:19:16.000000000 +0000 @@ -1327,35 +1327,39 @@ w_l->pure_const_state = this_state; w_l->looping = this_looping; - switch (this_state) - { - case IPA_CONST: - if (!TREE_READONLY (w->decl)) - { - warn_function_const (w->decl, !this_looping); - if (dump_file) - fprintf (dump_file, "Function found to be %sconst: %s\n", - this_looping ? "looping " : "", - w->name ()); - } - cgraph_set_const_flag (w, true, this_looping); - break; + /* Inline clones share declaration with their offline copies; + do not modify their declarations since the offline copy may + be different. */ + if (!w->global.inlined_to) + switch (this_state) + { + case IPA_CONST: + if (!TREE_READONLY (w->decl)) + { + warn_function_const (w->decl, !this_looping); + if (dump_file) + fprintf (dump_file, "Function found to be %sconst: %s\n", + this_looping ? "looping " : "", + w->name ()); + } + cgraph_set_const_flag (w, true, this_looping); + break; - case IPA_PURE: - if (!DECL_PURE_P (w->decl)) - { - warn_function_pure (w->decl, !this_looping); - if (dump_file) - fprintf (dump_file, "Function found to be %spure: %s\n", - this_looping ? "looping " : "", - w->name ()); - } - cgraph_set_pure_flag (w, true, this_looping); - break; + case IPA_PURE: + if (!DECL_PURE_P (w->decl)) + { + warn_function_pure (w->decl, !this_looping); + if (dump_file) + fprintf (dump_file, "Function found to be %spure: %s\n", + this_looping ? "looping " : "", + w->name ()); + } + cgraph_set_pure_flag (w, true, this_looping); + break; - default: - break; - } + default: + break; + } w_info = (struct ipa_dfs_info *) w->aux; w = w_info->next_cycle; } @@ -1448,10 +1452,16 @@ funct_state w_l = get_function_state (w); if (!can_throw && !TREE_NOTHROW (w->decl)) { - cgraph_set_nothrow_flag (w, true); - if (dump_file) - fprintf (dump_file, "Function found to be nothrow: %s\n", - w->name ()); + /* Inline clones share declaration with their offline copies; + do not modify their declarations since the offline copy may + be different. */ + if (!w->global.inlined_to) + { + cgraph_set_nothrow_flag (w, true); + if (dump_file) + fprintf (dump_file, "Function found to be nothrow: %s\n", + w->name ()); + } } else if (can_throw && !TREE_NOTHROW (w->decl)) w_l->can_throw = true; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-utils.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-utils.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ipa-utils.c 2014-01-05 19:58:16.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ipa-utils.c 2014-03-26 08:19:16.000000000 +0000 @@ -55,7 +55,7 @@ fprintf (out, "\n\n ordered call graph: %s\n", note); for (i = count - 1; i >= 0; i--) - dump_cgraph_node (dump_file, order[i]); + dump_cgraph_node (out, order[i]); fprintf (out, "\n"); fflush (out); } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ira-color.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ira-color.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ira-color.c 2014-01-05 19:58:16.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ira-color.c 2014-03-26 08:19:16.000000000 +0000 @@ -1505,7 +1505,7 @@ index = ira_class_hard_reg_index[aclass][hard_regno]; if (index < 0) continue; - cost = conflict_costs [i] * mult / div; + cost = (int) ((unsigned) conflict_costs [i] * mult) / div; if (cost == 0) continue; cont_p = true; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lra-assigns.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lra-assigns.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lra-assigns.c 2014-02-28 00:03:07.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lra-assigns.c 2014-03-28 19:04:53.000000000 +0000 @@ -451,10 +451,16 @@ that register. (If several registers have equal cost, the one with the highest priority wins.) Return -1 on failure. + If FIRST_P, return the first available hard reg ignoring other + criteria, e.g. allocation cost. This approach results in less hard + reg pool fragmentation and permit to allocate hard regs to reload + pseudos in complicated situations where pseudo sizes are different. + If TRY_ONLY_HARD_REGNO >= 0, consider only that hard register, otherwise consider all hard registers in REGNO's class. */ static int -find_hard_regno_for (int regno, int *cost, int try_only_hard_regno) +find_hard_regno_for (int regno, int *cost, int try_only_hard_regno, + bool first_p) { HARD_REG_SET conflict_set; int best_cost = INT_MAX, best_priority = INT_MIN, best_usage = INT_MAX; @@ -467,7 +473,7 @@ enum reg_class rclass; bitmap_iterator bi; bool *rclass_intersect_p; - HARD_REG_SET impossible_start_hard_regs; + HARD_REG_SET impossible_start_hard_regs, available_regs; COPY_HARD_REG_SET (conflict_set, lra_no_alloc_regs); rclass = regno_allocno_class_array[regno]; @@ -580,6 +586,8 @@ biggest_nregs = hard_regno_nregs[hard_regno][biggest_mode]; nregs_diff = (biggest_nregs - hard_regno_nregs[hard_regno][PSEUDO_REGNO_MODE (regno)]); + COPY_HARD_REG_SET (available_regs, reg_class_contents[rclass]); + AND_COMPL_HARD_REG_SET (available_regs, lra_no_alloc_regs); for (i = 0; i < rclass_size; i++) { if (try_only_hard_regno >= 0) @@ -595,9 +603,9 @@ && (nregs_diff == 0 || (WORDS_BIG_ENDIAN ? (hard_regno - nregs_diff >= 0 - && TEST_HARD_REG_BIT (reg_class_contents[rclass], + && TEST_HARD_REG_BIT (available_regs, hard_regno - nregs_diff)) - : TEST_HARD_REG_BIT (reg_class_contents[rclass], + : TEST_HARD_REG_BIT (available_regs, hard_regno + nregs_diff)))) { if (hard_regno_costs_check[hard_regno] @@ -630,7 +638,7 @@ best_usage = lra_hard_reg_usage[hard_regno]; } } - if (try_only_hard_regno >= 0) + if (try_only_hard_regno >= 0 || (first_p && best_hard_regno >= 0)) break; } if (best_hard_regno >= 0) @@ -816,9 +824,15 @@ to be spilled), we take into account not only how REGNO will benefit from the spills but also how other reload pseudos not yet assigned to hard registers benefit from the spills too. In very - rare cases, the function can fail and return -1. */ + rare cases, the function can fail and return -1. + + If FIRST_P, return the first available hard reg ignoring other + criteria, e.g. allocation cost and cost of spilling non-reload + pseudos. This approach results in less hard reg pool fragmentation + and permit to allocate hard regs to reload pseudos in complicated + situations where pseudo sizes are different. */ static int -spill_for (int regno, bitmap spilled_pseudo_bitmap) +spill_for (int regno, bitmap spilled_pseudo_bitmap, bool first_p) { int i, j, n, p, hard_regno, best_hard_regno, cost, best_cost, rclass_size; int reload_hard_regno, reload_cost; @@ -905,7 +919,7 @@ && (ira_reg_classes_intersect_p [rclass][regno_allocno_class_array[reload_regno]]) && live_pseudos_reg_renumber[reload_regno] < 0 - && find_hard_regno_for (reload_regno, &cost, -1) < 0) + && find_hard_regno_for (reload_regno, &cost, -1, first_p) < 0) sorted_reload_pseudos[n++] = reload_regno; EXECUTE_IF_SET_IN_BITMAP (&spill_pseudos_bitmap, 0, spill_regno, bi) { @@ -914,7 +928,7 @@ fprintf (lra_dump_file, " spill %d(freq=%d)", spill_regno, lra_reg_info[spill_regno].freq); } - hard_regno = find_hard_regno_for (regno, &cost, -1); + hard_regno = find_hard_regno_for (regno, &cost, -1, first_p); if (hard_regno >= 0) { assign_temporarily (regno, hard_regno); @@ -926,7 +940,7 @@ lra_assert (live_pseudos_reg_renumber[reload_regno] < 0); if ((reload_hard_regno = find_hard_regno_for (reload_regno, - &reload_cost, -1)) >= 0) + &reload_cost, -1, first_p)) >= 0) { if (lra_dump_file != NULL) fprintf (lra_dump_file, " assign %d(cost=%d)", @@ -1148,8 +1162,8 @@ regno, hard_regno, another_regno, another_hard_regno); update_lives (another_regno, true); lra_setup_reg_renumber (another_regno, -1, false); - if (hard_regno - == find_hard_regno_for (another_regno, &cost, hard_regno)) + if (hard_regno == find_hard_regno_for (another_regno, &cost, + hard_regno, false)) assign_hard_regno (hard_regno, another_regno); else assign_hard_regno (another_hard_regno, another_regno); @@ -1166,15 +1180,50 @@ /* All pseudos whose allocation was changed. */ static bitmap_head changed_pseudo_bitmap; + +/* Add to LIVE_RANGE_HARD_REG_PSEUDOS all pseudos conflicting with + REGNO and whose hard regs can be assigned to REGNO. */ +static void +find_all_spills_for (int regno) +{ + int p; + lra_live_range_t r; + unsigned int k; + bitmap_iterator bi; + enum reg_class rclass; + bool *rclass_intersect_p; + + rclass = regno_allocno_class_array[regno]; + rclass_intersect_p = ira_reg_classes_intersect_p[rclass]; + for (r = lra_reg_info[regno].live_ranges; r != NULL; r = r->next) + { + EXECUTE_IF_SET_IN_BITMAP (&live_hard_reg_pseudos[r->start], 0, k, bi) + if (rclass_intersect_p[regno_allocno_class_array[k]]) + sparseset_set_bit (live_range_hard_reg_pseudos, k); + for (p = r->start + 1; p <= r->finish; p++) + { + lra_live_range_t r2; + + for (r2 = start_point_ranges[p]; + r2 != NULL; + r2 = r2->start_next) + { + if (live_pseudos_reg_renumber[r2->regno] >= 0 + && rclass_intersect_p[regno_allocno_class_array[r2->regno]]) + sparseset_set_bit (live_range_hard_reg_pseudos, r2->regno); + } + } + } +} + /* Assign hard registers to reload pseudos and other pseudos. */ static void assign_by_spills (void) { int i, n, nfails, iter, regno, hard_regno, cost, restore_regno; rtx insn; - basic_block bb; bitmap_head changed_insns, do_not_assign_nonreload_pseudos; - unsigned int u; + unsigned int u, conflict_regno; bitmap_iterator bi; bool reload_p; int max_regno = max_reg_num (); @@ -1211,10 +1260,10 @@ ORIGINAL_REGNO (regno_reg_rtx[regno]), lra_reg_info[regno].freq, regno_assign_info[regno].first, regno_assign_info[regno_assign_info[regno].first].freq); - hard_regno = find_hard_regno_for (regno, &cost, -1); + hard_regno = find_hard_regno_for (regno, &cost, -1, iter == 1); reload_p = ! bitmap_bit_p (&non_reload_pseudos, regno); if (hard_regno < 0 && reload_p) - hard_regno = spill_for (regno, &all_spilled_pseudos); + hard_regno = spill_for (regno, &all_spilled_pseudos, iter == 1); if (hard_regno < 0) { if (reload_p) @@ -1286,61 +1335,41 @@ lra_assert (asm_p); break; } - /* This is a very rare event. We can not assign a hard - register to reload pseudo because the hard register was - assigned to another reload pseudo on a previous - assignment pass. For x86 example, on the 1st pass we - assigned CX (although another hard register could be used - for this) to reload pseudo in an insn, on the 2nd pass we - need CX (and only this) hard register for a new reload - pseudo in the same insn. */ + /* This is a very rare event. We can not assign a hard register + to reload pseudo because the hard register was assigned to + another reload pseudo on a previous assignment pass. For x86 + example, on the 1st pass we assigned CX (although another + hard register could be used for this) to reload pseudo in an + insn, on the 2nd pass we need CX (and only this) hard + register for a new reload pseudo in the same insn. Another + possible situation may occur in assigning to multi-regs + reload pseudos when hard regs pool is too fragmented even + after spilling non-reload pseudos. + + We should do something radical here to succeed. Here we + spill *all* conflicting pseudos and reassign them. */ if (lra_dump_file != NULL) fprintf (lra_dump_file, " 2nd iter for reload pseudo assignments:\n"); + sparseset_clear (live_range_hard_reg_pseudos); for (i = 0; i < nfails; i++) { if (lra_dump_file != NULL) fprintf (lra_dump_file, " Reload r%d assignment failure\n", sorted_pseudos[i]); - bitmap_ior_into (&changed_insns, - &lra_reg_info[sorted_pseudos[i]].insn_bitmap); + find_all_spills_for (sorted_pseudos[i]); + } + EXECUTE_IF_SET_IN_SPARSESET (live_range_hard_reg_pseudos, conflict_regno) + { + if ((int) conflict_regno >= lra_constraint_new_regno_start) + sorted_pseudos[nfails++] = conflict_regno; + if (lra_dump_file != NULL) + fprintf (lra_dump_file, " Spill %s r%d(hr=%d, freq=%d)\n", + pseudo_prefix_title (conflict_regno), conflict_regno, + reg_renumber[conflict_regno], + lra_reg_info[conflict_regno].freq); + update_lives (conflict_regno, true); + lra_setup_reg_renumber (conflict_regno, -1, false); } - - /* FIXME: Look up the changed insns in the cached LRA insn data using - an EXECUTE_IF_SET_IN_BITMAP over changed_insns. */ - FOR_EACH_BB_FN (bb, cfun) - FOR_BB_INSNS (bb, insn) - if (bitmap_bit_p (&changed_insns, INSN_UID (insn))) - { - lra_insn_recog_data_t data; - struct lra_insn_reg *r; - - data = lra_get_insn_recog_data (insn); - for (r = data->regs; r != NULL; r = r->next) - { - regno = r->regno; - /* A reload pseudo did not get a hard register on the - first iteration because of the conflict with - another reload pseudos in the same insn. So we - consider only reload pseudos assigned to hard - registers. We shall exclude inheritance pseudos as - they can occur in original insns (not reload ones). - We can omit the check for split pseudos because - they occur only in move insns containing non-reload - pseudos. */ - if (regno < lra_constraint_new_regno_start - || bitmap_bit_p (&lra_inheritance_pseudos, regno) - || reg_renumber[regno] < 0) - continue; - sorted_pseudos[nfails++] = regno; - if (lra_dump_file != NULL) - fprintf (lra_dump_file, - " Spill reload r%d(hr=%d, freq=%d)\n", - regno, reg_renumber[regno], - lra_reg_info[regno].freq); - update_lives (regno, true); - lra_setup_reg_renumber (regno, -1, false); - } - } n = nfails; } improve_inheritance (&changed_pseudo_bitmap); @@ -1382,7 +1411,7 @@ for (i = 0; i < n; i++) { regno = sorted_pseudos[i]; - hard_regno = find_hard_regno_for (regno, &cost, -1); + hard_regno = find_hard_regno_for (regno, &cost, -1, false); if (hard_regno >= 0) { assign_hard_regno (hard_regno, regno); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lra.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lra.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lra.c 2014-02-28 00:03:07.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lra.c 2014-03-26 08:19:14.000000000 +0000 @@ -254,6 +254,19 @@ rtx insn, last; last = get_last_insn (); + + if (have_addptr3_insn (x, y, z)) + { + insn = gen_addptr3_insn (x, y, z); + + /* If the target provides an "addptr" pattern it hopefully does + for a reason. So falling back to the normal add would be + a bug. */ + lra_assert (insn != NULL_RTX); + emit_insn (insn); + return insn; + } + insn = emit_insn (gen_rtx_SET (VOIDmode, x, gen_rtx_PLUS (GET_MODE (y), y, z))); if (recog_memoized (insn) < 0) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lra-constraints.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lra-constraints.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lra-constraints.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lra-constraints.c 2014-03-30 07:40:41.000000000 +0000 @@ -2631,6 +2631,20 @@ return new_reg; } +/* Make reload of index part of address AD. Return the new + pseudo. */ +static rtx +index_part_to_reg (struct address_info *ad) +{ + rtx new_reg; + + new_reg = lra_create_new_reg (GET_MODE (*ad->index), NULL_RTX, + INDEX_REG_CLASS, "index term"); + expand_mult (GET_MODE (*ad->index), *ad->index_term, + GEN_INT (get_index_scale (ad)), new_reg, 1); + return new_reg; +} + /* Return true if we can add a displacement to address AD, even if that makes the address invalid. The fix-up code requires any new address to be the sum of the BASE_TERM, INDEX and DISP_TERM fields. */ @@ -2935,7 +2949,7 @@ emit_insn (insns); *ad.inner = new_reg; } - else + else if (ad.disp_term != NULL) { /* base + scale * index + disp => new base + scale * index, case (1) above. */ @@ -2943,6 +2957,18 @@ *ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg), new_reg, *ad.index); } + else + { + /* base + scale * index => base + new_reg, + case (1) above. + Index part of address may become invalid. For example, we + changed pseudo on the equivalent memory and a subreg of the + pseudo onto the memory of different mode for which the scale is + prohibitted. */ + new_reg = index_part_to_reg (&ad); + *ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg), + *ad.base_term, new_reg); + } *before = get_insns (); end_sequence (); return true; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lto-cgraph.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lto-cgraph.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lto-cgraph.c 2014-02-07 14:55:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lto-cgraph.c 2014-03-26 08:19:16.000000000 +0000 @@ -500,6 +500,7 @@ bp_pack_value (&bp, node->force_output, 1); bp_pack_value (&bp, node->forced_by_abi, 1); bp_pack_value (&bp, node->unique_name, 1); + bp_pack_value (&bp, node->body_removed, 1); bp_pack_value (&bp, node->address_taken, 1); bp_pack_value (&bp, tag == LTO_symtab_analyzed_node && symtab_get_symbol_partitioning_class (node) == SYMBOL_PARTITION @@ -560,6 +561,7 @@ bp_pack_value (&bp, node->force_output, 1); bp_pack_value (&bp, node->forced_by_abi, 1); bp_pack_value (&bp, node->unique_name, 1); + bp_pack_value (&bp, node->body_removed, 1); bp_pack_value (&bp, node->definition, 1); alias_p = node->alias && (!boundary_p || node->weakref); bp_pack_value (&bp, alias_p, 1); @@ -969,6 +971,7 @@ node->force_output = bp_unpack_value (bp, 1); node->forced_by_abi = bp_unpack_value (bp, 1); node->unique_name = bp_unpack_value (bp, 1); + node->body_removed = bp_unpack_value (bp, 1); node->address_taken = bp_unpack_value (bp, 1); node->used_from_other_partition = bp_unpack_value (bp, 1); node->lowered = bp_unpack_value (bp, 1); @@ -1147,6 +1150,7 @@ node->force_output = bp_unpack_value (&bp, 1); node->forced_by_abi = bp_unpack_value (&bp, 1); node->unique_name = bp_unpack_value (&bp, 1); + node->body_removed = bp_unpack_value (&bp, 1); node->definition = bp_unpack_value (&bp, 1); node->alias = bp_unpack_value (&bp, 1); node->weakref = bp_unpack_value (&bp, 1); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lto-wrapper.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lto-wrapper.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/lto-wrapper.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/lto-wrapper.c 2014-03-26 08:19:16.000000000 +0000 @@ -406,6 +406,7 @@ /* Fallthru. */ case OPT_fPIC: case OPT_fpic: + case OPT_fPIE: case OPT_fpie: case OPT_fcommon: case OPT_fexceptions: @@ -671,6 +672,7 @@ { case OPT_fPIC: case OPT_fpic: + case OPT_fPIE: case OPT_fpie: case OPT_fcommon: case OPT_fexceptions: diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/Makefile.in gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/Makefile.in --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/Makefile.in 2014-03-06 14:12:57.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/Makefile.in 2014-03-26 08:19:16.000000000 +0000 @@ -2653,7 +2653,7 @@ $(mkinstalldirs) $(DESTDIR)$(gcc_tooldir) macro_list: s-macro_list; @true -s-macro_list : $(GCC_PASSES) +s-macro_list : $(GCC_PASSES) cc1$(exeext) echo | $(GCC_FOR_TARGET) -E -dM - | \ sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \ -e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/mode-switching.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/mode-switching.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/mode-switching.c 2014-01-05 19:58:16.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/mode-switching.c 2014-03-28 19:04:55.000000000 +0000 @@ -45,20 +45,20 @@ and finding all the insns which require a specific mode. Each insn gets a unique struct seginfo element. These structures are inserted into a list for each basic block. For each entity, there is an array of bb_info over - the flow graph basic blocks (local var 'bb_info'), and contains a list + the flow graph basic blocks (local var 'bb_info'), which contains a list of all insns within that basic block, in the order they are encountered. For each entity, any basic block WITHOUT any insns requiring a specific - mode are given a single entry, without a mode. (Each basic block - in the flow graph must have at least one entry in the segment table.) + mode are given a single entry without a mode (each basic block in the + flow graph must have at least one entry in the segment table). The LCM algorithm is then run over the flow graph to determine where to - place the sets to the highest-priority value in respect of first the first + place the sets to the highest-priority mode with respect to the first insn in any one block. Any adjustments required to the transparency vectors are made, then the next iteration starts for the next-lower priority mode, till for each entity all modes are exhausted. - More details are located in the code for optimize_mode_switching(). */ + More details can be found in the code of optimize_mode_switching. */ /* This structure contains the information for each insn which requires either single or double mode to be set. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/omp-low.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/omp-low.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/omp-low.c 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/omp-low.c 2014-03-27 17:33:34.000000000 +0000 @@ -10124,7 +10124,20 @@ if ((ctx || task_shared_vars) && walk_gimple_op (stmt, lower_omp_regimplify_p, ctx ? NULL : &wi)) - gimple_regimplify_operands (stmt, gsi_p); + { + /* Just remove clobbers, this should happen only if we have + "privatized" local addressable variables in SIMD regions, + the clobber isn't needed in that case and gimplifying address + of the ARRAY_REF into a pointer and creating MEM_REF based + clobber would create worse code than we get with the clobber + dropped. */ + if (gimple_clobber_p (stmt)) + { + gsi_replace (gsi_p, gimple_build_nop (), true); + break; + } + gimple_regimplify_operands (stmt, gsi_p); + } break; } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/optabs.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/optabs.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/optabs.c 2014-02-07 14:55:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/optabs.c 2014-03-26 08:19:14.000000000 +0000 @@ -4755,6 +4755,43 @@ return 1; } +/* Generate and return an insn body to add Y to X. */ + +rtx +gen_addptr3_insn (rtx x, rtx y, rtx z) +{ + enum insn_code icode = optab_handler (addptr3_optab, GET_MODE (x)); + + gcc_assert (insn_operand_matches (icode, 0, x)); + gcc_assert (insn_operand_matches (icode, 1, y)); + gcc_assert (insn_operand_matches (icode, 2, z)); + + return GEN_FCN (icode) (x, y, z); +} + +/* Return true if the target implements an addptr pattern and X, Y, + and Z are valid for the pattern predicates. */ + +int +have_addptr3_insn (rtx x, rtx y, rtx z) +{ + enum insn_code icode; + + gcc_assert (GET_MODE (x) != VOIDmode); + + icode = optab_handler (addptr3_optab, GET_MODE (x)); + + if (icode == CODE_FOR_nothing) + return 0; + + if (!insn_operand_matches (icode, 0, x) + || !insn_operand_matches (icode, 1, y) + || !insn_operand_matches (icode, 2, z)) + return 0; + + return 1; +} + /* Generate and return an insn body to subtract Y from X. */ rtx diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/optabs.def gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/optabs.def --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/optabs.def 2014-01-05 19:58:11.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/optabs.def 2014-03-26 08:19:14.000000000 +0000 @@ -191,6 +191,7 @@ OPTAB_D (subv4_optab, "subv$I$a4") OPTAB_D (mulv4_optab, "mulv$I$a4") OPTAB_D (negv3_optab, "negv$I$a3") +OPTAB_D (addptr3_optab, "addptr$a3") OPTAB_D (smul_highpart_optab, "smul$a3_highpart") OPTAB_D (umul_highpart_optab, "umul$a3_highpart") diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/po/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/po/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/po/ChangeLog 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/po/ChangeLog 2014-03-26 08:19:16.000000000 +0000 @@ -1,3 +1,7 @@ +2014-03-24 Joseph Myers + + * sv.po: Update. + 2014-03-17 Joseph Myers * sv.po: Update. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/po/sv.po gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/po/sv.po --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/po/sv.po 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/po/sv.po 2014-03-26 08:19:16.000000000 +0000 @@ -16,7 +16,7 @@ "Project-Id-Version: gcc 4.9-b20140202\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" "POT-Creation-Date: 2014-02-02 17:35+0000\n" -"PO-Revision-Date: 2014-03-16 11:02+0100\n" +"PO-Revision-Date: 2014-03-23 09:47+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -27884,9 +27884,9 @@ msgstr "identifierare eller %<(%> förväntades" #: c/c-parser.c:3349 c/c-parser.c:3378 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array notations cannot be used in declaration" -msgstr "Varna för föråldrad användning i en deklaration" +msgstr "vektornotation kan inte användas i en deklaration" #: c/c-parser.c:3517 #, gcc-internal-format @@ -28073,24 +28073,24 @@ msgstr "kan inte ta adressen till %qs" #: c/c-parser.c:6727 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C99 does not support %<_Generic%>" -msgstr "ISO C99 stödjer inte %<_Noreturn%>" +msgstr "ISO C99 stödjer inte %<_Generic%>" #: c/c-parser.c:6730 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ISO C90 does not support %<_Generic%>" -msgstr "ISO C90 stödjer inte %<_Noreturn%>" +msgstr "ISO C90 stödjer inte %<_Generic%>" #: c/c-parser.c:6797 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<_Generic%> association has function type" -msgstr "typkonvertering anger funktionstyp" +msgstr "%<_Generic%>-association har funktionstyp" #: c/c-parser.c:6800 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<_Generic%> association has incomplete type" -msgstr "uttryckssats har ofullständig typ" +msgstr "%<_Generic%>-association har ofullständig typ" #: c/c-parser.c:6804 #, gcc-internal-format @@ -28103,9 +28103,9 @@ msgstr "dubblerat %-fall i %<_Generic%>" #: c/c-parser.c:6829 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "original % is here" -msgstr "ursprungligen definierad här" +msgstr "ursprungligt % finns här" #: c/c-parser.c:6837 #, gcc-internal-format @@ -28113,14 +28113,14 @@ msgstr "%<_Generic%> anger två kompatibla typer" #: c/c-parser.c:6838 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "compatible type is here" -msgstr "inkompatibla typer i send" +msgstr "kompatibla typen finns här" #: c/c-parser.c:6861 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<_Generic> selector matches multiple associations" -msgstr "Generera load/store multiple-instruktioner" +msgstr "%<_Generic%>-väljare matchar flera associationer" #: c/c-parser.c:6863 #, gcc-internal-format @@ -28288,14 +28288,14 @@ msgstr "%<#pragma omp taskyield%> får bara användas i sammansatta satser" #: c/c-parser.c:9433 cp/parser.c:31396 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp cancel%> may only be used in compound statements" -msgstr "%<#pragma omp taskyield%> får bara användas i sammansatta satser" +msgstr "%<#pragma omp cancel%> får bara användas i sammansatta satser" #: c/c-parser.c:9444 cp/parser.c:31412 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp cancellation point%> may only be used in compound statements" -msgstr "%<#pragma omp taskwait%> får bara användas i sammansatta satser" +msgstr "%<#pragma omp cancellation point%> får bara användas i sammansatta satser" #: c/c-parser.c:9464 cp/parser.c:31455 #, gcc-internal-format @@ -28303,9 +28303,9 @@ msgstr "%<#pragma omp section%> får bara användas i %<#pragma omp sections%>-konstruktion" #: c/c-parser.c:9479 cp/parser.c:31468 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "for, while or do statement expected" -msgstr "for-sats förväntades" +msgstr "for-, while- eller do-sats förväntades" #: c/c-parser.c:9491 cp/parser.c:31323 #, gcc-internal-format @@ -28359,19 +28359,19 @@ msgstr "ogiltig schedule-sort" #: c/c-parser.c:10410 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% value must be positive" -msgstr "%-värdet måste vara positivt" +msgstr "%-värdet måste vara positivt" #: c/c-parser.c:10454 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% value must be positive" -msgstr "%-värdet måste vara positivt" +msgstr "%-värdet måste vara positivt" #: c/c-parser.c:10496 cp/semantics.c:5589 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% clause alignment expression must be positive constant integer expression" -msgstr "collapse-argument behöver ett positivt konstant heltalsuttryck" +msgstr "%-klausulens justeringsuttryck måste vara ett positivt konstant heltalsuttryck" #: c/c-parser.c:10533 cp/parser.c:27754 #, gcc-internal-format @@ -28379,49 +28379,49 @@ msgstr "att använda parametrar för %-steg stödjs inte än" #: c/c-parser.c:10538 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% clause step expression must be integral" -msgstr "uttryck för styckesstorlek för schemaläggning måste vara heltal" +msgstr "%-klausulens steguttryck måste vara heltal" #: c/c-parser.c:10575 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% clause expression must be positive constant integer expression" -msgstr "collapse-argument behöver ett positivt konstant heltalsuttryck" +msgstr "%-klausulens uttryck måste vara ett positivt konstant heltalsuttryck" #: c/c-parser.c:10611 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% clause expression must be positive constant integer expression" -msgstr "collapse-argument behöver ett positivt konstant heltalsuttryck" +msgstr "%-klausulens uttryck måste vara ett positivt konstant heltalsuttryck" #: c/c-parser.c:10673 cp/parser.c:27875 cp/parser.c:28058 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid depend kind" -msgstr "ogiltig schedule-sort" +msgstr "ogiltig depend-sort" #: c/c-parser.c:10710 cp/parser.c:27915 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid map kind" -msgstr "ogiltigt mask" +msgstr "ogiltig map-sort" #: c/c-parser.c:10775 cp/parser.c:28005 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid dist_schedule kind" -msgstr "ogiltig schedule-sort" +msgstr "ogiltig dist_schedule-sort" #: c/c-parser.c:10844 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "invalid proc_bind kind" -msgstr "ogiltig schedule-sort" +msgstr "ogiltig proc_bind-sort" #: c/c-parser.c:10999 cp/parser.c:28194 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qs must be the first clause of %qs" -msgstr "%qs måste användas tillsammans med %qs" +msgstr "%qs måste vara den första klausulen i %qs" #: c/c-parser.c:11091 cp/parser.c:28293 #, gcc-internal-format msgid "expected %<#pragma omp%> clause" -msgstr "förväntade %<#pragma omp%>-klausul" +msgstr "%<#pragma omp%>-klausul förväntades" #: c/c-parser.c:11102 cp/parser.c:28304 #, gcc-internal-format @@ -28439,9 +28439,9 @@ msgstr "ogiltig operator för %<#pragma omp atomic%>" #: c/c-parser.c:11507 cp/semantics.c:6574 cp/semantics.c:6584 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp atomic capture%> uses two different expressions for memory" -msgstr "%<#pragma omp atomic capture%> använder två olika variabler till minne" +msgstr "%<#pragma omp atomic capture%> använder två olika uttryck till minne" #: c/c-parser.c:11560 c/c-parser.c:11581 #, gcc-internal-format @@ -28474,19 +28474,19 @@ msgstr "iterationsvariabel %qD får inte vara firstprivate" #: c/c-parser.c:12219 cp/parser.c:29731 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected % after %qs" -msgstr "% förväntades" +msgstr "% förväntades efter %qs" #: c/c-parser.c:12411 cp/parser.c:29918 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %" -msgstr "% förväntades" +msgstr "% förväntades" #: c/c-parser.c:12615 cp/parser.c:30140 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp target update%> may only be used in compound statements" -msgstr "%<#pragma omp taskwait%> får bara användas i sammansatta satser" +msgstr "%<#pragma omp target update%> får bara användas i sammansatta satser" #: c/c-parser.c:12628 cp/parser.c:30153 #, gcc-internal-format @@ -28499,9 +28499,9 @@ msgstr "%<#pragma omp declare simd%> måste följas av funktionsdeklaration eller -definition eller en annan %<#pragma omp declare simd%>" #: c/c-parser.c:12817 c/c-parser.c:12845 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp declare simd%> must be followed by function declaration or definition" -msgstr "%<#pragma align%> måste förekomma före deklarationen av %D, ignorerar" +msgstr "%<#pragma omp declare simd%> måste följas av en funktionsdeklaration eller -definition" #: c/c-parser.c:12864 cp/parser.c:30326 #, gcc-internal-format @@ -28519,29 +28519,29 @@ msgstr "%<#pragma omp declare simd%> som inte omedelbart flöjs av en ensam funktionsdeklaration eller -definition" #: c/c-parser.c:12983 cp/parser.c:30450 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %" -msgstr "% förväntades" +msgstr "% förväntades" #: c/c-parser.c:12990 cp/parser.c:30457 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %" -msgstr "% förväntades" +msgstr "% förväntades" #: c/c-parser.c:12996 cp/parser.c:30464 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%>" -msgstr "%<#pragma GCC pop_options%> utan en motsvarande %<#pragma GCC push_options%>" +msgstr "%<#pragma omp end declare target%> utan en motsvarande %<#pragma omp declare target%>" #: c/c-parser.c:13024 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%<#pragma omp declare reduction%> not at file or block scope" -msgstr "en malldeklaration får inte förekomma på blocknivå" +msgstr "%<#pragma omp declare reduction%> inte på file- eller blockräckvidd" #: c/c-parser.c:13074 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % or identifier" -msgstr "%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % eller % förväntades" +msgstr "%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % eller identifierare förväntades" #: c/c-parser.c:13101 #, gcc-internal-format @@ -28564,19 +28564,19 @@ msgstr "omdeklaration av %qs %<#pragma omp declare reduction%> för typen %qT" #: c/c-parser.c:13125 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous %<#pragma omp declare reduction%>" -msgstr "tidigare deklaration" +msgstr "tidigare %<#pragma omp declare reduction%>" #: c/c-parser.c:13242 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected % or function-name" -msgstr "%<(%> eller filslut förväntades" +msgstr "% eller funktionsnamn förväntades" #: c/c-parser.c:13253 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected function-name %<(%>" -msgstr "en funktion förväntades" +msgstr "funktionsnamn %<(%> förväntades" #: c/c-parser.c:13268 #, gcc-internal-format @@ -28584,9 +28584,9 @@ msgstr "en av initierarens anropsargument skall vara %<&omp_priv%>" #: c/c-parser.c:13388 cp/parser.c:30900 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected % or % or %" -msgstr "%<#pragma omp section%> eller %<}%> förväntades" +msgstr "% eller % eller % förväntades" #: c/c-parser.c:13491 #, gcc-internal-format @@ -28614,29 +28614,29 @@ msgstr "pragma simd ignoreras för att -fcilkplus inte är aktiverat" #: c/c-parser.c:13536 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "pragma simd must be inside a function" -msgstr "#pragma GCC optimize tillåts inte inuti funktioner" +msgstr "pragma simd måste vara inuti en funktion" #: c/c-parser.c:13580 cp/parser.c:31586 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "vectorlength must be an integer constant" -msgstr "selektor måste vara en heltalskonstant i intervallet 0..%wi" +msgstr "vektorlängd måste vara en heltalskonstant" #: c/c-parser.c:13582 cp/parser.c:31589 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "vectorlength must be a power of 2" -msgstr "stackstorlek måste vara en exakt potens av 2" +msgstr "vektorlängd måste vara en potens av 2" #: c/c-parser.c:13665 cp/parser.c:31696 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "step size must be an integer constant expression or an integer variable" -msgstr "selektor måste vara en heltalskonstant i intervallet 0..%wi" +msgstr "stegstorleken måste vara ett konstant heltalsuttryck eller en heltalsvariabel" #: c/c-parser.c:13764 cp/parser.c:31789 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<#pragma simd%> clause" -msgstr "förväntade %<#pragma omp%>-klausul" +msgstr "%<#pragma simd%>-klausul förväntades" #: c/c-parser.c:13966 cp/parser.c:31218 #, gcc-internal-format @@ -28664,9 +28664,9 @@ msgstr "%<__transaction_cancel%> inte inom %<__transaction_atomic%>" #: c/c-parser.c:14059 cp/parser.c:6263 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected %<:%> or numeral" -msgstr "%<:%> eller %<::%> förväntades" +msgstr "%<:%> eller tal förväntades" #: c/c-parser.c:14070 #, gcc-internal-format @@ -28674,9 +28674,9 @@ msgstr "startindex och längdfält är nödvändiga för att använda vektornotationer i pekare" #: c/c-parser.c:14077 c/c-parser.c:14120 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array notations cannot be used with function type" -msgstr "new kan inte användas på en funktionstyp" +msgstr "vektornotationer kan inte användas med en funktionstyp" #: c/c-parser.c:14086 #, gcc-internal-format @@ -28689,9 +28689,9 @@ msgstr "startindex och längdfält är nödvändiga för att använda vektornotationer i vektorer med variabel längd" #: c/c-parser.c:14148 c/c-parser.c:14151 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "expected array notation expression" -msgstr "booleskt uttryck förväntades" +msgstr "vektornotationsuttryck förväntades" #: c/c-typeck.c:220 #, gcc-internal-format @@ -28795,9 +28795,9 @@ msgstr "derefererar %-pekare" #: c/c-typeck.c:2434 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "rank of the array's index is greater than 1" -msgstr "justeringen av vektorelement är större än elementstorleken" +msgstr "ordningen på vektorns index är större än 1" #: c/c-typeck.c:2448 #, gcc-internal-format @@ -28953,9 +28953,9 @@ msgstr "pekare till funktion använd i subtraktion" #: c/c-typeck.c:3515 cp/typeck.c:5054 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "arithmetic on pointer to an empty aggregate" -msgstr "aritmetik på pekare till ofullständig typ" +msgstr "aritmetik på pekare till ett tomt aggregat" #: c/c-typeck.c:3829 #, gcc-internal-format @@ -29078,9 +29078,9 @@ msgstr "vänster operand av kommauttryck har ingen effekt" #: c/c-typeck.c:4777 c/c-typeck.c:9666 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "right-hand operand of comma expression has no effect" -msgstr "vänster operand av kommauttryck har ingen effekt" +msgstr "höger operand av kommauttryck har ingen effekt" #: c/c-typeck.c:4846 msgid "cast adds %q#v qualifier to function type" @@ -29171,9 +29171,9 @@ msgstr "definition av en typ i en typkonvertering är ogiltigt i C++" #: c/c-typeck.c:5214 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "assignment to expression with array type" -msgstr "utelämnad tilldelning" +msgstr "tilldelning till uttryck med vektortyp" #: c/c-typeck.c:5338 c/c-typeck.c:5672 #, gcc-internal-format @@ -29628,14 +29628,14 @@ msgstr "funktion deklarerad % har en %-sats" #: c/c-typeck.c:9132 cp/cp-array-notation.c:1088 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array notation expression cannot be used as a return value" -msgstr "uttryck kan inte användas som en funktion" +msgstr "vektornotationsuttryck kan inte användas som ett returvärde" #: c/c-typeck.c:9139 cp/typeck.c:8333 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "use of %<_Cilk_spawn%> in a return statement is not allowed" -msgstr "Logiskt intervall CASE-sats vid %L är inte tillåtet" +msgstr "användning av %<_Cilk_spawn%> i en retursats är inte tillåtet" #: c/c-typeck.c:9164 #, gcc-internal-format @@ -29698,9 +29698,9 @@ msgstr "föreslår uttryckliga klamrar för att undvika tvetydighet i %" #: c/c-typeck.c:9515 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array notation expression cannot be used in a loop%'s condition" -msgstr "uttryck kan inte användas som en funktion" +msgstr "vektornotationsuttryck kan inte användas i en slingas villkor" #: c/c-typeck.c:9609 cp/parser.c:10626 #, gcc-internal-format @@ -29718,14 +29718,14 @@ msgstr "break-sats använd med OpenMP-for-slinga" #: c/c-typeck.c:9621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "break statement within %<#pragma simd%> loop body" -msgstr "break-sats som inte är i en loop eller switch" +msgstr "break-sats i en %<#pragma simd%>-slingas kropp" #: c/c-typeck.c:9623 cp/parser.c:10656 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "continue statement within %<#pragma simd%> loop body" -msgstr "continue-sats som inte är i en loop" +msgstr "continue-sats i en %<#pragma simd%>-slingas kropp" #: c/c-typeck.c:9649 cp/cp-gimplify.c:438 #, gcc-internal-format @@ -29839,31 +29839,31 @@ msgstr "%<#pragma omp cancellation point måste ange en av klausulerna %, %, % eller %" #: c/c-typeck.c:11269 cp/semantics.c:4222 cp/semantics.c:5655 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is not a variable in %qs clause" -msgstr "%qD är inte en variabel i klausul %qs" +msgstr "%qD är inte en variabel i en %qs-klausul" #: c/c-typeck.c:11273 c/c-typeck.c:12044 cp/semantics.c:4226 #: cp/semantics.c:5658 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a variable in %qs clause" -msgstr "%qE är inte en variabel i klausul %qs" +msgstr "%qE är inte en variabel i en %qs-klausul" #: c/c-typeck.c:11281 c/c-typeck.c:12051 cp/semantics.c:4234 #: cp/semantics.c:5664 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is threadprivate variable in %qs clause" -msgstr "%qD är inte en variabel i klausul %qs" +msgstr "%qD är en trådprivat variabel i en %qs-klausul" #: c/c-typeck.c:11303 cp/semantics.c:4260 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "low bound %qE of array section does not have integral type" -msgstr "storlek i vektor-new måste ha heltalstyp" +msgstr "undre gränsen %qE i vektorsektion har inte heltalstyp" #: c/c-typeck.c:11310 cp/semantics.c:4267 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "length %qE of array section does not have integral type" -msgstr "storlek i vektor-new måste ha heltalstyp" +msgstr "längden %qE i vektorsektion har inte heltalstyp" #: c/c-typeck.c:11342 cp/semantics.c:4299 #, gcc-internal-format @@ -29876,9 +29876,9 @@ msgstr "negativ nedre gräns i vektorsektion i %qs-klausul" #: c/c-typeck.c:11359 cp/semantics.c:4316 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "negative length in array section in %qs clause" -msgstr "vektor med variabel längd används" +msgstr "negativ längd i vektorsektion i en %qs-klausul" #: c/c-typeck.c:11376 cp/semantics.c:4333 #, gcc-internal-format @@ -29896,20 +29896,20 @@ msgstr "övre gräns %qE ovanför storleken på vektorsektionen i en %qs-klausul" #: c/c-typeck.c:11447 cp/semantics.c:4404 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "for pointer type length expression must be specified" -msgstr "for-ökningsuttryck har ingen effekt" +msgstr "för pekartyper måste ett längduttryck anges" #: c/c-typeck.c:11456 c/c-typeck.c:11571 cp/semantics.c:4413 #: cp/semantics.c:4524 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array section is not contiguous in %qs clause" -msgstr "Kopiera vektorsektioner till sammanhängande block vid procedurstart" +msgstr "vektorsektionen är inte sammanhängande i %qs-klausulen" #: c/c-typeck.c:11464 cp/semantics.c:4421 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE does not have pointer or array type" -msgstr "%qD har inte heltals- eller uppräkningstyp" +msgstr "%qE har inte pekar- eller vektortyp" #: c/c-typeck.c:11784 #, gcc-internal-format @@ -29957,54 +29957,54 @@ msgstr "%qE är inte en variabel i klausul %" #: c/c-typeck.c:11975 cp/semantics.c:5545 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a variable in % clause" -msgstr "%qE är inte en variabel i klausul %qs" +msgstr "%qE är inte en variabel i %-klausul" #: c/c-typeck.c:11982 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE in % clause is neither a pointer nor an array" -msgstr "typ till vektor-delete är varken pekar- eller vektortyp" +msgstr "%qE i %-klausul är varken en pekare eller en vektor" #: c/c-typeck.c:11989 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE appears more than once in % clauses" -msgstr "%qE förekommer mer än en gång i dataklausuler" +msgstr "%qE förekommer mer än en gång i %-klausuler" #: c/c-typeck.c:12010 cp/semantics.c:5615 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not a variable in % clause" -msgstr "%qE är inte en variabel i klausul %qs" +msgstr "%qE är inte en variabel i en %-klausul" #: c/c-typeck.c:12031 cp/semantics.c:5637 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array section does not have mappable type in %qs clause" -msgstr "En vektorsektion är inte tillåten i anrop av ”%s” vid %L" +msgstr "vektorsektionen har inte en avbildbar typ i %qs-klausulen" #: c/c-typeck.c:12062 cp/semantics.c:5680 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD does not have a mappable type in %qs clause" -msgstr "%qD är inte en variabel i klausul %qs" +msgstr "%qD har inte en avbildbar typ i %qs-klausul" #: c/c-typeck.c:12069 cp/semantics.c:5687 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD appears more than once in motion clauses" -msgstr "%qD förekommer mer än en gång i dataklausuler" +msgstr "%qD förekommer mer än en gång i rörelseklausuler" #: c/c-typeck.c:12071 cp/semantics.c:5689 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD appears more than once in map clauses" -msgstr "%qD förekommer mer än en gång i dataklausuler" +msgstr "%qD förekommer mer än en gång i avbildningsklausuler" #: c/c-typeck.c:12084 cp/semantics.c:5703 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD is not an argument in % clause" -msgstr "%qD är inte en variabel i klausul %qs" +msgstr "%qD är inte en ett argument i en %-klausul" #: c/c-typeck.c:12087 cp/semantics.c:5705 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE is not an argument in % clause" -msgstr "%qE är inte en variabel i klausul %qs" +msgstr "%qE är inte ett argument i en %-klausul" #: c/c-typeck.c:12134 cp/semantics.c:5728 #, gcc-internal-format @@ -30343,9 +30343,9 @@ msgstr "ogiltig konvertering från %qT till %qT" #: cp/call.c:5975 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "initializing argument %P of %qD" -msgstr " initierar argument %P till %qD" +msgstr "initierar argument %P till %qD" #: cp/call.c:6000 #, gcc-internal-format @@ -30353,9 +30353,9 @@ msgstr "att konvertera till %qT från initierarlista skulle använda den explicita konstrueraren %qD" #: cp/call.c:6080 cp/call.c:6219 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "initializing argument %P of %q+D" -msgstr " initierar argument %P till %q+D" +msgstr "initierar argument %P till %q+D" #: cp/call.c:6202 #, gcc-internal-format @@ -30449,9 +30449,9 @@ msgstr "kunde inte hitta class$-fält i java-gränssnittstyp %qT" #: cp/call.c:7524 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "constructor delegates to itself" -msgstr "konstant refererar till sig själv" +msgstr "konstruerare delegerar till sig själv" #: cp/call.c:7614 #, gcc-internal-format @@ -30464,9 +30464,9 @@ msgstr "kan inte anropa konstrueraren %<%T::%D%> direkt" #: cp/call.c:7662 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "for a function-style cast, remove the redundant %<::%D%>" -msgstr " för en typkonvertering i funktionsstil, ta bort det överflödiga %<::%D%>" +msgstr "för en typkonvertering i funktionsstil, ta bort det överflödiga %<::%D%>" #: cp/call.c:7783 #, gcc-internal-format @@ -30554,24 +30554,24 @@ msgstr "ogiltig initiering av referens av typ %qT från uttryck av typ %qT" #: cp/class.c:302 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot convert from pointer to base class %qT to pointer to derived class %qT because the base is virtual" -msgstr "kan inte konvertera från basen %qT till härledd typ %qT via virtuell bas %qT" +msgstr "kan inte konvertera från pekare till basklassen %qT till pekare till den härledda klassen %qT eftersom basen är virtuell" #: cp/class.c:306 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot convert from base class %qT to derived class %qT because the base is virtual" -msgstr "kan inte konvertera från basen %qT till härledd typ %qT via virtuell bas %qT" +msgstr "kan inte konvertera från basklassen %qT till den härledda klassen %qT eftersom basen är virtuell" #: cp/class.c:313 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot convert from pointer to base class %qT to pointer to derived class %qT via virtual base %qT" -msgstr "kan inte konvertera från basen %qT till härledd typ %qT via virtuell bas %qT" +msgstr "kan inte konvertera från pekare till basklassen %qT till pekare till den härledda klassen %qT via den virtuella basen %qT" #: cp/class.c:318 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot convert from base class %qT to derived class %qT via virtual base %qT" -msgstr "kan inte konvertera från basen %qT till härledd typ %qT via virtuell bas %qT" +msgstr "kan inte konvertera från basklassen %qT till den härledda klassen %qT via den virtuella basen %qT" #: cp/class.c:1022 #, gcc-internal-format @@ -30810,14 +30810,14 @@ msgstr "ignorerar attributet packed på grund av opackat icke-POD-fält %q+#D" #: cp/class.c:3594 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "member %q+D cannot be declared both % and %" -msgstr "icke-medlem %qs kan inte deklareras %" +msgstr "medlemmen %q+D kan inte både deklareras % och %" #: cp/class.c:3600 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "member %q+D cannot be declared as a % reference" -msgstr "icke-medlem %qs kan inte deklareras %" +msgstr "medlem %q+D kan inte deklareras som en % referens" #: cp/class.c:3659 #, gcc-internal-format @@ -31047,9 +31047,9 @@ msgstr "byter betydelse av %qD från %q+#D" #: cp/cp-array-notation.c:605 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qD cannot be scalar when %qD is not" -msgstr "%q+#D kan inte deklareras" +msgstr "%qD kan inte vara en skalär när %qD inte är det" #: cp/cp-array-notation.c:818 cp/cp-array-notation.c:824 #: cp/cp-array-notation.c:849 cp/cp-array-notation.c:855 @@ -31088,9 +31088,9 @@ msgstr "startindex och längdfält är nödvändiga för att använda vektornotation med vektorer med okänd gräns" #: cp/cp-array-notation.c:1422 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array notation cannot be used with function type" -msgstr "new kan inte användas på en funktionstyp" +msgstr "vektornotation kan inte användas användas med en funktionstyp" #: cp/cp-array-notation.c:1432 #, gcc-internal-format @@ -31108,14 +31108,14 @@ msgstr "ordningen på en vektornotations trippels steg är inte noll" #: cp/cp-cilkplus.c:53 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "throw expressions are not allowed inside loops marked with pragma simd" -msgstr "satsuttryck är inte tillåtna utanför funktioner eller i mallargumentlistor" +msgstr "throw-uttryck är inte tillåtna inuti slingor markerade med pragma simd" #: cp/cp-cilkplus.c:60 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "try statements are not allowed inside loops marked with #pragma simd" -msgstr "%s-sats är inte tillåten inuti BLOCK vid %C" +msgstr "try-satser är inte tillåtna inuti slingor markerade med #pragma simd" #: cp/cp-gimplify.c:1600 #, gcc-internal-format @@ -31443,9 +31443,9 @@ msgstr "konvertera av NULL till icke-pekartyp" #: cp/cvt.c:1644 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "default type conversion can't deduce template argument for %qD" -msgstr " kunde inte härleda mallparametrar %qD" +msgstr "standardtypkonvertering kan inte härleda mallargumentet för %qD" #: cp/cvt.c:1659 #, gcc-internal-format @@ -31514,9 +31514,9 @@ msgstr "funktionen %q+D omdeklarerad som ”inline”" #: cp/decl.c:1304 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration of %qD with attribute noinline" -msgstr "tidigare deklaration av %q+D med attributet noinline" +msgstr "tidigare deklaration av %qD med attributet noinline" #: cp/decl.c:1311 #, gcc-internal-format @@ -31524,9 +31524,9 @@ msgstr "funktionen %q+D omdeklarerad med attributet noinline" #: cp/decl.c:1314 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration of %qD was inline" -msgstr "tidigare deklaration av %q+D var inline" +msgstr "tidigare deklaration av %qD var inline" #: cp/decl.c:1338 cp/decl.c:1415 #, gcc-internal-format @@ -31544,24 +31544,24 @@ msgstr "biblioteksfunktion %q#D omdeklarerad som icke-funktion %q#D" #: cp/decl.c:1349 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "declaration of %q#D conflicts with built-in declaration %q#D" -msgstr "står i konflikt med inbyggd deklaration %q#D" +msgstr "deklaration av %q#D står i konflikt med inbyggd deklaration %q#D" #: cp/decl.c:1357 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "redeclaration of %" -msgstr "deklaration av %qD skuggar en global deklaration" +msgstr "omdeklaration av %" #: cp/decl.c:1359 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous % declaration" -msgstr "tidigare icke-funktions-deklaration av %q+#D" +msgstr "tidigare %-deklaration" #: cp/decl.c:1410 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "new declaration %q#D ambiguates built-in declaration %q#D" -msgstr "gör inbyggd deklaration %q#D tvetydig" +msgstr "ny deklaration av %q#D gör inbyggd deklaration %q#D tvetydig" #: cp/decl.c:1501 #, gcc-internal-format @@ -31569,34 +31569,34 @@ msgstr "%q#D omdeklarerad som en annan sorts symbol" #: cp/decl.c:1505 cp/decl.c:1526 cp/decl.c:1553 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration %q#D" -msgstr "tidigare deklaration %q+#D" +msgstr "tidigare deklaration %q#D" #: cp/decl.c:1524 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicting declaration of template %q#D" -msgstr "omdeklaration av mallen %q#D" +msgstr "motstridig deklaration av mallen %q#D" #: cp/decl.c:1540 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ambiguating new declaration %q#D" -msgstr "gör gammal deklaration %q+#D tvetydig" +msgstr "ny deklaration %q#D som skapar tvetydighet" #: cp/decl.c:1542 cp/decl.c:1565 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "old declaration %q#D" -msgstr "global deklaration av %q+#D" +msgstr "gammal deklaration av %q#D" #: cp/decl.c:1550 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicting declaration of C function %q#D" -msgstr "motstridande deklaration av %q#D" +msgstr "motstridande deklaration av C-funktionen %q#D" #: cp/decl.c:1563 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ambiguating new declaration of %q#D" -msgstr "gör gammal deklaration %q+#D tvetydig" +msgstr "ny deklaration av %q#D som skapar tvetydighet" #: cp/decl.c:1573 #, gcc-internal-format @@ -31604,9 +31604,9 @@ msgstr "motstridande deklaration av %q#D" #: cp/decl.c:1575 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration as %q#D" -msgstr "tidigare deklaration %q+#D" +msgstr "tidigare deklaration som %q#D" #. [namespace.alias] #. @@ -31616,14 +31616,14 @@ #. declared as the name of any other entity in any global scope #. of the program. #: cp/decl.c:1627 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicting declaration of namespace %qD" -msgstr "motstridande deklaration av %q#D" +msgstr "motstridande deklaration av namnrymden %qD" #: cp/decl.c:1629 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration of namespace %qD here" -msgstr "tidigare deklaration av namnrymden %q+D här" +msgstr "tidigare deklaration av namnrymden %qD här" #: cp/decl.c:1641 #, gcc-internal-format @@ -31636,29 +31636,29 @@ msgstr "%q+#D tidigare deklarerad här" #: cp/decl.c:1652 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "prototype specified for %q#D" -msgstr "prototyp för %q+#D" +msgstr "prototyp angiven för %q#D" #: cp/decl.c:1654 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous non-prototype definition here" -msgstr "följer på definition som inte är en prototyp här" +msgstr "tidigare definition som inte är en prototyp här" #: cp/decl.c:1693 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "conflicting declaration of %q#D with %qL linkage" -msgstr "står i konflikt med ny deklaration med länkklass %qL" +msgstr "motstridig deklaration av %q#D med länkklass %qL" #: cp/decl.c:1696 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration with %qL linkage" -msgstr "tidigare deklaration av %q+#D med länkklass %qL" +msgstr "tidigare deklaration med länkklass %qL" #: cp/decl.c:1723 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "redeclaration of %q#D may not have default arguments" -msgstr "omdeklaration av vän %q#D kan inte ha standardmallargument" +msgstr "omdeklaration av %q#D kan inte ha standardargument" #: cp/decl.c:1738 cp/decl.c:1746 #, gcc-internal-format @@ -31666,9 +31666,9 @@ msgstr "standardargumentet angivet för parameter %d till %q#D" #: cp/decl.c:1741 cp/decl.c:1749 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous specification in %q#D here" -msgstr "efter tidigare specifikation i %q+#D" +msgstr "tidigare specifikation i %q#D här" #: cp/decl.c:1812 #, gcc-internal-format @@ -31676,9 +31676,9 @@ msgstr "överflödig omdeklaration av %qD i samma definitionsområde" #: cp/decl.c:1815 cp/decl.c:1825 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "previous declaration of %qD" -msgstr "tidigare deklaration av %q+D" +msgstr "tidigare deklaration av %qD" #: cp/decl.c:1823 #, gcc-internal-format @@ -32381,9 +32381,9 @@ msgstr "% är inte tillåtet i deklaration av vänmallspecialisering %qD" #: cp/decl.c:7499 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% is not allowed in declaration of friend template specialization %qD" -msgstr "% är inte tillåtet i deklaration av vänmallspecialisering %qD" +msgstr "% är inte tillåtet i deklaration av vänmallspecialisering %qD" #: cp/decl.c:7543 #, gcc-internal-format @@ -32396,9 +32396,9 @@ msgstr "det går inte att deklarera %<::main%> som inline" #: cp/decl.c:7547 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot declare %<::main%> to be constexpr" -msgstr "det går inte att deklarera %<::main%> som inline" +msgstr "det går inte att deklarera %<::main%> som constexpr" #: cp/decl.c:7549 #, gcc-internal-format @@ -32431,14 +32431,14 @@ msgstr "icke-medlemsfunktion %qD kan inte ha cv-kvalificerare" #: cp/decl.c:7620 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "static member function %qD cannot have ref-qualifier" -msgstr "statisk medlemsfunktion %qD kan inte ha cv-kvalificerare" +msgstr "statisk medlemsfunktion %qD kan inte ha ref-kvalificerare" #: cp/decl.c:7621 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "non-member function %qD cannot have ref-qualifier" -msgstr "icke-medlemsfunktion %qD kan inte ha cv-kvalificerare" +msgstr "icke-medlemsfunktion %qD kan inte ha ref-kvalificerare" #: cp/decl.c:7638 #, gcc-internal-format @@ -32650,9 +32650,9 @@ msgstr "flerdimensionell vektor måste ha gränser för alla dimensioner utom den första" #: cp/decl.c:8578 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "array of array of runtime bound" -msgstr "skapar vektor av funktioner" +msgstr "vektor av vektor av körtidsgräns" #: cp/decl.c:8609 #, gcc-internal-format @@ -32905,14 +32905,14 @@ msgstr "funktionen %qs använder typspecificeraren % utan avslutande returtyp" #: cp/decl.c:9611 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "deduced return type only available with -std=c++1y or -std=gnu++1y" -msgstr "avslutande returtyp är endast tillgänglig med -std=c++11 eller -std=gnu++11" +msgstr "härledd returtyp är endast tillgänglig med -std=c++1y eller -std=gnu++1y" #: cp/decl.c:9616 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "virtual function cannot have deduced return type" -msgstr "virtuella funktioner kan inte vara vänner" +msgstr "en virtuell funktion kan inte ha härledd returtyp" #: cp/decl.c:9621 #, gcc-internal-format @@ -32952,9 +32952,9 @@ msgstr "konstruerare får inte vara cv-kvalificerade" #: cp/decl.c:9683 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "destructors may not be ref-qualified" -msgstr "destruerare får inte vara cv-kvalificerade" +msgstr "destruerare får inte vara ref-kvalificerade" #: cp/decl.c:9701 #, gcc-internal-format @@ -33013,14 +33013,14 @@ msgstr "det går inte att deklarera en pekare till en kvalificerad funktionstyp %qT" #: cp/decl.c:9829 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "reference to array of runtime bound" -msgstr "Vektorreferens utanför gränserna" +msgstr "referens till vektor av körtidsgräns" #: cp/decl.c:9830 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "pointer to array of runtime bound" -msgstr "pekare till funktion använd i subtraktion" +msgstr "pekare till vektor av körtidsgräns" #: cp/decl.c:9899 #, gcc-internal-format @@ -33125,9 +33125,9 @@ msgstr "typedef deklarerad %" #: cp/decl.c:10176 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "typedef naming array of runtime bound" -msgstr "skapar vektor av funktioner" +msgstr "typedef som namnger vektor av körtidsgräns" #: cp/decl.c:10184 #, gcc-internal-format @@ -33185,9 +33185,9 @@ msgstr "det går inte att använda %<::%> i parameterdeklaration" #: cp/decl.c:10420 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "% parameter not permitted in this context" -msgstr "% kan inte användas i detta sammanhang" +msgstr "en %-parameter är tillåten i detta sammanhang" #: cp/decl.c:10422 #, gcc-internal-format @@ -33241,9 +33241,9 @@ msgstr "kvalificerat namn förväntades i vändeklaration för konstruerare %qD" #: cp/decl.c:10608 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "field %qD has incomplete type %qT" -msgstr "fält %qD har ofullständig typ" +msgstr "fältet %qD har den ofullständiga typen %qT" #: cp/decl.c:10611 #, gcc-internal-format @@ -33685,9 +33685,9 @@ msgstr "överspill i uppräkningsvärden vid %qD" #: cp/decl.c:12960 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "enumerator value %E is outside the range of underlying type %<%T%>" -msgstr "uppräkningsvärde %E är för stort för den underliggande typen %<%T%>" +msgstr "uppräkningsvärdet %E är utanför intervallet för den underliggande typen %<%T%>" #: cp/decl.c:13050 #, gcc-internal-format @@ -33883,9 +33883,9 @@ msgstr "bredden på bitfältet %qD har icke-heltalstyp %qT" #: cp/decl2.c:1388 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%q+D static data member inside of declare target directive" -msgstr "%qD är inte en statisk datamedlem i en klassmall" +msgstr "den statiska datamedlemmen %q+D är inuti deklarationsmålsdirektiv" #: cp/decl2.c:1438 #, gcc-internal-format @@ -34009,9 +34009,9 @@ msgstr "lambdauttryck är endast tillgängliga med -std=c++11 eller -std=gnu++11" #: cp/error.c:3494 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "C++11 auto only available with -std=c++11 or -std=gnu++11" -msgstr "C++0x auto är endast tillgängligt med -std=c++11 eller -std=gnu++11" +msgstr "C++11 auto är endast tillgängligt med -std=c++11 eller -std=gnu++11" #: cp/error.c:3498 #, gcc-internal-format @@ -34059,9 +34059,9 @@ msgstr "c++11-attribut är endast tillgängligt med -std=c++11 eller -std=gnu++11" #: cp/error.c:3542 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "ref-qualifiers only available with -std=c++11 or -std=gnu++11" -msgstr "användardefinierade literaler är endast tillgängliga med -std=c++11 eller -std=gnu++11" +msgstr "ref-kvalificerare är endast tillgängliga med -std=c++11 eller -std=gnu++11" #: cp/error.c:3591 #, gcc-internal-format @@ -34136,14 +34136,14 @@ msgstr "det går inte att deklarera en fångstparameter att vara av rvalue-referenstyp %qT" #: cp/except.c:994 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot throw expression of type %qT because it involves types of variable size" -msgstr "det går inte att skapa typinformation för typen %qT eftersom typer av variabel storlek är inblandade" +msgstr "det går inte att kasta ett uttryck av typen %qT eftersom typer av variabel storlek är inblandade" #: cp/except.c:997 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "cannot catch type %qT because it involves types of variable size" -msgstr "det går inte att skapa typinformation för typen %qT eftersom typer av variabel storlek är inblandade" +msgstr "det går inte att fånga typen %qT eftersom typer av variabel storlek är inblandade" #: cp/except.c:1083 #, gcc-internal-format @@ -34430,14 +34430,14 @@ msgstr "oinitierad referensmedlem i %q#T" #: cp/init.c:2143 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized reference member in base %q#T of %q#T using % without new-initializer" -msgstr "oinitierad referensmedlem i %q#T använder % utan new-initierare" +msgstr "oinitierad referensmedlem i basen %q#T till %q#T använder % utan new-initierare" #: cp/init.c:2147 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized reference member in base %q#T of %q#T" -msgstr "oinitierad referensmedlem i %q#T" +msgstr "oinitierad referensmedlem i basen %q#T till %q#T" #: cp/init.c:2163 #, gcc-internal-format @@ -34450,14 +34450,14 @@ msgstr "oinitierad const-medlem i %q#T" #: cp/init.c:2171 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized const member in base %q#T of %q#T using % without new-initializer" -msgstr "oinitierad const-medlem i %q#T använder % utan new-initierare" +msgstr "oinitierad const-medlem i basen %q#T till %q#T använder % utan new-initierare" #: cp/init.c:2175 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "uninitialized const member in base %q#T of %q#T" -msgstr "oinitierad const-medlem i %q#T" +msgstr "oinitierad const-medlem i basen %q#T till %q#T" #: cp/init.c:2317 #, gcc-internal-format @@ -34490,9 +34490,9 @@ msgstr "oinitierad const i % av %q#T" #: cp/init.c:2477 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qT isn%'t a valid Java class type" -msgstr "inte en giltig Java-.class-fil." +msgstr "%qT är inte en giltig Javaklasstyp" #: cp/init.c:2490 #, gcc-internal-format @@ -34545,14 +34545,14 @@ msgstr "kan inte hitta % i %qT" #: cp/init.c:3158 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "possible problem detected in invocation of delete [] operator:" -msgstr "möjligt problem upptäckt vid anrop av delete-operatorn:" +msgstr "möjligt problem upptäckt vid anrop av operatorn delete []:" #: cp/init.c:3162 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "neither the destructor nor the class-specific operator delete [] will be called, even if they are declared when the class is defined" -msgstr "varken destrueraren eller den klasspecifika operatorn delete kommer anropas, även om de är deklarerade när klassen definieras" +msgstr "varken destrueraren eller den klasspecifika operatorn delete [] kommer anropas, även om de är deklarerade när klassen definieras" #: cp/init.c:3661 #, gcc-internal-format @@ -34572,7 +34572,7 @@ #: cp/init.c:3913 #, gcc-internal-format msgid "possible problem detected in invocation of delete operator:" -msgstr "möjligt problem upptäckt vid anrop av delete-operatorn:" +msgstr "möjligt problem upptäckt vid anrop av operatorn delete:" #: cp/init.c:3918 #, gcc-internal-format @@ -34600,14 +34600,14 @@ msgstr "vektor- och körtidsgränser kan inte fångas av kopiering, endast via referens" #: cp/lambda.c:473 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "capture of variable-size type %qT that is not a C++1y array of runtime bound" -msgstr " vektortypen %qT med variabel storlek är inte ett giltigt mallargument" +msgstr "fångst av typen %qT med variabel storlek som inte är en C++1y-vektor av körtidsgräns" #: cp/lambda.c:477 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "because the array element type %qT has variable size" -msgstr "sammansatt literal har variabel storlek" +msgstr "eftersom vektorelementtypen %qT har variabel storlek" #: cp/lambda.c:485 #, gcc-internal-format @@ -34775,9 +34775,9 @@ msgstr "den standarddefinierade standardkonstrueraren initierar inte %q+#D" #: cp/method.c:1128 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "copying non-static data member %q#D of rvalue reference type" -msgstr "icke-statisk datamedlem %qD har Javaklasstyp" +msgstr "kopierar icke-statisk datamedlem %q#D med rvärdereferenstyp" #. A trivial constructor doesn't have any NSDMI. #: cp/method.c:1286 @@ -34825,9 +34825,9 @@ msgstr "stämmer inte med förväntad signatur %qD" #: cp/method.c:1814 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "function %q+D defaulted on its redeclaration with an exception-specification that differs from the implicit declaration %q#D" -msgstr "funktionen %q+D standarddefinierades i sin första deklaration med en undantagsspecifikation som skiljer från den implicita deklarationen %q#D" +msgstr "funktionen %q+D standarddefinierades i sin omdeklaration med en undantagsspecifikation som skiljer från den implicita deklarationen %q#D" #: cp/method.c:1838 #, gcc-internal-format @@ -35358,9 +35358,9 @@ msgstr "(kanske % avsågs)" #: cp/parser.c:2948 -#, fuzzy, gcc-internal-format +#, gcc-internal-format msgid "%qE in namespace %qE does not name a template type" -msgstr "%qE i namnrymden %qE är inte namnet på en typ" +msgstr "%qE i namnrymden %qE är inte namnet på en malltyp" #: cp/parser.c:2952 #, gcc-internal-format diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/real.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/real.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/real.c 2014-01-05 19:58:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/real.c 2014-03-27 17:33:34.000000000 +0000 @@ -1377,7 +1377,8 @@ const REAL_VALUE_TYPE *r) { REAL_VALUE_TYPE t; - HOST_WIDE_INT low, high; + unsigned HOST_WIDE_INT low; + HOST_WIDE_INT high; int exp; switch (r->cl) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/REVISION gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/REVISION --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/REVISION 2014-03-21 17:17:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/REVISION 2014-03-30 07:47:33.000000000 +0000 @@ -1 +1 @@ -[trunk revision 208753] +[trunk revision 208944] diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/rtlanal.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/rtlanal.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/rtlanal.c 2014-01-29 10:48:03.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/rtlanal.c 2014-03-26 08:19:14.000000000 +0000 @@ -224,10 +224,10 @@ return 0; } -/* Return nonzero if the use of X as an address in a MEM can cause a trap. - MODE is the mode of the MEM (not that of X) and UNALIGNED_MEMS controls - whether nonzero is returned for unaligned memory accesses on strict - alignment machines. */ +/* Return nonzero if the use of X+OFFSET as an address in a MEM with SIZE + bytes can cause a trap. MODE is the mode of the MEM (not that of X) and + UNALIGNED_MEMS controls whether nonzero is returned for unaligned memory + references on strict alignment machines. */ static int rtx_addr_can_trap_p_1 (const_rtx x, HOST_WIDE_INT offset, HOST_WIDE_INT size, @@ -235,11 +235,12 @@ { enum rtx_code code = GET_CODE (x); - if (STRICT_ALIGNMENT - && unaligned_mems - && GET_MODE_SIZE (mode) != 0) + /* The offset must be a multiple of the mode size if we are considering + unaligned memory references on strict alignment machines. */ + if (STRICT_ALIGNMENT && unaligned_mems && GET_MODE_SIZE (mode) != 0) { HOST_WIDE_INT actual_offset = offset; + #ifdef SPARC_STACK_BOUNDARY_HACK /* ??? The SPARC port may claim a STACK_BOUNDARY higher than the real alignment of %sp. However, when it does this, the @@ -298,8 +299,27 @@ return 0; case REG: - /* As in rtx_varies_p, we have to use the actual rtx, not reg number. */ - if (x == frame_pointer_rtx || x == hard_frame_pointer_rtx + /* Stack references are assumed not to trap, but we need to deal with + nonsensical offsets. */ + if (x == frame_pointer_rtx) + { + HOST_WIDE_INT adj_offset = offset - STARTING_FRAME_OFFSET; + if (size == 0) + size = GET_MODE_SIZE (mode); + if (FRAME_GROWS_DOWNWARD) + { + if (adj_offset < frame_offset || adj_offset + size - 1 >= 0) + return 1; + } + else + { + if (adj_offset < 0 || adj_offset + size - 1 >= frame_offset) + return 1; + } + return 0; + } + /* ??? Need to add a similar guard for nonsensical offsets. */ + if (x == hard_frame_pointer_rtx || x == stack_pointer_rtx /* The arg pointer varies if it is not a fixed register. */ || (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])) @@ -320,9 +340,7 @@ if (XEXP (x, 0) == pic_offset_table_rtx && CONSTANT_P (XEXP (x, 1))) return 0; - /* - or it is an address that can't trap plus a constant integer, - with the proper remainder modulo the mode size if we are - considering unaligned memory references. */ + /* - or it is an address that can't trap plus a constant integer. */ if (CONST_INT_P (XEXP (x, 1)) && !rtx_addr_can_trap_p_1 (XEXP (x, 0), offset + INTVAL (XEXP (x, 1)), size, mode, unaligned_mems)) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/pr60689.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/pr60689.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/pr60689.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/pr60689.c 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,10 @@ +/* PR c++/60689 */ +/* { dg-do compile } */ + +struct S { char x[9]; }; + +void +foo (struct S *x, struct S *y, struct S *z) +{ + __atomic_exchange (x, y, z, __ATOMIC_SEQ_CST); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c 2013-09-03 08:32:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,7 +1,7 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=integer-divide-by-zero -Wno-overflow" } */ -#include +#define INT_MIN (-__INT_MAX__ - 1) int main (void) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-1.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow" } */ +#include + #ifndef ASM1 # define ASM1(a) /* Nothing */ #endif @@ -51,6 +53,8 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + CHECK (FN1 (char, char, +), 23); CHECK (FN1 (char, char, -), 5); CHECK (FN1 (char, char, *), 126); @@ -258,5 +262,8 @@ CHECK (FN5 (long long int), -77); CHECK (FN5 (unsigned long long int), -77); + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */ +#include + #define SCHAR_MAX __SCHAR_MAX__ #define SHRT_MAX __SHRT_MAX__ #define INT_MAX __INT_MAX__ @@ -16,6 +18,8 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + #if __INT_MAX__ == 2147483647 /* Here, nothing should fail. */ volatile int j = INT_MAX; @@ -56,5 +60,8 @@ check (d, -32768); #endif + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */ +#include + #define SCHAR_MAX __SCHAR_MAX__ #define SHRT_MAX __SHRT_MAX__ #define INT_MAX __INT_MAX__ @@ -16,6 +18,8 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + /* Test integer promotion. */ #if __SCHAR_MAX__ == 127 volatile signed char a = -2; @@ -42,5 +46,8 @@ check (o, INT_MIN); #endif + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow" } */ +#include + __attribute__((noinline, noclone)) long long mul (long long x, long long y) { @@ -29,10 +31,16 @@ int main () { + fputs ("UBSAN TEST START\n", stderr); + unsigned int i; for (i = 0; i < sizeof (tab) / sizeof (long long); i += 3) if (mul (tab[i], tab[i + 1]) != tab[i + 2] || mul (tab[i + 1], tab[i]) != tab[i + 2]) __builtin_abort (); + + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */ +#include + #define SCHAR_MIN (-__SCHAR_MAX__ - 1) #define SHRT_MIN (-__SHRT_MAX__ - 1) #define INT_MIN (-__INT_MAX__ - 1) @@ -12,6 +14,8 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + volatile signed char c = -SCHAR_MIN; CHECK (c, -128); @@ -34,5 +38,8 @@ lli = -(unsigned long long) lli; CHECK (lli, -0x8000000000000000L); + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */ +#include + #define SCHAR_MAX __SCHAR_MAX__ #define SCHAR_MIN (-__SCHAR_MAX__ - 1) #define SHRT_MAX __SHRT_MAX__ @@ -18,6 +20,8 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + #if __INT_MAX__ == 2147483647 /* Here, nothing should fail. */ volatile int i = -1; @@ -58,5 +62,8 @@ check (d, 32767); #endif + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr59503.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr59503.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr59503.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr59503.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,13 +1,21 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=signed-integer-overflow" } */ +#include + int main (void) { + fputs ("UBSAN TEST START\n", stderr); + long long int a = 14; long int b = 9; asm volatile ("" : "+r" (a), "+r" (b)); if ((a - b) != 5) __builtin_abort (); + + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -0,0 +1,41 @@ +/* PR sanitizer/60613 */ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined" } */ + +#include + +long long y; + +__attribute__((noinline, noclone)) long long +foo (long long x) +{ + asm (""); + if (x >= 0 || x < -2040) + return 23; + x += 2040; + return x - y; +} + +__attribute__((noinline, noclone)) long long +bar (long long x) +{ + asm (""); + return 8LL - x; +} + +int +main () +{ + fputs ("UBSAN TEST START\n", stderr); + + y = 1; + if (foo (8 - 2040) != 8 - 1) + __builtin_abort (); + if (bar (1) != 8 - 1) + __builtin_abort (); + + fputs ("UBSAN TEST END\n", stderr); + return 0; +} + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-2.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60613-2.c 2014-03-26 08:19:15.000000000 +0000 @@ -0,0 +1,36 @@ +/* PR sanitizer/60613 */ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined" } */ + +long long y; + +__attribute__((noinline, noclone)) long long +foo (long long x) +{ + asm (""); + if (x >= 0 || x < -2040) + return 23; + x += 2040; + return x - y; +} + +__attribute__((noinline, noclone)) long long +bar (long long x) +{ + asm (""); + return 8LL - x; +} + +int +main () +{ + y = -__LONG_LONG_MAX__ + 6; + if (foo (8 - 2040) != -__LONG_LONG_MAX__) + __builtin_abort (); + if (bar (-__LONG_LONG_MAX__ + 5) != -__LONG_LONG_MAX__ + 1) + __builtin_abort (); + return 0; +} + +/* { dg-output "signed integer overflow: 8 \\- -9223372036854775801 cannot be represented in type 'long long int'(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*signed integer overflow: 8 \\- -9223372036854775802 cannot be represented in type 'long long int'" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60636.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60636.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60636.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/pr60636.c 2014-03-27 17:33:35.000000000 +0000 @@ -0,0 +1,15 @@ +/* PR sanitizer/60636 */ +/* { dg-do run } */ +/* { dg-options "-fsanitize=undefined" } */ + +volatile long long int a; + +int +main () +{ + long long int u = -__LONG_LONG_MAX__ - 1; + a = u > 0 ? u : -u; + return 0; +} + +/* { dg-output "negation of -9223372036854775808 cannot be represented in type 'long long int'" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/save-expr-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/save-expr-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/save-expr-1.c 2013-09-03 08:32:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/save-expr-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,11 +1,19 @@ /* { dg-do compile } */ /* { dg-options "-fsanitize=shift -Wall -Werror -O" } */ +#include + static int x; int main (void) { + fputs ("UBSAN TEST START\n", stderr); + int o = 1; int y = x << o; + + fputs ("UBSAN TEST END\n", stderr); return y; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-3.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-3.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-3.c 2013-09-03 08:32:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-3.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,11 +1,19 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=shift -w" } */ +#include + int main (void) { + fputs ("UBSAN TEST START\n", stderr); + unsigned int a = 1; a <<= 31; a <<= 1; + + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-6.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-6.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-6.c 2013-09-26 09:45:50.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/shift-6.c 2014-03-26 08:19:15.000000000 +0000 @@ -2,10 +2,14 @@ /* { dg-do run { target int32plus } } */ /* { dg-options "-fsanitize=shift -w" } */ +#include + int x = 7; int main (void) { + fputs ("UBSAN TEST START\n", stderr); + /* All of the following should pass. */ int A[128 >> 5] = {}; int B[128 << 5] = {}; @@ -26,5 +30,9 @@ case 128 >> (4 + 1): return 1; } + + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/undefined-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/undefined-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/undefined-1.c 2014-03-20 10:50:23.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/undefined-1.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=undefined" } */ +#include + int foo (int x, int y) { @@ -19,7 +21,13 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + foo (3, 2); bar (12, 42); + + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-2.c 2013-12-01 15:28:31.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-2.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,9 +1,13 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=vla-bound -Wall -Wno-unused-variable" } */ +#include + int main (void) { + fputs ("UBSAN TEST START\n", stderr); + const int t = 0; struct s { int x; @@ -11,5 +15,8 @@ int g[t]; }; + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-3.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-3.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-3.c 2013-12-01 15:28:31.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-3.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,6 +1,8 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=vla-bound" } */ +#include + /* Don't instrument the arrays here. */ int foo (int n, int a[]) @@ -11,6 +13,13 @@ int main (void) { + fputs ("UBSAN TEST START\n", stderr); + int a[6] = { }; - return foo (3, a); + int ret = foo (3, a); + + fputs ("UBSAN TEST END\n", stderr); + return ret; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-4.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-4.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-4.c 2013-11-03 20:55:51.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/c-c++-common/ubsan/vla-4.c 2014-03-26 08:19:15.000000000 +0000 @@ -1,13 +1,21 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=vla-bound" } */ +#include + int main (void) { + fputs ("UBSAN TEST START\n", stderr); + int x = 1; /* Check that the size of an array is evaluated only once. */ int a[++x]; if (x != 2) __builtin_abort (); + + fputs ("UBSAN TEST END\n", stderr); return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/ChangeLog 2014-03-21 17:14:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/ChangeLog 2014-03-30 07:40:40.000000000 +0000 @@ -1,3 +1,274 @@ +2014-03-29 Adam Butcher + + PR c++/60626 + * g++.dg/cpp1y/pr60626.C: New testcase. + +2014-03-29 Joseph Myers + + * gcc.dg/pr45416.c: Allow bextr on x86. + * gcc.target/i386/fma4-builtin.c, gcc.target/i386/fma4-fma-2.c, + gcc.target/i386/fma4-fma.c, gcc.target/i386/fma4-vector-2.c, + gcc.target/i386/fma4-vector.c: Use -mno-fma. + * gcc.target/i386/l_fma_double_1.c, + gcc.target/i386/l_fma_double_2.c, + gcc.target/i386/l_fma_double_3.c, + gcc.target/i386/l_fma_double_4.c, + gcc.target/i386/l_fma_double_5.c, + gcc.target/i386/l_fma_double_6.c, gcc.target/i386/l_fma_float_1.c, + gcc.target/i386/l_fma_float_2.c, gcc.target/i386/l_fma_float_3.c, + gcc.target/i386/l_fma_float_4.c, gcc.target/i386/l_fma_float_5.c, + gcc.target/i386/l_fma_float_6.c: Use -mno-fma4. + * gcc.target/i386/pr27971.c: Use -mno-tbm. + * gcc.target/i386/pr42542-4a.c: Use -mno-avx. + * gcc.target/i386/pr59390.c: Use -mno-fma -mno-fma4. + +2014-03-29 Jakub Jelinek + + PR target/60648 + * g++.dg/pr60648.C: Move test to... + * g++.dg/torture/pr60648.C: ... here. Run on all targets, remove + dg-options, add for fpic targets dg-additional-options -fPIC. + +2014-03-28 Eric Botcazou + + * gnat.dg/opt33.adb: New testcase. + +2014-03-28 Vladimir Makarov + + PR target/60697 + * gcc.target/aarch64/pr60697.c: New. + +2014-03-27 Jeff Law + + PR target/60648 + * g++.dg/pr60648.C: New test. + +2014-03-28 Adam Butcher + + PR c++/60573 + * g++.dg/cpp1y/pr60573.C: New testcase. + +2014-03-28 Jakub Jelinek + + PR target/60693 + * gcc.target/i386/pr60693.c: New test. + +2014-03-28 Vishnu K S + + * gcc.dg/pr59940.c (si): Use 32-bit SI mode instead of int. + +2014-03-28 Jakub Jelinek + + PR c++/60689 + * c-c++-common/pr60689.c: New test. + + PR c++/58678 + * g++.dg/abi/thunk6.C: Scan assembler for _ZTv0_n32_N1CD1Ev + only for lp64 targets and scan for _ZTv0_n16_N1CD1Ev for ilp32 + targets. + +2014-03-28 Vladimir Makarov + + PR target/60675 + * gcc.target/aarch64/pr60675.C: New. + +2014-03-28 Andreas Krebbel + + * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special + option. + * lib/target-supports.exp: Return true for s390 + in check_effective_logical_op_short_circuit. + +2014-03-28 Kirill Yukhin + + * gcc.target/i386/avx512f-vshuff32x4-2.c: Fix initialization + of second source operand. + * gcc.target/i386/avx512f-vshuff64x2-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi32x4-2.c: Ditto. + * gcc.target/i386/avx512f-vshufi64x2-2.c: Ditto. + +2014-03-28 Jakub Jelinek + + PR ipa/60315 + * g++.dg/torture/pr60315.C: Add -std=c++11 to dg-options. + +2014-03-28 Tobias Burnus + + * lib/cilk-plus-dg.exp: New. + * g++.dg/cilk-plus/cilk-plus.exp: Use it. + * gcc.dg/cilk-plus/cilk-plus.exp: Use it. + +2014-03-27 Thomas Koenig + + PR fortran/60522 + * gfortran.dg/where_4.f90: New test case. + +2014-03-27 Tobias Burnus + + PR fortran/58880 + * gfortran.dg/finalize_24.f90: New. + +2014-03-27 Michael Meissner + + * gcc.target/powerpc/p8vector-vbpermq.c: New test to test the + vbpermq builtin. + + * gcc.target/powerpc/vsx-extract-1.c: New test to test VSX + vec_select optimizations. + * gcc.target/powerpc/vsx-extract-2.c: Likewise. + * gcc.target/powerpc/vsx-extract-3.c: Likewise. + + PR target/60672 + * gcc.target/powerpc/pr60676.c: New file, make sure xxsldwi and + xxpermdi builtins are supported. + +2014-03-27 Vladimir Makarov + + PR rtl-optimization/60650 + * gcc.target/arm/pr60650.c: New. + +2014-03-27 Andreas Krebbel + + * gcc.target/s390/20140327-1.c: New testcase. + +2014-03-27 Jakub Jelinek + + PR middle-end/60682 + * g++.dg/gomp/pr60682.C: New test. + +2014-03-27 John David Anglin + + * gcc.dg/torture/pr60092.c: Remove default dg-skip-if arguments. + +2014-03-27 Marcus Shawcroft + + PR target/60580 + * gcc.target/aarch64/pr60580_1.c: New. + * gcc.target/aarch64/test_fp_attribute_1.c: New. + * gcc.target/aarch64/test_fp_attribute_2.c: New. + +2014-03-26 Dehao Chen + + * gcc.dg/predict-8.c: New test. + +2014-03-26 Fabien Chêne + + PR c++/52369 + * g++.dg/init/const10.C: New. + * g++.dg/init/const11.C: New. + * g++.dg/init/pr25811.C: Adjust. + * g++.dg/init/pr29043.C: Likewise. + * g++.dg/init/pr43719.C: Likewise. + * g++.dg/init/pr44086.C: Likewise. + * g++.dg/init/ctor8.C: Likewise. + * g++.dg/init/uninitialized1.C: Likewise. + +2014-03-26 Jakub Jelinek + + PR sanitizer/60636 + * c-c++-common/ubsan/pr60636.c: New test. + +2014-03-26 Andreas Schwab + + * g++.dg/torture/pr60315.C: Remove duplication. + +2014-03-26 Eric Botcazou + + * gcc.c-torture/execute/20140326-1.c: New test. + +2014-03-25 Jan Hubicka + + PR ipa/60315 + * g++.dg/torture/pr60315.C: New testcase. + +2014-03-25 Martin Jambor + + PR ipa/60600 + * g++.dg/ipa/pr60600.C: New test. + +2014-03-25 John David Anglin + + PR testsuite/58013 + * g++.dg/opt/pr56999.C: Pop hidden visibility. + +2014-03-25 Richard Biener + + PR middle-end/60635 + * gfortran.dg/lto/pr60635_0.f90: New testcase. + * gfortran.dg/lto/pr60635_1.c: Likewise. + +2014-03-24 Adam Butcher + + PR c++/60627 + * g++.dg/cpp1y/pr60627.C: New testcase. + +2014-03-24 Alex Velenko + + * gcc.target/aarch64/ushr64_1.c: New. + +2014-03-24 James Greenhalgh + + * gcc.target/aarch64/vect-abs.c (dg-options): Add -std=c99. + (LONG_LONG): Use LLONG. + (set_rvector_long): Explicitly return void. + (set_vector_long): Likewise. + (check_vector_long): Likewise. + +2014-03-24 Marek Polacek + + * c-c++-common/ubsan/div-by-zero-4.c: Don't include limits.h. Define + INT_MIN. + * c-c++-common/ubsan/overflow-1.c: Check for unwanted output. + * c-c++-common/ubsan/overflow-add-1.c: Likewise. + * c-c++-common/ubsan/overflow-mul-1.c: Likewise. + * c-c++-common/ubsan/overflow-mul-3.c: Likewise. + * c-c++-common/ubsan/overflow-negate-2.c: Likewise. + * c-c++-common/ubsan/overflow-sub-1.c: Likewise. + * c-c++-common/ubsan/pr59503.c: Likewise. + * c-c++-common/ubsan/pr60613-1.c: Likewise. + * c-c++-common/ubsan/save-expr-1.c: Likewise. + * c-c++-common/ubsan/shift-3.c: Likewise. + * c-c++-common/ubsan/shift-6.c: Likewise. + * c-c++-common/ubsan/undefined-1.c: Likewise. + * c-c++-common/ubsan/vla-2.c: Likewise. + * c-c++-common/ubsan/vla-3.c: Likewise. + * c-c++-common/ubsan/vla-4.c: Likewise. + * g++.dg/ubsan/cxx11-shift-1.C: Likewise. + * g++.dg/ubsan/return-2.C: Likewise. + +2014-03-23 John David Anglin + + * gcc.dg/tree-prof/pr59003.c: Add -fno-common to dg-options on + hppa*-*-hpux*. + + * gcc.dg/torture/pr60092.c: Skip on 32-bit hpux. + + PR libfortran/59313 + PR libfortran/58015 + * gfortran.dg/erf_3.F90: Skip on hppa*-*-hpux*. + * gfortran.dg/round_4.f90: Likewise. + +2014-03-23 Dominique d'Humieres + + PR libfortran/60128 + * gfortran.dg/fmt_en.f90: Update test. XFAIL for + i?86-*-solaris2.9*. + +2014-03-22 Jakub Jelinek + + PR sanitizer/60613 + * c-c++-common/ubsan/pr60613-1.c: New test. + * c-c++-common/ubsan/pr60613-2.c: New test. + +2014-03-22 Matthias Klose + + * g++.dg/cpp0x/regress: Remove empty directory. + +2014-03-22 Jakub Jelinek + + PR debug/60603 + * gcc.dg/debug/dwarf2/dwarf2-macro2.c: New test. + 2014-03-21 Paolo Carlini * g++.dg/cpp1y/pr60033.C: Use target c++1y. @@ -16,7 +287,7 @@ 2014-03-21 Martin Jambor PR ipa/59176 - * g++.dg/torture/pr59176.C: New test. + * g++.dg/torture/pr59176.C: New test. 2014-03-21 Martin Jambor diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.c-torture/execute/20140326-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.c-torture/execute/20140326-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.c-torture/execute/20140326-1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.c-torture/execute/20140326-1.c 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,10 @@ +int a; + +int +main (void) +{ + char e[2] = { 0, 0 }, f = 0; + if (a == 131072) + f = e[a]; + return f; +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp 2014-01-09 16:20:29.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp 2014-03-28 19:04:54.000000000 +0000 @@ -19,53 +19,45 @@ load_lib gcc-dg.exp load_lib lto.exp +load_lib cilk-plus-dg.exp if { ![check_effective_target_cilkplus] } { return; } -set library_var [get_multilibs] -# Pointing the ld_library_path to the Cilk Runtime library binaries. -append ld_library_path ":${library_var}/libcilkrts/.libs" -set_ld_library_path_env_vars - -global TEST_EXTRA_LIBS -set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs" - dg-init - -# Run the tests that are shared with C++. -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] " -ftree-vectorize -fcilkplus -std=c99" " " -# Run the C-only tests. -dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \ - "-ftree-vectorize -fcilkplus -std=c99" " " - -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " " - -if { [check_libcilkrts_available] } { - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " " - if { [check_effective_target_lto] } { - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " " - } +if [cilkplus_init] { + # Run the tests that are shared with C++. + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] " -ftree-vectorize -fcilkplus -std=c99" " " + # Run the C-only tests. + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \ + "-ftree-vectorize -fcilkplus -std=c99" " " + + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O2 -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " " + + if { [check_libcilkrts_available] } { + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " " + if { [check_effective_target_lto] } { + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " " + } + } + + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " " } - -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -std=c99" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -O3 -g" " " - +cilkplus_finish dg-finish - -unset TEST_EXTRA_LIBS diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c 2014-03-22 12:09:06.000000000 +0000 @@ -0,0 +1,7 @@ +/* Test to make sure the macro info includes the predefined macros with line number 0. */ +/* { dg-do compile } */ +/* { dg-options "-g3 -gdwarf -dA -fverbose-asm" } */ +/* { dg-final { scan-assembler "At line number 0" } } */ + +#define FOO 1 +int i; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr45416.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr45416.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr45416.c 2013-06-10 18:11:37.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr45416.c 2014-03-30 07:40:40.000000000 +0000 @@ -9,7 +9,7 @@ return 0; } -/* { dg-final { scan-assembler "andl" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } " */ +/* { dg-final { scan-assembler "andl|bextr" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } " */ /* { dg-final { scan-assembler-not "setne" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } }" */ /* { dg-final { scan-assembler "and|ubfx" { target arm*-*-* } } } */ /* { dg-final { scan-assembler-not "moveq" { target arm*-*-* } } }" */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr59940.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr59940.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr59940.c 2014-01-31 11:04:51.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/pr59940.c 2014-03-30 07:40:40.000000000 +0000 @@ -3,11 +3,12 @@ /* { dg-options "-Wconversion -Woverflow" } */ int f (unsigned int); +typedef sitype __attribute__((mode(SI))); int g (void) { - int si = 12; + sitype si = 12; unsigned int ui = -1; /* { dg-warning "21:negative integer implicitly converted to unsigned type" } */ unsigned char uc; ui = si; /* { dg-warning "8:conversion" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/predict-8.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/predict-8.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/predict-8.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/predict-8.c 2014-03-27 17:33:34.000000000 +0000 @@ -0,0 +1,12 @@ +/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ +/* { dg-options "-O2 -fdump-rtl-expand" } */ + +int foo(float a, float b) { + if (a == b) + return 1; + else + return 2; +} + +/* { dg-final { scan-rtl-dump-times "REG_BR_PROB 100" 1 "expand"} } */ +/* { dg-final { cleanup-rtl-dump "expand" } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/torture/pr60092.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/torture/pr60092.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/torture/pr60092.c 2014-02-21 09:32:56.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/torture/pr60092.c 2014-03-27 17:33:34.000000000 +0000 @@ -1,5 +1,6 @@ /* { dg-do run } */ /* { dg-require-weak "" } */ +/* { dg-skip-if "No undefined weak" { hppa*-*-hpux* && { ! lp64 } } } */ /* { dg-xfail-run-if "posix_memalign modifies first arg on error" { *-*-solaris2.11* } { "-O0" } } */ typedef __SIZE_TYPE__ size_t; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-prof/pr59003.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-prof/pr59003.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-prof/pr59003.c 2014-01-22 14:47:57.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-prof/pr59003.c 2014-03-26 08:19:14.000000000 +0000 @@ -1,6 +1,7 @@ /* PR target/59003 */ /* { dg-options "-O2" } */ /* { dg-options "-O2 -mtune=amdfam10" { target i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -fno-common" { target hppa*-*-hpux* } } */ __attribute__((noinline, noclone)) void * foo (void *p, unsigned int q) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c 2014-02-17 12:27:11.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c 2014-03-28 19:04:54.000000000 +0000 @@ -1,6 +1,5 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dom1-details" } */ -/* { dg-additional-options "-mbranch-cost=2" { target s390*-*-* } } */ struct bitmap_head_def; typedef struct bitmap_head_def *bitmap; typedef const struct bitmap_head_def *const_bitmap; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60580_1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60580_1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60580_1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60580_1.c 2014-03-27 17:33:34.000000000 +0000 @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -fomit-frame-pointer -fno-inline --save-temps" } */ + +void +func_leaf (void) +{ + int a = 0; +} + +void +func_no_leaf (void) +{ + int a = 0; + func_leaf (); +} + +void +func1 (void) +{ + int a = 0; + func_no_leaf (); +} + +/* + * This function calls XXX(), which modifies SP. This is incompatible to + * -fomit-frame-pointer generated code as SP is used to access the frame. + */ +__attribute__ ((optimize("no-omit-frame-pointer"))) +void +func2 (void) +{ + int a = 0; + func_no_leaf (); +} + +void +func3 (void) +{ + int a = 0; + func_no_leaf (); +} + +/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60675.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60675.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60675.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60675.C 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,277 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c++11 -w -O2 -fPIC" } */ +namespace CLHEP { + static const double meter = 1000.*10; + static const double meter2 = meter*meter; + static const double megaelectronvolt = 1. ; + static const double gigaelectronvolt = 1.e+3; + static const double GeV = gigaelectronvolt; + static const double megavolt = megaelectronvolt; + static const double volt = 1.e-6*megavolt; + static const double tesla = volt*1.e+9/meter2; + } + using CLHEP::GeV; + using CLHEP::tesla; + namespace std { + typedef long int ptrdiff_t; + } + extern "C" { + extern double cos (double __x) throw (); + extern double sin (double __x) throw (); + extern double sqrt (double __x) throw (); + } + namespace std __attribute__ ((__visibility__ ("default"))) { + using ::cos; + using ::sin; + using ::sqrt; + template struct char_traits; + template > struct basic_ostream; + typedef basic_ostream ostream; + template struct iterator_traits { }; + template struct iterator_traits<_Tp*> { + typedef ptrdiff_t difference_type; + typedef _Tp& reference; + }; + } + namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { + using std::iterator_traits; + template struct __normal_iterator { + _Iterator _M_current; + typedef iterator_traits<_Iterator> __traits_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::reference reference; + explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { } + reference operator*() const { + return *_M_current; + } + __normal_iterator operator+(difference_type __n) const { + return __normal_iterator(_M_current + __n); + } + }; + template struct new_allocator { + }; + } + namespace std __attribute__ ((__visibility__ ("default"))) { + template struct allocator: public __gnu_cxx::new_allocator<_Tp> { + }; + struct ios_base { }; + template struct basic_ios : public ios_base { }; + template struct basic_ostream : virtual public basic_ios<_CharT, _Traits> { + typedef basic_ostream<_CharT, _Traits> __ostream_type; + __ostream_type& operator<<(__ostream_type& (*__pf)(__ostream_type&)) { } + __ostream_type& operator<<(const void* __p) { + return _M_insert(__p); + } + template __ostream_type& _M_insert(_ValueT __v); + }; + template inline basic_ostream<_CharT, _Traits>& endl(basic_ostream<_CharT, _Traits>& __os) { + } + } + typedef double G4double; + typedef int G4int; + extern __thread std::ostream *G4cout_p; + struct G4Field; + struct G4FieldManager { + inline G4Field* GetDetectorField() ; + }; + namespace CLHEP { + struct Hep3Vector { + Hep3Vector(double x, double y, double z); + inline ~Hep3Vector(); + inline double x() const; + inline double y() const; + inline double z() const; + inline double mag() const; + inline Hep3Vector cross(const Hep3Vector &) const; + double dx; + double dy; + double dz; + }; + Hep3Vector operator / (const Hep3Vector &, double a); + inline double Hep3Vector::x() const { + return dx; + } + inline double Hep3Vector::y() const { + return dy; + } + inline double Hep3Vector::z() const { + return dz; + } + inline Hep3Vector operator + (const Hep3Vector & a, const Hep3Vector & b) { } + inline Hep3Vector operator * (const Hep3Vector & p, double a) { } + inline double operator * (const Hep3Vector & a, const Hep3Vector & b) { } + inline Hep3Vector::Hep3Vector(double x1, double y1, double z1) : dx(x1), dy(y1), dz(z1) { + } + inline Hep3Vector::~Hep3Vector() { } + inline Hep3Vector Hep3Vector::cross(const Hep3Vector & p) const { + return Hep3Vector(dy*p.dz-p.dy*dz, dz*p.dx-p.dz*dx, dx*p.dy-p.dx*dy); + } + } + typedef CLHEP::Hep3Vector G4ThreeVector; + namespace std __attribute__ ((__visibility__ ("default"))) { + template > struct vector + { + typedef _Tp *pointer; + typedef __gnu_cxx::__normal_iterator iterator; + iterator begin() { } + }; + } + struct G4TransportationManager { + static G4TransportationManager* GetTransportationManager(); + inline G4FieldManager* GetFieldManager() const; + }; + struct G4ErrorMatrix { + G4ErrorMatrix(G4int p, G4int q, G4int i); + virtual ~G4ErrorMatrix(); + struct G4ErrorMatrix_row { + inline G4ErrorMatrix_row(G4ErrorMatrix&,G4int); + G4double & operator[](G4int); + G4ErrorMatrix& _a; + G4int _r; + }; + inline G4ErrorMatrix_row operator[] (G4int); + std::vector m; + G4int nrow, ncol; + }; + inline G4ErrorMatrix::G4ErrorMatrix_row G4ErrorMatrix::operator[] (G4int r) { + G4ErrorMatrix_row b(*this,r); + return b; + } + inline G4double &G4ErrorMatrix::G4ErrorMatrix_row::operator[](G4int c) { + return *(_a.m.begin()+_r*_a.ncol+c); + } + inline G4ErrorMatrix:: G4ErrorMatrix_row::G4ErrorMatrix_row(G4ErrorMatrix&a, G4int r) : _a(a) { + _r = r; + }; + struct G4DynamicParticle { + G4double GetCharge() const; + }; + struct G4Step; + struct G4Track { + const G4DynamicParticle* GetDynamicParticle() const; + const G4ThreeVector& GetPosition() const; + G4ThreeVector GetMomentum() const; + const G4Step* GetStep() const; + }; + struct G4StepPoint { + const G4ThreeVector& GetPosition() const; + G4ThreeVector GetMomentum() const; + }; + struct G4Step { + G4StepPoint* GetPreStepPoint() const; + G4double GetStepLength() const; + }; + namespace HepGeom { + template struct BasicVector3D { + T v_[3]; + BasicVector3D(T x1, T y1, T z1) { } + operator T * () { + return v_; + } + T x() const { + return v_[0]; + } + T y() const { + return v_[1]; + } + T z() const { + return v_[2]; + } + T perp2() const { } + T perp() const { + return std::sqrt(perp2()); + } + T mag2() const { } + T mag() const { + return std::sqrt(mag2()); + } + T theta() const { } + }; + inline BasicVector3D operator-(const BasicVector3D & a,const BasicVector3D & b) { } + inline BasicVector3D operator*(const BasicVector3D & v, double a) { } + template struct Point3D : public BasicVector3D { + explicit Point3D(const double * a) : BasicVector3D(a[0],a[1],a[2]) { } + Point3D(const CLHEP::Hep3Vector & v) : BasicVector3D(v.dx,v.dy,v.dz) { } + }; + } + typedef HepGeom::Point3D G4Point3D; + namespace HepGeom { + template struct Vector3D : public BasicVector3D { + Vector3D(const BasicVector3D & v) : BasicVector3D(v) { } + Vector3D(const CLHEP::Hep3Vector & v) : BasicVector3D(v.dx,v.dy,v.dz) { } + operator CLHEP::Hep3Vector () const { } + }; + } + typedef HepGeom::Vector3D G4Vector3D; + struct G4ErrorFreeTrajState +{ + virtual G4int PropagateError( const G4Track* aTrack ); + G4int PropagateErrorMSC( const G4Track* aTrack ); + }; + G4int G4ErrorFreeTrajState::PropagateError( const G4Track* aTrack ) { + G4double stepLengthCm = aTrack->GetStep()->GetStepLength()/10.; + G4Point3D vposPost = aTrack->GetPosition()/10.; + G4Vector3D vpPost = aTrack->GetMomentum()/GeV; + G4Point3D vposPre = aTrack->GetStep()->GetPreStepPoint()->GetPosition()/10.; + G4Vector3D vpPre = aTrack->GetStep()->GetPreStepPoint()->GetMomentum()/GeV; + G4double pPre = vpPre.mag(); + G4double pPost = vpPost.mag(); + G4double pInvPre = 1./pPre; + G4double pInvPost = 1./pPost; + G4double deltaPInv = pInvPost - pInvPre; + G4Vector3D vpPreNorm = vpPre * pInvPre; + G4Vector3D vpPostNorm = vpPost * pInvPost; + (*G4cout_p) << "G4EP: vpPreNorm " << vpPreNorm << " vpPostNorm " << vpPostNorm << std::endl; + G4double sinpPre = std::sin( vpPreNorm.theta() ); + G4double sinpPostInv = 1./std::sin( vpPreNorm.theta() ); + G4ErrorMatrix transf(5, 5, 0 ); + G4double charge = aTrack->GetDynamicParticle()->GetCharge(); + G4double h1[3], h2[3]; + G4Field* field += G4TransportationManager::GetTransportationManager()->GetFieldManager()->GetDetectorField() +; + if( charge != 0. && field ) + { + G4ThreeVector HPre = G4ThreeVector( h1[0], h1[1], h1[2] ) / tesla *10.; + G4ThreeVector HPost= G4ThreeVector( h2[0], h2[1], h2[2] ) / tesla *10.; + { + G4double pInvAver = 1./(pInvPre + pInvPost ); + G4double CFACT8 = 2.997925E-4; + G4ThreeVector vHAverNorm( (HPre*pInvPre + HPost*pInvPost ) * pInvAver * charge * CFACT8 ); + G4double HAver = vHAverNorm.mag(); + G4double pAver = (pPre+pPost)*0.5; + G4double QAver = -HAver/pAver; + G4double thetaAver = QAver * stepLengthCm; + G4double sinThetaAver = std::sin(thetaAver); + G4double cosThetaAver = std::cos(thetaAver); + G4double gamma = vHAverNorm * vpPostNorm; + G4ThreeVector AN2 = vHAverNorm.cross( vpPostNorm ); + G4double AU = 1./vpPreNorm.perp(); + G4ThreeVector vUPre( -AU*vpPreNorm.y(), AU*vpPreNorm.x(), 0. ); + G4ThreeVector vVPre( -vpPreNorm.z()*vUPre.y(), vpPreNorm.z()*vUPre.x(), vpPreNorm.x()*vUPre.y() - vpPreNorm.y()*vUPre.x() ); + AU = 1./vpPostNorm.perp(); + G4ThreeVector vUPost( -AU*vpPostNorm.y(), AU*vpPostNorm.x(), 0. ); + G4ThreeVector vVPost( -vpPostNorm.z()*vUPost.y(), vpPostNorm.z()*vUPost.x(), vpPostNorm.x()*vUPost.y() - vpPostNorm.y()*vUPost.x() ); + G4Point3D deltaPos( vposPre - vposPost ); + G4double QP = QAver * pAver; + G4double ANV = -( vHAverNorm.x()*vUPost.x() + vHAverNorm.y()*vUPost.y() ); + G4double ANU = ( vHAverNorm.x()*vVPost.x() + vHAverNorm.y()*vVPost.y() + vHAverNorm.z()*vVPost.z() ); + G4double OMcosThetaAver = 1. - cosThetaAver; + G4double TMSINT = thetaAver - sinThetaAver; + G4ThreeVector vHUPre( -vHAverNorm.z() * vUPre.y(), vHAverNorm.z() * vUPre.x(), vHAverNorm.x() * vUPre.y() - vHAverNorm.y() * vUPre.x() ); + G4ThreeVector vHVPre( vHAverNorm.y() * vVPre.z() - vHAverNorm.z() * vVPre.y(), vHAverNorm.z() * vVPre.x() - vHAverNorm.x() * vVPre.z(), vHAverNorm.x() * vVPre.y() - vHAverNorm.y() * vVPre.x() ); + transf[0][1] = -deltaPInv/thetaAver* ( TMSINT*gamma*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) + sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) + OMcosThetaAver*(vHVPre.x()*vpPostNorm.x()+vHVPre.y()*vpPostNorm.y()+vHVPre.z()*vpPostNorm.z()) ); + transf[0][2] = -sinpPre*deltaPInv/thetaAver* ( TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) + sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vHUPre.x()*vpPostNorm.x()+vHUPre.y()*vpPostNorm.y()+vHUPre.z()*vpPostNorm.z()) ); + transf[0][3] = -deltaPInv/stepLengthCm*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ); + transf[1][1] = cosThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) + sinThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) + OMcosThetaAver*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z())* (vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z()) + ANV*( -sinThetaAver*(vVPre.x()*vpPostNorm.x()+vVPre.y()*vpPostNorm.y()+vVPre.z()*vpPostNorm.z()) + OMcosThetaAver*(vVPre.x()*AN2.x()+vVPre.y()*AN2.y()+vVPre.z()*AN2.z()) - TMSINT*gamma*(vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) ); + transf[1][2] = cosThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) + sinThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) + OMcosThetaAver*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() )* (vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z()) + ANV*( -sinThetaAver*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() ) + OMcosThetaAver*(vUPre.x()*AN2.x()+vUPre.y()*AN2.y() ) - TMSINT*gamma*(vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) ); + transf[2][0] = -QP*ANU*(vpPostNorm.x()*deltaPos.x()+vpPostNorm.y()*deltaPos.y()+vpPostNorm.z()*deltaPos.z())*sinpPostInv *(1.+deltaPInv*pAver); + transf[2][3] = -QAver*ANU*(vUPre.x()*vpPostNorm.x()+vUPre.y()*vpPostNorm.y() )*sinpPostInv; + transf[3][4] = (vVPre.x()*vUPost.x()+vVPre.y()*vUPost.y() ); + transf[4][0] = pAver*(vVPost.x()*deltaPos.x()+vVPost.y()*deltaPos.y()+vVPost.z()*deltaPos.z()) *(1.+deltaPInv*pAver); + transf[4][1] = ( sinThetaAver*(vVPre.x()*vVPost.x()+vVPre.y()*vVPost.y()+vVPre.z()*vVPost.z()) + OMcosThetaAver*(vHVPre.x()*vVPost.x()+vHVPre.y()*vVPost.y()+vHVPre.z()*vVPost.z()) + TMSINT*(vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z())* (vHAverNorm.x()*vVPre.x()+vHAverNorm.y()*vVPre.y()+vHAverNorm.z()*vVPre.z()) )/QAver; + transf[4][2] = ( sinThetaAver*(vUPre.x()*vVPost.x()+vUPre.y()*vVPost.y() ) + OMcosThetaAver*(vHUPre.x()*vVPost.x()+vHUPre.y()*vVPost.y()+vHUPre.z()*vVPost.z()) + TMSINT*(vHAverNorm.x()*vVPost.x()+vHAverNorm.y()*vVPost.y()+vHAverNorm.z()*vVPost.z())* (vHAverNorm.x()*vUPre.x()+vHAverNorm.y()*vUPre.y() ) )*sinpPre/QAver; + } + } + PropagateErrorMSC( aTrack ); + } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60697.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60697.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60697.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/pr60697.c 2014-03-30 07:40:38.000000000 +0000 @@ -0,0 +1,638 @@ +/* { dg-do compile } */ +/* { dg-options "-w -O3 -mcpu=cortex-a53" } */ +typedef struct __sFILE __FILE; +typedef __FILE FILE; +typedef int atom_id; +typedef float real; +typedef real rvec[3]; +typedef real matrix[3][3]; +enum { + ebCGS,ebMOLS,ebSBLOCKS,ebNR +}; +enum { + efepNO, efepYES, efepNR +}; +enum { + esolNO, esolMNO, esolWATER, esolWATERWATER, esolNR +}; +typedef struct { + int nr; + atom_id *index; + atom_id *a; +} t_block; +enum { + F_LJ, + F_LJLR, + F_SR, + F_LR, + F_DVDL, +}; +typedef struct { + t_block excl; +} t_atoms; +typedef struct { + t_atoms atoms; + t_block blocks[ebNR]; +} t_topology; +typedef struct { +} t_nsborder; +extern FILE *debug; +typedef struct { +} t_nrnb; +typedef struct { + int nri,maxnri; + int nrj,maxnrj; + int maxlen; + int solvent; + int *gid; + int *jindex; + atom_id *jjnr; + int *nsatoms; +} t_nblist; +typedef struct { + int nrx,nry,nrz; +} t_grid; +typedef struct { +} t_commrec; +enum { eNL_VDWQQ, eNL_VDW, eNL_QQ, + eNL_VDWQQ_FREE, eNL_VDW_FREE, eNL_QQ_FREE, + eNL_VDWQQ_SOLMNO, eNL_VDW_SOLMNO, eNL_QQ_SOLMNO, + eNL_VDWQQ_WATER, eNL_QQ_WATER, + eNL_VDWQQ_WATERWATER, eNL_QQ_WATERWATER, + eNL_NR }; +typedef struct { + real rlist,rlistlong; + real rcoulomb_switch,rcoulomb; + real rvdw_switch,rvdw; + int efep; + int cg0,hcg; + int *solvent_type; + int *mno_index; + rvec *cg_cm; + t_nblist nlist_sr[eNL_NR]; + t_nblist nlist_lr[eNL_NR]; + int bTwinRange; + rvec *f_twin; + int *eg_excl; +} t_forcerec; +typedef struct { + real *chargeA,*chargeB,*chargeT; + int *bPerturbed; + int *typeA,*typeB; + unsigned short *cTC,*cENER,*cACC,*cFREEZE,*cXTC,*cVCM; +} t_mdatoms; +enum { egCOUL, egLJ, egBHAM, egLR, egLJLR, egCOUL14, egLJ14, egNR }; +typedef struct { + real *ee[egNR]; +} t_grp_ener; +typedef struct { + t_grp_ener estat; +} t_groups; +typedef unsigned long t_excl; +static void reset_nblist(t_nblist *nl) +{ + nl->nri = 0; + nl->nrj = 0; + nl->maxlen = 0; + if (nl->maxnri > 0) { + nl->gid[0] = -1; + if (nl->maxnrj > 1) { + nl->jindex[0] = 0; + nl->jindex[1] = 0; + } + } +} +static void reset_neighbor_list(t_forcerec *fr,int bLR,int eNL) +{ + reset_nblist(&(fr->nlist_lr[eNL])); +} +static void close_i_nblist(t_nblist *nlist) +{ + int nri = nlist->nri; + int len; + nlist->jindex[nri+1] = nlist->nrj; + len=nlist->nrj - nlist->jindex[nri]; + if (nlist->solvent==esolMNO) + len *= nlist->nsatoms[3*nri]; + if(len > nlist->maxlen) + nlist->maxlen = len; +} +static void close_nblist(t_nblist *nlist) +{ + if (nlist->maxnri > 0) { + int nri = nlist->nri; + if ((nlist->jindex[nri+1] > nlist->jindex[nri]) && + (nlist->gid[nri] != -1)) { + nlist->nri++; + nlist->jindex[nri+2] = nlist->nrj; + } + } +} +static void close_neighbor_list(t_forcerec *fr,int bLR,int eNL) +{ + close_nblist(&(fr->nlist_lr[eNL])); +} +static void add_j_to_nblist(t_nblist *nlist,atom_id j_atom) +{ + int nrj=nlist->nrj; + nlist->jjnr[nrj] = j_atom; + nlist->nrj ++; +} +static void put_in_list(int bHaveLJ[], + int ngid,t_mdatoms *md, + int icg,int jgid,int nj,atom_id jjcg[], + atom_id index[], + t_excl bExcl[],int shift, + t_forcerec *fr,int bLR, + int bVDWOnly,int bCoulOnly) +{ + t_nblist *vdwc,*vdw,*coul; + t_nblist *vdwc_ww=((void *)0),*coul_ww=((void *)0); + t_nblist *vdwc_free=((void *)0),*vdw_free=((void *)0),*coul_free=((void *)0); + int i,j,jcg,igid,gid,ind_ij; + atom_id jj,jj0,jj1,i_atom; + int i0,nicg,len; + int *type,*typeB; + unsigned short *cENER; + real *charge,*chargeB; + real qi,qiB,qq,rlj; + int bWater,bMNO,bFree,bFreeJ,bNotEx,*bPert; + charge = md->chargeA; + chargeB = md->chargeB; + type = md->typeA; + typeB = md->typeB; + cENER = md->cENER; + bPert = md->bPerturbed; + i0 = index[icg]; + nicg = index[icg+1]-i0; + bMNO = (fr->solvent_type[icg] == esolMNO); + if (bLR) { + if (bWater) { + vdw = &fr->nlist_lr[eNL_VDW]; + coul = &fr->nlist_lr[eNL_QQ_WATER]; + vdwc_ww = &fr->nlist_lr[eNL_VDWQQ_WATERWATER]; + } else if(bMNO) { + vdwc = &fr->nlist_lr[eNL_VDWQQ_SOLMNO]; + } + if (fr->efep != efepNO) { + vdw_free = &fr->nlist_lr[eNL_VDW_FREE]; + coul_free = &fr->nlist_lr[eNL_QQ_FREE]; + } + } + else { + if (bWater) { + } else if(bMNO) { + vdwc = &fr->nlist_sr[eNL_VDWQQ_SOLMNO]; + } + if (fr->efep != efepNO) { + vdwc_free = &fr->nlist_sr[eNL_VDWQQ_FREE]; + } + } + if (fr->efep==efepNO) { + if (bWater) { + igid = cENER[i_atom]; + gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid)); + if (!bCoulOnly && !bVDWOnly) { + new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + new_i_nblist(vdwc_ww,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + } + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LJLR : F_LJ,i_atom,shift,gid,((void *)0)); + if (!bVDWOnly) { + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0)); + new_i_nblist(coul_ww,bLR ? F_LR : F_SR,i_atom,shift,gid,((void *)0)); + } + for(j=0; (jsolvent_type[jcg] == esolWATER)) { + if (bVDWOnly) + add_j_to_nblist(vdw,jj0); + else { + add_j_to_nblist(coul_ww,jj0); + add_j_to_nblist(vdwc_ww,jj0); + } + } else { + jj1 = index[jcg+1]; + if (bCoulOnly) { + for(jj=jj0; (jj 1.2e-38) + add_j_to_nblist(coul,jj); + } + } else if (bVDWOnly) { + for(jj=jj0; (jj 1.2e-38) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } + } + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + close_i_nblist(coul_ww); + close_i_nblist(vdwc_ww); + } else if (bMNO) { + igid = cENER[i_atom]; + gid = ((igid < jgid) ? (igid*ngid+jgid) : (jgid*ngid+igid)); + if (!bCoulOnly && !bVDWOnly) + new_i_nblist(vdwc,bLR ? F_LJLR : F_LJ,i_atom,shift,gid, + &(fr->mno_index[icg*3])); + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid, + &(fr->mno_index[icg*3])); + if (!bVDWOnly) + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid, + &(fr->mno_index[icg*3])); + for(j=0; (j 1.2e-38) + add_j_to_nblist(coul,jj); + } else if (bVDWOnly) { + if (bHaveLJ[type[jj]]) + add_j_to_nblist(vdw,jj); + } else { + if (bHaveLJ[type[jj]]) { + if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(charge[jj]) > 1.2e-38) + add_j_to_nblist(coul,jj); + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + } + } else { + for(i=0; i 1.2e-38) + add_j_to_nblist(coul,jj); + } else if (bVDWOnly) { + if (bHaveLJ[type[jj]]) + add_j_to_nblist(vdw,jj); + } else { + if (bHaveLJ[type[jj]]) { + if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(coul,jj); + } + } + } + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + } + } + } else { + for(i=0; imno_index[icg*3]) : ((void *)0)); + if (!bCoulOnly) + new_i_nblist(vdw,bLR ? F_LR : F_SR,i_atom,shift,gid, + bMNO ? &(fr->mno_index[icg*3]) : ((void *)0)); + new_i_nblist(coul,bLR ? F_LR : F_SR,i_atom,shift,gid, + bMNO ? &(fr->mno_index[icg*3]) : ((void *)0)); + new_i_nblist(vdw_free,F_DVDL,i_atom,shift,gid,((void *)0)); + new_i_nblist(coul_free,F_DVDL,i_atom,shift,gid,((void *)0)); + new_i_nblist(vdwc_free,F_DVDL,i_atom,shift,gid,((void *)0)); + if (!(bVDWOnly || (fabs(qi)<1.2e-38 && fabs(qiB)<1.2e-38)) || + !(bCoulOnly || (!bHaveLJ[type[i_atom]] && !bHaveLJ[typeB[i_atom]]))) { + for(j=0; (j 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(vdwc,jj); + add_j_to_nblist(vdw,jj); + } else if (fabs(qi) > 1.2e-38 && (fabs(charge[jj]) > 1.2e-38)) + add_j_to_nblist(coul,jj); + } + } + } + } + } + } + close_i_nblist(vdw); + close_i_nblist(coul); + close_i_nblist(vdwc); + if (bWater && (i==0)) { + close_i_nblist(coul_ww); + close_i_nblist(vdwc_ww); + } + close_i_nblist(vdw_free); + close_i_nblist(coul_free); + close_i_nblist(vdwc_free); + } + } +} +static void setexcl(atom_id start,atom_id end,t_block *excl,int b, + t_excl bexcl[]) +{ + atom_id i,k; + if (b) { + for(i=start; iindex[i]; kindex[i+1]; k++) { + (bexcl)[((atom_id) (excl->a[k]))] |= (1<<((atom_id) (i-start))); + } + } + } +} +int calc_naaj(int icg,int cgtot) +{ + int naaj; + if ((cgtot % 2) == 1) { + naaj = 1+(cgtot/2); + } + else if ((cgtot % 4) == 0) { + if (icg < cgtot/2) { + if ((icg % 2) == 0) + naaj=1+(cgtot/2); + } + else { + if ((icg % 2) == 1) + naaj=1+(cgtot/2); + } + } + else { + if ((icg % 2) == 0) + naaj=1+(cgtot/2); + else + naaj=cgtot/2; + } + return naaj; +} +static void get_dx(int Nx,real gridx,real grid_x,real rc2,real x, + int *dx0,int *dx1,real *dcx2) +{ + real dcx,tmp; + int xgi,xgi0,xgi1,i; + xgi = (int)(Nx+x*grid_x)-Nx; + if (xgi < 0) { + *dx0 = 0; + *dx1 = -1; + } else if (xgi >= Nx) { + *dx0 = Nx; + *dx1 = Nx-1; + } else { + dcx2[xgi] = 0; + *dx0 = xgi; + xgi0 = xgi-1; + *dx1 = xgi; + xgi1 = xgi+1; + } + for(i=xgi0; i>=0; i--) { + dcx = (i+1)*gridx-x; + tmp = dcx*dcx; + if (tmp >= rc2) + *dx0 = i; + dcx2[i] = tmp; + } + for(i=xgi1; i= rc2) + *dx1 = i; + dcx2[i] = tmp; + } +} +static void do_longrange(FILE *log,t_commrec *cr,t_topology *top,t_forcerec *fr, + int ngid,t_mdatoms *md,int icg, + int jgid,int nlr, + atom_id lr[],t_excl bexcl[],int shift, + rvec x[],rvec box_size,t_nrnb *nrnb, + real lambda,real *dvdlambda, + t_groups *grps,int bVDWOnly,int bCoulOnly, + int bDoForces,int bHaveLJ[]) +{ + int i; + for(i=0; (inlist_lr[i].nri > fr->nlist_lr[i].maxnri-32) || bDoForces) { + close_neighbor_list(fr,1,i); + do_fnbf(log,cr,fr,x,fr->f_twin,md, + grps->estat.ee[egLJLR],grps->estat.ee[egLR],box_size, + nrnb,lambda,dvdlambda,1,i); + reset_neighbor_list(fr,1,i); + } + } + if (!bDoForces) { + put_in_list(bHaveLJ,ngid,md,icg,jgid,nlr,lr,top->blocks[ebCGS].index, + bexcl,shift,fr, + 1,bVDWOnly,bCoulOnly); + } +} +static int ns5_core(FILE *log,t_commrec *cr,t_forcerec *fr,int cg_index[], + matrix box,rvec box_size,int ngid, + t_topology *top,t_groups *grps, + t_grid *grid,rvec x[],t_excl bexcl[],int *bExcludeAlleg, + t_nrnb *nrnb,t_mdatoms *md, + real lambda,real *dvdlambda, + int bHaveLJ[]) +{ + static atom_id **nl_lr_ljc,**nl_lr_one,**nl_sr=((void *)0); + static int *nlr_ljc,*nlr_one,*nsr; + static real *dcx2=((void *)0),*dcy2=((void *)0),*dcz2=((void *)0); + t_block *cgs=&(top->blocks[ebCGS]); + unsigned short *gid=md->cENER; + int tx,ty,tz,dx,dy,dz,cj; + int dx0,dx1,dy0,dy1,dz0,dz1; + int Nx,Ny,Nz,shift=-1,j,nrj,nns,nn=-1; + real gridx,gridy,gridz,grid_x,grid_y,grid_z; + int icg=-1,iicg,cgsnr,i0,nri,naaj,min_icg,icg_naaj,jjcg,cgj0,jgid; + int bVDWOnly,bCoulOnly; + rvec xi,*cgcm; + real r2,rs2,rvdw2,rcoul2,rm2,rl2,XI,YI,ZI,dcx,dcy,dcz,tmp1,tmp2; + int *i_eg_excl; + int use_twinrange,use_two_cutoffs; + cgsnr = cgs->nr; + rs2 = ((fr->rlist)*(fr->rlist)); + if (fr->bTwinRange) { + rvdw2 = ((fr->rvdw)*(fr->rvdw)); + rcoul2 = ((fr->rcoulomb)*(fr->rcoulomb)); + } else { + } + rm2 = (((rvdw2) < (rcoul2)) ? (rvdw2) : (rcoul2) ); + rl2 = (((rvdw2) > (rcoul2)) ? (rvdw2) : (rcoul2) ); + use_twinrange = (rs2 < rm2); + use_two_cutoffs = (rm2 < rl2); + bVDWOnly = (rvdw2 > rcoul2); + bCoulOnly = !bVDWOnly; + if (nl_sr == ((void *)0)) { + (nl_sr)=save_calloc("nl_sr","ns.c",1341, (ngid),sizeof(*(nl_sr))); + (nsr)=save_calloc("nsr","ns.c",1343, (ngid),sizeof(*(nsr))); + (nlr_ljc)=save_calloc("nlr_ljc","ns.c",1344, (ngid),sizeof(*(nlr_ljc))); + (nlr_one)=save_calloc("nlr_one","ns.c",1345, (ngid),sizeof(*(nlr_one))); + if (use_twinrange) + (nl_lr_ljc)=save_calloc("nl_lr_ljc","ns.c",1349, (ngid),sizeof(*(nl_lr_ljc))); + if (use_two_cutoffs) + (nl_lr_one)=save_calloc("nl_lr_one","ns.c",1353, (ngid),sizeof(*(nl_lr_one))); + for(j=0; (jcg_cm; + Nx = grid->nrx; + Ny = grid->nry; + if (dcx2 == ((void *)0)) { + (dcx2)=save_calloc("dcx2","ns.c",1379, (Nx*2),sizeof(*(dcx2))); + (dcy2)=save_calloc("dcy2","ns.c",1380, (Ny*2),sizeof(*(dcy2))); + (dcz2)=save_calloc("dcz2","ns.c",1381, (Nz*2),sizeof(*(dcz2))); + } + gridx = box[0][0]/grid->nrx; + gridy = box[1][1]/grid->nry; + gridz = box[2][2]/grid->nrz; + grid_x = 1/gridx; + grid_y = 1/gridy; + grid_z = 1/gridz; + for(iicg=fr->cg0; (iicg < fr->hcg); iicg++) { + icg = cg_index[iicg]; + if (icg != iicg) + fatal_error(0,"icg = %d, iicg = %d, file %s, line %d",icg,iicg,"ns.c", + 1408); + if(bExcludeAlleg[icg]) + i_eg_excl = fr->eg_excl + ngid*gid[cgs->index[icg]]; + setexcl(cgs->index[icg],cgs->index[icg+1],&top->atoms.excl,1,bexcl); + naaj = calc_naaj(icg,cgsnr); + icg_naaj = icg+naaj; + for (tz=-1; tz<=1; tz++) { + ZI = cgcm[icg][2]+tz*box[2][2]; + get_dx(Nz,gridz,grid_z,rcoul2,ZI,&dz0,&dz1,dcz2); + if (dz0 > dz1) + for (ty=-1; ty<=1; ty++) { + YI = cgcm[icg][1]+ty*box[1][1]+tz*box[2][1]; + get_dx(Ny,gridy,grid_y,rcoul2,YI,&dy0,&dy1,dcy2); + for (tx=-1; tx<=1; tx++) { + get_dx(Nx,gridx,grid_x,rcoul2,XI,&dx0,&dx1,dcx2); + shift=((2*1 +1)*((2*1 +1)*((tz)+1)+(ty)+1)+(tx)+1); + for (dx=dx0; (dx<=dx1); dx++) { + for (dy=dy0; (dy<=dy1); dy++) { + for (dz=dz0; (dz<=dz1); dz++) { + if (tmp2 > dcz2[dz]) { + for (j=0; (j= icg) && (jjcg < icg_naaj)) || + ((jjcg < min_icg))) { + if (r2 < rl2) { + if (!i_eg_excl[jgid]) { + if (r2 < rs2) { + if (nsr[jgid] >= 1024) { + put_in_list(bHaveLJ,ngid,md,icg,jgid, + nsr[jgid],nl_sr[jgid], + cgs->index, bexcl, + shift,fr,0,0,0); + } + } else if (r2 < rm2) { + } else if (use_two_cutoffs) { + if (nlr_one[jgid] >= 1024) { + do_longrange(log,cr,top,fr,ngid,md,icg,jgid, + nlr_one[jgid], + nl_lr_one[jgid],bexcl,shift,x, + box_size,nrnb, + lambda,dvdlambda,grps, + bVDWOnly,bCoulOnly,0, + bHaveLJ); + } + } + } + } + } + } + } + } + } + } + } + } + } + } +} +int search_neighbours(FILE *log,t_forcerec *fr, + rvec x[],matrix box, + t_topology *top,t_groups *grps, + t_commrec *cr,t_nsborder *nsb, + t_nrnb *nrnb,t_mdatoms *md, + real lambda,real *dvdlambda) +{ + static t_grid *grid=((void *)0); + static t_excl *bexcl; + static int *bHaveLJ; + static int *cg_index=((void *)0),*slab_index=((void *)0); + static int *bExcludeAlleg; + rvec box_size; + int i,j,m,ngid; + int nsearch; + nsearch = ns5_core(log,cr,fr,cg_index,box,box_size,ngid,top,grps, + grid,x,bexcl,bExcludeAlleg,nrnb,md,lambda,dvdlambda,bHaveLJ); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c 2014-03-27 17:33:34.000000000 +0000 @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -fno-omit-frame-pointer -fno-inline --save-temps" } */ + +void +leaf (void) +{ + int a = 0; +} + +__attribute__ ((optimize("omit-frame-pointer"))) +void +non_leaf_1 (void) +{ + leaf (); +} + +__attribute__ ((optimize("omit-frame-pointer"))) +void +non_leaf_2 (void) +{ + leaf (); +} + +/* { dg-final { scan-assembler-times "str\tx30, \\\[sp\\\]" 2 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c 2014-03-27 17:33:34.000000000 +0000 @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -fomit-frame-pointer -fno-inline --save-temps" } */ + +void +leaf (void) +{ + int a = 0; +} + +__attribute__ ((optimize("no-omit-frame-pointer"))) +void +non_leaf_1 (void) +{ + leaf (); +} + +__attribute__ ((optimize("no-omit-frame-pointer"))) +void +non_leaf_2 (void) +{ + leaf (); +} + +/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */ + +/* { dg-final { cleanup-saved-temps } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/ushr64_1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/ushr64_1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/ushr64_1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/ushr64_1.c 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,84 @@ +/* Test logical SIMD shift works correctly. */ +/* { dg-do run } */ +/* { dg-options "--save-temps" } */ + +#include "arm_neon.h" + +extern void abort (void); + +int __attribute__ ((noinline)) +test_vshr_n_u64_64 (uint64x1_t passed, uint64_t expected) +{ + return vget_lane_u64 (vshr_n_u64 (passed, 64), 0) != expected; +} + +int __attribute__ ((noinline)) +test_vshr_n_u64_4 (uint64x1_t passed, uint64_t expected) +{ + return vget_lane_u64 (vshr_n_u64 (passed, 4), 0) != expected; +} + +int __attribute__ ((noinline)) +test_vshr_n_u64_0 (uint64x1_t passed, uint64_t expected) +{ + return vget_lane_u64 (vshr_n_u64 (passed, 0), 0) != expected; +} + +int __attribute__ ((noinline)) +test_vshrd_n_u64_64 (uint64_t passed, uint64_t expected) +{ + return vshrd_n_u64 (passed, 64) != expected; +} + +int __attribute__ ((noinline)) +test_vshrd_n_u64_4 (uint64_t passed, uint64_t expected) +{ + return vshrd_n_u64 (passed, 4) != expected; +} + +int __attribute__ ((noinline)) +test_vshrd_n_u64_0 (uint64_t passed, uint64_t expected) +{ + return vshrd_n_u64 (passed, 0) != expected; +} + +/* { dg-final { scan-assembler-times "ushr\\td\[0-9\]+, d\[0-9\]+, 64" 2 } } */ +/* { dg-final { (scan-assembler-times "ushr\\td\[0-9\]+, d\[0-9\]+, 4" 2) || \ + (scan-assembler-times "lsr\\tx\[0-9\]+, x\[0-9\]+, 4" 2) } } */ +/* { dg-final { scan-assembler-not "ushr\\td\[0-9\]+, d\[0-9\]+, 0" } } */ + +int +main (int argc, char *argv[]) +{ + /* Testing vshr_n_u64. */ + if (test_vshr_n_u64_64 (vcreate_u64 (0x0000000080000000), 0)) + abort (); + if (test_vshr_n_u64_64 (vcreate_u64 (0xffffffff80000000), 0)) + abort (); + + if (test_vshr_n_u64_4 (vcreate_u64 (0x0000000080000000), 0x0000000008000000)) + abort (); + if (test_vshr_n_u64_4 (vcreate_u64 (0xffffffff80000000), 0x0ffffffff8000000)) + abort (); + + if (test_vshr_n_u64_0 (vcreate_u64 (0x0000000080000000), 0x0000000080000000)) + abort (); + + /* Testing vshrd_n_u64. */ + if (test_vshrd_n_u64_64 (0x0000000080000000, 0)) + abort (); + if (test_vshrd_n_u64_64 (0xffffffff80000000, 0)) + abort (); + + if (test_vshrd_n_u64_4 (0x0000000080000000, 0x0000000008000000)) + abort (); + if (test_vshrd_n_u64_4 (0xffffffff80000000, 0x0ffffffff8000000)) + abort (); + + if (test_vshrd_n_u64_0 (0x0000000080000000, 0x0000000080000000)) + abort (); + + return 0; +} + +/* { dg-final { cleanup-saved-temps } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/vect-abs.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/vect-abs.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/vect-abs.c 2013-02-25 13:42:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/aarch64/vect-abs.c 2014-03-26 08:19:14.000000000 +0000 @@ -1,6 +1,6 @@ /* { dg-do run } */ -/* { dg-options "-O3" } */ +/* { dg-options "-O3 -std=c99" } */ #include "limits.h" @@ -37,8 +37,9 @@ SET_RVEC (8, SCHAR) SET_RVEC (16, SHRT) SET_RVEC (32, INT) -SET_RVEC (64, LONG_LONG) +SET_RVEC (64, LLONG) +void set_rvector_long (pRLONG a) { int i; @@ -49,8 +50,9 @@ SET_VEC (8, SCHAR) SET_VEC (16, SHRT) SET_VEC (32, INT) -SET_VEC (64, LONG_LONG) +SET_VEC (64, LLONG) +void set_vector_long (long *__restrict__ a) { long i; @@ -63,6 +65,7 @@ CHECK_VEC (32) CHECK_VEC (64) +void check_vector_long (long *__restrict__ a, long *__restrict__ b) { long i; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/arm/pr60650.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/arm/pr60650.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/arm/pr60650.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/arm/pr60650.c 2014-03-27 19:29:33.000000000 +0000 @@ -0,0 +1,39 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fno-omit-frame-pointer -mabi=apcs-gnu -march=armv7-a" } */ + +struct super_block +{ + int s_blocksize_bits; +}; +struct btrfs_fs_info +{ + struct super_block *sb; +}; +struct btrfs_root +{ + struct btrfs_fs_info *fs_info; +} *b; + + +int a, c, d; +long long e; + +truncate_one_csum (struct btrfs_root *p1, long long p2, long long p3) +{ + int f, g, i = p1->fs_info->sb->s_blocksize_bits; + g = a; + long long h = p2 + p3; + f = foo1 (b, 0, c, 0); + e = f / g; + e <<= p1->fs_info->sb->s_blocksize_bits; + if (d < p2) + { + int j = e - h >> i; + foo2 (p1, 0, j); + } + else + { + asm ("1\t.long "); + __builtin_unreachable (); + } +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c 2014-01-01 03:00:05.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff32x4-2.c 2014-03-28 19:04:54.000000000 +0000 @@ -43,7 +43,7 @@ for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c 2014-01-01 03:00:05.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshuff64x2-2.c 2014-03-28 19:04:54.000000000 +0000 @@ -43,7 +43,7 @@ for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c 2014-01-01 03:00:05.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi32x4-2.c 2014-03-28 19:04:54.000000000 +0000 @@ -43,7 +43,7 @@ for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c 2014-01-01 03:00:05.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/avx512f-vshufi64x2-2.c 2014-03-28 19:04:54.000000000 +0000 @@ -43,7 +43,7 @@ for (i = 0; i < SIZE; i++) { s1.a[i] = 1.2 / (i + 0.378); - s1.a[i] = 91.02 / (i + 4.3578); + s2.a[i] = 91.02 / (i + 4.3578); u1.a[i] = DEFAULT_VALUE; u2.a[i] = DEFAULT_VALUE; u3.a[i] = DEFAULT_VALUE; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-builtin.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-builtin.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-builtin.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-builtin.c 2014-03-30 07:40:40.000000000 +0000 @@ -2,7 +2,7 @@ and add instructions FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4" } */ +/* { dg-options "-O2 -mfma4 -mno-fma" } */ #ifndef __FP_FAST_FMAF # error "__FP_FAST_FMAF should be defined" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma-2.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma-2.c 2014-03-30 07:40:40.000000000 +0000 @@ -3,7 +3,7 @@ vfnmsubss on FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -funsafe-math-optimizations -mfma4" } */ +/* { dg-options "-O2 -funsafe-math-optimizations -mfma4 -mno-fma" } */ extern void exit (int); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-fma.c 2014-03-30 07:40:40.000000000 +0000 @@ -3,7 +3,7 @@ vfnmsubss on FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4" } */ +/* { dg-options "-O2 -mfma4 -mno-fma" } */ extern void exit (int); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector-2.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector-2.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */ +/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */ float r[256], s[256]; float x[256]; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/fma4-vector.c 2014-03-30 07:40:40.000000000 +0000 @@ -2,7 +2,7 @@ instructions vector into vfmaddps on FMA4 systems. */ /* { dg-do compile { target { ! { ia32 } } } } */ -/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */ +/* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */ extern void exit (int); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_1.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_1.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_2.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_2.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_3.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_3.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_3.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_3.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_4.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_4.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_4.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_4.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_5.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_5.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_5.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_5.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_6.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_6.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_6.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_double_6.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_1.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_1.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_2.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_2.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_3.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_3.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_3.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_3.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_4.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_4.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_4.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_4.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_5.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_5.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_5.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_5.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_6.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_6.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_6.c 2013-10-30 22:48:58.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/l_fma_float_6.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic" } */ +/* { dg-options "-O3 -Wno-attributes -mfpmath=sse -mfma -mtune=generic -mno-fma4" } */ /* Test that the compiler properly optimizes floating point multiply and add instructions into FMA3 instructions. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr27971.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr27971.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr27971.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr27971.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2" } */ +/* { dg-options "-O2 -mno-tbm" } */ unsigned array[4]; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr42542-4a.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr42542-4a.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr42542-4a.c 2013-02-25 13:44:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr42542-4a.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -msse4.2 -ftree-vectorize" } */ +/* { dg-options "-O1 -msse4.2 -ftree-vectorize -mno-avx" } */ #include "pr42542-4.c" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr59390.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr59390.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr59390.c 2014-01-09 09:38:39.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr59390.c 2014-03-30 07:40:40.000000000 +0000 @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-std=c99 -O3" } */ +/* { dg-options "-std=c99 -O3 -mno-fma -mno-fma4" } */ extern double fma (double, double, double); void fun() __attribute__((target("fma"))); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr60693.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr60693.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr60693.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/i386/pr60693.c 2014-03-30 07:40:40.000000000 +0000 @@ -0,0 +1,13 @@ +/* PR target/60693 */ +/* { dg-do compile } */ +/* { dg-options "-O0" } */ + +void bar (char *); + +void +foo (void) +{ + char buf[4096]; + __builtin_memcpy (buf, (void *) 0x8000, 4096); + bar (buf); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/p8vector-vbpermq.c 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,27 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-O3 -mcpu=power8" } */ +/* { dg-final { scan-assembler "vbpermq" } } */ +/* { dg-final { scan-assembler "mfvsrd" } } */ +/* { dg-final { scan-assembler-not "stfd" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ + +#include + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +long foos (vector signed char a, vector signed char b) +{ + return vec_extract (vec_vbpermq (a, b), OFFSET); +} + +long foou (vector unsigned char a, vector unsigned char b) +{ + return vec_extract (vec_vbpermq (a, b), OFFSET); +} + diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/pr60676.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/pr60676.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/pr60676.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/pr60676.c 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,128 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ +/* { dg-final { scan-assembler "xxsldwi" } } */ +/* { dg-final { scan-assembler "xxpermdi" } } */ + +#include + +vector double +v2df_shift (vector double a, vector double b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector float +v4sf_shift (vector float a, vector float b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector long long +v2di_shift (vector long long a, vector long long b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned long long +v2diu_shift (vector unsigned long long a, vector unsigned long long b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector int +v4si_shift (vector int a, vector int b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned int +v4siu_shift (vector unsigned int a, vector unsigned int b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector short +v8hi_shift (vector short a, vector short b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned short +v8hiu_shift (vector unsigned short a, vector unsigned short b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector signed char +v16qi_shift (vector signed char a, vector signed char b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector unsigned char +v16qiu_shift (vector unsigned char a, vector unsigned char b) +{ + return vec_xxsldwi (a, b, 1); +} + +vector double +v2df_permute (vector double a, vector double b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector float +v4sf_permute (vector float a, vector float b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector long long +v2di_permute (vector long long a, vector long long b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned long long +v2diu_permute (vector unsigned long long a, vector unsigned long long b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector int +v4si_permute (vector int a, vector int b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned int +v4siu_permute (vector unsigned int a, vector unsigned int b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector short +v8hi_permute (vector short a, vector short b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned short +v8hiu_permute (vector unsigned short a, vector unsigned short b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector signed char +v16qi_permute (vector signed char a, vector signed char b) +{ + return vec_xxpermdi (a, b, 1); +} + +vector unsigned char +v16qiu_permute (vector unsigned char a, vector unsigned char b) +{ + return vec_xxpermdi (a, b, 1); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-1.c 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,16 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ +/* { dg-final { scan-assembler "lfd" } } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ + +#include + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +double get_value (vector double *p) { return vec_extract (*p, OFFSET); } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-2.c 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,17 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-O3 -mcpu=power7" } */ +/* { dg-final { scan-assembler "xxlor" } } */ +/* { dg-final { scan-assembler-not "lfd" } } */ +/* { dg-final { scan-assembler-not "lxvd2x" } } */ + +#include + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +double get_value (vector double v) { return vec_extract (v, OFFSET); } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/powerpc/vsx-extract-3.c 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,17 @@ +/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-O3 -mcpu=power8" } */ +/* { dg-final { scan-assembler "mfvsrd" } } */ +/* { dg-final { scan-assembler-not "stfd" } } */ +/* { dg-final { scan-assembler-not "stxvd2x" } } */ + +#include + +#if __LITTLE_ENDIAN__ +#define OFFSET 1 +#else +#define OFFSET 0 +#endif + +long get_value (vector long v) { return vec_extract (v, OFFSET); } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/s390/20140327-1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/s390/20140327-1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gcc.target/s390/20140327-1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gcc.target/s390/20140327-1.c 2014-03-27 17:33:34.000000000 +0000 @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -m31 -mzarch" } */ + +void +foo () +{ + asm ("" ::: "%f4"); +} + +/* { dg-final { scan-assembler "ld" } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/abi/thunk6.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/abi/thunk6.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/abi/thunk6.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/abi/thunk6.C 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,19 @@ +// PR c++/60566 +// We need to emit the construction vtable thunk for ~C even if we aren't +// going to use it. + +struct A +{ + virtual void f() = 0; + virtual ~A() {} +}; + +struct B: virtual A { int i; }; +struct C: virtual A { int i; ~C(); }; + +C::~C() {} + +int main() {} + +// { dg-final { scan-assembler "_ZTv0_n32_N1CD1Ev" { target lp64 } } } +// { dg-final { scan-assembler "_ZTv0_n16_N1CD1Ev" { target ilp32 } } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp 2014-01-24 11:57:51.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp 2014-03-28 19:04:54.000000000 +0000 @@ -17,62 +17,55 @@ # Written by Balaji V. Iyer load_lib g++-dg.exp +load_lib cilk-plus-dg.exp if { ![check_effective_target_cilkplus] } { return; } -set library_var [get_multilibs] -# Pointing the ld_library_path to the Cilk Runtime library binaries. -append ld_library_path ":${library_var}/libcilkrts/.libs" -set_ld_library_path_env_vars - -global TEST_EXTRA_LIBS -set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs" - -dg-init -# Run the tests that are shared with C. -g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] "" -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " " -# Run the C++ only tests. -g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" -dg-finish - dg-init -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " " - -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " " -dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " " - -if { [check_libcilkrts_available] } { - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " " - dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " " - - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " " - dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " " - } +if [cilkplus_init] { + # Run the tests that are shared with C. + g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] "" + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " " + # Run the C++ only tests. + g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" + + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " " + + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " " + + if { [check_libcilkrts_available] } { + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " " + dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " " + + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " " + dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " " + } +} +cilkplus_finish dg-finish -unset TEST_EXTRA_LIBS diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/auto42.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/auto42.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/auto42.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/auto42.C 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,9 @@ +// PR c++/60628 +// { dg-do compile { target c++11 } } + +#include + +void foo(int i) +{ + auto x[1] = { 0 }; // { dg-error "array of .auto" } +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,7 @@ +// PR c++/60375 +// { dg-do compile { target c++11 } } + +struct A +{ + decltype( [](){ return this; }() ) x; // { dg-error "unevaluated" } +}; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C 2014-03-20 10:50:18.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C 2014-03-26 08:19:14.000000000 +0000 @@ -5,3 +5,5 @@ struct A { }; A a; // { dg-error "lambda.*unevaluated context" } +// { dg-prune-output "template argument" } +// { dg-prune-output "invalid type" } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,15 @@ +// PR c++/60574 +// { dg-options "-flto" } +// { dg-do compile { target c++1y } } + +struct A +{ + virtual auto foo() {} // { dg-error "virtual.*deduced" } +}; + +struct B : A +{ + auto foo(); +}; + +B b; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60573.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60573.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60573.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60573.C 2014-03-30 07:40:40.000000000 +0000 @@ -0,0 +1,28 @@ +// PR c++/60573 +// { dg-do compile { target c++1y } } +// { dg-options "" } + +struct A +{ + struct B + { + void foo(auto); + }; + + void B::foo(auto) {} // { dg-error "cannot define" } + + struct X + { + struct Y + { + struct Z + { + void foo(auto); + }; + }; + + void Y::Z::foo(auto) {} // { dg-error "cannot define" } + }; + + void X::Y::Z::foo(auto) {} // { dg-error "cannot define" } +}; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60626.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60626.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60626.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60626.C 2014-03-30 07:40:40.000000000 +0000 @@ -0,0 +1,7 @@ +// PR c++/60626 +// { dg-do compile { target c++1y } } +// { dg-options "" } + +struct A {}; + +void (*A::p)(auto) = 0; // { dg-error "static member|non-template" } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60627.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60627.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60627.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/cpp1y/pr60627.C 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,12 @@ +// PR c++/60627 +// { dg-do compile { target c++1y } } +// { dg-options "" } + +template void foo(T) {} + +template void foo(auto); // { dg-error "auto|does not match" } + +void bar() +{ + foo(0); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/gomp/pr60682.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/gomp/pr60682.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/gomp/pr60682.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/gomp/pr60682.C 2014-03-27 17:33:35.000000000 +0000 @@ -0,0 +1,44 @@ +// PR middle-end/60682 +// { dg-do compile } +// { dg-options "-O2 -fopenmp-simd" } + +struct A +{ + float a; + A () {} + A (const A &x) { a = x.a; } +}; + +struct B +{ + A a[16]; +}; + +struct C +{ + float a[1]; + C () {} + C (const C &x) { a[0] = x.a[0]; } +}; + +struct D +{ + C a[16]; +}; + +void +foo (int x, B &y, D &z) +{ +#pragma omp simd + for (int i = 0; i < x; ++i) + { + A a; + y.a[i] = a; + } +#pragma omp simd + for (int i = 0; i < x; ++i) + { + C a; + z.a[i] = a; + } +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const10.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const10.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const10.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const10.C 2014-03-27 17:33:35.000000000 +0000 @@ -0,0 +1,33 @@ +// PR C++/52369 +// { dg-do compile { target c++11 } } + +class B // { dg-message "implicitly deleted" } + // { dg-error "uninitialized" "" { target c++11 } 4 } +{ + int const v_; // { dg-message "should be initialized" } +}; + +struct D : B {}; // { dg-error "deleted" } + +class A // { dg-message "implicitly deleted" } + // { dg-error "uninitialized" "" { target c++11 } 12 } +{ + int& ref; // { dg-message "should be initialized" } +}; + +struct C : A {}; // { dg-error "deleted" } + +void f() +{ + D d; // { dg-error "use of deleted" } + new D; // { dg-error "use of deleted" } + D(); // { dg-error "use of deleted" } + new D(); // { dg-error "use of deleted" } + + C c; // { dg-error "use of deleted" } + new C; // { dg-error "use of deleted" } + C(); // { dg-error "use of deleted" } + new C(); // { dg-error "use of deleted" } +} + + diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const11.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const11.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const11.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/const11.C 2014-03-27 17:33:35.000000000 +0000 @@ -0,0 +1,29 @@ +// PR C++/52369 +// { dg-do compile { target { ! c++11 } } } + +class B +{ + int const v_; // { dg-message "should be initialized" } +}; + +struct D : B {}; + +class A +{ + int& ref; // { dg-message "should be initialized" } +}; + +struct C : A {}; + +void f() +{ + D d; // { dg-error "uninitialized" } + new D; // { dg-error "uninitialized" } + D(); + new D(); + + C c; // { dg-error "uninitialized" } + new C; // { dg-error "uninitialized" } + C(); // { dg-error "value-initialization" } + new C(); // { dg-error "value-initialization" } +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/ctor8.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/ctor8.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/ctor8.C 2013-10-29 22:21:05.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/ctor8.C 2014-03-27 17:33:35.000000000 +0000 @@ -1,6 +1,6 @@ // PR c++/29039 -typedef struct S { // { dg-error "reference" "" { target c++11 } } +typedef struct S { // { dg-error "reference" "" { target c++11 } } int &r; }; // { dg-warning "'typedef' was ignored" } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr25811.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr25811.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr25811.C 2014-03-20 10:50:17.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr25811.C 2014-03-27 17:33:35.000000000 +0000 @@ -1,51 +1,60 @@ // PR c++/25811 // { dg-do compile } -struct A1 // { dg-error "uninitialized" "" { target c++11 } } +struct A1 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 4 } { - int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const j; // { dg-message "should be initialized" } }; -struct A2 // { dg-error "uninitialized" "" { target c++11 } } +struct A2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 10 } { - int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const volatile i; // { dg-message "should be initialized" } }; -struct A3 // { dg-error "uninitialized" "" { target c++11 } } +struct A3 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 16 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct A4 // { dg-error "uninitialized" "" { target c++11 } } +struct A4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 22 } { - int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const& ref; // { dg-message "should be initialized" } }; -struct A5 // { dg-error "uninitialized" "" { target c++11 } } +struct A5 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 28 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } + int const i; // { dg-message "should be initialized" } }; -template struct S1 // { dg-error "uninitialized" "" { target c++11 } } +template struct S1 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 35 } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } }; -template struct S2 // { dg-error "uninitialized" "" { target c++11 } } +template struct S2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 41 } { - T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const volatile i; // { dg-message "should be initialized" } }; -template struct S3 // { dg-error "uninitialized" "" { target c++11 } } +template struct S3 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 47 } { - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T& ref; // { dg-message "should be initialized" } }; -template struct S4 // { dg-error "uninitialized" "" { target c++11 } } +template struct S4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 53 } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } + T& ref; // { dg-message "should be initialized" } }; struct X @@ -55,44 +64,50 @@ int const& r; }; -struct Y11 // { dg-error "uninitialized" "" { target c++11 } } +struct Y11 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 67 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Y1 // { dg-error "deleted" "" { target c++11 } } +struct Y1 // { dg-error "deleted" "" { target c++11 } } { Y11 a[1]; }; -struct Y22 // { dg-error "uninitialized" "" { target c++11 } } +struct Y22 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 78 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct Y2 // { dg-error "deleted" "" { target c++11 } } +struct Y2 // { dg-error "deleted" "" { target c++11 } } { Y22 a[1]; }; -struct Z1 // { dg-error "uninitialized" "" { target c++11 } } +struct Z1 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 89 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z2 // { dg-error "uninitialized" "" { target c++11 } } +struct Z2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 95 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct Z3 // { dg-error "uninitialized" "" { target c++11 } } +struct Z3 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 101 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z4 // { dg-error "uninitialized" "" { target c++11 } } +struct Z4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 107 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; struct Z5 @@ -100,7 +115,7 @@ int i; }; -struct Z // { dg-error "deleted" "" { target c++11 } } +struct Z // { dg-error "deleted" "" { target c++11 } } { Z1 z1; Z2 z2; @@ -109,9 +124,10 @@ Z5 z5; }; -union U // { dg-error "uninitialized" "" { target c++11 } } +union U // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 127 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; void f1 () diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr29043.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr29043.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr29043.C 2014-03-20 10:50:17.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr29043.C 2014-03-27 17:33:35.000000000 +0000 @@ -1,9 +1,10 @@ // PR c++/29043 // { dg-do compile } -struct S // { dg-error "uninitialized" "" { target c++11 } } +struct S // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 4 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; class C @@ -13,9 +14,10 @@ S s; }; -struct S2 // { dg-error "uninitialized" "" { target c++11 } } +struct S2 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 17 } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; class C2 @@ -33,9 +35,10 @@ }; }; -struct S4 // { dg-error "uninitialized" "" { target c++11 } } +struct S4 // { dg-message "implicitly deleted" "" { target c++11 } } + // { dg-error "uninitialized" "" { target c++11 } 38 } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; struct C4 @@ -46,7 +49,7 @@ struct C5 { - C5() {} // { dg-message "uninitialized" } + C5() {} // { dg-error "uninitialized" } int const iit[ 1 ]; }; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr43719.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr43719.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr43719.C 2014-03-20 10:50:17.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr43719.C 2014-03-27 17:33:35.000000000 +0000 @@ -1,51 +1,51 @@ // PR c++/43719 // { dg-do compile } -struct A1 // { dg-error "uninitialized" "" { target c++11 } } +struct A1 // { dg-error "uninitialized" "" { target c++11 } } { - int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const j; // { dg-message "should be initialized" } }; -struct A2 // { dg-error "uninitialized" "" { target c++11 } } +struct A2 // { dg-error "uninitialized" "" { target c++11 } } { - int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const volatile i; // { dg-message "should be initialized" } }; -struct A3 // { dg-error "uninitialized" "" { target c++11 } } +struct A3 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct A4 // { dg-error "uninitialized" "" { target c++11 } } +struct A4 // { dg-error "uninitialized" "" { target c++11 } } { - int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const& ref; // { dg-message "should be initialized" } }; -struct A5 // { dg-error "uninitialized" "" { target c++11 } } +struct A5 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } + int const i; // { dg-message "should be initialized" } }; template struct S1 // { dg-error "uninitialized" "" { target c++11 } } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } }; template struct S2 // { dg-error "uninitialized" "" { target c++11 } } { - T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const volatile i; // { dg-message "should be initialized" } }; template struct S3 // { dg-error "uninitialized" "" { target c++11 } } { - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T& ref; // { dg-message "should be initialized" } }; template struct S4 // { dg-error "uninitialized" "" { target c++11 } } { - T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } - T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + T const i; // { dg-message "should be initialized" } + T& ref; // { dg-message "should be initialized" } }; struct X @@ -55,9 +55,9 @@ int const& r; }; -struct Y11 // { dg-error "uninitialized" "" { target c++11 } } +struct Y11 // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; struct Y1 // { dg-error "deleted" "" { target c++11 } } @@ -65,9 +65,9 @@ Y11 a[1]; }; -struct Y22 // { dg-error "uninitialized" "" { target c++11 } } +struct Y22 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; struct Y2 // { dg-error "deleted" "" { target c++11 } } @@ -75,24 +75,24 @@ Y22 a[1]; }; -struct Z1 // { dg-error "uninitialized" "" { target c++11 } } +struct Z1 // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z2 // { dg-error "uninitialized" "" { target c++11 } } +struct Z2 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; -struct Z3 // { dg-error "uninitialized" "" { target c++11 } } +struct Z3 // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; -struct Z4 // { dg-error "uninitialized" "" { target c++11 } } +struct Z4 // { dg-error "uninitialized" "" { target c++11 } } { - int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int& ref; // { dg-message "should be initialized" } }; struct Z5 @@ -109,9 +109,9 @@ Z5 z5; }; -union U // { dg-error "uninitialized" "" { target c++11 } } +union U // { dg-error "uninitialized" "" { target c++11 } } { - int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i; // { dg-message "should be initialized" } }; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr44086.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr44086.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr44086.C 2014-03-20 10:50:17.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/pr44086.C 2014-03-27 17:33:35.000000000 +0000 @@ -1,9 +1,9 @@ // PR c++/44086 // { dg-do compile } -struct A // { dg-error "uninitialized" "" { target c++11 } } +struct A // { dg-error "uninitialized" "" { target c++11 } } { - int const i : 2; // { dg-message "should be initialized" "" { target { ! c++11 } } } + int const i : 2; // { dg-message "should be initialized" } }; void f() diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/uninitialized1.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/uninitialized1.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/init/uninitialized1.C 2013-10-29 22:21:05.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/init/uninitialized1.C 2014-03-27 17:33:35.000000000 +0000 @@ -1,8 +1,8 @@ // PR c++/58126 -struct A { // { dg-error "uninitialized" "" { target c++11 } } - const int value1; - int& value2; +struct A { // { dg-error "uninitialized" "" { target c++11 } } + const int value1; // { dg-message "should be initialized" } + int& value2; // { dg-message "should be initialized" } }; struct B : A { }; // { dg-error "deleted" "" { target c++11 } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-21.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-21.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-21.C 2014-02-04 12:24:50.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-21.C 2014-03-27 17:33:35.000000000 +0000 @@ -37,5 +37,5 @@ { class C c; } -/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */ +/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */ /* { dg-final { cleanup-ipa-dump "cp" } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-23.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-23.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-23.C 2014-02-04 12:24:50.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/devirt-23.C 2014-03-27 17:33:35.000000000 +0000 @@ -45,5 +45,5 @@ { class C c; } -/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */ +/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */ /* { dg-final { cleanup-ipa-dump "cp" } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/pr60600.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/pr60600.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/pr60600.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ipa/pr60600.C 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fdump-ipa-cp" } */ + +struct data { + data(int); +}; + +struct top { + virtual int topf(); +}; + +struct intermediate: top { + int topf() /* override */ { return 0; } +}; + +struct child1: top { + void childf() + { + data d(topf()); + } +}; + +struct child2: intermediate {}; + +void test(top& t) +{ + child1& c = static_cast(t); + c.childf(); + child2 d; + test(d); +} + +/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */ +/* { dg-final { cleanup-ipa-dump "cp" } } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/opt/pr56999.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/opt/pr56999.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/opt/pr56999.C 2013-04-20 21:52:40.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/opt/pr56999.C 2014-03-26 08:19:14.000000000 +0000 @@ -159,6 +159,7 @@ pendingRecompiles->append (info); } volatile JITScript *JSScript::JITScriptHandle::UNJITTABLE; +#pragma GCC visibility pop int main () { diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60315.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60315.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60315.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60315.C 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,19 @@ +// PR ipa/60315 +// { dg-do compile } +// { dg-options "-std=c++11" } + +struct Base { + virtual int f() = 0; +}; + +struct Derived : public Base { + virtual int f() final override { + return 42; + } +}; + +extern Base* b; + +int main() { + return (static_cast(b)->*(&Derived::f))(); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60648.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60648.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60648.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/torture/pr60648.C 2014-03-30 07:40:40.000000000 +0000 @@ -0,0 +1,70 @@ +// PR target/60648 +// { dg-do compile } +// { dg-additional-options "-fPIC" { target fpic } } + +enum component +{ + Ex, + Ez, + Hy, + Permeability +}; +enum derived_component +{}; +enum direction +{ + X, + Y, + Z, + R, + P, + NO_DIRECTION +}; +derived_component a; +component *b; +component c; +direction d; +inline direction fn1 (component p1) +{ + switch (p1) + { + case 0: + return Y; + case 1: + return Z; + case Permeability: + return NO_DIRECTION; + } + return X; +} + +inline component fn2 (direction p1) +{ + switch (p1) + { + case 0: + case 1: + return component (); + case Z: + case R: + return component (1); + case P: + return component (3); + } +} + +void fn3 () +{ + direction e; + switch (0) + case 0: + switch (a) + { + case 0: + c = Ex; + b[1] = Hy; + } + e = fn1 (b[1]); + b[1] = fn2 (e); + d = fn1 (c); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C 2014-03-20 10:50:17.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C 2014-03-26 08:19:14.000000000 +0000 @@ -1,9 +1,18 @@ /* { dg-do run { target c++11 } } */ /* { dg-options "-fsanitize=shift -w" } */ +#include + int main (void) { + fputs ("UBSAN TEST START\n", stderr); + int a = 1; a <<= 31; + + fputs ("UBSAN TEST END\n", stderr); + return 0; } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/return-2.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/return-2.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/return-2.C 2013-11-25 14:37:20.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/g++.dg/ubsan/return-2.C 2014-03-26 08:19:14.000000000 +0000 @@ -1,6 +1,8 @@ // { dg-do run } // { dg-options "-fsanitize=return" } +#include + struct S { S (); ~S (); }; S::S () {} @@ -20,6 +22,12 @@ int main () { + fputs ("UBSAN TEST START\n", stderr); + foo (1); foo (14); + + fputs ("UBSAN TEST END\n", stderr); } + +/* { dg-output "UBSAN TEST START(\n|\r\n|\r)UBSAN TEST END" } */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/erf_3.F90 gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/erf_3.F90 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/erf_3.F90 2014-02-26 07:37:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/erf_3.F90 2014-03-26 08:19:14.000000000 +0000 @@ -1,7 +1,7 @@ ! { dg-do run { xfail spu-*-* ia64-*-linux* } } ! { dg-options "-fno-range-check -ffree-line-length-none -O0" } ! { dg-add-options ieee } -! { dg-skip-if "PR libfortran/59313" { sparc*-*-solaris2.9* } } +! { dg-skip-if "PR libfortran/59313" { sparc*-*-solaris2.9* hppa*-*-hpux* } } ! ! Check that simplification functions and runtime library agree on ERF, ! ERFC and ERFC_SCALED, for quadruple-precision. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/finalize_24.f90 gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/finalize_24.f90 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/finalize_24.f90 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/finalize_24.f90 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,28 @@ +! { dg-do compile } +! +! PR fortran/58880 +! +! Contributed by Andrew Benson +! + +module gn + type sl + integer, allocatable, dimension(:) :: lv + contains + final :: sld + end type sl + type :: nde + type(sl) :: r + end type nde +contains + subroutine ndm(s) + type(nde), intent(inout) :: s + type(nde) :: i + i=s + end subroutine ndm + subroutine sld(s) + implicit none + type(sl), intent(inout) :: s + return + end subroutine sld +end module gn diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/fmt_en.f90 gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/fmt_en.f90 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/fmt_en.f90 2014-03-20 10:50:13.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/fmt_en.f90 2014-03-26 08:19:14.000000000 +0000 @@ -2,8 +2,40 @@ ! PR60128 Invalid outputs with EN descriptors ! Test case provided by Walt Brainerd. program pr60128 -implicit none +use ISO_FORTRAN_ENV + implicit none + integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] + logical :: l_skip(4) = .false. + integer :: i integer :: n_tst = 0, n_cnt = 0 + character(len=20) :: s + + open (unit = 10, file = 'fmt_en.res') +! Check that the default rounding mode is to nearest and to even on tie. + do i=1,size(real_kinds) + if (i == 1) then + write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), & + real(9.49999905,kind=j(1)), & + real(9.5,kind=j(1)), real(8.5,kind=j(1)) + else if (i == 2) then + write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), & + real(9.49999905,kind=j(2)), & + real(9.5,kind=j(2)), real(8.5,kind=j(2)) + else if (i == 3) then + write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), & + real(9.49999905,kind=j(3)), & + real(9.5,kind=j(3)), real(8.5,kind=j(3)) + else if (i == 4) then + write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), & + real(9.49999905,kind=j(4)), & + real(9.5,kind=j(4)), real(8.5,kind=j(4)) + end if + if (s /= '-9.5 9.5 10. 8.') then + l_skip(i) = .true. + print "('Unsupported rounding for real(',i0,')')", j(i) + end if + end do + ! Original test. call checkfmt("(en15.2)", -.44444, " -444.44E-03") @@ -109,18 +141,18 @@ !print *, n_tst, n_cnt if (n_cnt /= 0) call abort + if (all(.not. l_skip)) write (10, *) "All kinds rounded to nearest" + close (10) contains subroutine checkfmt(fmt, x, cmp) - use ISO_FORTRAN_ENV implicit none - integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] integer :: i character(len=*), intent(in) :: fmt real, intent(in) :: x character(len=*), intent(in) :: cmp - character(len=20) :: s do i=1,size(real_kinds) + if (l_skip(i)) cycle if (i == 1) then write(s, fmt) real(x,kind=j(1)) else if (i == 2) then @@ -139,3 +171,5 @@ end subroutine end program +! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail i?86-*-solaris2.9* } } } +! { dg-final { cleanup-saved-temps } } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_0.f90 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,16 @@ +! { dg-lto-do link } +program test + use iso_fortran_env + + interface + integer(int16) function bigendc16(x) bind(C) + import + integer(int16), intent(in) :: x + end function + end interface + + integer(int16) :: x16 = 12345 + x16 = bigendc16(x16) + print *,x16 +end program + diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_1.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_1.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_1.c 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/lto/pr60635_1.c 2014-03-26 08:19:14.000000000 +0000 @@ -0,0 +1,14 @@ +#include +#include + +static bool littleendian=true; + +uint16_t bigendc16(union{uint16_t * n;uint8_t* b;}x){ + + if (!littleendian) return *x.n; + + uint16_t res = ((uint16_t)(x.b[1])<<0) | + ((uint16_t)(x.b[0])<<8); + return res; +} + diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/round_4.f90 gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/round_4.f90 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/round_4.f90 2014-02-26 07:37:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/round_4.f90 2014-03-26 08:19:14.000000000 +0000 @@ -1,6 +1,6 @@ ! { dg-do run } ! { dg-add-options ieee } -! { dg-skip-if "PR libfortran/58015" { *-*-solaris2.9* } } +! { dg-skip-if "PR libfortran/58015" { *-*-solaris2.9* hppa*-*-hpux* } } ! ! PR fortran/35862 ! diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/where_4.f90 gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/where_4.f90 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gfortran.dg/where_4.f90 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gfortran.dg/where_4.f90 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,18 @@ +! { dg-do compile } +! PR 60522 - this used to ICE. +! Original test case Roger Ferrer Ibanez +subroutine foo(a, b) + implicit none + integer, dimension(:), intent(inout) :: a + integer, dimension(:), intent(in) :: b + + where (b(:) > 0) + where (b(:) > 100) + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) - 100 + elsewhere + a(lbound(a, 1):ubound(a, 1)) = b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where + elsewhere + a(lbound(a, 1):ubound(a, 1)) = - b(lbound(b, 1):ubound(b, 1)) * b(lbound(b, 1):ubound(b, 1)) + end where +end subroutine foo diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gnat.dg/opt33.adb gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gnat.dg/opt33.adb --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/gnat.dg/opt33.adb 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/gnat.dg/opt33.adb 2014-03-30 07:40:40.000000000 +0000 @@ -0,0 +1,41 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +with Ada.Containers.Ordered_Sets; +with Ada.Strings.Unbounded; + +procedure Opt33 is + + type Rec is record + Name : Ada.Strings.Unbounded.Unbounded_String; + end record; + + function "<" (Left : Rec; Right : Rec) return Boolean; + + package My_Ordered_Sets is new Ada.Containers.Ordered_Sets (Rec); + + protected type Data is + procedure Do_It; + private + Set : My_Ordered_Sets.Set; + end Data; + + function "<" (Left : Rec; Right : Rec) return Boolean is + begin + return False; + end "<"; + + protected body Data is + procedure Do_It is + procedure Dummy (Position : My_Ordered_Sets.Cursor) is + begin + null; + end; + begin + Set.Iterate (Dummy'Access); + end; + end Data; + +begin + null; +end; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/lib/cilk-plus-dg.exp gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/lib/cilk-plus-dg.exp --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/lib/cilk-plus-dg.exp 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/lib/cilk-plus-dg.exp 2014-03-28 19:04:54.000000000 +0000 @@ -0,0 +1,104 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# +# cilkplus_link_flags -- compute library path and flags to find libcilkrts. +# (originally from g++.exp) +# + +proc cilkplus_link_flags { paths } { + global srcdir + global ld_library_path + global shlib_ext + + set gccpath ${paths} + set flags "" + + set shlib_ext [get_shlib_extension] + + if { $gccpath != "" } { + if { [file exists "${gccpath}/libcilkrts/.libs/libcilkrts.a"] + || [file exists "${gccpath}/libcilkrts/.libs/libcilkrts.${shlib_ext}"] } { + append flags " -B${gccpath}/libcilkrts/ " + append flags " -L${gccpath}/libcilkrts/.libs" + append ld_library_path ":${gccpath}/libcilkrts/.libs" + } + } else { + global tool_root_dir + + set libcilkrts [lookfor_file ${tool_root_dir} libcilkrts] + if { $libcilkrts != "" } { + append flags "-L${libcilkrts} " + append ld_library_path ":${libcilkrts}" + } + } + + set_ld_library_path_env_vars + + return "$flags" +} + +# +# cilkplus_init -- called at the start of each subdir of tests +# + +proc cilkplus_init { args } { + global TEST_ALWAYS_FLAGS + global ALWAYS_CXXFLAGS + global TOOL_OPTIONS + global cilkplus_saved_TEST_ALWAYS_FLAGS + + set link_flags "" + if ![is_remote host] { + if [info exists TOOL_OPTIONS] { + set link_flags "[cilkplus_link_flags [get_multilibs ${TOOL_OPTIONS}]]" + } else { + set link_flags "[cilkplus_link_flags [get_multilibs]]" + } + } + + if [info exists TEST_ALWAYS_FLAGS] { + set cilkplus_saved_TEST_ALWAYS_FLAGS $TEST_ALWAYS_FLAGS + } + if [info exists ALWAYS_CXXFLAGS] { + set ALWAYS_CXXFLAGS [concat "{ldflags=$link_flags}" $ALWAYS_CXXFLAGS] + } else { + if [info exists TEST_ALWAYS_FLAGS] { + set TEST_ALWAYS_FLAGS "$link_flags $TEST_ALWAYS_FLAGS" + } else { + set TEST_ALWAYS_FLAGS "$link_flags" + } + } + if { $link_flags != "" } { + return 1 + } + return 0 +} + +# +# cilkplus_finish -- called at the end of each subdir of tests +# + +proc cilkplus_finish { args } { + global TEST_ALWAYS_FLAGS + global cilkplus_saved_TEST_ALWAYS_FLAGS + + if [info exists cilkplus_saved_TEST_ALWAYS_FLAGS] { + set TEST_ALWAYS_FLAGS $cilkplus_saved_TEST_ALWAYS_FLAGS + } else { + unset TEST_ALWAYS_FLAGS + } +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/lib/target-supports.exp gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/lib/target-supports.exp --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/testsuite/lib/target-supports.exp 2014-03-20 10:50:13.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/testsuite/lib/target-supports.exp 2014-03-28 19:04:54.000000000 +0000 @@ -5712,6 +5712,7 @@ || [istarget arc*-*-*] || [istarget avr*-*-*] || [istarget crisv32-*-*] || [istarget cris-*-*] + || [istarget s390*-*-*] || [check_effective_target_arm_cortex_m] } { return 1 } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/toplev.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/toplev.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/toplev.c 2014-01-09 09:38:39.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/toplev.c 2014-03-26 08:19:14.000000000 +0000 @@ -261,7 +261,7 @@ struct timeval tv; gettimeofday (&tv, NULL); - local_tick = tv.tv_sec * 1000 + tv.tv_usec / 1000; + local_tick = (unsigned) tv.tv_sec * 1000 + tv.tv_usec / 1000; } #else { diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/tree-pretty-print.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/tree-pretty-print.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/tree-pretty-print.c 2014-02-28 00:03:07.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/tree-pretty-print.c 2014-03-27 17:33:34.000000000 +0000 @@ -3365,6 +3365,25 @@ gcc_assert (pp_ti_abstract_origin (text) != NULL); block = TREE_BLOCK (t); *pp_ti_abstract_origin (text) = NULL; + + if (in_lto_p) + { + /* ??? LTO drops all BLOCK_ABSTRACT_ORIGINs apart from those + representing the outermost block of an inlined function. + So walk the BLOCK tree until we hit such a scope. */ + while (block + && TREE_CODE (block) == BLOCK) + { + if (inlined_function_outer_scope_p (block)) + { + *pp_ti_abstract_origin (text) = block; + break; + } + block = BLOCK_SUPERCONTEXT (block); + } + return; + } + while (block && TREE_CODE (block) == BLOCK && BLOCK_ABSTRACT_ORIGIN (block)) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/tree-vrp.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/tree-vrp.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/tree-vrp.c 2014-03-20 10:50:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/tree-vrp.c 2014-03-27 17:33:34.000000000 +0000 @@ -9336,31 +9336,58 @@ else if (TREE_CODE (op0) == INTEGER_CST) set_value_range_to_value (&vr0, op0, NULL); else - return false; + set_value_range_to_varying (&vr0); if (TREE_CODE (op1) == SSA_NAME) vr1 = *get_value_range (op1); else if (TREE_CODE (op1) == INTEGER_CST) set_value_range_to_value (&vr1, op1, NULL); else - return false; + set_value_range_to_varying (&vr1); - if (!range_int_cst_p (&vr0) || !range_int_cst_p (&vr1)) - return false; - - tree r1 = int_const_binop (subcode, vr0.min, vr1.min); - tree r2 = int_const_binop (subcode, vr0.max, vr1.max); - if (r1 == NULL_TREE || TREE_OVERFLOW (r1) - || r2 == NULL_TREE || TREE_OVERFLOW (r2)) - return false; - if (subcode == MULT_EXPR) + if (!range_int_cst_p (&vr0)) + { + /* If one range is VR_ANTI_RANGE, VR_VARYING etc., + optimize at least x = y + 0; x = y - 0; x = y * 0; + and x = y * 1; which never overflow. */ + if (!range_int_cst_p (&vr1)) + return false; + if (tree_int_cst_sgn (vr1.min) == -1) + return false; + if (compare_tree_int (vr1.max, subcode == MULT_EXPR) == 1) + return false; + } + else if (!range_int_cst_p (&vr1)) + { + /* If one range is VR_ANTI_RANGE, VR_VARYING etc., + optimize at least x = 0 + y; x = 0 * y; and x = 1 * y; + which never overflow. */ + if (subcode == MINUS_EXPR) + return false; + if (!range_int_cst_p (&vr0)) + return false; + if (tree_int_cst_sgn (vr0.min) == -1) + return false; + if (compare_tree_int (vr0.max, subcode == MULT_EXPR) == 1) + return false; + } + else { - tree r3 = int_const_binop (subcode, vr0.min, vr1.max); - tree r4 = int_const_binop (subcode, vr0.max, vr1.min); - if (r3 == NULL_TREE || TREE_OVERFLOW (r3) - || r4 == NULL_TREE || TREE_OVERFLOW (r4)) + tree r1 = int_const_binop (subcode, vr0.min, vr1.min); + tree r2 = int_const_binop (subcode, vr0.max, vr1.max); + if (r1 == NULL_TREE || TREE_OVERFLOW (r1) + || r2 == NULL_TREE || TREE_OVERFLOW (r2)) return false; + if (subcode == MULT_EXPR) + { + tree r3 = int_const_binop (subcode, vr0.min, vr1.max); + tree r4 = int_const_binop (subcode, vr0.max, vr1.min); + if (r3 == NULL_TREE || TREE_OVERFLOW (r3) + || r4 == NULL_TREE || TREE_OVERFLOW (r4)) + return false; + } } + gimple g = gimple_build_assign_with_ops (subcode, gimple_call_lhs (stmt), op0, op1); gsi_replace (gsi, g, false); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ubsan.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ubsan.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ubsan.c 2014-03-20 10:50:24.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ubsan.c 2014-03-27 17:33:35.000000000 +0000 @@ -46,6 +46,7 @@ #include "tree-ssanames.h" #include "asan.h" #include "gimplify-me.h" +#include "intl.h" /* Map from a tree to a VAR_DECL tree. */ @@ -238,6 +239,8 @@ tree type = ubsan_source_location_type (); xloc = expand_location (loc); + if (xloc.file == NULL) + xloc.file = ""; /* Fill in the values from LOC. */ size_t len = strlen (xloc.file); @@ -404,7 +407,7 @@ pointer checking. */ tree -ubsan_create_data (const char *name, location_t loc, +ubsan_create_data (const char *name, const location_t *ploc, const struct ubsan_mismatch_data *mismatch, ...) { va_list args; @@ -412,17 +415,18 @@ tree fields[5]; vec *saved_args = NULL; size_t i = 0; + location_t loc = UNKNOWN_LOCATION; /* Firstly, create a pointer to type descriptor type. */ tree td_type = ubsan_type_descriptor_type (); TYPE_READONLY (td_type) = 1; td_type = build_pointer_type (td_type); - loc = LOCATION_LOCUS (loc); /* Create the structure type. */ ret = make_node (RECORD_TYPE); - if (loc != UNKNOWN_LOCATION) + if (ploc != NULL) { + loc = LOCATION_LOCUS (*ploc); fields[i] = build_decl (UNKNOWN_LOCATION, FIELD_DECL, NULL_TREE, ubsan_source_location_type ()); DECL_CONTEXT (fields[i]) = ret; @@ -481,7 +485,7 @@ tree ctor = build_constructor (ret, v); /* If desirable, set the __ubsan_source_location element. */ - if (loc != UNKNOWN_LOCATION) + if (ploc != NULL) CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, ubsan_source_location (loc)); size_t nelts = vec_safe_length (saved_args); @@ -513,7 +517,7 @@ ubsan_instrument_unreachable (location_t loc) { initialize_sanitizer_builtins (); - tree data = ubsan_create_data ("__ubsan_unreachable_data", loc, NULL, + tree data = ubsan_create_data ("__ubsan_unreachable_data", &loc, NULL, NULL_TREE); tree t = builtin_decl_explicit (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE); return build_call_expr_loc (loc, t, 1, build_fold_addr_expr_loc (loc, data)); @@ -583,7 +587,7 @@ const struct ubsan_mismatch_data m = { build_zero_cst (pointer_sized_int_node), ckind }; tree data = ubsan_create_data ("__ubsan_null_data", - loc, &m, + &loc, &m, ubsan_type_descriptor (TREE_TYPE (ptr), true), NULL_TREE); data = build_fold_addr_expr_loc (loc, data); @@ -658,7 +662,7 @@ ubsan_build_overflow_builtin (tree_code code, location_t loc, tree lhstype, tree op0, tree op1) { - tree data = ubsan_create_data ("__ubsan_overflow_data", loc, NULL, + tree data = ubsan_create_data ("__ubsan_overflow_data", &loc, NULL, ubsan_type_descriptor (lhstype, false), NULL_TREE); enum built_in_function fn_code; @@ -737,6 +741,21 @@ gimple_call_set_lhs (g, lhs); gsi_replace (&gsi, g, false); break; + case ABS_EXPR: + /* Transform i = ABS_EXPR; + into + _N = UBSAN_CHECK_SUB (0, u); + i = ABS_EXPR<_N>; */ + a = build_int_cst (lhstype, 0); + b = gimple_assign_rhs1 (stmt); + g = gimple_build_call_internal (IFN_UBSAN_CHECK_SUB, 2, a, b); + a = make_ssa_name (lhstype, NULL); + gimple_call_set_lhs (g, a); + gimple_set_location (g, gimple_location (stmt)); + gsi_insert_before (&gsi, g, GSI_SAME_STMT); + gimple_assign_set_rhs1 (stmt, a); + update_stmt (stmt); + break; default: break; } @@ -826,7 +845,7 @@ update_stmt (stmt); tree data = ubsan_create_data ("__ubsan_invalid_value_data", - loc, NULL, + &loc, NULL, ubsan_type_descriptor (type, false), NULL_TREE); data = build_fold_addr_expr_loc (loc, data); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ubsan.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ubsan.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/gcc/ubsan.h 2014-01-05 19:58:18.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/gcc/ubsan.h 2014-03-27 17:33:35.000000000 +0000 @@ -38,7 +38,7 @@ extern void ubsan_expand_null_ifn (gimple_stmt_iterator); extern tree ubsan_instrument_unreachable (location_t); -extern tree ubsan_create_data (const char *, location_t, +extern tree ubsan_create_data (const char *, const location_t *, const struct ubsan_mismatch_data *, ...); extern tree ubsan_type_descriptor (tree, bool); extern tree ubsan_encode_value (tree, bool = false); diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/LAST_UPDATED gccgo-4.9-4.9-20140330/=unpacked-tar1=/LAST_UPDATED --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/LAST_UPDATED 2014-03-21 17:17:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/LAST_UPDATED 2014-03-30 07:47:33.000000000 +0000 @@ -1,2 +1,2 @@ -Fri Mar 21 18:17:52 CET 2014 -Fri Mar 21 17:17:52 UTC 2014 (revision 208753) +Sun Mar 30 09:47:33 CEST 2014 +Sun Mar 30 07:47:33 UTC 2014 (revision 208944) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/aclocal.m4 gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/aclocal.m4 --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/aclocal.m4 2014-03-21 17:14:29.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/aclocal.m4 2014-03-27 17:33:36.000000000 +0000 @@ -968,10 +968,8 @@ AC_SUBST([am__untar]) ]) # _AM_PROG_TAR -m4_include([../config/acx.m4]) m4_include([../config/depstand.m4]) m4_include([../config/lead-dot.m4]) -m4_include([../config/libstdc++-raw-cxx.m4]) m4_include([../config/multi.m4]) m4_include([../config/override.m4]) m4_include([../libtool.m4]) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/ChangeLog 2014-03-21 17:14:29.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/ChangeLog 2014-03-27 17:33:36.000000000 +0000 @@ -1,3 +1,12 @@ +2014-03-26 Tobias Burnus + + * libcilkrts.spec.in: New. + * Makefile.am: Handle libcilkrts.spec. + * configure.ac: Determine link options for libcilkrts.spec. + * Makefile.in: Regenerate. + * configure: Regenerate. + * aclocal.m4: Regenerate. + 2014-03-20 Tobias Burnus PR other/60589 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/configure gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/configure --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/configure 2014-01-21 13:21:48.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/configure 2014-03-27 17:33:36.000000000 +0000 @@ -604,6 +604,7 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +link_cilkrts lt_cv_dlopen_libs toolexeclibdir toolexecdir @@ -4214,7 +4215,7 @@ # AC_PROG_LIBTOOL # AC_CONFIG_MACRO_DIR([..]) -ac_config_files="$ac_config_files Makefile" +ac_config_files="$ac_config_files Makefile libcilkrts.spec" # Default to --enable-multilib # Check whether --enable-multilib was given. @@ -11056,7 +11057,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11059 "configure" +#line 11060 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11162,7 +11163,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11165 "configure" +#line 11166 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14451,6 +14452,56 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext +# Check to see if -pthread or -lpthread is needed. Prefer the former. +# Note that the CILK_SELF_SPEC in gcc.c may force -pthread. +# In case the pthread.h system header is not found, this test will fail. +CFLAGS="$CFLAGS -pthread" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + void *g(void *d) { return NULL; } +int +main () +{ +pthread_t t; pthread_create(&t,NULL,g,NULL); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + void *g(void *d) { return NULL; } +int +main () +{ +pthread_t t; pthread_create(&t,NULL,g,NULL); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + as_fn_error "Pthreads are required to build libcilkrts" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +if test $enable_shared = yes; then + link_cilkrts="-lcilkrts %{static: $LIBS}" +else + link_cilkrts="-lcilkrts $LIBS" +fi + + # Must be last cat >confcache <<\_ACEOF @@ -15567,6 +15618,7 @@ case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "libcilkrts.spec") CONFIG_FILES="$CONFIG_FILES libcilkrts.spec" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/configure.ac gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/configure.ac --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/configure.ac 2014-01-21 13:21:48.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/configure.ac 2014-03-27 17:33:36.000000000 +0000 @@ -49,7 +49,7 @@ AC_PROG_CXX # AC_PROG_LIBTOOL # AC_CONFIG_MACRO_DIR([..]) -AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([Makefile libcilkrts.spec]) AM_ENABLE_MULTILIB(, ..) AC_FUNC_ALLOCA @@ -183,6 +183,32 @@ AC_DEFINE(HAVE_PTHREAD_AFFINITY_NP, 1, [ Define if pthread_{,attr_}{g,s}etaffinity_np is supported.])) +# Check to see if -pthread or -lpthread is needed. Prefer the former. +# Note that the CILK_SELF_SPEC in gcc.c may force -pthread. +# In case the pthread.h system header is not found, this test will fail. +CFLAGS="$CFLAGS -pthread" +AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + void *g(void *d) { return NULL; }], + [pthread_t t; pthread_create(&t,NULL,g,NULL);])], + [], + [CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include + void *g(void *d) { return NULL; }], + [pthread_t t; pthread_create(&t,NULL,g,NULL);])], + [], + [AC_MSG_ERROR([Pthreads are required to build libcilkrts])])]) + +if test $enable_shared = yes; then + link_cilkrts="-lcilkrts %{static: $LIBS}" +else + link_cilkrts="-lcilkrts $LIBS" +fi +AC_SUBST(link_cilkrts) + # Must be last AC_OUTPUT diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/libcilkrts.spec.in gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/libcilkrts.spec.in --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/libcilkrts.spec.in 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/libcilkrts.spec.in 2014-03-27 17:33:36.000000000 +0000 @@ -0,0 +1,3 @@ +# This spec file is read by gcc when linking. It is used to specify the +# standard libraries we need in order to link with libcilkrts. +*link_cilkrts: @link_cilkrts@ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/Makefile.am gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/Makefile.am --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/Makefile.am 2014-03-21 17:14:29.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/Makefile.am 2014-03-27 17:33:36.000000000 +0000 @@ -51,6 +51,7 @@ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) # Target list. +nodist_toolexeclib_HEADERS = libcilkrts.spec toolexeclib_LTLIBRARIES = libcilkrts.la libcilkrts_la_SOURCES = \ @@ -110,7 +111,7 @@ # C/C++ header files for Cilk. # cilkincludedir = $(includedir)/cilk cilkincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/cilk -cilkinclude_HEADERS = \ +nodist_cilkinclude_HEADERS = \ include/cilk/cilk_api.h \ include/cilk/cilk_api_linux.h \ include/cilk/cilk.h \ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/Makefile.in gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/Makefile.in --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libcilkrts/Makefile.in 2014-03-21 17:14:34.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libcilkrts/Makefile.in 2014-03-27 17:33:36.000000000 +0000 @@ -112,8 +112,8 @@ DIST_COMMON = $(srcdir)/include/internal/rev.mk README ChangeLog \ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/../mkinstalldirs $(srcdir)/../depcomp \ - $(cilkinclude_HEADERS) + $(srcdir)/../mkinstalldirs $(srcdir)/libcilkrts.spec.in \ + $(srcdir)/../depcomp # If we're building on Linux, use the Linux version script @LINUX_LINKER_SCRIPT_TRUE@am__append_1 = -Wl,--version-script,$(srcdir)/runtime/linux-symbols.ver @@ -122,10 +122,8 @@ @MAC_LINKER_SCRIPT_TRUE@am__append_2 = -Wl,-exported_symbols_list,$(srcdir)/runtime/mac-symbols.txt subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/libstdc++-raw-cxx.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ @@ -136,7 +134,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = libcilkrts.spec CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -160,7 +158,7 @@ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ - "$(DESTDIR)$(cilkincludedir)" + "$(DESTDIR)$(cilkincludedir)" "$(DESTDIR)$(toolexeclibdir)" LTLIBRARIES = $(toolexeclib_LTLIBRARIES) libcilkrts_la_LIBADD = am_libcilkrts_la_OBJECTS = cilk-abi-vla.lo os-unix-sysdep.lo bug.lo \ @@ -204,7 +202,7 @@ MULTISUBDIR = MULTIDO = true MULTICLEAN = true -HEADERS = $(cilkinclude_HEADERS) +HEADERS = $(nodist_cilkinclude_HEADERS) $(nodist_toolexeclib_HEADERS) ETAGS = etags CTAGS = ctags ACLOCAL = @ACLOCAL@ @@ -245,8 +243,6 @@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIBSTDCXX_RAW_CXX_CXXFLAGS = @LIBSTDCXX_RAW_CXX_CXXFLAGS@ -LIBSTDCXX_RAW_CXX_LDFLAGS = @LIBSTDCXX_RAW_CXX_LDFLAGS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ @@ -310,6 +306,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +link_cilkrts = @link_cilkrts@ localedir = @localedir@ localstatedir = @localstatedir@ lt_cv_dlopen_libs = @lt_cv_dlopen_libs@ @@ -328,7 +325,6 @@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ -target_noncanonical = @target_noncanonical@ target_os = @target_os@ target_vendor = @target_vendor@ toolexecdir = @toolexecdir@ @@ -356,6 +352,7 @@ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) # Target list. +nodist_toolexeclib_HEADERS = libcilkrts.spec toolexeclib_LTLIBRARIES = libcilkrts.la libcilkrts_la_SOURCES = \ runtime/config/$(config_dir)/cilk-abi-vla.c \ @@ -403,7 +400,7 @@ # C/C++ header files for Cilk. # cilkincludedir = $(includedir)/cilk cilkincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/cilk -cilkinclude_HEADERS = \ +nodist_cilkinclude_HEADERS = \ include/cilk/cilk_api.h \ include/cilk/cilk_api_linux.h \ include/cilk/cilk.h \ @@ -505,6 +502,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): +libcilkrts.spec: $(top_builddir)/config.status $(srcdir)/libcilkrts.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" @@ -853,10 +852,10 @@ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) maintainer-clean-multi: $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) -install-cilkincludeHEADERS: $(cilkinclude_HEADERS) +install-nodist_cilkincludeHEADERS: $(nodist_cilkinclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(cilkincludedir)" || $(MKDIR_P) "$(DESTDIR)$(cilkincludedir)" - @list='$(cilkinclude_HEADERS)'; test -n "$(cilkincludedir)" || list=; \ + @list='$(nodist_cilkinclude_HEADERS)'; test -n "$(cilkincludedir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -866,13 +865,33 @@ $(INSTALL_HEADER) $$files "$(DESTDIR)$(cilkincludedir)" || exit $$?; \ done -uninstall-cilkincludeHEADERS: +uninstall-nodist_cilkincludeHEADERS: @$(NORMAL_UNINSTALL) - @list='$(cilkinclude_HEADERS)'; test -n "$(cilkincludedir)" || list=; \ + @list='$(nodist_cilkinclude_HEADERS)'; test -n "$(cilkincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(cilkincludedir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(cilkincludedir)" && rm -f $$files +install-nodist_toolexeclibHEADERS: $(nodist_toolexeclib_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(toolexeclibdir)" || $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" + @list='$(nodist_toolexeclib_HEADERS)'; test -n "$(toolexeclibdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(toolexeclibdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \ + done + +uninstall-nodist_toolexeclibHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_toolexeclib_HEADERS)'; test -n "$(toolexeclibdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(toolexeclibdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(toolexeclibdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -929,7 +948,7 @@ check: check-am all-am: Makefile $(LTLIBRARIES) all-multi $(HEADERS) installdirs: - for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(cilkincludedir)"; do \ + for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(cilkincludedir)" "$(DESTDIR)$(toolexeclibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -981,13 +1000,14 @@ info-am: -install-data-am: install-cilkincludeHEADERS +install-data-am: install-nodist_cilkincludeHEADERS install-dvi: install-dvi-am install-dvi-am: -install-exec-am: install-multi install-toolexeclibLTLIBRARIES +install-exec-am: install-multi install-nodist_toolexeclibHEADERS \ + install-toolexeclibLTLIBRARIES install-html: install-html-am @@ -1029,7 +1049,8 @@ ps-am: -uninstall-am: uninstall-cilkincludeHEADERS \ +uninstall-am: uninstall-nodist_cilkincludeHEADERS \ + uninstall-nodist_toolexeclibHEADERS \ uninstall-toolexeclibLTLIBRARIES .MAKE: all-multi clean-multi distclean-multi install-am install-multi \ @@ -1040,17 +1061,20 @@ clean-toolexeclibLTLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-multi \ distclean-tags dvi dvi-am html html-am info info-am install \ - install-am install-cilkincludeHEADERS install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-multi install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-multi install-nodist_cilkincludeHEADERS \ + install-nodist_toolexeclibHEADERS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip \ install-toolexeclibLTLIBRARIES installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-multi mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \ pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-cilkincludeHEADERS uninstall-toolexeclibLTLIBRARIES + uninstall-nodist_cilkincludeHEADERS \ + uninstall-nodist_toolexeclibHEADERS \ + uninstall-toolexeclibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgcc/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgcc/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgcc/ChangeLog 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgcc/ChangeLog 2014-03-27 17:33:34.000000000 +0000 @@ -1,3 +1,8 @@ +2014-03-27 Andreas Krebbel + + * config.host: Append t-floattodi to tmake_file depending on + host_address. + 2014-03-20 Joel Sherrill * config.host (v850*-*-*): Add to tmake_file instead of resetting it. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgcc/config.host gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgcc/config.host --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgcc/config.host 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgcc/config.host 2014-03-27 17:33:34.000000000 +0000 @@ -1027,7 +1027,10 @@ md_unwind_header=s390/linux-unwind.h ;; s390x-*-linux*) - tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux s390/32/t-floattodi" + tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux" + if test "${host_address}" = 32; then + tmake_file="${tmake_file} s390/32/t-floattodi" + fi md_unwind_header=s390/linux-unwind.h ;; s390x-ibm-tpf*) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgfortran/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgfortran/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgfortran/ChangeLog 2014-03-20 10:50:25.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgfortran/ChangeLog 2014-03-22 12:09:07.000000000 +0000 @@ -1,3 +1,9 @@ +2014-03-21 Jerry DeLisle + + PR libfortran/60148 + * io/transfer.c (data_transfer_init): If std= was specified, set + delim status to DELIM_NONE of no other was specified. + 2014-03-18 Ulrich Weigand * configure.ac: Check for presence of fcntl. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgfortran/io/transfer.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgfortran/io/transfer.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgfortran/io/transfer.c 2014-03-04 07:04:08.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgfortran/io/transfer.c 2014-03-22 12:09:07.000000000 +0000 @@ -2674,7 +2674,8 @@ if (dtp->u.p.current_unit->delim_status == DELIM_UNSPECIFIED) { if (ionml && dtp->u.p.current_unit->flags.delim == DELIM_UNSPECIFIED) - dtp->u.p.current_unit->delim_status = DELIM_QUOTE; + dtp->u.p.current_unit->delim_status = + compile_options.allow_std & GFC_STD_GNU ? DELIM_QUOTE : DELIM_NONE; else dtp->u.p.current_unit->delim_status = dtp->u.p.current_unit->flags.delim; } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/ChangeLog 2014-01-05 19:57:32.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/ChangeLog 2014-03-26 08:19:10.000000000 +0000 @@ -1,3 +1,16 @@ +2014-03-25 Jakub Jelinek + + PR c++/60331 + * testsuite/libgomp.c++/udr-11.C: New test. + * testsuite/libgomp.c++/udr-12.C: New test. + * testsuite/libgomp.c++/udr-13.C: New test. + * testsuite/libgomp.c++/udr-14.C: New test. + * testsuite/libgomp.c++/udr-15.C: New test. + * testsuite/libgomp.c++/udr-16.C: New test. + * testsuite/libgomp.c++/udr-17.C: New test. + * testsuite/libgomp.c++/udr-18.C: New test. + * testsuite/libgomp.c++/udr-19.C: New test. + 2014-01-02 Richard Sandiford Update copyright years diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-11.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-11.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-11.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-11.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-1.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-12.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-12.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-12.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-12.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-2.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-13.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-13.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-13.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-13.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-3.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-14.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-14.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-14.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-14.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-4.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-15.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-15.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-15.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-15.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-5.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-16.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-16.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-16.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-16.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-6.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-17.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-17.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-17.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-17.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-7.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-18.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-18.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-18.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-18.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-8.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-19.C gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-19.C --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-19.C 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libgomp/testsuite/libgomp.c++/udr-19.C 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,4 @@ +// { dg-do run } +// { dg-options "-fopenmp -std=c++11" } + +#include "udr-9.C" diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libiberty/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libiberty/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libiberty/ChangeLog 2014-03-20 10:50:11.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libiberty/ChangeLog 2014-03-28 19:04:52.000000000 +0000 @@ -1,3 +1,8 @@ +2014-03-28 Richard Biener + + * simple-object.c (simple_object_internal_read): Handle + EINTR and short reads. + 2014-03-13 Uros Bizjak * regex.c (bzero) [!_LIBC]: Define without coma expression. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libiberty/simple-object.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/libiberty/simple-object.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libiberty/simple-object.c 2013-02-25 13:35:44.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libiberty/simple-object.c 2014-03-28 19:04:52.000000000 +0000 @@ -63,8 +63,6 @@ unsigned char *buffer, size_t size, const char **errmsg, int *err) { - ssize_t got; - if (lseek (descriptor, offset, SEEK_SET) < 0) { *errmsg = "lseek"; @@ -72,15 +70,26 @@ return 0; } - got = read (descriptor, buffer, size); - if (got < 0) + do { - *errmsg = "read"; - *err = errno; - return 0; + ssize_t got = read (descriptor, buffer, size); + if (got == 0) + break; + else if (got > 0) + { + buffer += got; + size -= got; + } + else if (errno != EINTR) + { + *errmsg = "read"; + *err = errno; + return 0; + } } + while (size > 0); - if ((size_t) got < size) + if (size > 0) { *errmsg = "file too short"; *err = 0; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libitm/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libitm/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libitm/ChangeLog 2014-01-14 11:14:12.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libitm/ChangeLog 2014-03-27 17:33:33.000000000 +0000 @@ -1,3 +1,13 @@ +2014-03-26 Jakub Jelinek + + * config/linux/futex_bits.h: Include errno.h. + (sys_futex0): If syscall returns -1, return -errno rather than + -1. + +2014-03-26 Joseph Myers + + * libitm.texi (Index): Rename to Library Index. + 2014-01-13 H.J. Lu PR libitm/53113 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libitm/config/linux/futex_bits.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/libitm/config/linux/futex_bits.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libitm/config/linux/futex_bits.h 2014-01-05 19:57:31.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libitm/config/linux/futex_bits.h 2014-03-27 17:33:33.000000000 +0000 @@ -31,9 +31,13 @@ #include #include +#include static inline long sys_futex0 (std::atomic *addr, long op, long val) { - return syscall (SYS_futex, (int*) addr, op, val, 0); + long res = syscall (SYS_futex, (int*) addr, op, val, 0); + if (__builtin_expect (res == -1, 0)) + return -errno; + return res; } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libitm/libitm.texi gccgo-4.9-4.9-20140330/=unpacked-tar1=/libitm/libitm.texi --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libitm/libitm.texi 2014-01-05 19:57:30.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libitm/libitm.texi 2014-03-27 17:33:33.000000000 +0000 @@ -69,7 +69,7 @@ * Internals:: Notes on libitm's internal synchronization. * GNU Free Documentation License:: How you can copy and share this manual. -* Index:: Index of this documentation. +* Library Index:: Index of this documentation. @end menu @@ -766,8 +766,8 @@ @c Index @c --------------------------------------------------------------------- -@node Index -@unnumbered Index +@node Library Index +@unnumbered Library Index @printindex cp diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/ChangeLog 2014-03-21 17:14:27.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/ChangeLog 2014-03-27 19:29:33.000000000 +0000 @@ -1,3 +1,96 @@ +2014-03-27 Jonathan Wakely + + * doc/xml/manual/io.xml (std.io.objects): Additional markup. + + * doc/xml/faq.xml (faq): Refer to clauses instead of chapters. + * doc/xml/manual/appendix_contributing.xml (contrib.design_notes): + Likewise. + * doc/xml/manual/backwards_compatibility.xml (backwards.third): + Likewise. + * doc/xml/manual/test.xml (test.organization.layout): Likewise. + + * doc/xml/manual/containers.xml (associative.bitset.size_variable): + Fix bad s/part/chapter/ substitutions. + * doc/xml/manual/io.xml (std.io): Likewise. + * doc/xml/manual/numerics.xml (std.numerics.generalized_ops): Likewise. + * doc/xml/manual/strings.xml (strings.string.Cstring): Likewise. + + * doc/html/*: Regenerate. + +2014-03-27 Jonathan Wakely + + PR libstdc++/60612 + * libsupc++/eh_ptr.cc: Assert __cxa_dependent_exception layout is + compatible with __cxa_exception. + * libsupc++/unwind-cxx.h (__cxa_dependent_exception): Add padding. + Fix typos in comments. + * testsuite/18_support/exception_ptr/60612-terminate.cc: New. + * testsuite/18_support/exception_ptr/60612-unexpected.cc: New. + +2014-03-25 Jonathan Wakely + + PR libstdc++/60658 + * include/bits/atomic_base.h (__atomic_base<_PTp*>::is_lock_free()): + Use sizeof pointer type not the element type. + * testsuite/29_atomics/atomic/60658.cc: New. + +2014-03-24 Jakub Jelinek + + * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. + * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Likewise. + * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Remove TLS + entries. + +2014-03-23 John David Anglin + + * testsuite/23_containers/bitset/45713.cc: Skip compile on hppa*64*-*-*. + +2014-03-23 François Dumont + + * include/bits/hashtable.h (_Hashtable(allocator_type)): Fix call + to delegated constructor. + (_Hashtable(size_type, _H1, key_equal, allocator_type)): Likewise. + (_Hashtable<_It>(_It, _It, size_type, _H1, key_equal, allocator_type)): + Likewise. + (_Hashtable( + initializer_list, size_type, _H1, key_equal, allocator_type)): Likewise. + +2014-03-23 John David Anglin + + PR libstdc++/60623 + * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. + +2014-03-21 Jonathan Wakely + + PR libstdc++/60587 + * include/debug/functions.h (_Is_contiguous_sequence): Define. + (__foreign_iterator): Accept additional iterator. Do not dispatch on + iterator category. + (__foreign_iterator_aux2): Likewise. Add overload for iterators + from different types of debug container. Use _Is_contiguous_sequence + instead of is_lvalue_reference. + (__foreign_iterator_aux3): Accept additional iterator. Avoid + dereferencing past-the-end iterator. + (__foreign_iterator_aux4): Use const value_type* instead of + potentially user-defined const_pointer type. + * include/debug/macros.h (__glibcxx_check_insert_range): Fix comment + and pass end iterator to __gnu_debug::__foreign_iterator. + (__glibcxx_check_insert_range_after): Likewise. + (__glibcxx_check_max_load_factor): Fix comment. + * include/debug/vector (_Is_contiguous_sequence): Define partial + specializations. + * testsuite/23_containers/vector/debug/57779_neg.cc: Remove + -std=gnu++11 option and unused header. + * testsuite/23_containers/vector/debug/60587.cc: New. + * testsuite/23_containers/vector/debug/60587_neg.cc: New. + 2014-03-20 Ulrich Weigand * crossconfig.m4: Support spu-*-elf* targets. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt 2013-02-25 13:35:38.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -400,6 +400,8 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 +FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 @@ -412,6 +414,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -587,6 +590,8 @@ FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@@GLIBCXX_3.4.18 +FUNC:_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@@GLIBCXX_3.4.18 FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 @@ -1201,9 +1206,11 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@@GLIBCXX_3.4.18 FUNC:_ZNSt12__basic_fileIcE2fdEv@@GLIBCXX_3.4 FUNC:_ZNSt12__basic_fileIcE4fileEv@@GLIBCXX_3.4.1 FUNC:_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@@GLIBCXX_3.4 @@ -1471,6 +1478,11 @@ FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@@GLIBCXX_3.4 FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@@GLIBCXX_3.4 +FUNC:_ZNSt13random_device14_M_init_pretr1ERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device16_M_getval_pretr1Ev@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_finiEv@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 +FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 @@ -1749,6 +1761,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -1870,6 +1885,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -1900,6 +1918,8 @@ FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2174,13 +2194,16 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2216,6 +2239,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2436,7 +2460,10 @@ FUNC:__cxa_guard_release@@CXXABI_1.3 FUNC:__cxa_pure_virtual@@CXXABI_1.3 FUNC:__cxa_rethrow@@CXXABI_1.3 +FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2482,6 +2509,8 @@ OBJECT:0:CXXABI_1.3.4 OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 +OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2493,7 +2522,10 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 +OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2562,6 +2594,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2574,6 +2607,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -2992,6 +3026,8 @@ OBJECT:1:_ZNSt21__numeric_limits_base9is_moduloE@@GLIBCXX_3.4 OBJECT:1:_ZNSt21__numeric_limits_base9is_signedE@@GLIBCXX_3.4 OBJECT:1:_ZNSt6chrono12system_clock12is_monotonicE@@GLIBCXX_3.4.11 +OBJECT:1:_ZNSt6chrono3_V212steady_clock9is_steadyE@@GLIBCXX_3.4.19 +OBJECT:1:_ZNSt6chrono3_V212system_clock9is_steadyE@@GLIBCXX_3.4.19 OBJECT:1:_ZSt10adopt_lock@@GLIBCXX_3.4.11 OBJECT:1:_ZSt10defer_lock@@GLIBCXX_3.4.11 OBJECT:1:_ZSt11try_to_lock@@GLIBCXX_3.4.11 @@ -3017,13 +3053,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3044,6 +3083,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 @@ -416,6 +417,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1207,6 +1209,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1784,6 +1787,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -1908,6 +1914,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2214,13 +2223,16 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2258,6 +2270,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2480,6 +2493,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2504,6 +2519,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2518,6 +2534,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2587,6 +2604,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2599,6 +2617,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3048,13 +3067,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3075,6 +3097,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 @@ -416,6 +417,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1207,6 +1209,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1784,6 +1787,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -1908,6 +1914,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2214,13 +2223,16 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2258,6 +2270,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2480,6 +2493,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2504,6 +2519,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2518,6 +2534,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2587,6 +2604,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2599,6 +2617,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3048,13 +3067,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3075,6 +3097,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 @@ -556,6 +557,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1353,6 +1355,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1934,6 +1937,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -2098,6 +2104,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2404,14 +2413,17 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2449,6 +2461,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2691,6 +2704,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2737,6 +2752,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_LDBL_1.3 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 @@ -2752,6 +2768,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2832,6 +2849,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2844,6 +2862,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3308,13 +3327,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3335,6 +3357,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 @@ -556,6 +557,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1353,6 +1355,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1934,6 +1937,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -2098,6 +2104,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2404,14 +2413,17 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9 @@ -2449,6 +2461,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2691,6 +2704,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2737,6 +2752,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_LDBL_1.3 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 @@ -2752,6 +2768,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -3217,6 +3234,7 @@ OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4 OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4 OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3299,6 +3317,7 @@ OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:24:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -3311,6 +3330,7 @@ OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:24:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3333,6 +3353,7 @@ OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4 OBJECT:272:_ZSt4clog@@GLIBCXX_3.4 OBJECT:272:_ZSt4cout@@GLIBCXX_3.4 @@ -3519,8 +3540,10 @@ OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:40:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:40:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 @@ -556,6 +557,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1353,6 +1355,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1934,6 +1937,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -2098,6 +2104,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2404,14 +2413,17 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2449,6 +2461,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2691,6 +2704,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2737,6 +2752,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_LDBL_1.3 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 @@ -2752,6 +2768,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2832,6 +2849,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2844,6 +2862,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3308,13 +3327,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3335,6 +3357,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 @@ -556,6 +557,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1353,6 +1355,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1934,6 +1937,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -2098,6 +2104,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2404,14 +2413,17 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2449,6 +2461,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2691,6 +2704,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2737,6 +2752,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_LDBL_1.3 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 @@ -2752,6 +2768,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2832,6 +2849,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2844,6 +2862,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3308,13 +3327,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3335,6 +3357,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 FUNC:_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_LDBL_3.4 @@ -556,6 +557,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1353,6 +1355,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1934,6 +1937,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -2098,6 +2104,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2404,14 +2413,17 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_LDBL_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9 @@ -2449,6 +2461,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2691,6 +2704,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2737,6 +2752,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_LDBL_1.3 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 @@ -2752,6 +2768,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -3217,6 +3234,7 @@ OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4 OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4 OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3299,6 +3317,7 @@ OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:24:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -3311,6 +3330,7 @@ OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:24:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3333,6 +3353,7 @@ OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4 OBJECT:272:_ZSt4clog@@GLIBCXX_3.4 OBJECT:272:_ZSt4cout@@GLIBCXX_3.4 @@ -3519,8 +3540,10 @@ OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:40:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:40:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 @@ -416,6 +417,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1207,6 +1209,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1784,6 +1787,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -1908,6 +1914,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2214,13 +2223,16 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvjj@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvjj@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 @@ -2258,6 +2270,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2480,6 +2493,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2504,6 +2519,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2518,6 +2534,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2587,6 +2604,7 @@ OBJECT:12:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:12:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:12:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:12:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -2599,6 +2617,7 @@ OBJECT:12:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:12:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:12:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3048,13 +3067,16 @@ OBJECT:20:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:20:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:20:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:20:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:20:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9bad_alloc@@GLIBCXX_3.4 OBJECT:20:_ZTVSt9exception@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3075,6 +3097,7 @@ OBJECT:24:_ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:28:_ZTSSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTSSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:28:_ZTTSd@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt 2013-05-26 10:19:19.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt 2014-03-26 08:19:11.000000000 +0000 @@ -403,6 +403,7 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 +FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 @@ -416,6 +417,7 @@ FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 +FUNC:_ZNKSt20bad_array_new_length4whatEv@@CXXABI_1.3.8 FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 @@ -1207,6 +1209,7 @@ FUNC:_ZNSt11range_errorD0Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD1Ev@@GLIBCXX_3.4 FUNC:_ZNSt11range_errorD2Ev@@GLIBCXX_3.4.15 +FUNC:_ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@@GLIBCXX_3.4.20 FUNC:_ZNSt11regex_errorD0Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD1Ev@@GLIBCXX_3.4.15 FUNC:_ZNSt11regex_errorD2Ev@@GLIBCXX_3.4.15 @@ -1784,6 +1787,9 @@ FUNC:_ZNSt16__numpunct_cacheIwED0Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED1Ev@@GLIBCXX_3.4 FUNC:_ZNSt16__numpunct_cacheIwED2Ev@@GLIBCXX_3.4 +FUNC:_ZNSt16bad_array_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt16bad_array_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt16invalid_argumentC1ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentC2ERKSs@@GLIBCXX_3.4 FUNC:_ZNSt16invalid_argumentD0Ev@@GLIBCXX_3.4 @@ -1908,6 +1914,9 @@ FUNC:_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@@GLIBCXX_3.4.5 FUNC:_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 +FUNC:_ZNSt20bad_array_new_lengthD0Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD1Ev@@CXXABI_1.3.8 +FUNC:_ZNSt20bad_array_new_lengthD2Ev@@CXXABI_1.3.8 FUNC:_ZNSt22condition_variable_anyC1Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyC2Ev@@GLIBCXX_3.4.11 FUNC:_ZNSt22condition_variable_anyD1Ev@@GLIBCXX_3.4.11 @@ -2214,13 +2223,16 @@ FUNC:_ZNVSt9__atomic011atomic_flag5clearESt12memory_order@@GLIBCXX_3.4.11 FUNC:_ZSt10unexpectedv@@GLIBCXX_3.4 FUNC:_ZSt11_Hash_bytesPKvmm@@CXXABI_1.3.5 +FUNC:_ZSt13get_terminatev@@GLIBCXX_3.4.20 FUNC:_ZSt13set_terminatePFvvE@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 +FUNC:_ZSt14get_unexpectedv@@GLIBCXX_3.4.20 FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15_Fnv_hash_bytesPKvmm@@CXXABI_1.3.5 FUNC:_ZSt15future_categoryv@@GLIBCXX_3.4.15 +FUNC:_ZSt15get_new_handlerv@@GLIBCXX_3.4.20 FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 FUNC:_ZSt15system_categoryv@@GLIBCXX_3.4.11 FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@@GLIBCXX_3.4.9 @@ -2258,6 +2270,7 @@ FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt23__throw_underflow_errorPKc@@GLIBCXX_3.4 FUNC:_ZSt24__throw_invalid_argumentPKc@@GLIBCXX_3.4 +FUNC:_ZSt24__throw_out_of_range_fmtPKcz@@GLIBCXX_3.4.20 FUNC:_ZSt25__throw_bad_function_callv@@GLIBCXX_3.4.14 FUNC:_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@@GLIBCXX_3.4 FUNC:_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@@GLIBCXX_3.4 @@ -2480,6 +2493,8 @@ FUNC:__cxa_rethrow@@CXXABI_1.3 FUNC:__cxa_thread_atexit@@CXXABI_1.3.7 FUNC:__cxa_throw@@CXXABI_1.3 +FUNC:__cxa_throw_bad_array_length@@CXXABI_1.3.8 +FUNC:__cxa_throw_bad_array_new_length@@CXXABI_1.3.8 FUNC:__cxa_tm_cleanup@@CXXABI_TM_1 FUNC:__cxa_vec_cctor@@CXXABI_1.3 FUNC:__cxa_vec_cleanup@@CXXABI_1.3 @@ -2504,6 +2519,7 @@ OBJECT:0:CXXABI_1.3.5 OBJECT:0:CXXABI_1.3.6 OBJECT:0:CXXABI_1.3.7 +OBJECT:0:CXXABI_1.3.8 OBJECT:0:CXXABI_TM_1 OBJECT:0:GLIBCXX_3.4 OBJECT:0:GLIBCXX_3.4.1 @@ -2518,6 +2534,7 @@ OBJECT:0:GLIBCXX_3.4.18 OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 +OBJECT:0:GLIBCXX_3.4.20 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 OBJECT:0:GLIBCXX_3.4.5 @@ -2962,6 +2979,7 @@ OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4 OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4 OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 +OBJECT:21:_ZTSSt16bad_array_length@@CXXABI_1.3.8 OBJECT:21:_ZTSSt16invalid_argument@@GLIBCXX_3.4 OBJECT:22:_ZTSNSt8ios_base7failureE@@GLIBCXX_3.4 OBJECT:22:_ZTSSt10moneypunctIcLb0EE@@GLIBCXX_3.4 @@ -3036,6 +3054,7 @@ OBJECT:24:_ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt15underflow_error@@GLIBCXX_3.4 +OBJECT:24:_ZTISt16bad_array_length@@CXXABI_1.3.8 OBJECT:24:_ZTISt16invalid_argument@@GLIBCXX_3.4 OBJECT:24:_ZTISt17bad_function_call@@GLIBCXX_3.4.15 OBJECT:24:_ZTISt17moneypunct_bynameIcLb0EE@@GLIBCXX_3.4 @@ -3048,6 +3067,7 @@ OBJECT:24:_ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@@GLIBCXX_3.4 +OBJECT:24:_ZTISt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4 OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 @@ -3070,6 +3090,7 @@ OBJECT:24:_ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:24:_ZTISt9strstream@@GLIBCXX_3.4 +OBJECT:25:_ZTSSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:272:_ZSt4cerr@@GLIBCXX_3.4 OBJECT:272:_ZSt4clog@@GLIBCXX_3.4 OBJECT:272:_ZSt4cout@@GLIBCXX_3.4 @@ -3252,8 +3273,10 @@ OBJECT:40:_ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt15underflow_error@@GLIBCXX_3.4 +OBJECT:40:_ZTVSt16bad_array_length@@CXXABI_1.3.8 OBJECT:40:_ZTVSt16invalid_argument@@GLIBCXX_3.4 OBJECT:40:_ZTVSt17bad_function_call@@GLIBCXX_3.4.15 +OBJECT:40:_ZTVSt20bad_array_new_length@@CXXABI_1.3.8 OBJECT:40:_ZTVSt8bad_cast@@GLIBCXX_3.4 OBJECT:40:_ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@@GLIBCXX_3.4 OBJECT:40:_ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@@GLIBCXX_3.4 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/api.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/api.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/api.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/api.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ FSF -


diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/faq.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/faq.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/faq.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/faq.html 2014-03-27 19:29:33.000000000 +0000 @@ -3,7 +3,7 @@ 2008, 2010 FSF -


1.1. +


1.1. What is libstdc++?
1.2. Why should I use libstdc++? @@ -109,7 +109,7 @@

The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library as described in - chapters 17 through 27 and annex D. For those who want to see + clauses 17 through 27 and annex D. For those who want to see exactly how far the project has come, or just want the latest bleeding-edge code, the up-to-date source is available over anonymous SVN, and can even be browsed over diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/index.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/index.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/index.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/index.html 2014-03-27 19:29:33.000000000 +0000 @@ -34,13 +34,13 @@

Exceptions
API Reference
Adding Data to exception
Concept Checking
6. Utilities -
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. +
Functors
Pairs
Memory
Allocators
Requirements
Design Issues
Implementation
Interface Design
Selecting Default Allocation Policy
Disabling Memory Caching
Using a Specific Allocator
Custom Allocators
Extension Allocators
auto_ptr
Limitations
Use in Containers
shared_ptr
Requirements
Design Issues
Implementation
Class Hierarchy
Thread Safety
Selecting Lock Policy
Related functions and classes
Use
Examples
Unresolved Issues
Acknowledgments
Traits
7. Strings
String Classes
Simple Transformations
Case Sensitivity
Arbitrary Character Types
Tokenizing
Shrink to Fit
CString (MFC)
8. Localization -
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. +
Locales
locale
Requirements
Design
Implementation
Interacting with "C" locales
Future
Facets
ctype
Implementation
Specializations
Future
codecvt
Requirements
Design
wchar_t Size
Support for Unicode
Other Issues
Implementation
Use
Future
messages
Requirements
Design
Implementation
Models
The GNU Model
Use
Future
9. Containers
Sequences
list
list::size() is O(n)
vector
Space Overhead Management
Associative
Insertion Hints
bitset
Size Variable
Type String
Unordered Associative
Insertion Hints
Hash Code
Hash Code Caching Policy
Interacting with C
Containers vs. Arrays
10. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/abi.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/abi.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/abi.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/abi.html 2014-03-27 19:29:33.000000000 +0000 @@ -493,39 +493,39 @@ C++ ABI Summary - .

+ .

+ .

+ .

+ .

+ . Ulrich Drepper.

+ .

Dynamic Shared Objects: Survey and Issues . ISO C++ J16/06-0046 - . Benjamin Kosnik.

+ . Benjamin Kosnik.

Versioning With Namespaces . ISO C++ J16/06-0083 - . Benjamin Kosnik.

+ . Benjamin Kosnik.

Chapter 11.  Algorithms - +

The neatest accomplishment of the algorithms section is that all the work is done via iterators, not containers directly. This means two diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/api.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/api.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/api.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/api.html 2014-03-27 19:29:33.000000000 +0000 @@ -77,11 +77,11 @@ __alloc to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. -

Table B.6. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

Releases after gcc-3.4 have continued to add to the collection +

Table B.6. Extension Allocators

Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T>ext/new_allocator.hstd::__new_allocmemory
__gnu_cxx::malloc_allocator<T>ext/malloc_allocator.hstd::__malloc_alloc_template<int>memory
__gnu_cxx::debug_allocator<T>ext/debug_allocator.hstd::debug_alloc<T>memory
__gnu_cxx::__pool_alloc<T>ext/pool_allocator.hstd::__default_alloc_template<bool,int>memory
__gnu_cxx::__mt_alloc<T>ext/mt_allocator.h
__gnu_cxx::bitmap_allocator<T>ext/bitmap_allocator.h

Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. -

Table B.7. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

+

Table B.7. Extension Allocators Continued

AllocatorIncludeVersion
__gnu_cxx::array_allocator<T>ext/array_allocator.h4.0.0
__gnu_cxx::throw_allocator<T>ext/throw_allocator.h4.2.0

Debug mode first appears.

Precompiled header support PCH support. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_contributing.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_contributing.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_contributing.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_contributing.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Appendices  Next


Contributing - +

The GNU C++ Library is part of GCC and follows the same development model, so the general rules for diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_free.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_free.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_free.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_free.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Appendices  Next


Free Software Needs Free Documentation - +

The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_gpl.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_gpl.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_gpl.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_gpl.html 2014-03-27 19:29:33.000000000 +0000 @@ -77,7 +77,7 @@

The precise terms and conditions for copying, distribution and modification follow. -

+

TERMS AND CONDITIONS

0. Definitions. @@ -618,7 +618,7 @@ waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. -

+

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_porting.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_porting.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_porting.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/appendix_porting.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Appendices  Next

Porting and Maintenance - +

What Comes from Where

Figure B.1. Configure and Build File Dependencies

Dependency Graph for Configure and Build Files

+

What Comes from Where

Figure B.1. Configure and Build File Dependencies

Dependency Graph for Configure and Build Files

Regenerate all generated files by using the command autoreconf at the top level of the libstdc++ source directory. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/associative.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/associative.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/associative.html 2013-04-02 15:19:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/associative.html 2014-03-27 19:29:33.000000000 +0000 @@ -100,7 +100,7 @@

There are a couple of ways to handle this kind of thing. Please consider all of them before passing judgement. They include, in - no chaptericular order: + no particular order:

  • A very large N in bitset<N>.

  • A container<bool>.

  • Extremely weird solutions.

A very large N in bitset<N>.   It has been diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/atomics.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/atomics.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/atomics.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/atomics.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents  Next


Chapter 14.  Atomics - +

Table of Contents

API Reference

Facilities for atomic operations.

API Reference

diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/backwards.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/backwards.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/backwards.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/backwards.html 2014-03-27 19:29:33.000000000 +0000 @@ -360,7 +360,7 @@

Third

The third generation GNU C++ library is called libstdc++, or libstdc++-v3.

The subset commonly known as the Standard Template Library - (chapters 23 through 25, mostly) is adapted from the final release + (clauses 23 through 25, mostly) is adapted from the final release of the SGI STL (version 3.3), with extensive changes.

A more formal description of the V3 goals can be found in the official design document. @@ -947,15 +947,15 @@ This is a change in behavior from older versions. Now, most iterator_type typedefs in container classes are POD objects, not value_type pointers. -

Bibliography

+

Bibliography

Migrating to GCC 4.1 - . Dan Kegel.

+ . Dan Kegel.

+ . Martin Michlmayr.

Migration guide for GCC-3.2 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html 2014-03-27 19:29:33.000000000 +0000 @@ -75,7 +75,7 @@

Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). -

Table 21.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

+

Table 21.1. Bitmap Allocator Memory Map

268042949672954294967295Data -> Space for 64 ints

The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/concurrency.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/concurrency.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/concurrency.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/concurrency.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents  Next


Chapter 15.  Concurrency - +

Table of Contents

API Reference

Facilities for concurrent operation, and control thereof.

API Reference

diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/containers.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/containers.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/containers.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/containers.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents  Next


Chapter 9.  Containers - +

Sequences

list

list::size() is O(n)

Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/debug_mode_using.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/debug_mode_using.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/debug_mode_using.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/debug_mode_using.html 2014-03-27 19:29:33.000000000 +0000 @@ -18,6 +18,6 @@ mode or with debug mode. The following table provides the names and headers of the debugging containers: -

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional +

Table 17.1. Debugging Containers

ContainerHeaderDebug containerDebug header
std::bitsetbitset__gnu_debug::bitset<debug/bitset>
std::dequedeque__gnu_debug::deque<debug/deque>
std::listlist__gnu_debug::list<debug/list>
std::mapmap__gnu_debug::map<debug/map>
std::multimapmap__gnu_debug::multimap<debug/map>
std::multisetset__gnu_debug::multiset<debug/set>
std::setset__gnu_debug::set<debug/set>
std::stringstring__gnu_debug::string<debug/string>
std::wstringstring__gnu_debug::wstring<debug/string>
std::basic_stringstring__gnu_debug::basic_string<debug/string>
std::vectorvector__gnu_debug::vector<debug/vector>

In addition, when compiling in C++11 mode, these additional containers have additional debug capability. -

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

\ No newline at end of file +

Table 17.2. Debugging Containers C++11

ContainerHeaderDebug containerDebug header
std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

\ No newline at end of file diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/diagnostics.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/diagnostics.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/diagnostics.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/diagnostics.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents  Next

Chapter 5.  Diagnostics - +

Exceptions

API Reference

All exception objects are defined in one of the standard header files: exception, diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/documentation_hacking.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/documentation_hacking.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/documentation_hacking.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/documentation_hacking.html 2014-03-27 19:29:33.000000000 +0000 @@ -112,7 +112,7 @@ supported, and are always aliased to dummy rules. These unsupported formats are: info, ps, and dvi. -

Doxygen

Prerequisites

Table B.1. Doxygen Prerequisites

ToolVersionRequired By
coreutils8.5all
bash4.1all
doxygen1.7.6.1all
graphviz2.26graphical hierarchies
pdflatex2007-59pdf output

+

Doxygen

Prerequisites

Table B.1. Doxygen Prerequisites

ToolVersionRequired By
coreutils8.5all
bash4.1all
doxygen1.7.6.1all
graphviz2.26graphical hierarchies
pdflatex2007-59pdf output

Prerequisite tools are Bash 2.0 or later, Doxygen, and the GNU @@ -309,7 +309,7 @@ writing Doxygen comments. Single and double quotes, and separators in filenames are two common trouble spots. When in doubt, consult the following table. -

Table B.2. HTML to Doxygen Markup Comparison

HTMLDoxygen
\\\
"\"
'\'
<i>@a word
<b>@b word
<code>@c word
<em>@a word
<em><em>two words or more</em>

Docbook

Prerequisites

Table B.3. Docbook Prerequisites

ToolVersionRequired By
docbook5-style-xsl1.76.1all
xsltproc1.1.26all
xmllint2.7.7validation
dblatex0.3pdf output
pdflatex2007-59pdf output
docbook2X0.8.8info output
epub3 stylesheetsb3epub output

+

Table B.2. HTML to Doxygen Markup Comparison

HTMLDoxygen
\\\
"\"
'\'
<i>@a word
<b>@b word
<code>@c word
<em>@a word
<em><em>two words or more</em>

Docbook

Prerequisites

Table B.3. Docbook Prerequisites

ToolVersionRequired By
docbook5-style-xsl1.76.1all
xsltproc1.1.26all
xmllint2.7.7validation
dblatex0.3pdf output
pdflatex2007-59pdf output
docbook2X0.8.8info output
epub3 stylesheetsb3epub output

Editing the DocBook sources requires an XML editor. Many exist: some notable options include emacs, Kate, @@ -519,11 +519,11 @@ online. An incomplete reference for HTML to Docbook conversion is detailed in the table below. -

Table B.4. HTML to Docbook XML Markup Comparison

HTMLDocbook
<p><para>
<pre><computeroutput>, <programlisting>, +

Table B.4. HTML to Docbook XML Markup Comparison

HTMLDocbook
<p><para>
<pre><computeroutput>, <programlisting>, <literallayout>
<ul><itemizedlist>
<ol><orderedlist>
<il><listitem>
<dl><variablelist>
<dt><term>
<dd><listitem>
<a href=""><ulink url="">
<code><literal>, <programlisting>
<strong><emphasis>
<em><emphasis>
"<quote>

And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. -

Table B.5. Docbook XML Element Use

ElementUse
<structname><structname>char_traits</structname>
<classname><classname>string</classname>
<function> +

Table B.5. Docbook XML Element Use

ElementUse
<structname><structname>char_traits</structname>
<classname><classname>string</classname>
<function>

<function>clear()</function>

<function>fs.clear()</function>

<type><type>long long</type>
<varname><varname>fs</varname>
<literal> diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/extensions.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/extensions.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/extensions.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/extensions.html 2014-03-27 19:29:33.000000000 +0000 @@ -4,7 +4,7 @@
Prev The GNU C++ Library Manual Next

Part III.  Extensions - +

Table of Contents

16. Compile Time Checks
17. Debug Mode
Intro
Semantics
Using
Using the Debug Mode
Using a Specific Debug Container
Design
Goals
Methods
The Wrapper Model
Safe Iterators
Safe Sequences (Containers)
Precondition Checking
Release- and debug-mode coexistence
Compile-time coexistence of release- and debug-mode components
Link- and run-time coexistence of release- and debug-mode components
Alternatives for Coexistence
Other Implementations
18. Parallel Mode
Intro
Semantics
Using
Prerequisite Compiler Flags
Using Parallel Mode
Using Specific Parallel Components
Design
Interface Basics
Configuration and Tuning
Setting up the OpenMP Environment
Compile Time Switches
Run Time Settings and Defaults
Implementation Namespaces
Testing
Bibliography
19. Profile Mode
Intro
Using the Profile Mode
Tuning the Profile Mode
Design
Wrapper Model
Instrumentation
Run Time Behavior
Analysis and Diagnostics
Cost Model
Reports
Testing
Extensions for Custom Containers
Empirical Cost Model
Implementation Issues
Stack Traces
Symbolization of Instruction Addresses
Concurrency
Using the Standard Library in the Instrumentation Implementation
Malloc Hooks
Construction and Destruction of Global Objects
Developer Information
Big Picture
How To Add A Diagnostic
Diagnostics
Diagnostic Template
Containers
Hashtable Too Small
Hashtable Too Large
Inefficient Hash
Vector Too Small
Vector Too Large
Vector to Hashtable
Hashtable to Vector
Vector to List
List to Vector
List to Forward List (Slist)
Ordered to Unordered Associative Container
Algorithms
Sort Algorithm Performance
Data Locality
Need Software Prefetch
Linked Structure Locality
Multithreaded Data Access
Data Dependence Violations at Container Level
False Sharing
Statistics
Bibliography
20. The mt_allocator
Intro
Design Issues
Overview
Implementation
Tunable Parameters
Initialization
Deallocation Notes
Single Thread Example
Multiple Thread Example
21. The bitmap_allocator
Design
Implementation
Free List Store
Super Block
Super Block Data Layout
Maximum Wasted Percentage
allocate
deallocate
Questions
1
2
3
Locality
Overhead and Grow Policy
22. Policy-Based Data Structures
Intro
Performance Issues
Associative
Priority Que
Goals
Associative
Policy Choices
Underlying Data Structures
Iterators
Functional
Priority Queues
Policy Choices
Underlying Data Structures
Binary Heaps
Using
Prerequisites
Organization
Tutorial
Basic Use
Configuring via Template Parameters diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/ext_preface.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/ext_preface.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/ext_preface.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/ext_preface.html 2014-03-27 19:29:33.000000000 +0000 @@ -2,7 +2,7 @@

+

 Next

Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from older versions of standard library components, namely SGI's STL, and some of these are diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/facets.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/facets.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/facets.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/facets.html 2014-03-27 19:29:33.000000000 +0000 @@ -2,7 +2,7 @@ Facets

Facets

ctype

Implementation

Specializations

+

 Next

Facets

ctype

Implementation

Specializations

For the required specialization codecvt<wchar_t, char, mbstate_t>, conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the @@ -53,24 +53,24 @@

  • Rename abstract base class. See if just smash-overriding is a better approach. Clarify, add sanity to naming. -

  • Bibliography

    +

    Bibliography

    The GNU C Library - . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    + . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization.

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) . Copyright © 1999 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    + The Open Group/The Institute of Electrical and Electronics Engineers, Inc..

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference @@ -424,42 +424,42 @@

  • wchar_t/char internal buffers and conversions between internal/external buffers? -

  • Bibliography

    +

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization - .

    + .

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman - .

    + .

    A brief description of Normative Addendum 1 - . Clive Feather. Extended Character Sets.

    + . Clive Feather. Extended Character Sets.

    The Unicode HOWTO - . Bruno Haible.

    + . Bruno Haible.

    UTF-8 and Unicode FAQ for Unix/Linux @@ -705,39 +705,39 @@ model. As of this writing, it is unknown how to query to see if a specified message catalog exists using the gettext package. -

    Bibliography

    +

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling, and 7 Locales and Internationalization - .

    + .

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference . Angelika Langer. Klaus Kreft. Copyright © 2000 Addison Wesley Longman, Inc.. Addison Wesley Longman - .

    + .

    API Specifications, Java Platform . java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle - .

    + .

    GNU gettext tools, version 0.10.38, Native Language Support Library and Tools. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/fstreams.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/fstreams.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/fstreams.html 2013-04-02 15:19:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/fstreams.html 2014-03-27 19:29:33.000000000 +0000 @@ -21,7 +21,7 @@ of "output_file" may surprise you.

    Seriously, go do it. Get surprised, then come back. It's worth it.

    The thing to remember is that the basic_[io]stream classes - handle formatting, nothing else. In chaptericular, they break up on + handle formatting, nothing else. In particular, they break up on whitespace. The actual reading, writing, and storing of data is handled by the basic_streambuf family. Fortunately, the operator<< is overloaded to take an ostream and @@ -36,7 +36,7 @@ way to copy the file is:

        OUT << IN.rdbuf();

    So what was happening with OUT<<IN? Undefined - behavior, since that chaptericular << isn't defined by the Standard. + behavior, since that particular << isn't defined by the Standard. I have seen instances where it is implemented, but the character extraction process removes all the whitespace, leaving you with no blank lines and only "Thequickbrownfox...". With diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html 2013-04-02 15:19:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html 2014-03-27 19:29:33.000000000 +0000 @@ -8,7 +8,7 @@ of them is overloaded: one signature for common default operations, and a second for fully general operations. Their names are self-explanatory to anyone who works with numerics on a regular basis: -

    Here is a simple example of the two forms of accumulate. +

    Here is a simple example of the two forms of accumulate.

        int   ar[50];
        int   someval = somefunction();
    diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/index.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/index.html
    --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/index.html	2014-01-30 11:07:36.000000000 +0000
    +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/index.html	2014-03-27 19:29:33.000000000 +0000
    @@ -15,13 +15,13 @@
     
    Exceptions
    API Reference
    Adding Data to exception
    Concept Checking
    6. Utilities -
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. +
    Functors
    Pairs
    Memory
    Allocators
    Requirements
    Design Issues
    Implementation
    Interface Design
    Selecting Default Allocation Policy
    Disabling Memory Caching
    Using a Specific Allocator
    Custom Allocators
    Extension Allocators
    auto_ptr
    Limitations
    Use in Containers
    shared_ptr
    Requirements
    Design Issues
    Implementation
    Class Hierarchy
    Thread Safety
    Selecting Lock Policy
    Related functions and classes
    Use
    Examples
    Unresolved Issues
    Acknowledgments
    Traits
    7. Strings
    String Classes
    Simple Transformations
    Case Sensitivity
    Arbitrary Character Types
    Tokenizing
    Shrink to Fit
    CString (MFC)
    8. Localization -
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. +
    Locales
    locale
    Requirements
    Design
    Implementation
    Interacting with "C" locales
    Future
    Facets
    ctype
    Implementation
    Specializations
    Future
    codecvt
    Requirements
    Design
    wchar_t Size
    Support for Unicode
    Other Issues
    Implementation
    Use
    Future
    messages
    Requirements
    Design
    Implementation
    Models
    The GNU Model
    Use
    Future
    9. Containers
    Sequences
    list
    list::size() is O(n)
    vector
    Space Overhead Management
    Associative
    Insertion Hints
    bitset
    Size Variable
    Type String
    Unordered Associative
    Insertion Hints
    Hash Code
    Hash Code Caching Policy
    Interacting with C
    Containers vs. Arrays
    10. @@ -143,19 +143,19 @@
    D. GNU General Public License version 3 -
    E. GNU Free Documentation License
    \ No newline at end of file diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/io_and_c.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/io_and_c.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/io_and_c.html 2013-04-02 15:19:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/io_and_c.html 2014-03-27 19:29:33.000000000 +0000 @@ -47,7 +47,7 @@

    Note, by the way, that the synchronization requirement only applies to the standard streams (cin, cout, cerr, - clog, and their wide-character counterchapters). File stream + clog, and their wide-character counterparts). File stream objects that you declare yourself have no such requirement and are fully buffered.

    Chapter 13.  Input and Output - +

    Iostream Objects

    To minimize the time you have to wait on the compiler, it's good to only include the headers you really need. Many people simply include - <iostream> when they don't need to -- and that can penalize - your runtime as well. Here are some tips on which header to use + <iostream> when they don't + need to -- and that can penalize your runtime as well. + Here are some tips on which header to use for which situations, starting with the simplest. -

    <iosfwd> should be included whenever you simply - need the name of an I/O-related class, such as - "ofstream" or "basic_streambuf". Like the name - implies, these are forward declarations. (A word to all you fellow - old school programmers: trying to forward declare classes like - "class istream;" won't work. Look in the iosfwd header if - you'd like to know why.) For example, +

    <iosfwd> + should be included whenever you simply need the name + of an I/O-related class, such as "ofstream" or + "basic_streambuf". + Like the name implies, these are forward declarations. + (A word to all you fellow old school programmers: + trying to forward declare classes like "class istream;" + won't work. + Look in the <iosfwd> header + if you'd like to know why.) For example,

         #include <iosfwd>
     
    @@ -29,29 +33,39 @@
         };
     
         extern std::ostream& operator<< (std::ostream&, MyClass&);
    -   

    <ios> declares the base classes for the entire - I/O stream hierarchy, std::ios_base and std::basic_ios<charT>, the - counting types std::streamoff and std::streamsize, the file - positioning type std::fpos, and the various manipulators like - std::hex, std::fixed, std::noshowbase, and so forth. -

    The ios_base class is what holds the format flags, the state flags, - and the functions which change them (setf(), width(), precision(), - etc). You can also store extra data and register callback functions - through ios_base, but that has been historically underused. Anything +

    <ios> + declares the base classes for the entire I/O stream hierarchy, + std::ios_base and std::basic_ios<charT>, + the counting types std::streamoff and std::streamsize, + the file positioning type std::fpos, + and the various manipulators like std::hex, + std::fixed, std::noshowbase, + and so forth. +

    The ios_base class is what holds the format + flags, the state flags, and the functions which change them + (setf(), width(), + precision(), etc). + You can also store extra data and register callback functions + through ios_base, but that has been historically + underused. Anything which doesn't depend on the type of characters stored is consolidated here. -

    The template class basic_ios is the highest template class in the +

    The class template basic_ios is the highest + class template in the hierarchy; it is the first one depending on the character type, and holds all general state associated with that type: the pointer to the polymorphic stream buffer, the facet information, etc. -

    <streambuf> declares the template class - basic_streambuf, and two standard instantiations, streambuf and - wstreambuf. If you need to work with the vastly useful and capable - stream buffer classes, e.g., to create a new form of storage +

    <streambuf> + declares the class template basic_streambuf, and + two standard instantiations, streambuf and + wstreambuf. If you need to work with the vastly useful and + capable stream buffer classes, e.g., to create a new form of storage transport, this header is the one to include. -

    <istream>/<ostream> are - the headers to include when you are using the >>/<< - interface, or any of the other abstract stream formatting functions. +

    <istream> + and <ostream> + are the headers to include when you are using the overloaded + >> and << operators, + or any of the other abstract stream formatting functions. For example,

         #include <istream>
    @@ -60,22 +74,30 @@
         {
            return os << c.data1() << c.data2();
         }
    -   

    The std::istream and std::ostream classes are the abstract parents of +

    The std::istream and std::ostream classes + are the abstract parents of the various concrete implementations. If you are only using the interfaces, then you only need to use the appropriate interface header. -

    <iomanip> provides "extractors and inserters - that alter information maintained by class ios_base and its derived - classes," such as std::setprecision and std::setw. If you need +

    <iomanip> + provides "extractors and inserters that alter information maintained by + class ios_base and its derived classes," + such as std::setprecision and + std::setw. If you need to write expressions like os << setw(3); or - is >> setbase(8);, you must include <iomanip>. -

    <sstream>/<fstream> + is >> setbase(8);, you must include + <iomanip>. +

    <sstream> + and <fstream> declare the six stringstream and fstream classes. As they are the - standard concrete descendants of istream and ostream, you will already - know about them. -

    Finally, <iostream> provides the eight standard - global objects (cin, cout, etc). To do this correctly, this header - also provides the contents of the <istream> and <ostream> - headers, but nothing else. The contents of this header look like + standard concrete descendants of istream and ostream, + you will already know about them. +

    Finally, <iostream> + provides the eight standard global objects + (cin, cout, etc). To do this correctly, this + header also provides the contents of the + <istream> and + <ostream> + headers, but nothing else. The contents of this header look like:

         #include <ostream>
         #include <istream>
    @@ -93,7 +115,8 @@
           must be initialized before any of your own code uses them; this is
           guaranteed by the standard.  Like any other global object, they must
           be initialized once and only once.  This is typically done with a
    -      construct like the one above, and the nested class ios_base::Init is
    +      construct like the one above, and the nested class
    +      ios_base::Init is
           specified in the standard for just this reason.
        

    How does it work? Because the header is included before any of your code, the __foo object is constructed before any of @@ -101,9 +124,10 @@ are declared, and destroyed in reverse order.) The first time the constructor runs, the eight stream objects are set up.

    The static keyword means that each object file compiled - from a source file containing <iostream> will have its own + from a source file containing + <iostream> will have its own private copy of __foo. There is no specified order - of construction across object files (it's one of those pesky NP + of construction across object files (it's one of those pesky NP complete problems that make life so interesting), so one copy in each object file means that the stream objects are guaranteed to be set up before any of your code which uses them could run, thereby meeting the @@ -113,7 +137,9 @@ processor time. The time spent is merely for an increment-and-test inside a function call, but over several dozen or hundreds of object files, that time can add up. (It's not in a tight loop, either.) -

    The lesson? Only include <iostream> when you need to use one of +

    The lesson? Only include + <iostream> when you need + to use one of the standard objects in that source file; you'll pay less startup time. Only include the header files you need to in general; your compile times will go down when there's less parsing work to do. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/iterators.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/iterators.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/iterators.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/iterators.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents  Next


    Chapter 10.  Iterators - +

    Predefined

    Iterators vs. Pointers

    The following FAQ entry points out that diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/localization.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/localization.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/localization.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/localization.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,8 +6,8 @@ Standard Contents  Next


    Locales

    locale

    Describes the basic locale object, including nested classes id, facet, and the reference-counted implementation object, class _Impl. @@ -402,29 +402,29 @@ What should non-required facet instantiations do? If the generic implementation is provided, then how to end-users provide specializations? -

    Bibliography

    +

    Bibliography

    The GNU C Library . Roland McGrath. Ulrich Drepper. Copyright © 2007 FSF. Chapters 6 Character Set Handling and 7 Locales and Internationalization - .

    + .

    Correspondence - . Ulrich Drepper. Copyright © 2002 .

    + . Ulrich Drepper. Copyright © 2002 .

    ISO/IEC 14882:1998 Programming languages - C++ - . Copyright © 1998 ISO.

    + . Copyright © 1998 ISO.

    ISO/IEC 9899:1999 Programming languages - C - . Copyright © 1999 ISO.

    + . Copyright © 1999 ISO.

    System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

    + .

    The C++ Programming Language, Special Edition . Bjarne Stroustrup. Copyright © 2000 Addison Wesley, Inc.. Appendix D. Addison Wesley - .

    + .

    Standard C++ IOStreams and Locales . Advanced Programmer's Guide and Reference diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/memory.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/memory.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/memory.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/memory.html 2014-03-27 19:29:33.000000000 +0000 @@ -92,7 +92,7 @@ or loading and unloading shared objects in memory. As such, using caching allocators on systems that do not support abi::__cxa_atexit is not recommended. -

    Implementation

    Interface Design

    +

    Implementation

    Interface Design

    The only allocator interface that is supported is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have @@ -105,7 +105,7 @@

    The base class that allocator is derived from may not be user-configurable. -

    Selecting Default Allocation Policy

    +

    Selecting Default Allocation Policy

    It's difficult to pick an allocation strategy that will provide maximum utility, without excessively penalizing some behavior. In fact, it's difficult just deciding which typical actions to measure @@ -142,7 +142,7 @@ The current default choice for allocator is __gnu_cxx::new_allocator. -

    Disabling Memory Caching

    +

    Disabling Memory Caching

    In use, allocator may allocate and deallocate using implementation-specific strategies and heuristics. Because of this, a given call to an allocator object's @@ -309,33 +309,33 @@ of the used and unused memory locations. It has its own chapter in the documentation. -

    Bibliography

    +

    Bibliography

    ISO/IEC 14882:1998 Programming languages - C++ . isoc++_1998 - 20.4 Memory.

    + 20.4 Memory.

    The Standard Librarian: What Are Allocators Good For? . Matt Austern. C/C++ Users Journal - .

    + .

    + . Emery Berger.

    Reconsidering Custom Memory Allocation - . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

    + . Emery Berger. Ben Zorn. Kathryn McKinley. Copyright © 2002 OOPSLA.

    Allocator Types . Klaus Kreft. Angelika Langer. C/C++ Users Journal - .

    The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. + .

    The C++ Programming Language. Bjarne Stroustrup. Copyright © 2000 . 19.4 Allocators. Addison Wesley - .

    Yalloc: A Recycling C++ Allocator. Felix Yen.

    auto_ptr

    Limitations

    Explaining all of the fun and delicious things that can + .

    Yalloc: A Recycling C++ Allocator. Felix Yen.

    auto_ptr

    Limitations

    Explaining all of the fun and delicious things that can happen with misuse of the auto_ptr class template (called AP here) would take some time. Suffice it to say that the use of AP @@ -445,7 +445,7 @@ Derived classes override those functions to destroy resources in a context where the correct dynamic type is known. This is an application of the technique known as type erasure. -

    Implementation

    Class Hierarchy

    +

    Implementation

    Class Hierarchy

    A shared_ptr<T> contains a pointer of type T* and an object of type __shared_count. The shared_count contains a @@ -492,7 +492,7 @@ aliasing constructor, make_shared & allocate_shared. Additionally, the constructors taking auto_ptr parameters are deprecated in C++11 mode. -

    Thread Safety

    +

    Thread Safety

    The Thread Safety section of the Boost shared_ptr documentation says "shared_ptr @@ -537,7 +537,7 @@ shared_ptr in libstdc++ the compiler and library are fixed, which makes things much simpler: we have an atomic CAS or we don't, see Lock Policy below for details. -

    Selecting Lock Policy

    +

    Selecting Lock Policy

    There is a single _Sp_counted_base class, which is a template parameterized on the enum @@ -578,7 +578,7 @@ ext/atomicity.h, which detect if the program is multi-threaded. If only one thread of execution exists in the program then less expensive non-atomic operations are used. -

    Related functions and classes
    dynamic_pointer_cast, static_pointer_cast, +

    Related functions and classes
    dynamic_pointer_cast, static_pointer_cast, const_pointer_cast

    As noted in N2351, these functions can be implemented non-intrusively using the alias constructor. However the aliasing constructor is only available @@ -611,13 +611,13 @@ As well as the extra constructors, this implementation also needs some members of _Sp_counted_deleter to be protected where they could otherwise be private. -

    Use

    Examples

    +

    Use

    Examples

    Examples of use can be found in the testsuite, under testsuite/tr1/2_general_utilities/shared_ptr, testsuite/20_util/shared_ptr and testsuite/20_util/weak_ptr. -

    Unresolved Issues

    +

    Unresolved Issues

    The shared_ptr atomic access clause in the C++11 standard is not implemented in GCC.

    @@ -658,25 +658,25 @@ code to work with, Peter Dimov in particular for his help and invaluable advice on thread safety. Phillip Jordan and Paolo Carlini for the lock policy implementation. -

    Bibliography

    +

    Bibliography

    + .

    + .

    + .

    Boost C++ Libraries documentation, shared_ptr diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/numerics.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/numerics.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/numerics.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/numerics.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents  Next


    Chapter 12.  Numerics - +

    Complex

    complex Processing

    Using complex<> becomes even more comple- er, sorry, diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode.html 2014-03-27 19:29:33.000000000 +0000 @@ -12,11 +12,11 @@ specific compiler flag.

    Intro

    The following library components in the include numeric are included in the parallel mode:

    • std::accumulate

    • std::adjacent_difference

    • std::inner_product

    • std::partial_sum

    The following library components in the include -algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    +algorithm are included in the parallel mode:

    • std::adjacent_find

    • std::count

    • std::count_if

    • std::equal

    • std::find

    • std::find_if

    • std::find_first_of

    • std::for_each

    • std::generate

    • std::generate_n

    • std::lexicographical_compare

    • std::mismatch

    • std::search

    • std::search_n

    • std::transform

    • std::replace

    • std::replace_if

    • std::max_element

    • std::merge

    • std::min_element

    • std::nth_element

    • std::partial_sort

    • std::partition

    • std::random_shuffle

    • std::set_union

    • std::set_intersection

    • std::set_symmetric_difference

    • std::set_difference

    • std::sort

    • std::stable_sort

    • std::unique_copy

    Bibliography

    Parallelization of Bulk Operations for STL Dictionaries . Johannes Singler. Leonor Frias. Copyright © 2007 . Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) - .

    + .

    The Multi-Core Standard Template Library . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . Euro-Par 2007: Parallel Processing. (LNCS 4641) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode_using.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode_using.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode_using.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/parallel_mode_using.html 2014-03-27 19:29:33.000000000 +0000 @@ -62,4 +62,4 @@ flags for atomic operations.)

    The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: -

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    \ No newline at end of file +

    Table 18.1. Parallel Algorithms

    AlgorithmHeaderParallel algorithmParallel header
    std::accumulatenumeric__gnu_parallel::accumulateparallel/numeric
    std::adjacent_differencenumeric__gnu_parallel::adjacent_differenceparallel/numeric
    std::inner_productnumeric__gnu_parallel::inner_productparallel/numeric
    std::partial_sumnumeric__gnu_parallel::partial_sumparallel/numeric
    std::adjacent_findalgorithm__gnu_parallel::adjacent_findparallel/algorithm
    std::countalgorithm__gnu_parallel::countparallel/algorithm
    std::count_ifalgorithm__gnu_parallel::count_ifparallel/algorithm
    std::equalalgorithm__gnu_parallel::equalparallel/algorithm
    std::findalgorithm__gnu_parallel::findparallel/algorithm
    std::find_ifalgorithm__gnu_parallel::find_ifparallel/algorithm
    std::find_first_ofalgorithm__gnu_parallel::find_first_ofparallel/algorithm
    std::for_eachalgorithm__gnu_parallel::for_eachparallel/algorithm
    std::generatealgorithm__gnu_parallel::generateparallel/algorithm
    std::generate_nalgorithm__gnu_parallel::generate_nparallel/algorithm
    std::lexicographical_comparealgorithm__gnu_parallel::lexicographical_compareparallel/algorithm
    std::mismatchalgorithm__gnu_parallel::mismatchparallel/algorithm
    std::searchalgorithm__gnu_parallel::searchparallel/algorithm
    std::search_nalgorithm__gnu_parallel::search_nparallel/algorithm
    std::transformalgorithm__gnu_parallel::transformparallel/algorithm
    std::replacealgorithm__gnu_parallel::replaceparallel/algorithm
    std::replace_ifalgorithm__gnu_parallel::replace_ifparallel/algorithm
    std::max_elementalgorithm__gnu_parallel::max_elementparallel/algorithm
    std::mergealgorithm__gnu_parallel::mergeparallel/algorithm
    std::min_elementalgorithm__gnu_parallel::min_elementparallel/algorithm
    std::nth_elementalgorithm__gnu_parallel::nth_elementparallel/algorithm
    std::partial_sortalgorithm__gnu_parallel::partial_sortparallel/algorithm
    std::partitionalgorithm__gnu_parallel::partitionparallel/algorithm
    std::random_shufflealgorithm__gnu_parallel::random_shuffleparallel/algorithm
    std::set_unionalgorithm__gnu_parallel::set_unionparallel/algorithm
    std::set_intersectionalgorithm__gnu_parallel::set_intersectionparallel/algorithm
    std::set_symmetric_differencealgorithm__gnu_parallel::set_symmetric_differenceparallel/algorithm
    std::set_differencealgorithm__gnu_parallel::set_differenceparallel/algorithm
    std::sortalgorithm__gnu_parallel::sortparallel/algorithm
    std::stable_sortalgorithm__gnu_parallel::stable_sortparallel/algorithm
    std::unique_copyalgorithm__gnu_parallel::unique_copyparallel/algorithm

    \ No newline at end of file diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_design.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_design.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_design.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_design.html 2014-03-27 19:29:33.000000000 +0000 @@ -170,7 +170,7 @@ naturally; collision-chaining hash tables (label B) store equivalent-key values in the same bucket, the bucket can be arranged so that equivalent-key values are consecutive. -

    Figure 22.8. Non-unique Mapping Standard Containers

    Non-unique Mapping Standard Containers

    +

    Figure 22.8. Non-unique Mapping Standard Containers

    Non-unique Mapping Standard Containers

    Put differently, the standards' non-unique mapping associative-containers are associative containers that map primary keys to linked lists that are embedded into the @@ -252,7 +252,7 @@ first graphic above. Labels A and B, respectively. Each shaded box represents some size-type or secondary associative-container. -

    Figure 22.10. Non-unique Mapping Containers

    Non-unique Mapping Containers

    +

    Figure 22.10. Non-unique Mapping Containers

    Non-unique Mapping Containers

    In the first example above, then, one would use an associative container mapping each user to an associative container which maps each application id to a start time (see @@ -305,7 +305,7 @@ shows invariants for order-preserving containers: point-type iterators are synonymous with range-type iterators. Orthogonally, Cshows invariants for "set" - containers: iterators are synonymous with const iterators.

    Figure 22.11. Point Iterator Hierarchy

    Point Iterator Hierarchy

    Note that point-type iterators in self-organizing containers + containers: iterators are synonymous with const iterators.

    Figure 22.11. Point Iterator Hierarchy

    Point Iterator Hierarchy

    Note that point-type iterators in self-organizing containers (hash-based associative containers) lack movement operators, such as operator++ - in fact, this is the reason why this library differentiates from the standard C++ librarys @@ -344,7 +344,7 @@ to the question of whether point-type iterators and range-type iterators are valid. The graphic below shows tags corresponding to different types of invalidation guarantees. -

    Figure 22.12. Invalidation Guarantee Tags Hierarchy

    Invalidation Guarantee Tags Hierarchy

    • +

      Figure 22.12. Invalidation Guarantee Tags Hierarchy

      Invalidation Guarantee Tags Hierarchy

      • basic_invalidation_guarantee corresponds to a basic guarantee that a point-type iterator, a found pointer, or a found reference, remains valid as long @@ -428,7 +428,7 @@

        This library contains a container tag hierarchy corresponding to the diagram below. -

        Figure 22.13. Container Tag Hierarchy

        Container Tag Hierarchy

        +

        Figure 22.13. Container Tag Hierarchy

        Container Tag Hierarchy

        Given any container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category. @@ -487,7 +487,7 @@ collision-chaining container, except for the following.

        1. Comb_Probe_Fn describes how to transform a probe sequence into a sequence of positions within the table.

        2. Probe_Fn describes a probe sequence policy.

        Some of the default template values depend on the values of other parameters, and are explained below.

      Details
      Hash Policies
      General

      Following is an explanation of some functions which hashing - involves. The graphic below illustrates the discussion.

      Figure 22.14. Hash functions, ranged-hash functions, and + involves. The graphic below illustrates the discussion.

      Figure 22.14. Hash functions, ranged-hash functions, and range-hashing functions

      Hash functions, ranged-hash functions, and range-hashing functions

      Let U be a domain (e.g., the integers, or the strings of 3 characters). A hash-table algorithm needs to map elements of U "uniformly" into the range [0,..., m - @@ -504,7 +504,7 @@ Z+,

      which maps a non-negative hash value, and a non-negative range upper-bound into a non-negative integral in the range between 0 (inclusive) and the range upper bound (exclusive), - i.e., for any r in Z+,

      0 ≤ g(r, m) ≤ m - 1

      The resulting ranged-hash function, is

      Equation 22.1. Ranged Hash Function

      + i.e., for any r in Z+,

      0 ≤ g(r, m) ≤ m - 1

      The resulting ranged-hash function, is

      Equation 22.1. Ranged Hash Function

      f(u , m) = g(h(u), m)

      From the above, it is obvious that given g and h, f can always be composed (however the converse @@ -524,7 +524,7 @@ transforming the sequence of hash values into a sequence of positions.

      Range Hashing

      Some common choices for range-hashing functions are the division, multiplication, and middle-square methods ([biblio.knuth98sorting]), defined - as

      Equation 22.2. Range-Hashing, Division Method

      + as

      Equation 22.2. Range-Hashing, Division Method

      g(r, m) = r mod m

      g(r, m) = ⌈ u/v ( a r mod v ) ⌉

      and

      g(r, m) = ⌈ u/v ( r2 mod v ) ⌉

      respectively, for some positive integrals u and v (typically powers of 2), and some a. Each of @@ -535,9 +535,9 @@ implement using the low level % (modulo) operation (for any m), or the low level & (bit-mask) operation (for the case where - m is a power of 2), i.e.,

      Equation 22.3. Division via Prime Modulo

      + m is a power of 2), i.e.,

      Equation 22.3. Division via Prime Modulo

      g(r, m) = r % m -

      and

      Equation 22.4. Division via Bit Mask

      +

      and

      Equation 22.4. Division via Bit Mask

      g(r, m) = r & m - 1, (with m = 2k for some k)

      respectively.

      The % (modulo) implementation has the advantage that for @@ -563,7 +563,7 @@ s = [ s0,..., st - 1]

      be a string of t characters, each of which is from domain S. Consider the following ranged-hash - function:

      Equation 22.5.  + function:

      Equation 22.5.  A Standard String Hash Function

      f1(s, m) = ∑ i = @@ -575,7 +575,7 @@ of a long DNA sequence (and so S = {'A', 'C', 'G', 'T'}). In this case, scanning the entire string might be prohibitively expensive. A possible alternative might be to use - only the first k characters of the string, where

      |S|k ≥ m ,

      i.e., using the hash function

      Equation 22.6.  + only the first k characters of the string, where

      |S|k ≥ m ,

      i.e., using the hash function

      Equation 22.6.  Only k String DNA Hash

      f2(s, m) = ∑ i @@ -606,12 +606,12 @@ the container transforms the key into a non-negative integral using the hash functor (points B and C), and transforms the result into a position using the combining functor (points D - and E).

      Figure 22.15. Insert hash sequence diagram

      Insert hash sequence diagram

      If cc_hash_table's + and E).

      Figure 22.15. Insert hash sequence diagram

      Insert hash sequence diagram

      If cc_hash_table's hash-functor, Hash_Fn is instantiated by null_type , then Comb_Hash_Fn is taken to be a ranged-hash function. The graphic below shows an insert sequence diagram. The user inserts an element (point A), the container transforms the key into a position using the combining functor - (points B and C).

      Figure 22.16. Insert hash sequence diagram with a null policy

      Insert hash sequence diagram with a null policy

      + (points B and C).

      Figure 22.16. Insert hash sequence diagram with a null policy

      Insert hash sequence diagram with a null policy

      Probing tables

      gp_hash_table is parametrized by Hash_Fn, Probe_Fn, @@ -634,7 +634,7 @@ a linear probe and a quadratic probe function, respectively.

    The graphic below shows the relationships. -

    Figure 22.17. Hash policy class diagram

    Hash policy class diagram

    Resize Policies
    General

    Hash-tables, as opposed to trees, do not naturally grow or +

    Figure 22.17. Hash policy class diagram

    Hash policy class diagram

    Resize Policies
    General

    Hash-tables, as opposed to trees, do not naturally grow or shrink. It is necessary to specify policies to determine how and when a hash table should change its size. Usually, resize policies can be decomposed into orthogonal policies:

    1. A size policy indicating how a hash table @@ -667,10 +667,10 @@ and some load factor be denoted by Α. We would like to calculate the minimal length of k, such that if there were Α m elements in the hash table, a probe sequence of length k would - be found with probability at most 1/m.

      Figure 22.18. Balls and bins

      Balls and bins

      Denote the probability that a probe sequence of length + be found with probability at most 1/m.

      Figure 22.18. Balls and bins

      Balls and bins

      Denote the probability that a probe sequence of length k appears in bin i by pi, the length of the probe sequence of bin i by - li, and assume uniform distribution. Then

      Equation 22.7.  + li, and assume uniform distribution. Then

      Equation 22.7.  Probability of Probe Sequence of Length k

      p1 = @@ -684,7 +684,7 @@ li are negatively-dependent ([biblio.dubhashi98neg]) . Let - I(.) denote the indicator function. Then

      Equation 22.8.  + I(.) denote the indicator function. Then

      Equation 22.8.  Probability Probe Sequence in Some Bin

      P( existsi li ≥ k ) = @@ -723,7 +723,7 @@ a resize is needed, and if so, what is the new size (points D to G); following the resize, it notifies the policy that a resize has completed (point H); finally, the element is - inserted, and the policy notified (point I).

      Figure 22.19. Insert resize sequence diagram

      Insert resize sequence diagram

      In practice, a resize policy can be usually orthogonally + inserted, and the policy notified (point I).

      Figure 22.19. Insert resize sequence diagram

      Insert resize sequence diagram

      In practice, a resize policy can be usually orthogonally decomposed to a size policy and a trigger policy. Consequently, the library contains a single class for instantiating a resize policy: hash_standard_resize_policy @@ -732,8 +732,8 @@ both, and acts as a standard delegate ([biblio.gof]) to these policies.

      The two graphics immediately below show sequence diagrams illustrating the interaction between the standard resize policy - and its trigger and size policies, respectively.

      Figure 22.20. Standard resize policy trigger sequence - diagram

      Standard resize policy trigger sequence diagram

      Figure 22.21. Standard resize policy size sequence + and its trigger and size policies, respectively.

      Figure 22.20. Standard resize policy trigger sequence + diagram

      Standard resize policy trigger sequence diagram

      Figure 22.21. Standard resize policy size sequence diagram

      Standard resize policy size sequence diagram

      Predefined Policies

      The library includes the following instantiations of size and trigger policies:

      1. hash_load_check_resize_trigger implements a load check trigger policy.

      2. cc_hash_max_collision_check_resize_trigger @@ -876,7 +876,7 @@ each node, and maintains node invariants (see [biblio.clrs2001].) The first stores in each node the size of the sub-tree rooted at the node; the second stores at each node the maximal endpoint of the - intervals at the sub-tree rooted at the node.

        Figure 22.22. Tree node invariants

        Tree node invariants

        Supporting such trees is difficult for a number of + intervals at the sub-tree rooted at the node.

        Figure 22.22. Tree node invariants

        Tree node invariants

        Supporting such trees is difficult for a number of reasons:

        1. There must be a way to specify what a node's metadata should be (if any).

        2. Various operations can invalidate node invariants. The graphic below shows how a right rotation, @@ -890,7 +890,7 @@ metadata.

        3. It is not feasible to know in advance which methods trees can support. Besides the usual find method, the first tree can support a find_by_order method, while - the second can support an overlaps method.

        Figure 22.23. Tree node invalidation

        Tree node invalidation

        These problems are solved by a combination of two means: + the second can support an overlaps method.

      Figure 22.23. Tree node invalidation

      Tree node invalidation

      These problems are solved by a combination of two means: node iterators, and template-template node updater parameters.

      Node Iterators

      Each tree-based container defines two additional iterator types, const_node_iterator @@ -919,7 +919,7 @@ node_update class, and publicly subclasses node_update. The graphic below shows this scheme, as well as some predefined policies (which are explained - below).

      Figure 22.24. A tree and its update policy

      A tree and its update policy

      node_update (an instantiation of + below).

      Figure 22.24. A tree and its update policy

      A tree and its update policy

      node_update (an instantiation of Node_Update) must define metadata_type as the type of metadata it requires. For order statistics, e.g., metadata_type might be size_t. @@ -938,7 +938,7 @@ nd_it. For example, say node x in the graphic below label A has an invalid invariant, but its' children, y and z have valid invariants. After the invocation, all three - nodes should have valid invariants, as in label B.

      Figure 22.25. Restoring node invariants

      Restoring node invariants

      When a tree operation might invalidate some node invariant, + nodes should have valid invariants, as in label B.

      Figure 22.25. Restoring node invariants

      Restoring node invariants

      When a tree operation might invalidate some node invariant, it invokes this method in its node_update base to restore the invariant. For example, the graphic below shows an insert operation (point A); the tree performs some @@ -946,7 +946,7 @@ C, and D). (It is well known that any insert, erase, split or join, can restore all node invariants by a small number of node invariant updates ([biblio.clrs2001]) - .

      Figure 22.26. Insert update sequence

      Insert update sequence

      To complete the description of the scheme, three questions + .

      Figure 22.26. Insert update sequence

      Insert update sequence

      To complete the description of the scheme, three questions need to be answered:

      1. How can a tree which supports order statistics define a method such as find_by_order?

      2. How can the node updater base access methods of the tree?

      3. How can the following cyclic dependency be resolved? @@ -988,7 +988,7 @@ node's metadata (this is halting reducible). In the graphic below, assume the shaded node is inserted. The tree would have to traverse the useless path shown to the root, applying - redundant updates all the way.

      Figure 22.27. Useless update path

      Useless update path

      A null policy class, null_node_update + redundant updates all the way.

    Figure 22.27. Useless update path

    Useless update path

    A null policy class, null_node_update solves both these problems. The tree detects that node invariants are irrelevant, and defines all accordingly.

    Split and Join

    Tree-based containers support split and join methods. It is possible to split a tree so that it passes @@ -1071,7 +1071,7 @@ sub-tree with leafs "a" and "as". The maximal common prefix is "a". The internal node contains, consequently, to const iterators, one pointing to 'a', and the other to - 's'.

    Figure 22.28. A PATRICIA trie

    A PATRICIA trie

    Node Invariants

    Trie-based containers support node invariants, as do + 's'.

    Figure 22.28. A PATRICIA trie

    A PATRICIA trie

    Node Invariants

    Trie-based containers support node invariants, as do tree-based containers. There are two minor differences, though, which, unfortunately, thwart sharing them sharing the same node-updating policies:

    1. A trie's Node_Update template-template @@ -1080,7 +1080,7 @@ parametrized by Cmp_Fn.

    2. Tree-based containers store values in all nodes, while trie-based containers (at least in this implementation) store values in leafs.

    The graphic below shows the scheme, as well as some predefined - policies (which are explained below).

    Figure 22.29. A trie and its update policy

    A trie and its update policy

    This library offers the following pre-defined trie node + policies (which are explained below).

    Figure 22.29. A trie and its update policy

    A trie and its update policy

    This library offers the following pre-defined trie node updating policies:

    1. trie_order_statistics_node_update supports order statistics. @@ -1128,7 +1128,7 @@ simple list of integer keys. If we search for the integer 6, we are paying an overhead: the link with key 6 is only the fifth link; if it were the first link, it could be accessed - faster.

      Figure 22.30. A simple list

      A simple list

      List-update algorithms reorder lists as elements are + faster.

      Figure 22.30. A simple list

      A simple list

      List-update algorithms reorder lists as elements are accessed. They try to determine, by the access history, which keys to move to the front of the list. Some of these algorithms require adding some metadata alongside each entry.

      For example, in the graphic below label A shows the counter @@ -1138,7 +1138,7 @@ predetermined value, say 10, as shown in label C, the count is set to 0 and the node is moved to the front of the list, as in label D. -

      Figure 22.31. The counter algorithm

      The counter algorithm

    Policies

    this library allows instantiating lists with policies +

    Figure 22.31. The counter algorithm

    The counter algorithm

    Policies

    this library allows instantiating lists with policies implementing any algorithm moving nodes to the front of the list (policies implementing algorithms interchanging nodes are unsupported).

    Associative containers based on lists are parametrized by a @@ -1310,7 +1310,7 @@ sequence; the second uses a tree (or forest of trees), which is typically less structured than an associative container's tree; the third simply uses an associative container. These are - shown in the graphic below, in labels A1 and A2, label B, and label C.

    Figure 22.32. Underlying Priority-Queue Data-Structures.

    Underlying Priority-Queue Data-Structures.

    Roughly speaking, any value that is both pushed and popped + shown in the graphic below, in labels A1 and A2, label B, and label C.

    Figure 22.32. Underlying Priority-Queue Data-Structures.

    Underlying Priority-Queue Data-Structures.

    Roughly speaking, any value that is both pushed and popped from a priority queue must incur a logarithmic expense (in the amortized sense). Any priority queue implementation that would avoid this, would violate known bounds on comparison-based @@ -1390,7 +1390,7 @@ container Cntnr, the tag of the underlying data structure can be found via typename Cntnr::container_category; this is one of the possible tags shown in the graphic below. -

    Figure 22.33. Priority-Queue Data-Structure Tags.

    Priority-Queue Data-Structure Tags.

    Additionally, a traits mechanism can be used to query a +

    Figure 22.33. Priority-Queue Data-Structure Tags.

    Priority-Queue Data-Structure Tags.

    Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then

    __gnu_pbds::container_traits<Cntnr>

    is a traits class identifying the properties of the diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures.html 2014-03-27 19:29:33.000000000 +0000 @@ -248,7 +248,7 @@ these invariants, one must supply some policy that is aware of these changes. Without this, it would be better to use a linked list (in itself very efficient for these purposes). -

    Figure 22.1. Node Invariants

    Node Invariants

    Underlying Data Structures

    +

    Figure 22.1. Node Invariants

    Node Invariants

    Underlying Data Structures

    The standard C++ library contains associative containers based on red-black trees and collision-chaining hash tables. These are very useful, but they are not ideal for all types of @@ -256,7 +256,7 @@

    The figure below shows the different underlying data structures currently supported in this library. -

    Figure 22.2. Underlying Associative Data Structures

    Underlying Associative Data Structures

    +

    Figure 22.2. Underlying Associative Data Structures

    Underlying Associative Data Structures

    A shows a collision-chaining hash-table, B shows a probing hash-table, C shows a red-black tree, D shows a splay tree, E shows a tree based on an ordered vector(implicit in the order of the @@ -375,7 +375,7 @@ no guarantee that the elements traversed will coincide with the logical elements between 1 and 5, as in label B. -

    Figure 22.3. Range Iteration in Different Data Structures

    Node Invariants

    +

    Figure 22.3. Range Iteration in Different Data Structures

    Node Invariants

    In our opinion, this problem is not caused just because red-black trees are order preserving while collision-chaining hash tables are (generally) not - it @@ -426,7 +426,7 @@ list, as in the graphic below, label B. Here the iterators are as light as can be, but the hash-table's operations are more complicated. -

    Figure 22.4. Point Iteration in Hash Data Structures

    Point Iteration in Hash Data Structures

    +

    Figure 22.4. Point Iteration in Hash Data Structures

    Point Iteration in Hash Data Structures

    It should be noted that containers based on collision-chaining hash-tables are not the only ones with this type of behavior; many other self-organizing data structures display it as well. @@ -442,7 +442,7 @@ container. The graphic below shows three cases: A1 and A2 show a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 show a collision-chaining hash table. -

    Figure 22.5. Effect of erase in different underlying data structures

    Effect of erase in different underlying data structures

    1. +

      Figure 22.5. Effect of erase in different underlying data structures

      Effect of erase in different underlying data structures

      1. Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can be de-referenced and incremented. The sequence of iterators changed, but in a way that is well-defined by the interface. @@ -678,7 +678,7 @@ typically less structured than an associative container's tree; the third simply uses an associative container. These are shown in the figure below with labels A1 and A2, B, and C. -

        Figure 22.6. Underlying Priority Queue Data Structures

        Underlying Priority Queue Data Structures

        +

        Figure 22.6. Underlying Priority Queue Data Structures

        Underlying Priority Queue Data Structures

        No single implementation can completely replace any of the others. Some have better push and pop amortized performance, some have diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_using.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_using.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_using.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/policy_data_structures_using.html 2014-03-27 19:29:33.000000000 +0000 @@ -61,7 +61,7 @@ In addition, there are the following diagnostics classes, used to report errors specific to this library's data structures. -

        Figure 22.7. Exception Hierarchy

        Exception Hierarchy

      Tutorial

      Basic Use

      +

      Figure 22.7. Exception Hierarchy

      Exception Hierarchy

      Tutorial

      Basic Use

      For the most part, the policy-based containers containers in namespace __gnu_pbds have the same interface as the equivalent containers in the standard C++ library, except for diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_design.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_design.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_design.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_design.html 2014-03-27 19:29:33.000000000 +0000 @@ -1,6 +1,6 @@ Design

      Design

      -

      Table 19.1. Profile Code Location

      Code LocationUse
      libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
      libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
      libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are +

      Table 19.1. Profile Code Location

      Code LocationUse
      libstdc++-v3/include/std/*Preprocessor code to redirect to profile extension headers.
      libstdc++-v3/include/profile/*Profile extension public headers (map, vector, ...).
      libstdc++-v3/include/profile/impl/*Profile extension internals. Implementation files are only included from impl/profiler.h, which is the only file included from the public headers.

      Wrapper Model

      diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html 2014-03-27 19:29:33.000000000 +0000 @@ -17,7 +17,7 @@ A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. -

      Table 19.2. Profile Diagnostics

      GroupFlagBenefitCostFreq.Implemented 
      +

      Table 19.2. Profile Diagnostics

      GroupFlagBenefitCostFreq.Implemented 
      CONTAINERS HASHTABLE_TOO_SMALL101 10yes
        HASHTABLE_TOO_LARGE51 10yes
        diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/profile_mode.html 2014-03-27 19:29:33.000000000 +0000 @@ -137,7 +137,7 @@ call context. (Environment variable not supported.)

      -

      Bibliography

      +

      Bibliography

      Perflint: A Context Sensitive Performance Advisor for C++ Programs . Lixia Liu. Silvius Rus. Copyright © 2009 . Proceedings of the 2009 International Symposium on Code Generation diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/source_design_notes.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/source_design_notes.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/source_design_notes.html 2013-04-02 15:19:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/source_design_notes.html 2014-03-27 19:29:33.000000000 +0000 @@ -190,7 +190,7 @@
          Fixing these cases will require an audit of all inline functions
          defined in the library to determine which merit inlining, and moving
      -    the rest out of line. This is an issue mainly in chapters 23, 25, and
      +    the rest out of line. This is an issue mainly in clauses 23, 25, and
          27. Of course it can be done incrementally, and we should generally
          accept patches that move large functions out of line and into ".tcc"
          files, which can later be pulled into a repository. Compiler/linker
      @@ -404,7 +404,7 @@     must be replaced with something more rationally behaved.)

          All the C headers need the treatment above; in the standard these
      -    headers are mentioned in various chapters. Below, I have only
      +    headers are mentioned in various clauses. Below, I have only
          mentioned those that present interesting implementation issues.

          The components identified as "mostly complete", below, have not been
      @@ -533,7 +533,7 @@     files to improve link-time behavior is extremely unsatisfactory,
          literally tripling library-build time with no commensurate improvement
          in static program link sizes. It must be redone. (Similar work is
      -    needed for some components in chapters 22 and 27.)
      +    needed for some components in clauses 22 and 27.)

          Other work needed for strings is MT-safety, as discussed under the
          chapter 20 heading.
      diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/status.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/status.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/status.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/status.html 2014-03-27 19:29:33.000000000 +0000 @@ -7,7 +7,7 @@

      This page describes the C++ support in mainline GCC SVN, not in any particular release. -

      Table 1.1. C++ 1998/2003 Implementation Status

      SectionDescriptionStatusComments
      +

      Table 1.1. C++ 1998/2003 Implementation Status

      SectionDescriptionStatusComments
      18 Language support @@ -158,7 +158,7 @@

      This page describes the C++11 support in mainline GCC SVN, not in any particular release. -

      Table 1.2. C++ 2011 Implementation Status

      SectionDescriptionStatusComments
      +

      Table 1.2. C++ 2011 Implementation Status

      SectionDescriptionStatusComments
      18 Language support @@ -294,7 +294,7 @@

      This page describes the C++14 and library TS support in mainline GCC SVN, not in any particular release. -

      Table 1.3. C++ 2014 Implementation Status

      PaperTitleStatusComments
      +

      Table 1.3. C++ 2014 Implementation Status

      PaperTitleStatusComments
      N3669 @@ -366,21 +366,65 @@ N3644 - Null Forward IteratorsN 

      Table 1.4. C++ Technical Specifications Implementation Status

      PaperTitleStatusComments
      + Null Forward IteratorsN 

      Table 1.4. C++ Technical Specifications Implementation Status

      PaperTitleStatusComments
      N3662 - C++ Dynamic ArraysNArray Extensions TS
      - - N3672 - - A proposal to add a utility class to represent optional objectsYLibrary Fundamentals TS
      - - N3762 - - string_view: a non-owning reference to a stringYLibrary Fundamentals TS
      - - N3790 + C++ Dynamic ArraysNArray Extensions TS
      + + N3783 + + Network byte order conversionNLibrary Fundamentals TS
      + + N3793 + + A proposal to add a utility class to represent optional objectsYLibrary Fundamentals TS
      + + N3804 + + Any library proposalNLibrary Fundamentals TS
      + + N3843 + + A SFINAE-Friendly std::common_type (option 2 was approved)NLibrary Fundamentals TS
      + + N3866 + + Invocation type traits, but dropping function_call_operator.NLibrary Fundamentals TS
      + + N3905 + + Faster string searching (Boyer-Moore et al.)NLibrary Fundamentals TS
      + + N3915 + + apply() call a function with arguments from a tupleNLibrary Fundamentals TS
      + + N3916 + + Polymorphic memory resourcesNLibrary Fundamentals TS
      + + N3920 + + Extending shared_ptr to support arraysNLibrary Fundamentals TS
      + + N3921 + + string_view: a non-owning reference to a stringYLibrary Fundamentals TS
      + + N3923 + + A SFINAE-Friendly std::iterator_traitsNLibrary Fundamentals TS
      + + N3925 + + A sample proposalNLibrary Fundamentals TS
      + + N3932 + + Variable Templates For Type TraitsNLibrary Fundamentals TS
      + + N3940 File SystemWIP 

      C++ TR1

      This table is based on the table of contents of ISO/IEC DTR 19768 @@ -393,7 +437,7 @@

      This page describes the TR1 support in mainline GCC SVN, not in any particular release. -

      Table 1.5. C++ TR1 Implementation Status

      SectionDescriptionStatusComments
      2General Utilities
      2.1Reference wrappers  
      2.1.1Additions to header <functional> synopsisY 
      2.1.2Class template reference_wrapper  
      2.1.2.1reference_wrapper construct/copy/destroyY 
      2.1.2.2reference_wrapper assignmentY 
      2.1.2.3reference_wrapper accessY 
      2.1.2.4reference_wrapper invocationY 
      2.1.2.5reference_wrapper helper functionsY 
      2.2Smart pointers  
      2.2.1Additions to header <memory> synopsisY 
      2.2.2Class bad_weak_ptrY 
      2.2.3Class template shared_ptr  +

      Table 1.5. C++ TR1 Implementation Status

      SectionDescriptionStatusComments
      2General Utilities
      2.1Reference wrappers  
      2.1.1Additions to header <functional> synopsisY 
      2.1.2Class template reference_wrapper  
      2.1.2.1reference_wrapper construct/copy/destroyY 
      2.1.2.2reference_wrapper assignmentY 
      2.1.2.3reference_wrapper accessY 
      2.1.2.4reference_wrapper invocationY 
      2.1.2.5reference_wrapper helper functionsY 
      2.2Smart pointers  
      2.2.1Additions to header <memory> synopsisY 
      2.2.2Class bad_weak_ptrY 
      2.2.3Class template shared_ptr 

      Uses code from boost::shared_ptr. @@ -414,7 +458,7 @@

      This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. -

      Table 1.6. C++ TR 24733 Implementation Status

      SectionDescriptionStatusComments
      +

      Table 1.6. C++ TR 24733 Implementation Status

      SectionDescriptionStatusComments
      0 Introduction diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/std_contents.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/std_contents.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/std_contents.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/std_contents.html 2014-03-27 19:29:33.000000000 +0000 @@ -12,13 +12,13 @@
      Exceptions
      API Reference
      Adding Data to exception
      Concept Checking
      6. Utilities -
      Functors
      Pairs
      Memory
      Allocators
      Requirements
      Design Issues
      Implementation
      Interface Design
      Selecting Default Allocation Policy
      Disabling Memory Caching
      Using a Specific Allocator
      Custom Allocators
      Extension Allocators
      auto_ptr
      Limitations
      Use in Containers
      shared_ptr
      Requirements
      Design Issues
      Implementation
      Class Hierarchy
      Thread Safety
      Selecting Lock Policy
      Related functions and classes
      Use
      Examples
      Unresolved Issues
      Acknowledgments
      Traits
      7. +
      Functors
      Pairs
      Memory
      Allocators
      Requirements
      Design Issues
      Implementation
      Interface Design
      Selecting Default Allocation Policy
      Disabling Memory Caching
      Using a Specific Allocator
      Custom Allocators
      Extension Allocators
      auto_ptr
      Limitations
      Use in Containers
      shared_ptr
      Requirements
      Design Issues
      Implementation
      Class Hierarchy
      Thread Safety
      Selecting Lock Policy
      Related functions and classes
      Use
      Examples
      Unresolved Issues
      Acknowledgments
      Traits
      7. Strings
      String Classes
      Simple Transformations
      Case Sensitivity
      Arbitrary Character Types
      Tokenizing
      Shrink to Fit
      CString (MFC)
      8. Localization -
      Locales
      locale
      Requirements
      Design
      Implementation
      Interacting with "C" locales
      Future
      Facets
      ctype
      Implementation
      Specializations
      Future
      codecvt
      Requirements
      Design
      wchar_t Size
      Support for Unicode
      Other Issues
      Implementation
      Use
      Future
      messages
      Requirements
      Design
      Implementation
      Models
      The GNU Model
      Use
      Future
      9. +
      Locales
      locale
      Requirements
      Design
      Implementation
      Interacting with "C" locales
      Future
      Facets
      ctype
      Implementation
      Specializations
      Future
      codecvt
      Requirements
      Design
      wchar_t Size
      Support for Unicode
      Other Issues
      Implementation
      Use
      Future
      messages
      Requirements
      Design
      Implementation
      Models
      The GNU Model
      Use
      Future
      9. Containers
      Sequences
      list
      list::size() is O(n)
      vector
      Space Overhead Management
      Associative
      Insertion Hints
      bitset
      Size Variable
      Type String
      Unordered Associative
      Insertion Hints
      Hash Code
      Hash Code Caching Policy
      Interacting with C
      Containers vs. Arrays
      10. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/streambufs.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/streambufs.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/streambufs.html 2013-04-02 15:19:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/streambufs.html 2014-03-27 19:29:33.000000000 +0000 @@ -53,7 +53,7 @@ return 0; }

      Try it yourself! More examples can be found in 3.1.x code, in - include/ext/*_filebuf.h, and in this article by James Kanze: + include/ext/*_filebuf.h, and in this article by James Kanze: Filtering Streambufs.

      Buffering

      First, are you sure that you understand buffering? Particularly diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/strings.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/strings.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/strings.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/strings.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents

       Next

      Chapter 7.  Strings - +

      String Classes

      Simple Transformations

      Here are Standard, simple, and portable ways to perform common transformations on a string instance, such as @@ -350,7 +350,7 @@

    2. string operations like this have O(n) complexity if the implementors do it correctly. The libstdc++ implementors did it correctly. Other vendors might not. -

    3. While chapters of the SGI STL are used in libstdc++, their +

    4. While parts of the SGI STL are used in libstdc++, their string class is not. The SGI string is essentially vector<char> and does not do any reference counting like libstdc++'s does. (It is O(n), though.) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/support.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/support.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/support.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/support.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,7 +6,7 @@ Standard Contents

    5.  Next

      Chapter 4.  Support - +

      This part deals with the functions called and objects created automatically during the course of a program's existence. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/test.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/test.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/test.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/test.html 2014-03-27 19:29:33.000000000 +0000 @@ -8,7 +8,7 @@

      Organization

      Directory Layout

      The directory libsrcdir/testsuite contains the individual test cases organized in sub-directories corresponding to - chapters of the C++ standard (detailed below), the dejagnu test + clauses of the C++ standard (detailed below), the dejagnu test harness support files, and sources to various testsuite utilities that are packaged in a separate testing library.

      @@ -492,7 +492,7 @@ reporting functions including:

      • time_counter

      • resource_counter

      • report_performance

      Special Topics

      Qualifying Exception Safety Guarantees - +

      Overview

      Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_exceptions.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_exceptions.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_exceptions.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_exceptions.html 2014-03-27 19:29:33.000000000 +0000 @@ -265,7 +265,7 @@ } catch(...) { this->_M_setstate(ios_base::badbit); } -

      Bibliography

      +

      Bibliography

      System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) @@ -274,39 +274,39 @@ . Copyright © 2008 The Open Group/The Institute of Electrical and Electronics Engineers, Inc. - .

      + .

      Error and Exception Handling . David Abrahams . Boost - .

      + .

      Exception-Safety in Generic Components . David Abrahams. Boost - .

      + .

      Standard Library Exception Policy . Matt Austern. WG21 N1077 - .

      + .

      ia64 c++ abi exception handling . Richard Henderson. GNU - .

      + .

      + . Bjarne Stroustrup.

      Exceptional C++ . Exception-Safety Issues and Techniques - . Herb Sutter.

      + . Herb Sutter.

      GCC Bug 25191: exception_defines.h #defines try/catch diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_headers.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_headers.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_headers.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using_headers.html 2014-03-27 19:29:33.000000000 +0000 @@ -18,19 +18,19 @@ the 1998 standard as updated for 2003, and the current 2011 standard.

      C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. -

      Table 3.2. C++ 1998 Library Headers

      algorithmbitsetcomplexdequeexception
      fstreamfunctionaliomanipiosiosfwd
      iostreamistreamiteratorlimitslist
      localemapmemorynewnumeric
      ostreamqueuesetsstreamstack
      stdexceptstreambufstringutilitytypeinfo
      valarrayvector   

      Table 3.3. C++ 1998 Library Headers for C Library Facilities

      cassertcerrnocctypecfloatciso646
      climitsclocalecmathcsetjmpcsignal
      cstdargcstddefcstdiocstdlibcstring
      ctimecwcharcwctype  

      +

      Table 3.2. C++ 1998 Library Headers

      algorithmbitsetcomplexdequeexception
      fstreamfunctionaliomanipiosiosfwd
      iostreamistreamiteratorlimitslist
      localemapmemorynewnumeric
      ostreamqueuesetsstreamstack
      stdexceptstreambufstringutilitytypeinfo
      valarrayvector   

      Table 3.3. C++ 1998 Library Headers for C Library Facilities

      cassertcerrnocctypecfloatciso646
      climitsclocalecmathcsetjmpcsignal
      cstdargcstddefcstdiocstdlibcstring
      ctimecwcharcwctype  

      C++11 include files. These are only available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. -

      Table 3.4. C++ 2011 Library Headers

      algorithmarraybitsetchronocomplex
      condition_variabledequeexceptionforward_listfstream
      functionalfutureinitalizer_listiomanipios
      iosfwdiostreamistreamiteratorlimits
      listlocalemapmemorymutex
      newnumericostreamqueuerandom
      ratioregexsetsstreamstack
      stdexceptstreambufstringsystem_errorthread
      tupletype_traitstypeinfounordered_mapunordered_set
      utilityvalarrayvector  

      Table 3.5. C++ 2011 Library Headers for C Library Facilities

      cassertccomplexcctypecerrnocfenv
      cfloatcinttypesciso646climitsclocale
      cmathcsetjmpcsignalcstdargcstdbool
      cstddefcstdintcstdlibcstdiocstring
      ctgmathctimecucharcwcharcwctype

      +

      Table 3.4. C++ 2011 Library Headers

      algorithmarraybitsetchronocomplex
      condition_variabledequeexceptionforward_listfstream
      functionalfutureinitalizer_listiomanipios
      iosfwdiostreamistreamiteratorlimits
      listlocalemapmemorymutex
      newnumericostreamqueuerandom
      ratioregexsetsstreamstack
      stdexceptstreambufstringsystem_errorthread
      tupletype_traitstypeinfounordered_mapunordered_set
      utilityvalarrayvector  

      Table 3.5. C++ 2011 Library Headers for C Library Facilities

      cassertccomplexcctypecerrnocfenv
      cfloatcinttypesciso646climitsclocale
      cmathcsetjmpcsignalcstdargcstdbool
      cstddefcstdintcstdlibcstdiocstring
      ctgmathctimecucharcwcharcwctype

      In addition, TR1 includes as: -

      Table 3.6. C++ TR 1 Library Headers

      tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
      tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
      tr1/utility    

      Table 3.7. C++ TR 1 Library Headers for C Library Facilities

      tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
      tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
      tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

      Decimal floating-point arithmetic is available if the C++ +

      Table 3.6. C++ TR 1 Library Headers

      tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
      tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
      tr1/utility    

      Table 3.7. C++ TR 1 Library Headers for C Library Facilities

      tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
      tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
      tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

      Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). -

      Table 3.8. C++ TR 24733 Decimal Floating-Point Header

      decimal/decimal

      +

      Table 3.8. C++ TR 24733 Decimal Floating-Point Header

      decimal/decimal

      Also included are files for the C++ ABI interface: -

      Table 3.9. C++ ABI Headers

      cxxabi.hcxxabi_forced.h

      +

      Table 3.9. C++ ABI Headers

      cxxabi.hcxxabi_forced.h

      And a large variety of extensions. -

      Table 3.10. Extension Headers

      ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
      ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
      ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
      ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
      ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
      ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
      ext/vstring.h    

      Table 3.11. Extension Debug Headers

      debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
      debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

      Table 3.12. Extension Profile Headers

      profile/bitsetprofile/dequeprofile/listprofile/map
      profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

      Table 3.13. Extension Parallel Headers

      parallel/algorithmparallel/numeric

      Mixing Headers

      A few simple rules. +

      Table 3.10. Extension Headers

      ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
      ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
      ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
      ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
      ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
      ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
      ext/vstring.h    

      Table 3.11. Extension Debug Headers

      debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
      debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

      Table 3.12. Extension Profile Headers

      profile/bitsetprofile/dequeprofile/listprofile/map
      profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

      Table 3.13. Extension Parallel Headers

      parallel/algorithmparallel/numeric

      Mixing Headers

      A few simple rules.

      First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

      diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using.html
      --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using.html	2014-01-30 11:07:36.000000000 +0000
      +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/using.html	2014-03-27 19:29:33.000000000 +0000
      @@ -10,5 +10,5 @@
             enumerated and detailed in the table below.
           

      By default, g++ is equivalent to g++ -std=gnu++98. The standard library also defaults to this dialect. -

      Table 3.1. C++ Command Options

      Option FlagsDescription
      -std=c++98Use the 1998 ISO C++ standard plus amendments.
      -std=gnu++98As directly above, with GNU extensions.
      -std=c++11Use the 2011 ISO C++ standard.
      -std=gnu++11As directly above, with GNU extensions.
      -fexceptionsSee exception-free dialect
      -frttiAs above, but RTTI-free dialect.
      -pthread or -pthreadsFor ISO C++11 <thread>, <future>, +

      Table 3.1. C++ Command Options

      Option FlagsDescription
      -std=c++98Use the 1998 ISO C++ standard plus amendments.
      -std=gnu++98As directly above, with GNU extensions.
      -std=c++11Use the 2011 ISO C++ standard.
      -std=gnu++11As directly above, with GNU extensions.
      -fexceptionsSee exception-free dialect
      -frttiAs above, but RTTI-free dialect.
      -pthread or -pthreadsFor ISO C++11 <thread>, <future>, <mutex>, or <condition_variable>.
      -fopenmpFor parallel mode.

      \ No newline at end of file diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/utilities.html gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/utilities.html --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/html/manual/utilities.html 2014-01-30 11:07:36.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/html/manual/utilities.html 2014-03-27 19:29:33.000000000 +0000 @@ -6,8 +6,8 @@ Standard Contents
       Next

      Functors

      If you don't know what functors are, you're not alone. Many people get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as part of their STL, in diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/faq.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/faq.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/faq.xml 2014-01-24 11:57:50.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/faq.xml 2014-03-27 19:29:31.000000000 +0000 @@ -32,7 +32,7 @@ The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library as described in - chapters 17 through 27 and annex D. For those who want to see + clauses 17 through 27 and annex D. For those who want to see exactly how far the project has come, or just want the latest bleeding-edge code, the up-to-date source is available over anonymous SVN, and can even be browsed over diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/appendix_contributing.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/appendix_contributing.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/appendix_contributing.xml 2013-04-02 15:18:59.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/appendix_contributing.xml 2014-03-27 19:29:31.000000000 +0000 @@ -1113,7 +1113,7 @@ Fixing these cases will require an audit of all inline functions defined in the library to determine which merit inlining, and moving - the rest out of line. This is an issue mainly in chapters 23, 25, and + the rest out of line. This is an issue mainly in clauses 23, 25, and 27. Of course it can be done incrementally, and we should generally accept patches that move large functions out of line and into ".tcc" files, which can later be pulled into a repository. Compiler/linker @@ -1327,7 +1327,7 @@ must be replaced with something more rationally behaved.) All the C headers need the treatment above; in the standard these - headers are mentioned in various chapters. Below, I have only + headers are mentioned in various clauses. Below, I have only mentioned those that present interesting implementation issues. The components identified as "mostly complete", below, have not been @@ -1456,7 +1456,7 @@ files to improve link-time behavior is extremely unsatisfactory, literally tripling library-build time with no commensurate improvement in static program link sizes. It must be redone. (Similar work is - needed for some components in chapters 22 and 27.) + needed for some components in clauses 22 and 27.) Other work needed for strings is MT-safety, as discussed under the chapter 20 heading. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml 2014-01-10 15:26:31.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml 2014-03-27 19:29:31.000000000 +0000 @@ -588,7 +588,7 @@ The subset commonly known as the Standard Template Library - (chapters 23 through 25, mostly) is adapted from the final release + (clauses 23 through 25, mostly) is adapted from the final release of the SGI STL (version 3.3), with extensive changes. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/containers.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/containers.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/containers.xml 2014-01-22 14:47:56.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/containers.xml 2014-03-27 19:29:31.000000000 +0000 @@ -232,7 +232,7 @@ There are a couple of ways to handle this kind of thing. Please consider all of them before passing judgement. They include, in - no chaptericular order: + no particular order: A very large N in bitset<N>. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/io.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/io.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/io.xml 2013-02-25 13:34:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/io.xml 2014-03-27 19:29:31.000000000 +0000 @@ -21,17 +21,21 @@ To minimize the time you have to wait on the compiler, it's good to only include the headers you really need. Many people simply include - <iostream> when they don't need to -- and that can penalize - your runtime as well. Here are some tips on which header to use + <iostream> when they don't + need to -- and that can penalize your runtime as well. + Here are some tips on which header to use for which situations, starting with the simplest. - <iosfwd> should be included whenever you simply - need the name of an I/O-related class, such as - "ofstream" or "basic_streambuf". Like the name - implies, these are forward declarations. (A word to all you fellow - old school programmers: trying to forward declare classes like - "class istream;" won't work. Look in the iosfwd header if - you'd like to know why.) For example, + <iosfwd> + should be included whenever you simply need the name + of an I/O-related class, such as "ofstream" or + "basic_streambuf". + Like the name implies, these are forward declarations. + (A word to all you fellow old school programmers: + trying to forward declare classes like "class istream;" + won't work. + Look in the <iosfwd> header + if you'd like to know why.) For example, #include <iosfwd> @@ -44,33 +48,43 @@ extern std::ostream& operator<< (std::ostream&, MyClass&); - <ios> declares the base classes for the entire - I/O stream hierarchy, std::ios_base and std::basic_ios<charT>, the - counting types std::streamoff and std::streamsize, the file - positioning type std::fpos, and the various manipulators like - std::hex, std::fixed, std::noshowbase, and so forth. - - The ios_base class is what holds the format flags, the state flags, - and the functions which change them (setf(), width(), precision(), - etc). You can also store extra data and register callback functions - through ios_base, but that has been historically underused. Anything + <ios> + declares the base classes for the entire I/O stream hierarchy, + std::ios_base and std::basic_ios<charT>, + the counting types std::streamoff and std::streamsize, + the file positioning type std::fpos, + and the various manipulators like std::hex, + std::fixed, std::noshowbase, + and so forth. + + The ios_base class is what holds the format + flags, the state flags, and the functions which change them + (setf(), width(), + precision(), etc). + You can also store extra data and register callback functions + through ios_base, but that has been historically + underused. Anything which doesn't depend on the type of characters stored is consolidated here. - The template class basic_ios is the highest template class in the + The class template basic_ios is the highest + class template in the hierarchy; it is the first one depending on the character type, and holds all general state associated with that type: the pointer to the polymorphic stream buffer, the facet information, etc. - <streambuf> declares the template class - basic_streambuf, and two standard instantiations, streambuf and - wstreambuf. If you need to work with the vastly useful and capable - stream buffer classes, e.g., to create a new form of storage + <streambuf> + declares the class template basic_streambuf, and + two standard instantiations, streambuf and + wstreambuf. If you need to work with the vastly useful and + capable stream buffer classes, e.g., to create a new form of storage transport, this header is the one to include. - <istream>/<ostream> are - the headers to include when you are using the >>/<< - interface, or any of the other abstract stream formatting functions. + <istream> + and <ostream> + are the headers to include when you are using the overloaded + >> and << operators, + or any of the other abstract stream formatting functions. For example, @@ -81,25 +95,33 @@ return os << c.data1() << c.data2(); } - The std::istream and std::ostream classes are the abstract parents of + The std::istream and std::ostream classes + are the abstract parents of the various concrete implementations. If you are only using the interfaces, then you only need to use the appropriate interface header. - <iomanip> provides "extractors and inserters - that alter information maintained by class ios_base and its derived - classes," such as std::setprecision and std::setw. If you need + <iomanip> + provides "extractors and inserters that alter information maintained by + class ios_base and its derived classes," + such as std::setprecision and + std::setw. If you need to write expressions like os << setw(3); or - is >> setbase(8);, you must include <iomanip>. + is >> setbase(8);, you must include + <iomanip>. - <sstream>/<fstream> + <sstream> + and <fstream> declare the six stringstream and fstream classes. As they are the - standard concrete descendants of istream and ostream, you will already - know about them. + standard concrete descendants of istream and ostream, + you will already know about them. - Finally, <iostream> provides the eight standard - global objects (cin, cout, etc). To do this correctly, this header - also provides the contents of the <istream> and <ostream> - headers, but nothing else. The contents of this header look like + Finally, <iostream> + provides the eight standard global objects + (cin, cout, etc). To do this correctly, this + header also provides the contents of the + <istream> and + <ostream> + headers, but nothing else. The contents of this header look like: #include <ostream> @@ -119,7 +141,8 @@ must be initialized before any of your own code uses them; this is guaranteed by the standard. Like any other global object, they must be initialized once and only once. This is typically done with a - construct like the one above, and the nested class ios_base::Init is + construct like the one above, and the nested class + ios_base::Init is specified in the standard for just this reason. How does it work? Because the header is included before any of your @@ -129,9 +152,10 @@ constructor runs, the eight stream objects are set up. The static keyword means that each object file compiled - from a source file containing <iostream> will have its own + from a source file containing + <iostream> will have its own private copy of __foo. There is no specified order - of construction across object files (it's one of those pesky NP + of construction across object files (it's one of those pesky NP complete problems that make life so interesting), so one copy in each object file means that the stream objects are guaranteed to be set up before any of your code which uses them could run, thereby meeting the @@ -143,7 +167,9 @@ inside a function call, but over several dozen or hundreds of object files, that time can add up. (It's not in a tight loop, either.) - The lesson? Only include <iostream> when you need to use one of + The lesson? Only include + <iostream> when you need + to use one of the standard objects in that source file; you'll pay less startup time. Only include the header files you need to in general; your compile times will go down when there's less parsing work to do. @@ -214,7 +240,7 @@ } Try it yourself! More examples can be found in 3.1.x code, in - include/ext/*_filebuf.h, and in this article by James Kanze: + include/ext/*_filebuf.h, and in this article by James Kanze: Filtering Streambufs. @@ -398,7 +424,7 @@ Seriously, go do it. Get surprised, then come back. It's worth it. The thing to remember is that the basic_[io]stream classes - handle formatting, nothing else. In chaptericular, they break up on + handle formatting, nothing else. In particular, they break up on whitespace. The actual reading, writing, and storing of data is handled by the basic_streambuf family. Fortunately, the operator<< is overloaded to take an ostream and @@ -416,7 +442,7 @@ OUT << IN.rdbuf(); So what was happening with OUT<<IN? Undefined - behavior, since that chaptericular << isn't defined by the Standard. + behavior, since that particular << isn't defined by the Standard. I have seen instances where it is implemented, but the character extraction process removes all the whitespace, leaving you with no blank lines and only "Thequickbrownfox...". With @@ -633,7 +659,7 @@ Note, by the way, that the synchronization requirement only applies to the standard streams (cin, cout, cerr, - clog, and their wide-character counterchapters). File stream + clog, and their wide-character counterparts). File stream objects that you declare yourself have no such requirement and are fully buffered. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/numerics.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/numerics.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/numerics.xml 2013-02-25 13:34:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/numerics.xml 2014-03-27 19:29:31.000000000 +0000 @@ -65,7 +65,7 @@ accumulate inner_product - chapterial_sum + partial_sum adjacent_difference Here is a simple example of the two forms of accumulate. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/strings.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/strings.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/strings.xml 2013-02-25 13:34:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/strings.xml 2014-03-27 19:29:31.000000000 +0000 @@ -462,7 +462,7 @@ if the implementors do it correctly. The libstdc++ implementors did it correctly. Other vendors might not. - While chapters of the SGI STL are used in libstdc++, their + While parts of the SGI STL are used in libstdc++, their string class is not. The SGI string is essentially vector<char> and does not do any reference counting like libstdc++'s does. (It is O(n), though.) diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/test.xml gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/test.xml --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/test.xml 2013-02-25 13:34:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/doc/xml/manual/test.xml 2014-03-27 19:29:31.000000000 +0000 @@ -28,7 +28,7 @@ The directory libsrcdir/testsuite contains the individual test cases organized in sub-directories corresponding to - chapters of the C++ standard (detailed below), the dejagnu test + clauses of the C++ standard (detailed below), the dejagnu test harness support files, and sources to various testsuite utilities that are packaged in a separate testing library. diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/bits/atomic_base.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/bits/atomic_base.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/bits/atomic_base.h 2014-01-05 19:57:39.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/bits/atomic_base.h 2014-03-26 08:19:10.000000000 +0000 @@ -768,11 +768,11 @@ bool is_lock_free() const noexcept - { return __atomic_is_lock_free(_M_type_size(1), nullptr); } + { return __atomic_is_lock_free(sizeof(__pointer_type), nullptr); } bool is_lock_free() const volatile noexcept - { return __atomic_is_lock_free(_M_type_size(1), nullptr); } + { return __atomic_is_lock_free(sizeof(__pointer_type), nullptr); } _GLIBCXX_ALWAYS_INLINE void store(__pointer_type __p, diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/bits/hashtable.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/bits/hashtable.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/bits/hashtable.h 2014-01-22 14:47:56.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/bits/hashtable.h 2014-03-26 08:19:10.000000000 +0000 @@ -372,9 +372,8 @@ // Use delegating constructors. explicit _Hashtable(const allocator_type& __a) - : _Hashtable(10, _H1(), __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), key_equal(), - __key_extract(), __a) + : _Hashtable(10, _H1(), _H2(), _Hash(), key_equal(), + __key_extract(), __a) { } explicit @@ -382,8 +381,7 @@ const _H1& __hf = _H1(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Hashtable(__n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, + : _Hashtable(__n, __hf, _H2(), _Hash(), __eql, __key_extract(), __a) { } @@ -393,8 +391,7 @@ const _H1& __hf = _H1(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Hashtable(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, + : _Hashtable(__f, __l, __n, __hf, _H2(), _Hash(), __eql, __key_extract(), __a) { } @@ -403,9 +400,7 @@ const _H1& __hf = _H1(), const key_equal& __eql = key_equal(), const allocator_type& __a = allocator_type()) - : _Hashtable(__l.begin(), __l.end(), __n, __hf, - __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, + : _Hashtable(__l.begin(), __l.end(), __n, __hf, _H2(), _Hash(), __eql, __key_extract(), __a) { } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/debug/functions.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/debug/functions.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/debug/functions.h 2014-01-05 19:57:35.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/debug/functions.h 2014-03-22 12:09:04.000000000 +0000 @@ -34,8 +34,8 @@ // _Iter_base #include // for __is_integer #include // for __addressof and addressof +# include // for less #if __cplusplus >= 201103L -# include // for less and greater_equal # include // for is_lvalue_reference and __and_ #endif #include @@ -52,6 +52,9 @@ struct _Insert_range_from_self_is_safe { enum { __value = 0 }; }; + template + struct _Is_contiguous_sequence : std::__false_type { }; + // An arbitrary iterator pointer is not singular. inline bool __check_singular_aux(const void*) { return false; } @@ -175,123 +178,112 @@ return __first; } -#if __cplusplus >= 201103L - // Default implementation. + /* Handle the case where __other is a pointer to _Sequence::value_type. */ template inline bool __foreign_iterator_aux4(const _Safe_iterator<_Iterator, _Sequence>& __it, - typename _Sequence::const_pointer __begin, - typename _Sequence::const_pointer __other) + const typename _Sequence::value_type* __other) { - typedef typename _Sequence::const_pointer _PointerType; - constexpr std::less<_PointerType> __l{}; + typedef const typename _Sequence::value_type* _PointerType; + typedef std::less<_PointerType> _Less; +#if __cplusplus >= 201103L + constexpr _Less __l{}; +#else + const _Less __l = _Less(); +#endif + const _Sequence* __seq = __it._M_get_sequence(); + const _PointerType __begin = std::__addressof(*__seq->_M_base().begin()); + const _PointerType __end = std::__addressof(*(__seq->_M_base().end()-1)); - return (__l(__other, __begin) - || __l(std::addressof(*(__it._M_get_sequence()->_M_base().end() - - 1)), __other)); + // Check whether __other points within the contiguous storage. + return __l(__other, __begin) || __l(__end, __other); } - // Fallback when address type cannot be implicitely casted to sequence - // const_pointer. - template + /* Fallback overload for when we can't tell, assume it is valid. */ + template inline bool - __foreign_iterator_aux4(const _Safe_iterator<_Iterator, _Sequence>&, - _InputIterator, ...) + __foreign_iterator_aux4(const _Safe_iterator<_Iterator, _Sequence>&, ...) { return true; } + /* Handle sequences with contiguous storage */ template inline bool __foreign_iterator_aux3(const _Safe_iterator<_Iterator, _Sequence>& __it, - _InputIterator __other, - std::true_type) + const _InputIterator& __other, + const _InputIterator& __other_end, + std::__true_type) { - // Only containers with all elements in contiguous memory can have their - // elements passed through pointers. - // Arithmetics is here just to make sure we are not dereferencing - // past-the-end iterator. - if (__it._M_get_sequence()->_M_base().begin() - != __it._M_get_sequence()->_M_base().end()) - if (std::addressof(*(__it._M_get_sequence()->_M_base().end() - 1)) - - std::addressof(*(__it._M_get_sequence()->_M_base().begin())) - == __it._M_get_sequence()->size() - 1) - return (__foreign_iterator_aux4 - (__it, - std::addressof(*(__it._M_get_sequence()->_M_base().begin())), - std::addressof(*__other))); - return true; + if (__other == __other_end) + return true; // inserting nothing is safe even if not foreign iters + if (__it._M_get_sequence()->begin() == __it._M_get_sequence()->end()) + return true; // can't be self-inserting if self is empty + return __foreign_iterator_aux4(__it, std::__addressof(*__other)); } - - /* Fallback overload for which we can't say, assume it is valid. */ + + /* Handle non-contiguous containers, assume it is valid. */ template inline bool - __foreign_iterator_aux3(const _Safe_iterator<_Iterator, _Sequence>& __it, - _InputIterator __other, - std::false_type) + __foreign_iterator_aux3(const _Safe_iterator<_Iterator, _Sequence>&, + const _InputIterator&, const _InputIterator&, + std::__false_type) { return true; } -#endif - /** Checks that iterators do not belong to the same sequence. */ + /** Handle debug iterators from the same type of container. */ template inline bool __foreign_iterator_aux2(const _Safe_iterator<_Iterator, _Sequence>& __it, const _Safe_iterator<_OtherIterator, _Sequence>& __other, - std::input_iterator_tag) + const _Safe_iterator<_OtherIterator, _Sequence>&) { return __it._M_get_sequence() != __other._M_get_sequence(); } - -#if __cplusplus >= 201103L - /* This overload detects when passing pointers to the contained elements - rather than using iterators. - */ + + /** Handle debug iterators from different types of container. */ + template + inline bool + __foreign_iterator_aux2(const _Safe_iterator<_Iterator, _Sequence>& __it, + const _Safe_iterator<_OtherIterator, _OtherSequence>&, + const _Safe_iterator<_OtherIterator, _OtherSequence>&) + { return true; } + + /* Handle non-debug iterators. */ template inline bool __foreign_iterator_aux2(const _Safe_iterator<_Iterator, _Sequence>& __it, - _InputIterator __other, - std::random_access_iterator_tag) + const _InputIterator& __other, + const _InputIterator& __other_end) { - typedef typename _Sequence::const_iterator _ItType; - typedef typename std::iterator_traits<_ItType>::reference _Ref; - return __foreign_iterator_aux3(__it, __other, - std::is_lvalue_reference<_Ref>()); + return __foreign_iterator_aux3(__it, __other, __other_end, + _Is_contiguous_sequence<_Sequence>()); } -#endif - - /* Fallback overload for which we can't say, assume it is valid. */ - template - inline bool - __foreign_iterator_aux2(const _Safe_iterator<_Iterator, _Sequence>&, - _InputIterator, - std::input_iterator_tag) - { return true; } - - template + + /* Handle the case where we aren't really inserting a range after all */ + template inline bool - __foreign_iterator_aux(const _Safe_iterator<_Iterator, _Sequence>& __it, - _Integral __other, + __foreign_iterator_aux(const _Safe_iterator<_Iterator, _Sequence>&, + _Integral, _Integral, std::__true_type) { return true; } + /* Handle all iterators. */ template inline bool __foreign_iterator_aux(const _Safe_iterator<_Iterator, _Sequence>& __it, - _InputIterator __other, + _InputIterator __other, _InputIterator __other_end, std::__false_type) { - return (_Insert_range_from_self_is_safe<_Sequence>::__value - || __foreign_iterator_aux2(__it, __other, - std::__iterator_category(__it))); + return _Insert_range_from_self_is_safe<_Sequence>::__value + || __foreign_iterator_aux2(__it, __other, __other_end); } template inline bool __foreign_iterator(const _Safe_iterator<_Iterator, _Sequence>& __it, - _InputIterator __other) + _InputIterator __other, _InputIterator __other_end) { typedef typename std::__is_integer<_InputIterator>::__type _Integral; - return __foreign_iterator_aux(__it, __other, _Integral()); + return __foreign_iterator_aux(__it, __other, __other_end, _Integral()); } /** Checks that __s is non-NULL or __n == 0, and then returns __s. */ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/debug/macros.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/debug/macros.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/debug/macros.h 2014-01-05 19:57:35.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/debug/macros.h 2014-03-22 12:09:04.000000000 +0000 @@ -99,14 +99,15 @@ * into a container at a specific position requires that the iterator * be nonsingular (i.e., either dereferenceable or past-the-end), * that it reference the sequence we are inserting into, and that the - * iterator range [_First, Last) is a valid (possibly empty) - * range. Note that this macro is only valid when the container is a + * iterator range [_First, _Last) is a valid (possibly empty) + * range which does not reference the sequence we are inserting into. + * Note that this macro is only valid when the container is a * _Safe_sequence and the _Position iterator is a _Safe_iterator. */ #define __glibcxx_check_insert_range(_Position,_First,_Last) \ __glibcxx_check_valid_range(_First,_Last); \ __glibcxx_check_insert(_Position); \ -_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__foreign_iterator(_Position,_First),\ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__foreign_iterator(_Position,_First,_Last),\ _M_message(__gnu_debug::__msg_insert_range_from_self)\ ._M_iterator(_First, #_First) \ ._M_iterator(_Last, #_Last) \ @@ -117,18 +118,15 @@ * into a container after a specific position requires that the iterator * be nonsingular (i.e., either dereferenceable or past-the-end), * that it reference the sequence we are inserting into, and that the - * iterator range [_First, Last) is a valid (possibly empty) - * range. Note that this macro is only valid when the container is a - * _Safe_sequence and the iterator is a _Safe_iterator. - * - * @todo We would like to be able to check for noninterference of - * _Position and the range [_First, _Last), but that can't (in - * general) be done. + * iterator range [_First, _Last) is a valid (possibly empty) + * range which does not reference the sequence we are inserting into. + * Note that this macro is only valid when the container is a + * _Safe_sequence and the _Position iterator is a _Safe_iterator. */ #define __glibcxx_check_insert_range_after(_Position,_First,_Last) \ __glibcxx_check_valid_range(_First,_Last); \ -__glibcxx_check_insert_after(_Position); \ -_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__foreign_iterator(_Position,_First),\ +__glibcxx_check_insert_after(_Position); \ +_GLIBCXX_DEBUG_VERIFY(__gnu_debug::__foreign_iterator(_Position,_First,_Last),\ _M_message(__gnu_debug::__msg_insert_range_from_self)\ ._M_iterator(_First, #_First) \ ._M_iterator(_Last, #_Last) \ @@ -343,7 +341,7 @@ _M_message(__gnu_debug::__msg_self_move_assign) \ ._M_sequence(*this, "this")) -// Verify that load factor is position +// Verify that load factor is positive #define __glibcxx_check_max_load_factor(_F) \ _GLIBCXX_DEBUG_VERIFY(_F > 0.0f, \ _M_message(__gnu_debug::__msg_valid_load_factor) \ diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/debug/vector gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/debug/vector --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/include/debug/vector 2014-03-20 10:50:10.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/include/debug/vector 2014-03-22 12:09:04.000000000 +0000 @@ -718,4 +718,17 @@ } // namespace std +namespace __gnu_debug +{ + template + struct _Is_contiguous_sequence > + : std::__true_type + { }; + + template + struct _Is_contiguous_sequence > + : std::__false_type + { }; +} + #endif diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/libsupc++/eh_ptr.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/libsupc++/eh_ptr.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/libsupc++/eh_ptr.cc 2014-01-05 19:57:40.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/libsupc++/eh_ptr.cc 2014-03-27 19:29:33.000000000 +0000 @@ -35,6 +35,32 @@ using namespace __cxxabiv1; +// Verify assumptions about member layout in exception types +namespace +{ +template + constexpr std::size_t unwindhdr() + { return offsetof(Ex, unwindHeader); } + +template + constexpr std::size_t termHandler() + { return unwindhdr() - offsetof(Ex, terminateHandler); } + +static_assert( termHandler<__cxa_exception>() + == termHandler<__cxa_dependent_exception>(), + "__cxa_dependent_exception::termHandler layout is correct" ); + +#ifndef __ARM_EABI_UNWINDER__ +template + constexpr std::ptrdiff_t adjptr() + { return unwindhdr() - offsetof(Ex, adjustedPtr); } + +static_assert( adjptr<__cxa_exception>() + == adjptr<__cxa_dependent_exception>(), + "__cxa_dependent_exception::adjustedPtr layout is correct" ); +#endif +} + std::__exception_ptr::exception_ptr::exception_ptr() _GLIBCXX_USE_NOEXCEPT : _M_exception_object(0) { } diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/libsupc++/unwind-cxx.h gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/libsupc++/unwind-cxx.h --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/libsupc++/unwind-cxx.h 2014-01-05 19:57:40.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/libsupc++/unwind-cxx.h 2014-03-27 19:29:33.000000000 +0000 @@ -81,7 +81,7 @@ // Stack of exceptions in cleanups. __cxa_exception* nextPropagatingException; - // The nuber of active cleanup handlers for this exception. + // The number of active cleanup handlers for this exception. int propagationCount; #else // Cache parsed handler data from the personality routine Phase 1 @@ -114,6 +114,11 @@ // The primary exception this thing depends on. void *primaryException; + // Unused member to get similar layout to __cxa_exception, otherwise the + // alignment requirements of _Unwind_Exception would require padding bytes + // before the unwindHeader member. + void (_GLIBCXX_CDTOR_CALLABI *__padding)(void *); + // The C++ standard has entertaining rules wrt calling set_terminate // and set_unexpected in the middle of the exception cleanup process. std::unexpected_handler unexpectedHandler; @@ -130,7 +135,7 @@ // Stack of exceptions in cleanups. __cxa_exception* nextPropagatingException; - // The nuber of active cleanup handlers for this exception. + // The number of active cleanup handlers for this exception. int propagationCount; #else // Cache parsed handler data from the personality routine Phase 1 diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc 2014-03-27 19:29:33.000000000 +0000 @@ -0,0 +1,41 @@ +// { dg-options "-std=gnu++11" } +// { dg-require-atomic-builtins "" } + +// Copyright (C) 2014 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 +// . + +// PR libstdc++/60612 + +#include +#include + +void terminate() { _Exit(0); } + +void f() noexcept +{ + try { + throw 1; + } catch (...) { + std::set_terminate(terminate); + std::rethrow_exception(std::current_exception()); + } +} + +int main() +{ + f(); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc 2014-03-27 19:29:33.000000000 +0000 @@ -0,0 +1,41 @@ +// { dg-options "-std=gnu++11" } +// { dg-require-atomic-builtins "" } + +// Copyright (C) 2014 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 +// . + +// PR libstdc++/60612 + +#include +#include + +void unexpected() { _Exit(0); } + +void f() throw() +{ + try { + throw 1; + } catch (...) { + std::set_unexpected(unexpected); + std::rethrow_exception(std::current_exception()); + } +} + +int main() +{ + f(); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/bitset/45713.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/bitset/45713.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/bitset/45713.cc 2014-01-05 19:57:52.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/bitset/45713.cc 2014-03-26 08:19:10.000000000 +0000 @@ -18,7 +18,7 @@ // The testcase requires bitsizetype to be wider than sizetype, // otherwise types/vars with (e.g. for 32-bit sizetype) 0x20000000 // bytes or larger can't be used. See http://gcc.gnu.org/PR54897 -// { dg-do compile { target { ! { avr*-*-* cris*-*-* h8300*-*-* mcore*-*-* moxie*-*-* mmix-*-* } } } } +// { dg-do compile { target { ! { avr*-*-* cris*-*-* h8300*-*-* hppa*64*-*-* mcore*-*-* moxie*-*-* mmix-*-* } } } } #include diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc 2014-01-05 19:57:53.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc 2014-03-22 12:09:05.000000000 +0000 @@ -15,12 +15,10 @@ // with this library; see the file COPYING3. If not see // . // -// { dg-options "-std=gnu++11" } // { dg-require-debug-mode "" } // { dg-do run { xfail *-*-* } } #include -#include void test01() { diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc 2014-03-22 12:09:05.000000000 +0000 @@ -0,0 +1,35 @@ +// Copyright (C) 2014 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 +// . +// +// { dg-require-debug-mode "" } + +// PR libstdc++/60587 + +#include + +int main() { + std::vector a, b; + a.push_back(1); + a.insert(a.end(), b.begin(), b.end()); + b.push_back(1L); + a.insert(a.end(), b.begin(), b.end()); + + std::vector c; + a.insert(a.end(), c.begin(), c.end()); + c.push_back(1L); + a.insert(a.end(), c.begin(), c.end()); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc 2014-03-22 12:09:05.000000000 +0000 @@ -0,0 +1,29 @@ +// Copyright (C) 2014 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 +// . +// +// { dg-require-debug-mode "" } +// { dg-do run { xfail *-*-* } } + +// PR libstdc++/60587 + +#include + +int main() { + std::vector a; + a.push_back(1); + a.insert(a.end(), a.begin(), a.begin()); // Expected to abort here +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc 1970-01-01 00:00:00.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/libstdc++-v3/testsuite/29_atomics/atomic/60658.cc 2014-03-26 08:19:10.000000000 +0000 @@ -0,0 +1,43 @@ +// { dg-require-atomic-builtins "" } +// { dg-options "-std=gnu++11" } + +// Copyright (C) 2014 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 +// . + +#include +#include + +// libstdc++/60658 + +struct Foo { + char buf[1]; +}; + +struct Bar { + char buf[100]; +}; + +int +main () +{ + bool test __attribute__((unused)) = true; + + std::atomic a; + std::atomic b; + + VERIFY (a.is_lock_free() == b.is_lock_free()); +} diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/lto-plugin/ChangeLog gccgo-4.9-4.9-20140330/=unpacked-tar1=/lto-plugin/ChangeLog --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/lto-plugin/ChangeLog 2014-03-20 10:50:11.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/lto-plugin/ChangeLog 2014-03-28 19:04:52.000000000 +0000 @@ -1,3 +1,7 @@ +2014-03-28 Richard Biener + + * lto-plugin.c (process_symtab): Handle EINTR and short reads. + 2014-03-17 Rainer Orth * configure.ac (ac_lto_plugin_ldflags): Set to -Wc,-static-libgcc diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/lto-plugin/lto-plugin.c gccgo-4.9-4.9-20140330/=unpacked-tar1=/lto-plugin/lto-plugin.c --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/lto-plugin/lto-plugin.c 2013-02-25 13:35:45.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/lto-plugin/lto-plugin.c 2014-03-28 19:04:52.000000000 +0000 @@ -39,6 +39,7 @@ #include #endif #include +#include #include #include #include @@ -817,7 +818,7 @@ { struct plugin_objfile *obj = (struct plugin_objfile *)data; char *s; - char *secdata; + char *secdatastart, *secdata; if (strncmp (name, LTO_SECTION_PREFIX, LTO_SECTION_PREFIX_LEN) != 0) return 1; @@ -825,23 +826,40 @@ s = strrchr (name, '.'); if (s) sscanf (s, ".%" PRI_LL "x", &obj->out->id); - secdata = xmalloc (length); + secdata = secdatastart = xmalloc (length); offset += obj->file->offset; - if (offset != lseek (obj->file->fd, offset, SEEK_SET) - || length != read (obj->file->fd, secdata, length)) + if (offset != lseek (obj->file->fd, offset, SEEK_SET)) + goto err; + + do { - if (message) - message (LDPL_FATAL, "%s: corrupt object file", obj->file->name); - /* Force claim_file_handler to abandon this file. */ - obj->found = 0; - free (secdata); - return 0; + ssize_t got = read (obj->file->fd, secdata, length); + if (got == 0) + break; + else if (got > 0) + { + secdata += got; + length -= got; + } + else if (errno != EINTR) + goto err; } + while (length > 0); + if (length > 0) + goto err; - translate (secdata, secdata + length, obj->out); + translate (secdatastart, secdata, obj->out); obj->found++; - free (secdata); + free (secdatastart); return 1; + +err: + if (message) + message (LDPL_FATAL, "%s: corrupt object file", obj->file->name); + /* Force claim_file_handler to abandon this file. */ + obj->found = 0; + free (secdatastart); + return 0; } /* Callback used by gold to check if the plugin will claim FILE. Writes diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/MAINTAINERS gccgo-4.9-4.9-20140330/=unpacked-tar1=/MAINTAINERS --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/MAINTAINERS 2014-03-20 10:50:11.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/MAINTAINERS 2014-03-27 17:33:34.000000000 +0000 @@ -406,6 +406,7 @@ Cong Hou congh@google.com Falk Hueffner falk@debian.org Andrew John Hughes gnu_andrew@member.fsf.org +Dominique d'Humieres dominiq@lps.ens.fr Andy Hutchinson hutchinsonandy@aim.com Naveen H.S Naveen.Hurugalawadi@caviumnetworks.com Meador Inge meadori@codesourcery.com diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/Makefile.def gccgo-4.9-4.9-20140330/=unpacked-tar1=/Makefile.def --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/Makefile.def 2013-10-29 22:21:29.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/Makefile.def 2014-03-27 17:33:36.000000000 +0000 @@ -39,7 +39,7 @@ host_modules= { module= dejagnu; }; host_modules= { module= etc; }; host_modules= { module= fastjar; no_check_cross= true; }; -host_modules= { module= fixincludes; +host_modules= { module= fixincludes; bootstrap=true; missing= TAGS; }; host_modules= { module= flex; no_check_cross= true; }; host_modules= { module= gas; bootstrap=true; }; @@ -418,6 +418,7 @@ dependencies = { module=all-ld; on=all-build-flex; }; dependencies = { module=all-ld; on=all-intl; }; dependencies = { module=all-ld; on=all-gas; }; +dependencies = { module=all-ld; on=all-binutils; }; dependencies = { module=install-ld; on=install-gold; }; dependencies = { module=install-strip-ld; on=install-strip-gold; }; dependencies = { module=configure-gold; on=configure-intl; }; diff -Nru gccgo-4.9-4.9-20140321/=unpacked-tar1=/Makefile.in gccgo-4.9-4.9-20140330/=unpacked-tar1=/Makefile.in --- gccgo-4.9-4.9-20140321/=unpacked-tar1=/Makefile.in 2014-03-20 10:50:28.000000000 +0000 +++ gccgo-4.9-4.9-20140330/=unpacked-tar1=/Makefile.in 2014-03-27 17:33:38.000000000 +0000 @@ -1003,7 +1003,9 @@ all-host: maybe-all-dejagnu all-host: maybe-all-etc all-host: maybe-all-fastjar +@if fixincludes-no-bootstrap all-host: maybe-all-fixincludes +@endif fixincludes-no-bootstrap all-host: maybe-all-flex @if gas-no-bootstrap all-host: maybe-all-gas @@ -7807,7 +7809,6 @@ @if fixincludes maybe-configure-fixincludes: configure-fixincludes configure-fixincludes: - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ @@ -7830,6 +7831,204 @@ +.PHONY: configure-stage1-fixincludes maybe-configure-stage1-fixincludes +maybe-configure-stage1-fixincludes: +@if fixincludes-bootstrap +maybe-configure-stage1-fixincludes: configure-stage1-fixincludes +configure-stage1-fixincludes: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 1 in $(HOST_SUBDIR)/fixincludes ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ + cd $(HOST_SUBDIR)/fixincludes || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/fixincludes"; \ + libsrcdir="$$s/fixincludes"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + $(STAGE1_CONFIGURE_FLAGS) +@endif fixincludes-bootstrap + +.PHONY: configure-stage2-fixincludes maybe-configure-stage2-fixincludes +maybe-configure-stage2-fixincludes: +@if fixincludes-bootstrap +maybe-configure-stage2-fixincludes: configure-stage2-fixincludes +configure-stage2-fixincludes: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 2 in $(HOST_SUBDIR)/fixincludes ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ + cd $(HOST_SUBDIR)/fixincludes || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/fixincludes"; \ + libsrcdir="$$s/fixincludes"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) +@endif fixincludes-bootstrap + +.PHONY: configure-stage3-fixincludes maybe-configure-stage3-fixincludes +maybe-configure-stage3-fixincludes: +@if fixincludes-bootstrap +maybe-configure-stage3-fixincludes: configure-stage3-fixincludes +configure-stage3-fixincludes: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 3 in $(HOST_SUBDIR)/fixincludes ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ + cd $(HOST_SUBDIR)/fixincludes || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/fixincludes"; \ + libsrcdir="$$s/fixincludes"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) +@endif fixincludes-bootstrap + +.PHONY: configure-stage4-fixincludes maybe-configure-stage4-fixincludes +maybe-configure-stage4-fixincludes: +@if fixincludes-bootstrap +maybe-configure-stage4-fixincludes: configure-stage4-fixincludes +configure-stage4-fixincludes: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 4 in $(HOST_SUBDIR)/fixincludes ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ + cd $(HOST_SUBDIR)/fixincludes || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/fixincludes"; \ + libsrcdir="$$s/fixincludes"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) +@endif fixincludes-bootstrap + +.PHONY: configure-stageprofile-fixincludes maybe-configure-stageprofile-fixincludes +maybe-configure-stageprofile-fixincludes: +@if fixincludes-bootstrap +maybe-configure-stageprofile-fixincludes: configure-stageprofile-fixincludes +configure-stageprofile-fixincludes: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage profile in $(HOST_SUBDIR)/fixincludes ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ + cd $(HOST_SUBDIR)/fixincludes || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/fixincludes"; \ + libsrcdir="$$s/fixincludes"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) +@endif fixincludes-bootstrap + +.PHONY: configure-stagefeedback-fixincludes maybe-configure-stagefeedback-fixincludes +maybe-configure-stagefeedback-fixincludes: +@if fixincludes-bootstrap +maybe-configure-stagefeedback-fixincludes: configure-stagefeedback-fixincludes +configure-stagefeedback-fixincludes: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage feedback in $(HOST_SUBDIR)/fixincludes ; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \ + cd $(HOST_SUBDIR)/fixincludes || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/fixincludes/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + srcdiroption="--srcdir=$${topdir}/fixincludes"; \ + libsrcdir="$$s/fixincludes"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} $${srcdiroption} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) +@endif fixincludes-bootstrap + + + .PHONY: all-fixincludes maybe-all-fixincludes @@ -7841,7 +8040,6 @@ TARGET-fixincludes=all maybe-all-fixincludes: all-fixincludes all-fixincludes: configure-fixincludes - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -7852,6 +8050,255 @@ +.PHONY: all-stage1-fixincludes maybe-all-stage1-fixincludes +.PHONY: clean-stage1-fixincludes maybe-clean-stage1-fixincludes +maybe-all-stage1-fixincludes: +maybe-clean-stage1-fixincludes: +@if fixincludes-bootstrap +maybe-all-stage1-fixincludes: all-stage1-fixincludes +all-stage1: all-stage1-fixincludes +TARGET-stage1-fixincludes = $(TARGET-fixincludes) +all-stage1-fixincludes: configure-stage1-fixincludes + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ + LIBCFLAGS="$(LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) \ + $(STAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-fixincludes) + +maybe-clean-stage1-fixincludes: clean-stage1-fixincludes +clean-stage1: clean-stage1-fixincludes +clean-stage1-fixincludes: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage1-fixincludes/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(STAGE1_FLAGS_TO_PASS) clean +@endif fixincludes-bootstrap + + +.PHONY: all-stage2-fixincludes maybe-all-stage2-fixincludes +.PHONY: clean-stage2-fixincludes maybe-clean-stage2-fixincludes +maybe-all-stage2-fixincludes: +maybe-clean-stage2-fixincludes: +@if fixincludes-bootstrap +maybe-all-stage2-fixincludes: all-stage2-fixincludes +all-stage2: all-stage2-fixincludes +TARGET-stage2-fixincludes = $(TARGET-fixincludes) +all-stage2-fixincludes: configure-stage2-fixincludes + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE2_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-fixincludes) + +maybe-clean-stage2-fixincludes: clean-stage2-fixincludes +clean-stage2: clean-stage2-fixincludes +clean-stage2-fixincludes: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage2-fixincludes/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif fixincludes-bootstrap + + +.PHONY: all-stage3-fixincludes maybe-all-stage3-fixincludes +.PHONY: clean-stage3-fixincludes maybe-clean-stage3-fixincludes +maybe-all-stage3-fixincludes: +maybe-clean-stage3-fixincludes: +@if fixincludes-bootstrap +maybe-all-stage3-fixincludes: all-stage3-fixincludes +all-stage3: all-stage3-fixincludes +TARGET-stage3-fixincludes = $(TARGET-fixincludes) +all-stage3-fixincludes: configure-stage3-fixincludes + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE3_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-fixincludes) + +maybe-clean-stage3-fixincludes: clean-stage3-fixincludes +clean-stage3: clean-stage3-fixincludes +clean-stage3-fixincludes: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage3-fixincludes/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif fixincludes-bootstrap + + +.PHONY: all-stage4-fixincludes maybe-all-stage4-fixincludes +.PHONY: clean-stage4-fixincludes maybe-clean-stage4-fixincludes +maybe-all-stage4-fixincludes: +maybe-clean-stage4-fixincludes: +@if fixincludes-bootstrap +maybe-all-stage4-fixincludes: all-stage4-fixincludes +all-stage4: all-stage4-fixincludes +TARGET-stage4-fixincludes = $(TARGET-fixincludes) +all-stage4-fixincludes: configure-stage4-fixincludes + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE4_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-fixincludes) + +maybe-clean-stage4-fixincludes: clean-stage4-fixincludes +clean-stage4: clean-stage4-fixincludes +clean-stage4-fixincludes: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage4-fixincludes/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif fixincludes-bootstrap + + +.PHONY: all-stageprofile-fixincludes maybe-all-stageprofile-fixincludes +.PHONY: clean-stageprofile-fixincludes maybe-clean-stageprofile-fixincludes +maybe-all-stageprofile-fixincludes: +maybe-clean-stageprofile-fixincludes: +@if fixincludes-bootstrap +maybe-all-stageprofile-fixincludes: all-stageprofile-fixincludes +all-stageprofile: all-stageprofile-fixincludes +TARGET-stageprofile-fixincludes = $(TARGET-fixincludes) +all-stageprofile-fixincludes: configure-stageprofile-fixincludes + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGEprofile_CFLAGS)" \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGEprofile_TFLAGS)" \ + $(TARGET-stageprofile-fixincludes) + +maybe-clean-stageprofile-fixincludes: clean-stageprofile-fixincludes +clean-stageprofile: clean-stageprofile-fixincludes +clean-stageprofile-fixincludes: + @if [ $(current_stage) = stageprofile ]; then \ + [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stageprofile-fixincludes/Makefile ] || exit 0; \ + $(MAKE) stageprofile-start; \ + fi; \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif fixincludes-bootstrap + + +.PHONY: all-stagefeedback-fixincludes maybe-all-stagefeedback-fixincludes +.PHONY: clean-stagefeedback-fixincludes maybe-clean-stagefeedback-fixincludes +maybe-all-stagefeedback-fixincludes: +maybe-clean-stagefeedback-fixincludes: +@if fixincludes-bootstrap +maybe-all-stagefeedback-fixincludes: all-stagefeedback-fixincludes +all-stagefeedback: all-stagefeedback-fixincludes +TARGET-stagefeedback-fixincludes = $(TARGET-fixincludes) +all-stagefeedback-fixincludes: configure-stagefeedback-fixincludes + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)" \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGEfeedback_TFLAGS)" \ + $(TARGET-stagefeedback-fixincludes) + +maybe-clean-stagefeedback-fixincludes: clean-stagefeedback-fixincludes +clean-stagefeedback: clean-stagefeedback-fixincludes +clean-stagefeedback-fixincludes: + @if [ $(current_stage) = stagefeedback ]; then \ + [ -f $(HOST_SUBDIR)/fixincludes/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stagefeedback-fixincludes/Makefile ] || exit 0; \ + $(MAKE) stagefeedback-start; \ + fi; \ + cd $(HOST_SUBDIR)/fixincludes && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif fixincludes-bootstrap + + + + .PHONY: check-fixincludes maybe-check-fixincludes maybe-check-fixincludes: @@ -7907,7 +8354,6 @@ info-fixincludes: \ configure-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -7933,7 +8379,6 @@ dvi-fixincludes: \ configure-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -7959,7 +8404,6 @@ pdf-fixincludes: \ configure-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -7985,7 +8429,6 @@ html-fixincludes: \ configure-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8022,7 +8465,6 @@ install-info-fixincludes: \ configure-fixincludes \ info-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8049,7 +8491,6 @@ install-pdf-fixincludes: \ configure-fixincludes \ pdf-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8076,7 +8517,6 @@ install-html-fixincludes: \ configure-fixincludes \ html-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8102,7 +8542,6 @@ installcheck-fixincludes: \ configure-fixincludes - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8127,7 +8566,6 @@ maybe-mostlyclean-fixincludes: mostlyclean-fixincludes mostlyclean-fixincludes: - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8152,7 +8590,6 @@ maybe-clean-fixincludes: clean-fixincludes clean-fixincludes: - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8177,7 +8614,6 @@ maybe-distclean-fixincludes: distclean-fixincludes distclean-fixincludes: - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -8202,7 +8638,6 @@ maybe-maintainer-clean-fixincludes: maintainer-clean-fixincludes maintainer-clean-fixincludes: - @: $(MAKE); $(unstage) @[ -f ./fixincludes/Makefile ] || exit 0; \ r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ @@ -44424,6 +44859,11 @@ mkdir stage1-binutils; \ mv stage1-binutils binutils @endif binutils +@if fixincludes + @cd $(HOST_SUBDIR); [ -d stage1-fixincludes ] || \ + mkdir stage1-fixincludes; \ + mv stage1-fixincludes fixincludes +@endif fixincludes @if gas @cd $(HOST_SUBDIR); [ -d stage1-gas ] || \ mkdir stage1-gas; \ @@ -44529,6 +44969,11 @@ cd $(HOST_SUBDIR); mv binutils stage1-binutils ; \ fi @endif binutils +@if fixincludes + @if test -d $(HOST_SUBDIR)/fixincludes ; then \ + cd $(HOST_SUBDIR); mv fixincludes stage1-fixincludes ; \ + fi +@endif fixincludes @if gas @if test -d $(HOST_SUBDIR)/gas ; then \ cd $(HOST_SUBDIR); mv gas stage1-gas ; \ @@ -44680,6 +45125,12 @@ mv stage2-binutils binutils ; \ mv stage1-binutils prev-binutils || test -f stage1-lean @endif binutils +@if fixincludes + @cd $(HOST_SUBDIR); [ -d stage2-fixincludes ] || \ + mkdir stage2-fixincludes; \ + mv stage2-fixincludes fixincludes ; \ + mv stage1-fixincludes prev-fixincludes || test -f stage1-lean +@endif fixincludes @if gas @cd $(HOST_SUBDIR); [ -d stage2-gas ] || \ mkdir stage2-gas; \ @@ -44806,6 +45257,12 @@ mv prev-binutils stage1-binutils ; : ; \ fi @endif binutils +@if fixincludes + @if test -d $(HOST_SUBDIR)/fixincludes ; then \ + cd $(HOST_SUBDIR); mv fixincludes stage2-fixincludes ; \ + mv prev-fixincludes stage1-fixincludes ; : ; \ + fi +@endif fixincludes @if gas @if test -d $(HOST_SUBDIR)/gas ; then \ cd $(HOST_SUBDIR); mv gas stage2-gas ; \ @@ -44998,6 +45455,12 @@ mv stage3-binutils binutils ; \ mv stage2-binutils prev-binutils || test -f stage2-lean @endif binutils +@if fixincludes + @cd $(HOST_SUBDIR); [ -d stage3-fixincludes ] || \ + mkdir stage3-fixincludes; \ + mv stage3-fixincludes fixincludes ; \ + mv stage2-fixincludes prev-fixincludes || test -f stage2-lean +@endif fixincludes @if gas @cd $(HOST_SUBDIR); [ -d stage3-gas ] || \ mkdir stage3-gas; \ @@ -45124,6 +45587,12 @@ mv prev-binutils stage2-binutils ; : ; \ fi @endif binutils +@if fixincludes + @if test -d $(HOST_SUBDIR)/fixincludes ; then \ + cd $(HOST_SUBDIR); mv fixincludes stage3-fixincludes ; \ + mv prev-fixincludes stage2-fixincludes ; : ; \ + fi +@endif fixincludes @if gas @if test -d $(HOST_SUBDIR)/gas ; then \ cd $(HOST_SUBDIR); mv gas stage3-gas ; \ @@ -45372,6 +45841,12 @@ mv stage4-binutils binutils ; \ mv stage3-binutils prev-binutils || test -f stage3-lean @endif binutils +@if fixincludes + @cd $(HOST_SUBDIR); [ -d stage4-fixincludes ] || \ + mkdir stage4-fixincludes; \ + mv stage4-fixincludes fixincludes ; \ + mv stage3-fixincludes prev-fixincludes || test -f stage3-lean +@endif fixincludes @if gas @cd $(HOST_SUBDIR); [ -d stage4-gas ] || \ mkdir stage4-gas; \ @@ -45498,6 +45973,12 @@ mv prev-binutils stage3-binutils ; : ; \ fi @endif binutils +@if fixincludes + @if test -d $(HOST_SUBDIR)/fixincludes ; then \ + cd $(HOST_SUBDIR); mv fixincludes stage4-fixincludes ; \ + mv prev-fixincludes stage3-fixincludes ; : ; \ + fi +@endif fixincludes @if gas @if test -d $(HOST_SUBDIR)/gas ; then \ cd $(HOST_SUBDIR); mv gas stage4-gas ; \ @@ -45734,6 +46215,12 @@ mv stageprofile-binutils binutils ; \ mv stage1-binutils prev-binutils || test -f stage1-lean @endif binutils +@if fixincludes + @cd $(HOST_SUBDIR); [ -d stageprofile-fixincludes ] || \ + mkdir stageprofile-fixincludes; \ + mv stageprofile-fixincludes fixincludes ; \ + mv stage1-fixincludes prev-fixincludes || test -f stage1-lean +@endif fixincludes @if gas @cd $(HOST_SUBDIR); [ -d stageprofile-gas ] || \ mkdir stageprofile-gas; \ @@ -45860,6 +46347,12 @@ mv prev-binutils stage1-binutils ; : ; \ fi @endif binutils +@if fixincludes + @if test -d $(HOST_SUBDIR)/fixincludes ; then \ + cd $(HOST_SUBDIR); mv fixincludes stageprofile-fixincludes ; \ + mv prev-fixincludes stage1-fixincludes ; : ; \ + fi +@endif fixincludes @if gas @if test -d $(HOST_SUBDIR)/gas ; then \ cd $(HOST_SUBDIR); mv gas stageprofile-gas ; \ @@ -46029,6 +46522,12 @@ mv stagefeedback-binutils binutils ; \ mv stageprofile-binutils prev-binutils || test -f stageprofile-lean @endif binutils +@if fixincludes + @cd $(HOST_SUBDIR); [ -d stagefeedback-fixincludes ] || \ + mkdir stagefeedback-fixincludes; \ + mv stagefeedback-fixincludes fixincludes ; \ + mv stageprofile-fixincludes prev-fixincludes || test -f stageprofile-lean +@endif fixincludes @if gas @cd $(HOST_SUBDIR); [ -d stagefeedback-gas ] || \ mkdir stagefeedback-gas; \ @@ -46155,6 +46654,12 @@ mv prev-binutils stageprofile-binutils ; : ; \ fi @endif binutils +@if fixincludes + @if test -d $(HOST_SUBDIR)/fixincludes ; then \ + cd $(HOST_SUBDIR); mv fixincludes stagefeedback-fixincludes ; \ + mv prev-fixincludes stageprofile-fixincludes ; : ; \ + fi +@endif fixincludes @if gas @if test -d $(HOST_SUBDIR)/gas ; then \ cd $(HOST_SUBDIR); mv gas stagefeedback-gas ; \ @@ -46652,6 +47157,13 @@ all-stageprofile-gcc: maybe-all-stageprofile-libiberty all-stagefeedback-gcc: maybe-all-stagefeedback-libiberty all-gcc: maybe-all-fixincludes + +all-stage1-gcc: maybe-all-stage1-fixincludes +all-stage2-gcc: maybe-all-stage2-fixincludes +all-stage3-gcc: maybe-all-stage3-fixincludes +all-stage4-gcc: maybe-all-stage4-fixincludes +all-stageprofile-gcc: maybe-all-stageprofile-fixincludes +all-stagefeedback-gcc: maybe-all-stagefeedback-fixincludes all-gcc: maybe-all-lto-plugin all-stage1-gcc: maybe-all-stage1-lto-plugin @@ -46729,6 +47241,13 @@ all-stageprofile-libcpp: maybe-all-stageprofile-intl all-stagefeedback-libcpp: maybe-all-stagefeedback-intl all-fixincludes: maybe-all-libiberty + +all-stage1-fixincludes: maybe-all-stage1-libiberty +all-stage2-fixincludes: maybe-all-stage2-libiberty +all-stage3-fixincludes: maybe-all-stage3-libiberty +all-stage4-fixincludes: maybe-all-stage4-libiberty +all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty +all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty all-gnattools: maybe-all-target-libada all-lto-plugin: maybe-all-libiberty @@ -47022,6 +47541,14 @@ all-stage4-ld: maybe-all-stage4-gas all-stageprofile-ld: maybe-all-stageprofile-gas all-stagefeedback-ld: maybe-all-stagefeedback-gas +all-ld: maybe-all-binutils + +all-stage1-ld: maybe-all-stage1-binutils +all-stage2-ld: maybe-all-stage2-binutils +all-stage3-ld: maybe-all-stage3-binutils +all-stage4-ld: maybe-all-stage4-binutils +all-stageprofile-ld: maybe-all-stageprofile-binutils +all-stagefeedback-ld: maybe-all-stagefeedback-binutils install-ld: maybe-install-gold install-strip-ld: maybe-install-strip-gold configure-gold: maybe-configure-intl