From 69f33677e304f4dd322d3b72d960023c4b725097 Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Tue, 4 Aug 2015 11:33:49 +0000 Subject: [PATCH] - updated to 4.8.5 --- gcc-branch.diff | 2708 +---------------------------------------------- gcc.spec | 4 +- 2 files changed, 27 insertions(+), 2685 deletions(-) diff --git a/gcc-branch.diff b/gcc-branch.diff index 265c185..bc6fa31 100644 --- a/gcc-branch.diff +++ b/gcc-branch.diff @@ -1,2685 +1,27 @@ -Index: libquadmath/configure -=================================================================== ---- libquadmath/configure (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libquadmath/configure (.../branches/gcc-4_8-branch) (revision 220382) -@@ -613,7 +613,6 @@ - LIBQUAD_USE_SYMVER_TRUE - toolexeclibdir - toolexecdir --multi_basedir - MAINT - MAINTAINER_MODE_FALSE - MAINTAINER_MODE_TRUE -@@ -682,6 +681,7 @@ - INSTALL_DATA - INSTALL_SCRIPT - INSTALL_PROGRAM -+multi_basedir - target_noncanonical - target_os - target_vendor -@@ -736,6 +736,7 @@ - ac_subst_files='' - ac_user_opts=' - enable_option_checking -+enable_multilib - enable_version_specific_runtime_libs - enable_dependency_tracking - with_bugurl -@@ -746,7 +747,6 @@ - with_gnu_ld - enable_libtool_lock - enable_maintainer_mode --enable_multilib - enable_symvers - enable_generated_files_in_srcdir - ' -@@ -1379,6 +1379,7 @@ - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --enable-multilib build many library versions (default) - --enable-version-specific-runtime-libs - specify that runtime libraries should be installed - in a compiler-specific directory -@@ -1391,7 +1392,6 @@ - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer -- --enable-multilib build many library versions (default) - --disable-symvers disable symbol versioning for libquadmath - --enable-generated-files-in-srcdir - put copies of generated files in source dir intended -@@ -2370,6 +2370,44 @@ - - - -+# Default to --enable-multilib -+# Check whether --enable-multilib was given. -+if test "${enable_multilib+set}" = set; then : -+ enableval=$enable_multilib; case "$enableval" in -+ yes) multilib=yes ;; -+ no) multilib=no ;; -+ *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; -+ esac -+else -+ multilib=yes -+fi -+ -+ -+# We may get other options which we leave undocumented: -+# --with-target-subdir, --with-multisrctop, --with-multisubdir -+# See config-ml.in if you want the gory details. -+ -+if test "$srcdir" = "."; then -+ if test "$with_target_subdir" != "."; then -+ multi_basedir="$srcdir/$with_multisrctop../.." -+ else -+ multi_basedir="$srcdir/$with_multisrctop.." -+ fi -+else -+ multi_basedir="$srcdir/.." -+fi -+ -+ -+# Even if the default multilib is not a cross compilation, -+# it may be that some of the other multilibs are. -+if test $cross_compiling = no && test $multilib = yes \ -+ && test "x${with_multisubdir}" != x ; then -+ cross_compiling=maybe -+fi -+ -+ac_config_commands="$ac_config_commands default-1" -+ -+ - target_alias=${target_alias-$host_alias} - - -@@ -10527,7 +10565,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10530 "configure" -+#line 10568 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -10633,7 +10671,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10636 "configure" -+#line 10674 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -10918,44 +10956,7 @@ - MAINT=$MAINTAINER_MODE_TRUE - - --# Default to --enable-multilib --# Check whether --enable-multilib was given. --if test "${enable_multilib+set}" = set; then : -- enableval=$enable_multilib; case "$enableval" in -- yes) multilib=yes ;; -- no) multilib=no ;; -- *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; -- esac --else -- multilib=yes --fi - -- --# We may get other options which we leave undocumented: --# --with-target-subdir, --with-multisrctop, --with-multisubdir --# See config-ml.in if you want the gory details. -- --if test "$srcdir" = "."; then -- if test "$with_target_subdir" != "."; then -- multi_basedir="$srcdir/$with_multisrctop../.." -- else -- multi_basedir="$srcdir/$with_multisrctop.." -- fi --else -- multi_basedir="$srcdir/.." --fi -- -- --# Even if the default multilib is not a cross compilation, --# it may be that some of the other multilibs are. --if test $cross_compiling = no && test $multilib = yes \ -- && test "x${with_multisubdir}" != x ; then -- cross_compiling=maybe --fi -- --ac_config_commands="$ac_config_commands default-1" -- -- - ac_ext=c - ac_cpp='$CPP $CPPFLAGS' - ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -13644,6 +13645,20 @@ - # - # INIT-COMMANDS - # -+ -+srcdir="$srcdir" -+host="$host" -+target="$target" -+with_multisubdir="$with_multisubdir" -+with_multisrctop="$with_multisrctop" -+with_target_subdir="$with_target_subdir" -+ac_configure_args="${multilib_arg} ${ac_configure_args}" -+multi_basedir="$multi_basedir" -+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -+CC="$CC" -+CXX="$CXX" -+GFORTRAN="$GFORTRAN" -+GCJ="$GCJ" - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -@@ -13906,20 +13921,6 @@ - - - --srcdir="$srcdir" --host="$host" --target="$target" --with_multisubdir="$with_multisubdir" --with_multisrctop="$with_multisrctop" --with_target_subdir="$with_target_subdir" --ac_configure_args="${multilib_arg} ${ac_configure_args}" --multi_basedir="$multi_basedir" --CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} --CC="$CC" --CXX="$CXX" --GFORTRAN="$GFORTRAN" --GCJ="$GCJ" -- - _ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -@@ -13929,9 +13930,9 @@ - do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; -+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; -- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; -@@ -14517,6 +14518,14 @@ - - - case $ac_file$ac_mode in -+ "default-1":C) -+# Only add multilib support code if we just rebuilt the top-level -+# Makefile. -+case " $CONFIG_FILES " in -+ *" Makefile "*) -+ ac_file=Makefile . ${multi_basedir}/config-ml.in -+ ;; -+esac ;; - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval -@@ -15251,14 +15260,6 @@ - chmod +x "$ofile" - - ;; -- "default-1":C) --# Only add multilib support code if we just rebuilt the top-level --# Makefile. --case " $CONFIG_FILES " in -- *" Makefile "*) -- ac_file=Makefile . ${multi_basedir}/config-ml.in -- ;; --esac ;; - - esac - done # for ac_tag -Index: libquadmath/ChangeLog -=================================================================== ---- libquadmath/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libquadmath/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,8 @@ -+2015-01-26 Matthias Klose -+ -+ * configure.ac: Move AM_ENABLE_MULTILIB before AC_PROG_CC. -+ * configure: Regenerate. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: libquadmath/configure.ac -=================================================================== ---- libquadmath/configure.ac (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libquadmath/configure.ac (.../branches/gcc-4_8-branch) (revision 220382) -@@ -23,6 +23,8 @@ - AC_CANONICAL_SYSTEM - ACX_NONCANONICAL_TARGET - -+AM_ENABLE_MULTILIB(, ..) -+ - target_alias=${target_alias-$host_alias} - AC_SUBST(target_alias) - -@@ -60,7 +62,6 @@ - AC_SUBST(enable_static) - - AM_MAINTAINER_MODE --AM_ENABLE_MULTILIB(, ..) - - AC_LANG_C - # The same as in boehm-gc and libstdc++. Have to borrow it from there. -Index: libsanitizer/configure -=================================================================== ---- libsanitizer/configure (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libsanitizer/configure (.../branches/gcc-4_8-branch) (revision 220382) -@@ -662,7 +662,6 @@ - MAINT - MAINTAINER_MODE_FALSE - MAINTAINER_MODE_TRUE --multi_basedir - am__untar - am__tar - AMTAR -@@ -701,6 +700,7 @@ - build_vendor - build_cpu - build -+multi_basedir - target_alias - host_alias - build_alias -@@ -742,8 +742,8 @@ - ac_subst_files='' - ac_user_opts=' - enable_option_checking -+enable_multilib - enable_version_specific_runtime_libs --enable_multilib - enable_maintainer_mode - enable_dependency_tracking - enable_shared -@@ -1388,8 +1388,8 @@ - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --enable-multilib build many library versions (default) - --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory -- --enable-multilib build many library versions (default) - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --disable-dependency-tracking speeds up one-time build -@@ -2417,6 +2417,44 @@ - - - -+# Default to --enable-multilib -+# Check whether --enable-multilib was given. -+if test "${enable_multilib+set}" = set; then : -+ enableval=$enable_multilib; case "$enableval" in -+ yes) multilib=yes ;; -+ no) multilib=no ;; -+ *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; -+ esac -+else -+ multilib=yes -+fi -+ -+ -+# We may get other options which we leave undocumented: -+# --with-target-subdir, --with-multisrctop, --with-multisubdir -+# See config-ml.in if you want the gory details. -+ -+if test "$srcdir" = "."; then -+ if test "$with_target_subdir" != "."; then -+ multi_basedir="$srcdir/$with_multisrctop../.." -+ else -+ multi_basedir="$srcdir/$with_multisrctop.." -+ fi -+else -+ multi_basedir="$srcdir/.." -+fi -+ -+ -+# Even if the default multilib is not a cross compilation, -+# it may be that some of the other multilibs are. -+if test $cross_compiling = no && test $multilib = yes \ -+ && test "x${with_multisubdir}" != x ; then -+ cross_compiling=maybe -+fi -+ -+ac_config_commands="$ac_config_commands default-1" -+ -+ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 - $as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } - # Check whether --enable-version-specific-runtime-libs was given. -@@ -3078,44 +3116,7 @@ - - - --# Default to --enable-multilib --# Check whether --enable-multilib was given. --if test "${enable_multilib+set}" = set; then : -- enableval=$enable_multilib; case "$enableval" in -- yes) multilib=yes ;; -- no) multilib=no ;; -- *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; -- esac --else -- multilib=yes --fi - -- --# We may get other options which we leave undocumented: --# --with-target-subdir, --with-multisrctop, --with-multisubdir --# See config-ml.in if you want the gory details. -- --if test "$srcdir" = "."; then -- if test "$with_target_subdir" != "."; then -- multi_basedir="$srcdir/$with_multisrctop../.." -- else -- multi_basedir="$srcdir/$with_multisrctop.." -- fi --else -- multi_basedir="$srcdir/.." --fi -- -- --# Even if the default multilib is not a cross compilation, --# it may be that some of the other multilibs are. --if test $cross_compiling = no && test $multilib = yes \ -- && test "x${with_multisubdir}" != x ; then -- cross_compiling=maybe --fi -- --ac_config_commands="$ac_config_commands default-1" -- -- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 - $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -@@ -11117,7 +11118,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 11120 "configure" -+#line 11121 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -11223,7 +11224,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 11226 "configure" -+#line 11227 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -Index: libsanitizer/ChangeLog -=================================================================== ---- libsanitizer/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libsanitizer/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,8 @@ -+2015-01-27 Matthias Klose -+ -+ * configure.ac: Move AM_ENABLE_MULTILIB before AC_PROG_CC. -+ * configure: Regenerate. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: libsanitizer/configure.ac -=================================================================== ---- libsanitizer/configure.ac (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libsanitizer/configure.ac (.../branches/gcc-4_8-branch) (revision 220382) -@@ -5,6 +5,8 @@ - AC_INIT(package-unused, version-unused, libsanitizer) - AC_CONFIG_SRCDIR([include/sanitizer/common_interface_defs.h]) - -+AM_ENABLE_MULTILIB(, ..) -+ - AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) - AC_ARG_ENABLE(version-specific-runtime-libs, - [ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], -@@ -24,7 +26,6 @@ - GCC_LIBSTDCXX_RAW_CXX_FLAGS - - AM_INIT_AUTOMAKE(foreign no-dist) --AM_ENABLE_MULTILIB(, ..) - AM_MAINTAINER_MODE - - # Calculate toolexeclibdir -Index: libstdc++-v3/include/std/future -=================================================================== ---- libstdc++-v3/include/std/future (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libstdc++-v3/include/std/future (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1417,7 +1417,8 @@ - operator()(_ArgTypes... __args) - { - __future_base::_State_base::_S_check(_M_state); -- _M_state->_M_run(std::forward<_ArgTypes>(__args)...); -+ auto __state = _M_state; -+ __state->_M_run(std::forward<_ArgTypes>(__args)...); - } - - void -Index: libstdc++-v3/ChangeLog -=================================================================== ---- libstdc++-v3/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libstdc++-v3/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,9 @@ -+2015-01-09 Jonathan Wakely -+ -+ PR libstdc++/60966 -+ * include/std/future (packaged_task::operator()): Increment the -+ reference count on the shared state until the function returns. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: libatomic/fop_n.c -=================================================================== ---- libatomic/fop_n.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libatomic/fop_n.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -112,9 +112,9 @@ - - pre_barrier (smodel); - -- wptr = (UWORD *)mptr; -- shift = 0; -- mask = -1; -+ wptr = (UWORD *)((uintptr_t)mptr & -WORDSIZE); -+ shift = (((uintptr_t)mptr % WORDSIZE) * CHAR_BIT) ^ SIZE(INVERT_MASK); -+ mask = SIZE(MASK) << shift; - - wopval = (UWORD)opval << shift; - woldval = __atomic_load_n (wptr, __ATOMIC_RELAXED); -@@ -136,9 +136,9 @@ - - pre_barrier (smodel); - -- wptr = (UWORD *)mptr; -- shift = 0; -- mask = -1; -+ wptr = (UWORD *)((uintptr_t)mptr & -WORDSIZE); -+ shift = (((uintptr_t)mptr % WORDSIZE) * CHAR_BIT) ^ SIZE(INVERT_MASK); -+ mask = SIZE(MASK) << shift; - - wopval = (UWORD)opval << shift; - woldval = __atomic_load_n (wptr, __ATOMIC_RELAXED); -Index: libatomic/ChangeLog -=================================================================== ---- libatomic/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libatomic/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,8 @@ -+2015-01-21 Andrew Waterman -+ -+ * fop_n.c (libat_fetch_op): Align address to word boundary. -+ (libat_op_fetch): Likewise. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: libbacktrace/configure -=================================================================== ---- libbacktrace/configure (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libbacktrace/configure (.../branches/gcc-4_8-branch) (revision 220382) -@@ -614,7 +614,6 @@ - WARN_FLAGS - EXTRA_FLAGS - BACKTRACE_FILE --multi_basedir - OTOOL64 - OTOOL - LIPO -@@ -680,6 +679,7 @@ - build_vendor - build_cpu - build -+multi_basedir - target_alias - host_alias - build_alias -@@ -721,6 +721,7 @@ - ac_subst_files='' - ac_user_opts=' - enable_option_checking -+enable_multilib - enable_maintainer_mode - with_target_subdir - enable_shared -@@ -729,7 +730,6 @@ - enable_fast_install - with_gnu_ld - enable_libtool_lock --enable_multilib - with_system_libunwind - ' - ac_precious_vars='build_alias -@@ -1361,6 +1361,7 @@ - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --enable-multilib build many library versions (default) - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --enable-shared[=PKGS] build shared libraries [default=no] -@@ -1368,7 +1369,6 @@ - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) -- --enable-multilib build many library versions (default) - - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -@@ -2451,6 +2451,46 @@ - ac_config_headers="$ac_config_headers config.h" - - -+if test -n "${with_target_subdir}"; then -+ # Default to --enable-multilib -+# Check whether --enable-multilib was given. -+if test "${enable_multilib+set}" = set; then : -+ enableval=$enable_multilib; case "$enableval" in -+ yes) multilib=yes ;; -+ no) multilib=no ;; -+ *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; -+ esac -+else -+ multilib=yes -+fi -+ -+ -+# We may get other options which we leave undocumented: -+# --with-target-subdir, --with-multisrctop, --with-multisubdir -+# See config-ml.in if you want the gory details. -+ -+if test "$srcdir" = "."; then -+ if test "$with_target_subdir" != "."; then -+ multi_basedir="$srcdir/$with_multisrctop../.." -+ else -+ multi_basedir="$srcdir/$with_multisrctop.." -+ fi -+else -+ multi_basedir="$srcdir/.." -+fi -+ -+ -+# Even if the default multilib is not a cross compilation, -+# it may be that some of the other multilibs are. -+if test $cross_compiling = no && test $multilib = yes \ -+ && test "x${with_multisubdir}" != x ; then -+ cross_compiling=maybe -+fi -+ -+ac_config_commands="$ac_config_commands default-1" -+ -+fi -+ - ac_aux_dir= - for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - for ac_t in install-sh install.sh shtool; do -@@ -11087,7 +11127,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 11090 "configure" -+#line 11130 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -11193,7 +11233,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 11196 "configure" -+#line 11236 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -11437,43 +11477,6 @@ - if test -n "${with_target_subdir}"; then - # We are compiling a GCC library. We can assume that the unwind - # library exists. -- # Default to --enable-multilib --# Check whether --enable-multilib was given. --if test "${enable_multilib+set}" = set; then : -- enableval=$enable_multilib; case "$enableval" in -- yes) multilib=yes ;; -- no) multilib=no ;; -- *) as_fn_error "bad value $enableval for multilib option" "$LINENO" 5 ;; -- esac --else -- multilib=yes --fi -- -- --# We may get other options which we leave undocumented: --# --with-target-subdir, --with-multisrctop, --with-multisubdir --# See config-ml.in if you want the gory details. -- --if test "$srcdir" = "."; then -- if test "$with_target_subdir" != "."; then -- multi_basedir="$srcdir/$with_multisrctop../.." -- else -- multi_basedir="$srcdir/$with_multisrctop.." -- fi --else -- multi_basedir="$srcdir/.." --fi -- -- --# Even if the default multilib is not a cross compilation, --# it may be that some of the other multilibs are. --if test $cross_compiling = no && test $multilib = yes \ -- && test "x${with_multisubdir}" != x ; then -- cross_compiling=maybe --fi -- --ac_config_commands="$ac_config_commands default-1" -- - BACKTRACE_FILE="backtrace.lo simple.lo" - else - ac_fn_c_check_header_mongrel "$LINENO" "unwind.h" "ac_cv_header_unwind_h" "$ac_includes_default" -@@ -13128,7 +13131,21 @@ - # INIT-COMMANDS - # - -+srcdir="$srcdir" -+host="$host" -+target="$target" -+with_multisubdir="$with_multisubdir" -+with_multisrctop="$with_multisrctop" -+with_target_subdir="$with_target_subdir" -+ac_configure_args="${multilib_arg} ${ac_configure_args}" -+multi_basedir="$multi_basedir" -+CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -+CC="$CC" -+CXX="$CXX" -+GFORTRAN="$GFORTRAN" -+GCJ="$GCJ" - -+ - # The HP-UX ksh and POSIX shell print the target directory to stdout - # if CDPATH is set. - (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -@@ -13388,20 +13405,6 @@ - - - --srcdir="$srcdir" --host="$host" --target="$target" --with_multisubdir="$with_multisubdir" --with_multisrctop="$with_multisrctop" --with_target_subdir="$with_target_subdir" --ac_configure_args="${multilib_arg} ${ac_configure_args}" --multi_basedir="$multi_basedir" --CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} --CC="$CC" --CXX="$CXX" --GFORTRAN="$GFORTRAN" --GCJ="$GCJ" -- - GCC="$GCC" - CC="$CC" - acx_cv_header_stdint="$acx_cv_header_stdint" -@@ -13434,8 +13437,8 @@ - do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; -+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; -- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "gstdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS gstdint.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "backtrace-supported.h") CONFIG_FILES="$CONFIG_FILES backtrace-supported.h" ;; -@@ -14024,6 +14027,14 @@ - - - case $ac_file$ac_mode in -+ "default-1":C) -+# Only add multilib support code if we just rebuilt the top-level -+# Makefile. -+case " $CONFIG_FILES " in -+ *" Makefile "*) -+ ac_file=Makefile . ${multi_basedir}/config-ml.in -+ ;; -+esac ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our -@@ -14663,14 +14674,6 @@ - chmod +x "$ofile" - - ;; -- "default-1":C) --# Only add multilib support code if we just rebuilt the top-level --# Makefile. --case " $CONFIG_FILES " in -- *" Makefile "*) -- ac_file=Makefile . ${multi_basedir}/config-ml.in -- ;; --esac ;; - "gstdint.h":C) - if test "$GCC" = yes; then - echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h -Index: libbacktrace/ChangeLog -=================================================================== ---- libbacktrace/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libbacktrace/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,8 @@ -+2015-01-26 Matthias Klose -+ -+ * configure.ac: Move AM_ENABLE_MULTILIB before AC_PROG_CC. -+ * configure: Regenerate. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: libbacktrace/configure.ac -=================================================================== ---- libbacktrace/configure.ac (.../tags/gcc_4_8_4_release) (revision 220382) -+++ libbacktrace/configure.ac (.../branches/gcc-4_8-branch) (revision 220382) -@@ -34,6 +34,10 @@ - AC_CONFIG_SRCDIR(backtrace.h) - AC_CONFIG_HEADER(config.h) - -+if test -n "${with_target_subdir}"; then -+ AM_ENABLE_MULTILIB(, ..) -+fi -+ - AC_CANONICAL_SYSTEM - target_alias=${target_alias-$host_alias} - -@@ -83,7 +87,6 @@ - if test -n "${with_target_subdir}"; then - # We are compiling a GCC library. We can assume that the unwind - # library exists. -- AM_ENABLE_MULTILIB(, ..) - BACKTRACE_FILE="backtrace.lo simple.lo" - else - AC_CHECK_HEADER([unwind.h], -Index: gcc/tree-vrp.c -=================================================================== ---- gcc/tree-vrp.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/tree-vrp.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -6811,7 +6811,7 @@ - tree type = TREE_TYPE (op0); - value_range_t *vr0 = get_value_range (op0); - -- if (vr0->type != VR_VARYING -+ if (vr0->type == VR_RANGE - && INTEGRAL_TYPE_P (type) - && vrp_val_is_min (vr0->min) - && vrp_val_is_max (vr0->max) -Index: gcc/c-family/ChangeLog -=================================================================== ---- gcc/c-family/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/c-family/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,12 @@ -+2015-01-20 Marek Polacek -+ -+ Backport from mainline -+ 2014-06-23 Marek Polacek -+ -+ PR c/61553 -+ * c-common.c (get_atomic_generic_size): Don't segfault if the -+ type doesn't have a size. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: gcc/c-family/c-common.c -=================================================================== ---- gcc/c-family/c-common.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/c-family/c-common.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -10143,7 +10143,8 @@ - function); - return 0; - } -- size = tree_low_cst (TYPE_SIZE_UNIT (TREE_TYPE (type)), 1); -+ tree type_size = TYPE_SIZE_UNIT (TREE_TYPE (type)); -+ size = type_size ? tree_low_cst (type_size, 1) : 0; - if (size != size_0) - { - error_at (loc, "size mismatch in argument %d of %qE", x + 1, -Index: gcc/c/c-typeck.c -=================================================================== ---- gcc/c/c-typeck.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/c/c-typeck.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -5788,7 +5788,8 @@ - warning (OPT_Wtraditional, "traditional C rejects automatic " - "aggregate initialization"); - -- DECL_INITIAL (decl) = value; -+ if (value != error_mark_node || TREE_CODE (decl) != FUNCTION_DECL) -+ DECL_INITIAL (decl) = value; - - /* ANSI wants warnings about out-of-range constant initializers. */ - STRIP_TYPE_NOPS (value); -Index: gcc/c/ChangeLog -=================================================================== ---- gcc/c/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/c/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,12 @@ -+2015-02-01 Jakub Jelinek -+ -+ Backported from mainline -+ 2015-01-27 Jakub Jelinek -+ -+ PR c/64766 -+ * c-typeck.c (store_init_value): Don't overwrite DECL_INITIAL -+ of FUNCTION_DECLs with error_mark_node. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: gcc/DATESTAMP -=================================================================== ---- gcc/DATESTAMP (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/DATESTAMP (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1 +1 @@ --20141219 -+20150203 -Index: gcc/rtlanal.c -=================================================================== ---- gcc/rtlanal.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/rtlanal.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -873,6 +873,17 @@ - int - reg_set_p (const_rtx reg, const_rtx insn) - { -+ /* After delay slot handling, call and branch insns might be in a -+ sequence. Check all the elements there. */ -+ if (INSN_P (insn) && GET_CODE (PATTERN (insn)) == SEQUENCE) -+ { -+ for (int i = 0; i < XVECLEN (PATTERN (insn), 0); ++i) -+ if (reg_set_p (reg, XVECEXP (PATTERN (insn), 0, i))) -+ return true; -+ -+ return false; -+ } -+ - /* We can be passed an insn or part of one. If we are passed an insn, - check if a side-effect of the insn clobbers REG. */ - if (INSN_P (insn) -@@ -884,7 +895,7 @@ - GET_MODE (reg), REGNO (reg))) - || MEM_P (reg) - || find_reg_fusage (insn, CLOBBER, reg))))) -- return 1; -+ return true; - - return set_of (reg, insn) != NULL_RTX; - } -Index: gcc/DEV-PHASE -=================================================================== ---- gcc/DEV-PHASE (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/DEV-PHASE (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1 @@ -+prerelease Index: gcc/ChangeLog =================================================================== ---- gcc/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,137 @@ -+2015-02-01 Jakub Jelinek -+ -+ Backported from mainline -+ 2015-01-27 Jakub Jelinek -+ -+ PR rtl-optimization/61058 -+ * jump.c (cleanup_barriers): Update basic block boundaries -+ if BLOCK_FOR_INSN is non-NULL on PREV. -+ -+ 2013-04-16 Steven Bosscher -+ -+ PR middle-end/43631 -+ * jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making -+ the moved barrier the tail of the basic block it follows. -+ -+ 2015-01-26 Jakub Jelinek -+ -+ * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add -+ OPTION_MASK_QUAD_MEMORY_ATOMIC. -+ -+ 2015-01-12 Jakub Jelinek -+ -+ PR tree-optimization/64563 -+ * tree-vrp.c (vrp_evaluate_conditional): Check for VR_RANGE -+ instead of != VR_VARYING. -+ -+ PR target/64513 -+ * config/i386/i386.c (ix86_expand_prologue): Add -+ REG_FRAME_RELATED_EXPR to %rax and %r10 pushes. -+ -+2015-01-29 Ilya Tocar -+ -+ * config/i386/avx2intrin.h (_mm256_bslli_epi128, -+ _mm256_bsrli_epi128): New. -+ * config/i386/emmintrin.h (_mm_bsrli_si128, _mm_bslli_si128): Ditto. -+ -+2015-01-27 Mikael Pettersson -+ -+ Backport from mainline -+ -+ 2013-09-20 Bernd Edlinger -+ -+ PR middle-end/57748 -+ * expr.c (expand_assignment): Remove misalignp code path. -+ -+ 2014-01-08 Bernd Edlinger -+ -+ PR middle-end/57748 -+ * expr.h (expand_expr_real, expand_expr_real_1): Add new parameter -+ inner_reference_p. -+ (expand_expr, expand_normal): Adjust. -+ * expr.c (expand_expr_real, expand_expr_real_1): Add new parameter -+ inner_reference_p. Use inner_reference_p to expand inner references. -+ (store_expr): Adjust. -+ * cfgexpand.c (expand_call_stmt): Adjust. -+ -+2015-01-26 Uros Bizjak -+ -+ Backport from mainline -+ 2015-01-26 Uros Bizjak -+ -+ PR target/64795 -+ * config/i386/i386.md (*movdi_internal): Also check operand 0 -+ to determine TYPE_LEA operand. -+ (*movsi_internal): Ditto. -+ -+ Backport from mainline -+ 2015-01-23 Uros Bizjak -+ -+ * config/i386/sse.md (sse2_loadld): Set attribute isa to sse2 for -+ alternative 1. -+ -+2015-01-15 Martin Liska -+ -+ Backport from mainline -+ 2014-11-27 Richard Biener -+ -+ PR middle-end/63704 -+ * alias.c (mems_in_disjoint_alias_sets_p): Remove assert -+ and instead return false when !fstrict-aliasing. -+ -+2015-01-14 Renlin Li -+ -+ Backport form mainline -+ 2014-08-12 Ramana Radhakrishnan -+ -+ PR target/61413 -+ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Fix definition -+ of __ARM_SIZEOF_WCHAR_T. -+ -+2015-01-13 Pat Haugen -+ -+ Backport from mainline -+ 2014-12-20 Segher Boessenkool -+ -+ PR target/64358 -+ * config/rs6000/rs6000.c (rs6000_split_logical_inner): Swap the -+ input operands if only the second is inverted. -+ * config/rs6000/rs6000.md (*boolc3_internal1 for BOOL_128): -+ Swap BOOL_REGS_OP1 and BOOL_REGS_OP2. Correct arguments to -+ rs6000_split_logical. -+ (*boolc3_internal2 for TI2): Swap operands[1] and operands[2]. -+ -+2015-01-13 Oleg Endo -+ -+ Backport form mainline -+ 2015-01-13 Oleg Endo -+ -+ PR target/64479 -+ * rtlanal.c (set_reg_p): Handle SEQUENCE constructs. -+ -+2014-12-27 H.J. Lu -+ -+ Backport from mainline: -+ 2014-12-27 H.J. Lu -+ -+ PR target/64409 -+ * config/i386/i386.c (ix86_function_type_abi): Issue an error -+ when ms_abi attribute is used with x32. -+ -+2014-12-19 H.J. Lu -+ -+ Backported from mainline -+ 2014-12-14 H.J. Lu -+ -+ PR rtl-optimization/64037 -+ * combine.c (setup_incoming_promotions): Pass the argument -+ before any promotions happen to promote_function_mode. -+ -+2014-12-19 Jakub Jelinek -+ -+ * BASE-VER: Set to 4.8.5. -+ * DEV-PHASE: Set to prerelease. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -@@ -382,7 +516,7 @@ - * config/pa/pa.md (trap): New insn. Add "trap" to attribute type. - Don't allow trap insn in in_branch_delay, in_nullified_branch_delay - or in_call_delay. -- -+ - 2014-11-06 Kyrylo Tkachov - - * config/aarch64/aarch64-elf-raw.h (CA53_ERR_835769_SPEC): Define. -Index: gcc/testsuite/gcc.target/i386/pr64409.c -=================================================================== ---- gcc/testsuite/gcc.target/i386/pr64409.c (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gcc.target/i386/pr64409.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,6 @@ -+/* { dg-do compile { target { ! { ia32 } } } } */ -+/* { dg-require-effective-target maybe_x32 } */ -+/* { dg-options "-O0 -mx32" } */ -+ -+int a; -+int* __attribute__ ((ms_abi)) fn1 () { return &a; } /* { dg-error "X32 does not support ms_abi attribute" } */ -Index: gcc/testsuite/gcc.target/i386/sse-14.c -=================================================================== ---- gcc/testsuite/gcc.target/i386/sse-14.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/testsuite/gcc.target/i386/sse-14.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -150,6 +150,8 @@ - - /* emmintrin.h */ - test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1) -+test_1 (_mm_bsrli_si128, __m128i, __m128i, 1) -+test_1 (_mm_bslli_si128, __m128i, __m128i, 1) - test_1 (_mm_srli_si128, __m128i, __m128i, 1) - test_1 (_mm_slli_si128, __m128i, __m128i, 1) - test_1 (_mm_extract_epi16, int, __m128i, 1) -Index: gcc/testsuite/gcc.target/i386/pr57003.c -=================================================================== ---- gcc/testsuite/gcc.target/i386/pr57003.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/testsuite/gcc.target/i386/pr57003.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,5 +1,5 @@ - /* PR rtl-optimization/57003 */ --/* { dg-do run } */ -+/* { dg-do run { target { ! x32 } } } */ - /* { dg-options "-O2 -maccumulate-outgoing-args" } */ - - #define N 2001 -Index: gcc/testsuite/gcc.target/i386/sse-22.c -=================================================================== ---- gcc/testsuite/gcc.target/i386/sse-22.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/testsuite/gcc.target/i386/sse-22.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -88,6 +88,8 @@ - #endif - #include - test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1) -+test_1 (_mm_bsrli_si128, __m128i, __m128i, 1) -+test_1 (_mm_bslli_si128, __m128i, __m128i, 1) - test_1 (_mm_srli_si128, __m128i, __m128i, 1) - test_1 (_mm_slli_si128, __m128i, __m128i, 1) - test_1 (_mm_extract_epi16, int, __m128i, 1) -@@ -219,6 +221,8 @@ - test_1 ( _mm256_shuffle_epi32, __m256i, __m256i, 1) - test_1 ( _mm256_shufflehi_epi16, __m256i, __m256i, 1) - test_1 ( _mm256_shufflelo_epi16, __m256i, __m256i, 1) -+test_1 ( _mm256_bslli_epi128, __m256i, __m256i, 8) -+test_1 ( _mm256_bsrli_epi128, __m256i, __m256i, 8) - test_1 ( _mm256_slli_si256, __m256i, __m256i, 8) - test_1 ( _mm256_srli_si256, __m256i, __m256i, 8) - test_2 ( _mm_blend_epi32, __m128i, __m128i, __m128i, 1) -Index: gcc/testsuite/gcc.target/i386/pr60516.c -=================================================================== ---- gcc/testsuite/gcc.target/i386/pr60516.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/testsuite/gcc.target/i386/pr60516.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,5 +1,5 @@ - /* PR target/60516 */ --/* { dg-do compile } */ -+/* { dg-do compile { target { ! x32 } } } */ - /* { dg-options "-O2" } */ - - struct S { char c[65536]; }; -Index: gcc/testsuite/gcc.target/i386/pr64513.c -=================================================================== ---- gcc/testsuite/gcc.target/i386/pr64513.c (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gcc.target/i386/pr64513.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,17 @@ -+/* PR target/64513 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -mstack-arg-probe" } */ -+ -+struct A {}; -+struct B { struct A y; }; -+int foo (struct A); -+ -+int -+bar (int x) -+{ -+ struct B b; -+ int c; -+ while (x--) -+ c = foo (b.y); -+ return c; -+} -Index: gcc/testsuite/gfortran.dg/pr64528.f90 -=================================================================== ---- gcc/testsuite/gfortran.dg/pr64528.f90 (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gfortran.dg/pr64528.f90 (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,20 @@ -+! PR fortran/64528 -+! { dg-do compile } -+! { dg-options "-O -fno-tree-dce -fno-tree-ccp" } -+ -+program pr64528 -+ interface -+ subroutine foo(x) -+ integer, value :: x -+ end subroutine foo -+ end interface -+ integer :: x -+ x = 10 -+ call foo(x) -+ if(x .ne. 10) then -+ endif -+end program pr64528 -+subroutine foo(x) -+ integer, value :: x -+ x = 11 -+end subroutine foo -Index: gcc/testsuite/gfortran.dg/typebound_operator_20.f90 -=================================================================== ---- gcc/testsuite/gfortran.dg/typebound_operator_20.f90 (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gfortran.dg/typebound_operator_20.f90 (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,53 @@ -+! { dg-do run } -+! -+! PR 63733: [4.8/4.9/5 Regression] [OOP] wrong resolution for OPERATOR generics -+! -+! Original test case from Alberto F. Martín Huertas -+! Slightly modified by Salvatore Filippone -+! Further modified by Janus Weil -+ -+module overwrite -+ type parent -+ contains -+ procedure :: sum => sum_parent -+ generic :: operator(+) => sum -+ end type -+ -+ type, extends(parent) :: child -+ contains -+ procedure :: sum => sum_child -+ end type -+ -+contains -+ -+ integer function sum_parent(op1,op2) -+ implicit none -+ class(parent), intent(in) :: op1, op2 -+ sum_parent = 0 -+ end function -+ -+ integer function sum_child(op1,op2) -+ implicit none -+ class(child) , intent(in) :: op1 -+ class(parent), intent(in) :: op2 -+ sum_child = 1 -+ end function -+ -+end module -+ -+program drive -+ use overwrite -+ implicit none -+ -+ type(parent) :: m1, m2 -+ class(parent), pointer :: mres -+ type(child) :: h1, h2 -+ class(parent), pointer :: hres -+ -+ if (m1 + m2 /= 0) call abort() -+ if (h1 + m2 /= 1) call abort() -+ if (h1%sum(h2) /= 1) call abort() -+ -+end -+ -+! { dg-final { cleanup-modules "overwrite" } } -Index: gcc/testsuite/gfortran.dg/typebound_call_26.f90 -=================================================================== ---- gcc/testsuite/gfortran.dg/typebound_call_26.f90 (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gfortran.dg/typebound_call_26.f90 (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,30 @@ -+! { dg-do compile } -+! -+! PR 64244: [4.8/4.9/5 Regression] ICE at class.c:236 when using non_overridable -+! -+! Contributed by Ondřej Čertík -+ -+module m -+ implicit none -+ -+ type :: A -+ contains -+ generic :: f => g -+ procedure, non_overridable :: g -+ end type -+ -+contains -+ -+ subroutine g(this) -+ class(A), intent(in) :: this -+ end subroutine -+ -+end module -+ -+ -+program test_non_overridable -+ use m, only: A -+ implicit none -+ class(A), allocatable :: h -+ call h%f() -+end -Index: gcc/testsuite/gfortran.dg/dependency_45.f90 -=================================================================== ---- gcc/testsuite/gfortran.dg/dependency_45.f90 (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gfortran.dg/dependency_45.f90 (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,12 @@ -+! { dg-do run } -+! { dg-options "-Warray-temporaries" } -+! PR 56867 - substrings were not checked for dependency. -+program main -+ character(len=4) :: a -+ character(len=4) :: c(3) -+ c(1) = 'abcd' -+ c(2) = '1234' -+ c(3) = 'wxyz' -+ c(:)(1:2) = c(2)(2:3) ! { dg-warning "array temporary" } -+ if (c(3) .ne. '23yz') call abort -+end program main -Index: gcc/testsuite/gcc.dg/pr61058.c -=================================================================== ---- gcc/testsuite/gcc.dg/pr61058.c (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gcc.dg/pr61058.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,10 @@ -+/* PR rtl-optimization/61058 */ -+/* { dg-do compile } */ -+/* { dg-options "" } */ -+/* { dg-additional-options "-fno-asynchronous-unwind-tables -mtune=atom" { target i?86-*-* x86_64-*-* } } */ -+ -+void -+foo (void) -+{ -+ __builtin_unreachable (); -+} -Index: gcc/testsuite/gcc.dg/pr64766.c -=================================================================== ---- gcc/testsuite/gcc.dg/pr64766.c (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gcc.dg/pr64766.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,9 @@ -+/* PR c/64766 */ -+/* { dg-do compile } */ -+ -+void -+foo () -+{ -+} -+ -+void foo () = 0; /* { dg-error "is initialized like a variable|invalid initializer" } */ -Index: gcc/testsuite/gcc.dg/pr64563.c -=================================================================== ---- gcc/testsuite/gcc.dg/pr64563.c (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/gcc.dg/pr64563.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,14 @@ -+/* PR tree-optimization/64563 */ -+/* { dg-do compile } */ -+/* { dg-options "-Os -Wtype-limits" } */ -+ -+int a, b, c, d, f; -+unsigned int e; -+ -+void -+foo (void) -+{ -+ d = b = (a != (e | 4294967288UL)); -+ if (!d) -+ c = f || b; -+} -Index: gcc/testsuite/ChangeLog -=================================================================== ---- gcc/testsuite/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,103 @@ -+2015-02-01 Jakub Jelinek -+ -+ Backported from mainline -+ 2015-01-27 Jakub Jelinek -+ -+ PR rtl-optimization/61058 -+ * gcc.dg/pr61058.c: New test. -+ -+ PR c/64766 -+ * gcc.dg/pr64766.c: New test. -+ -+ 2015-01-13 Jakub Jelinek -+ -+ PR fortran/64528 -+ * gfortran.dg/pr64528.f90: New test. -+ -+ 2015-01-12 Jakub Jelinek -+ -+ PR tree-optimization/64563 -+ * gcc.dg/pr64563.c: New test. -+ -+ PR target/64513 -+ * gcc.target/i386/pr64513.c: New test. -+ -+2015-01-29 Ilya Tocar -+ -+ * gcc.target/i386/sse-14.c: Test new intrinsic. -+ * gcc.target/i386/sse-22.c: Ditto. -+ -+2015-01-27 Mikael Pettersson -+ -+ Backport from mainline -+ -+ 2013-09-20 Bernd Edlinger -+ -+ PR middle-end/57748 -+ * gcc.dg/torture/pr57748-1.c: New test. -+ * gcc.dg/torture/pr57748-2.c: New test. -+ -+ 2014-01-08 Bernd Edlinger -+ -+ PR middle-end/57748 -+ * gcc.dg/torture/pr57748-3.c: New test. -+ * gcc.dg/torture/pr57748-4.c: New test. -+ -+2015-01-24 Thomas Koenig -+ -+ PR fortran/56867 -+ * gfortran.dg/dependency_45.f90: New test. -+ -+2015-01-24 Thomas Koenig -+ -+ Backport from trunk -+ PR fortran/57023 -+ * gfortran.dg/internal_pack_15.f90: New test. -+ -+2015-01-20 Marek Polacek -+ -+ Backport from mainline -+ 2014-06-23 Marek Polacek -+ -+ PR c/61553 -+ * c-c++-common/pr61553.c: New test. -+ -+2015-01-12 Janus Weil -+ -+ Backport from mainline -+ PR fortran/63733 -+ * gfortran.dg/typebound_operator_20.f90: New. -+ -+2014-12-28 H.J. Lu -+ -+ Backport from mainline: -+ 2014-12-28 H.J. Lu -+ -+ * gcc.target/i386/pr57003.c: Skip on x32. -+ * gcc.target/i386/pr60516.c: Likewise. -+ -+2014-12-27 H.J. Lu -+ -+ Backport from mainline: -+ 2014-12-26 H.J. Lu -+ -+ PR target/64409 -+ * gcc.target/i386/pr64409.c: New test. -+ -+2014-12-23 Janus Weil -+ -+ Backport from mainline -+ PR fortran/64244 -+ * gfortran.dg/typebound_call_26.f90: New. -+ -+2014-12-19 H.J. Lu -+ -+ Backported from mainline -+ 2014-12-14 H.J. Lu -+ -+ PR rtl-optimization/64037 -+ * g++.dg/pr64037.C: New test. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: gcc/testsuite/g++.dg/pr64037.C -=================================================================== ---- gcc/testsuite/g++.dg/pr64037.C (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/g++.dg/pr64037.C (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,27 @@ -+// { dg-do run { target i?86-*-* x86_64-*-* } } -+// { dg-options "-std=c++11 -Os" } -+ -+enum class X : unsigned char { -+ V = 2, -+}; -+ -+static void -+__attribute__((noinline,noclone)) -+foo(unsigned &out, unsigned a, X b) -+{ -+ out = static_cast(b); -+} -+ -+int main() -+{ -+ unsigned deadbeef = 0xDEADBEEF; -+ asm volatile ("" : "+d" (deadbeef), "+c" (deadbeef)); -+ -+ unsigned out; -+ foo(out, 2, X::V); -+ -+ if (out != 2) -+ __builtin_abort (); -+ -+ return 0; -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual16.C -=================================================================== ---- gcc/testsuite/g++.dg/cpp0x/ref-qual16.C (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/g++.dg/cpp0x/ref-qual16.C (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,12 @@ -+// PR c++/64297 -+// { dg-do compile { target c++11 } } -+ -+struct A { -+ typedef int X; -+ template X m_fn1() const; -+}; -+template struct is_function {}; -+is_function i; -+struct D { -+ template > D(Y); -+} b(&A::m_fn1<0>); -Index: gcc/testsuite/g++.dg/template/offsetof3.C -=================================================================== ---- gcc/testsuite/g++.dg/template/offsetof3.C (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/g++.dg/template/offsetof3.C (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,18 @@ -+// PR c++/64487 -+ -+struct foo { -+ int member; -+}; -+ -+template < int N> -+struct bar {}; -+ -+template -+struct qux { -+ static bar static_member; -+}; -+ -+template -+bar qux::static_member; -+ -+int main() { } -Index: gcc/testsuite/g++.dg/template/non-dependent14.C -=================================================================== ---- gcc/testsuite/g++.dg/template/non-dependent14.C (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/g++.dg/template/non-dependent14.C (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,7 @@ -+// PR c++/64251 -+ -+class DictionaryValue {}; -+template void CreateValue(T) { -+ DictionaryValue(0); -+ CreateValue(0); -+} -Index: gcc/testsuite/c-c++-common/pr61553.c -=================================================================== ---- gcc/testsuite/c-c++-common/pr61553.c (.../tags/gcc_4_8_4_release) (revision 0) -+++ gcc/testsuite/c-c++-common/pr61553.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -0,0 +1,8 @@ -+/* PR c/61553 */ -+/* { dg-do compile } */ -+ -+void -+foo (char *s) -+{ -+ __atomic_store (s, (void *) 0, __ATOMIC_SEQ_CST); /* { dg-error "size mismatch" } */ -+} -Index: gcc/cp/typeck.c -=================================================================== ---- gcc/cp/typeck.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/cp/typeck.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -8639,6 +8639,12 @@ - /* This should really have a different TYPE_MAIN_VARIANT, but that gets - complex. */ - tree result = build_qualified_type (type, memfn_quals); -+ if (tree canon = TYPE_CANONICAL (result)) -+ if (canon != result) -+ /* check_qualified_type doesn't check the ref-qualifier, so make sure -+ TYPE_CANONICAL is correct. */ -+ TYPE_CANONICAL (result) -+ = build_ref_qualified_type (canon, type_memfn_rqual (result)); - result = build_exception_variant (result, TYPE_RAISES_EXCEPTIONS (type)); - return build_ref_qualified_type (result, rqual); - } -Index: gcc/cp/ChangeLog -=================================================================== ---- gcc/cp/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/cp/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,15 @@ -+2015-01-13 Jason Merrill -+ -+ PR c++/64487 -+ * semantics.c (finish_offsetof): Handle templates here. -+ * parser.c (cp_parser_builtin_offsetof): Not here. -+ -+ PR c++/64251 -+ * decl2.c (mark_used): Don't mark if in_template_function. -+ -+ PR c++/64297 -+ * typeck.c (apply_memfn_quals): Correct wrong TYPE_CANONICAL. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: gcc/cp/semantics.c -=================================================================== ---- gcc/cp/semantics.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/cp/semantics.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -3651,6 +3651,14 @@ - tree - finish_offsetof (tree expr) - { -+ /* If we're processing a template, we can't finish the semantics yet. -+ Otherwise we can fold the entire expression now. */ -+ if (processing_template_decl) -+ { -+ expr = build1 (OFFSETOF_EXPR, size_type_node, expr); -+ return expr; -+ } -+ - if (TREE_CODE (expr) == PSEUDO_DTOR_EXPR) - { - error ("cannot apply % to destructor %<~%T%>", -Index: gcc/cp/decl2.c -=================================================================== ---- gcc/cp/decl2.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/cp/decl2.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -4606,7 +4606,7 @@ - --function_depth; - } - -- if (processing_template_decl) -+ if (processing_template_decl || in_template_function ()) - return true; - - /* Check this too in case we're within fold_non_dependent_expr. */ -Index: gcc/cp/parser.c -=================================================================== ---- gcc/cp/parser.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/cp/parser.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -8024,12 +8024,7 @@ - } - - success: -- /* If we're processing a template, we can't finish the semantics yet. -- Otherwise we can fold the entire expression now. */ -- if (processing_template_decl) -- expr = build1 (OFFSETOF_EXPR, size_type_node, expr); -- else -- expr = finish_offsetof (expr); -+ expr = finish_offsetof (expr); - - failure: - parser->integral_constant_expression_p = save_ice_p; -Index: gcc/jump.c -=================================================================== ---- gcc/jump.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/jump.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -133,7 +133,30 @@ - if (BARRIER_P (prev)) - delete_insn (insn); - else if (prev != PREV_INSN (insn)) -- reorder_insns (insn, insn, prev); -+ { -+ basic_block bb = BLOCK_FOR_INSN (prev); -+ rtx end = PREV_INSN (insn); -+ reorder_insns_nobb (insn, insn, prev); -+ if (bb) -+ { -+ /* If the backend called in machine reorg compute_bb_for_insn -+ and didn't free_bb_for_insn again, preserve basic block -+ boundaries. Move the end of basic block to PREV since -+ it is followed by a barrier now, and clear BLOCK_FOR_INSN -+ on the following notes. -+ ??? Maybe the proper solution for the targets that have -+ cfg around after machine reorg is not to run cleanup_barriers -+ pass at all. */ -+ BB_END (bb) = prev; -+ do -+ { -+ prev = NEXT_INSN (prev); -+ if (prev != insn && BLOCK_FOR_INSN (prev) == bb) -+ BLOCK_FOR_INSN (prev) = NULL; -+ } -+ while (prev != end); -+ } -+ } - } - } - return 0; -Index: gcc/expr.c -=================================================================== ---- gcc/expr.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/expr.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -4708,8 +4708,6 @@ - int unsignedp; - int volatilep = 0; - tree tem; -- bool misalignp; -- rtx mem = NULL_RTX; - - push_temp_slots (); - tem = get_inner_reference (to, &bitsize, &bitpos, &offset, &mode1, -@@ -4728,41 +4726,8 @@ - && DECL_BIT_FIELD_TYPE (TREE_OPERAND (to, 1))) - get_bit_range (&bitregion_start, &bitregion_end, to, &bitpos, &offset); - -- /* If we are going to use store_bit_field and extract_bit_field, -- make sure to_rtx will be safe for multiple use. */ -- mode = TYPE_MODE (TREE_TYPE (tem)); -- if (TREE_CODE (tem) == MEM_REF -- && mode != BLKmode -- && ((align = get_object_alignment (tem)) -- < GET_MODE_ALIGNMENT (mode)) -- && ((icode = optab_handler (movmisalign_optab, mode)) -- != CODE_FOR_nothing)) -- { -- struct expand_operand ops[2]; -+ to_rtx = expand_expr (tem, NULL_RTX, VOIDmode, EXPAND_WRITE); - -- misalignp = true; -- to_rtx = gen_reg_rtx (mode); -- mem = expand_expr (tem, NULL_RTX, VOIDmode, EXPAND_WRITE); -- -- /* If the misaligned store doesn't overwrite all bits, perform -- rmw cycle on MEM. */ -- if (bitsize != GET_MODE_BITSIZE (mode)) -- { -- create_input_operand (&ops[0], to_rtx, mode); -- create_fixed_operand (&ops[1], mem); -- /* The movmisalign pattern cannot fail, else the assignment -- would silently be omitted. */ -- expand_insn (icode, 2, ops); -- -- mem = copy_rtx (mem); -- } -- } -- else -- { -- misalignp = false; -- to_rtx = expand_expr (tem, NULL_RTX, VOIDmode, EXPAND_WRITE); -- } -- - /* If the bitfield is volatile, we want to access it in the - field's mode, not the computed mode. - If a MEM has VOIDmode (external with incomplete type), -@@ -4900,17 +4865,6 @@ - get_alias_set (to), nontemporal); - } - -- if (misalignp) -- { -- struct expand_operand ops[2]; -- -- create_fixed_operand (&ops[0], mem); -- create_input_operand (&ops[1], to_rtx, mode); -- /* The movmisalign pattern cannot fail, else the assignment -- would silently be omitted. */ -- expand_insn (icode, 2, ops); -- } -- - if (result) - preserve_temp_slots (result); - pop_temp_slots (); -@@ -5262,7 +5216,7 @@ - temp = expand_expr_real (exp, tmp_target, GET_MODE (target), - (call_param_p - ? EXPAND_STACK_PARM : EXPAND_NORMAL), -- &alt_rtl); -+ &alt_rtl, false); - } - - /* If TEMP is a VOIDmode constant and the mode of the type of EXP is not -@@ -7881,11 +7835,21 @@ - address, and ALT_RTL is non-NULL, then *ALT_RTL is set to the - DECL_RTL of the VAR_DECL. *ALT_RTL is also set if EXP is a - COMPOUND_EXPR whose second argument is such a VAR_DECL, and so on -- recursively. */ -+ recursively. - -+ If INNER_REFERENCE_P is true, we are expanding an inner reference. -+ In this case, we don't adjust a returned MEM rtx that wouldn't be -+ sufficiently aligned for its mode; instead, it's up to the caller -+ to deal with it afterwards. This is used to make sure that unaligned -+ base objects for which out-of-bounds accesses are supported, for -+ example record types with trailing arrays, aren't realigned behind -+ the back of the caller. -+ The normal operating mode is to pass FALSE for this parameter. */ -+ - rtx - expand_expr_real (tree exp, rtx target, enum machine_mode tmode, -- enum expand_modifier modifier, rtx *alt_rtl) -+ enum expand_modifier modifier, rtx *alt_rtl, -+ bool inner_reference_p) - { - rtx ret; - -@@ -7897,7 +7861,8 @@ - return ret ? ret : const0_rtx; - } - -- ret = expand_expr_real_1 (exp, target, tmode, modifier, alt_rtl); -+ ret = expand_expr_real_1 (exp, target, tmode, modifier, alt_rtl, -+ inner_reference_p); - return ret; - } - -@@ -9190,7 +9155,8 @@ - - rtx - expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, -- enum expand_modifier modifier, rtx *alt_rtl) -+ enum expand_modifier modifier, rtx *alt_rtl, -+ bool inner_reference_p) - { - rtx op0, op1, temp, decl_rtl; - tree type; -@@ -9336,7 +9302,7 @@ - - set_curr_insn_location (gimple_location (g)); - r = expand_expr_real (gimple_assign_rhs_to_tree (g), target, -- tmode, modifier, NULL); -+ tmode, modifier, NULL, inner_reference_p); - set_curr_insn_location (saved_loc); - if (REG_P (r) && !REG_EXPR (r)) - set_reg_attrs_for_decl_rtl (SSA_NAME_VAR (exp), r); -@@ -9557,7 +9523,8 @@ - case SAVE_EXPR: - { - tree val = treeop0; -- rtx ret = expand_expr_real_1 (val, target, tmode, modifier, alt_rtl); -+ rtx ret = expand_expr_real_1 (val, target, tmode, modifier, alt_rtl, -+ inner_reference_p); - - if (!SAVE_EXPR_RESOLVED_P (exp)) - { -@@ -9706,6 +9673,7 @@ - MEM_VOLATILE_P (temp) = 1; - if (modifier != EXPAND_WRITE - && modifier != EXPAND_MEMORY -+ && !inner_reference_p - && mode != BLKmode - && align < GET_MODE_ALIGNMENT (mode)) - { -@@ -9940,18 +9908,19 @@ - computation, since it will need a temporary and TARGET is known - to have to do. This occurs in unchecked conversion in Ada. */ - orig_op0 = op0 -- = expand_expr (tem, -- (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE -- && COMPLETE_TYPE_P (TREE_TYPE (tem)) -- && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem))) -- != INTEGER_CST) -- && modifier != EXPAND_STACK_PARM -- ? target : NULL_RTX), -- VOIDmode, -- (modifier == EXPAND_INITIALIZER -- || modifier == EXPAND_CONST_ADDRESS -- || modifier == EXPAND_STACK_PARM) -- ? modifier : EXPAND_NORMAL); -+ = expand_expr_real (tem, -+ (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE -+ && COMPLETE_TYPE_P (TREE_TYPE (tem)) -+ && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem))) -+ != INTEGER_CST) -+ && modifier != EXPAND_STACK_PARM -+ ? target : NULL_RTX), -+ VOIDmode, -+ (modifier == EXPAND_INITIALIZER -+ || modifier == EXPAND_CONST_ADDRESS -+ || modifier == EXPAND_STACK_PARM) -+ ? modifier : EXPAND_NORMAL, -+ NULL, true); - - - /* If the bitfield is volatile, we want to access it in the -@@ -10302,17 +10271,18 @@ - { - /* See the normal_inner_ref case for the rationale. */ - orig_op0 -- = expand_expr (tem, -- (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE -- && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem))) -- != INTEGER_CST) -- && modifier != EXPAND_STACK_PARM -- ? target : NULL_RTX), -- VOIDmode, -- (modifier == EXPAND_INITIALIZER -- || modifier == EXPAND_CONST_ADDRESS -- || modifier == EXPAND_STACK_PARM) -- ? modifier : EXPAND_NORMAL); -+ = expand_expr_real (tem, -+ (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE -+ && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem))) -+ != INTEGER_CST) -+ && modifier != EXPAND_STACK_PARM -+ ? target : NULL_RTX), -+ VOIDmode, -+ (modifier == EXPAND_INITIALIZER -+ || modifier == EXPAND_CONST_ADDRESS -+ || modifier == EXPAND_STACK_PARM) -+ ? modifier : EXPAND_NORMAL, -+ NULL, true); - - if (MEM_P (orig_op0)) - { -@@ -10339,8 +10309,8 @@ - } - - if (!op0) -- op0 = expand_expr (treeop0, -- NULL_RTX, VOIDmode, modifier); -+ op0 = expand_expr_real (treeop0, NULL_RTX, VOIDmode, modifier, -+ NULL, inner_reference_p); - - /* If the input and output modes are both the same, we are done. */ - if (mode == GET_MODE (op0)) -@@ -10407,50 +10377,53 @@ - op0 = copy_rtx (op0); - set_mem_align (op0, MAX (MEM_ALIGN (op0), TYPE_ALIGN (type))); - } -- else if (mode != BLKmode -- && MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode) -- /* If the target does have special handling for unaligned -- loads of mode then use them. */ -- && ((icode = optab_handler (movmisalign_optab, mode)) -- != CODE_FOR_nothing)) -- { -- rtx reg, insn; -- -- op0 = adjust_address (op0, mode, 0); -- /* We've already validated the memory, and we're creating a -- new pseudo destination. The predicates really can't -- fail. */ -- reg = gen_reg_rtx (mode); -- -- /* Nor can the insn generator. */ -- insn = GEN_FCN (icode) (reg, op0); -- emit_insn (insn); -- return reg; -- } -- else if (STRICT_ALIGNMENT -+ else if (modifier != EXPAND_WRITE -+ && modifier != EXPAND_MEMORY -+ && !inner_reference_p - && mode != BLKmode - && MEM_ALIGN (op0) < GET_MODE_ALIGNMENT (mode)) - { -- tree inner_type = TREE_TYPE (treeop0); -- HOST_WIDE_INT temp_size -- = MAX (int_size_in_bytes (inner_type), -- (HOST_WIDE_INT) GET_MODE_SIZE (mode)); -- rtx new_rtx -- = assign_stack_temp_for_type (mode, temp_size, type); -- rtx new_with_op0_mode -- = adjust_address (new_rtx, GET_MODE (op0), 0); -+ /* If the target does have special handling for unaligned -+ loads of mode then use them. */ -+ if ((icode = optab_handler (movmisalign_optab, mode)) -+ != CODE_FOR_nothing) -+ { -+ rtx reg, insn; - -- gcc_assert (!TREE_ADDRESSABLE (exp)); -+ op0 = adjust_address (op0, mode, 0); -+ /* We've already validated the memory, and we're creating a -+ new pseudo destination. The predicates really can't -+ fail. */ -+ reg = gen_reg_rtx (mode); - -- if (GET_MODE (op0) == BLKmode) -- emit_block_move (new_with_op0_mode, op0, -- GEN_INT (GET_MODE_SIZE (mode)), -- (modifier == EXPAND_STACK_PARM -- ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); -- else -- emit_move_insn (new_with_op0_mode, op0); -+ /* Nor can the insn generator. */ -+ insn = GEN_FCN (icode) (reg, op0); -+ emit_insn (insn); -+ return reg; -+ } -+ else if (STRICT_ALIGNMENT) -+ { -+ tree inner_type = TREE_TYPE (treeop0); -+ HOST_WIDE_INT temp_size -+ = MAX (int_size_in_bytes (inner_type), -+ (HOST_WIDE_INT) GET_MODE_SIZE (mode)); -+ rtx new_rtx -+ = assign_stack_temp_for_type (mode, temp_size, type); -+ rtx new_with_op0_mode -+ = adjust_address (new_rtx, GET_MODE (op0), 0); - -- op0 = new_rtx; -+ gcc_assert (!TREE_ADDRESSABLE (exp)); -+ -+ if (GET_MODE (op0) == BLKmode) -+ emit_block_move (new_with_op0_mode, op0, -+ GEN_INT (GET_MODE_SIZE (mode)), -+ (modifier == EXPAND_STACK_PARM -+ ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); -+ else -+ emit_move_insn (new_with_op0_mode, op0); -+ -+ op0 = new_rtx; -+ } - } - - op0 = adjust_address (op0, mode, 0); -@@ -10550,7 +10523,7 @@ - /* WITH_SIZE_EXPR expands to its first argument. The caller should - have pulled out the size to use in whatever context it needed. */ - return expand_expr_real (treeop0, original_target, tmode, -- modifier, alt_rtl); -+ modifier, alt_rtl, inner_reference_p); - - default: - return expand_expr_real_2 (&ops, target, tmode, modifier); -Index: gcc/expr.h -=================================================================== ---- gcc/expr.h (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/expr.h (.../branches/gcc-4_8-branch) (revision 220382) -@@ -41,7 +41,8 @@ - is a constant that is not a legitimate address. - EXPAND_WRITE means we are only going to write to the resulting rtx. - EXPAND_MEMORY means we are interested in a memory result, even if -- the memory is constant and we could have propagated a constant value. */ -+ the memory is constant and we could have propagated a constant value, -+ or the memory is unaligned on a STRICT_ALIGNMENT target. */ - enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM, - EXPAND_CONST_ADDRESS, EXPAND_INITIALIZER, EXPAND_WRITE, - EXPAND_MEMORY}; -@@ -428,9 +429,9 @@ - - /* Work horses for expand_expr. */ - extern rtx expand_expr_real (tree, rtx, enum machine_mode, -- enum expand_modifier, rtx *); -+ enum expand_modifier, rtx *, bool); - extern rtx expand_expr_real_1 (tree, rtx, enum machine_mode, -- enum expand_modifier, rtx *); -+ enum expand_modifier, rtx *, bool); - extern rtx expand_expr_real_2 (sepops, rtx, enum machine_mode, - enum expand_modifier); - -@@ -441,13 +442,13 @@ - expand_expr (tree exp, rtx target, enum machine_mode mode, - enum expand_modifier modifier) - { -- return expand_expr_real (exp, target, mode, modifier, NULL); -+ return expand_expr_real (exp, target, mode, modifier, NULL, false); - } - - static inline rtx - expand_normal (tree exp) - { -- return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL); -+ return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL, false); - } - - /* At the start of a function, record that we have no previously-pushed -Index: gcc/fortran/interface.c -=================================================================== ---- gcc/fortran/interface.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/fortran/interface.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -3557,6 +3557,8 @@ - gfc_user_op *uop; - gfc_intrinsic_op i; - const char *gname; -+ gfc_typebound_proc* tbo; -+ gfc_expr* tb_base; - - sym = NULL; - -@@ -3573,8 +3575,50 @@ - - i = fold_unary_intrinsic (e->value.op.op); - -+ /* See if we find a matching type-bound operator. */ - if (i == INTRINSIC_USER) -+ tbo = matching_typebound_op (&tb_base, actual, -+ i, e->value.op.uop->name, &gname); -+ else -+ switch (i) -+ { -+#define CHECK_OS_COMPARISON(comp) \ -+ case INTRINSIC_##comp: \ -+ case INTRINSIC_##comp##_OS: \ -+ tbo = matching_typebound_op (&tb_base, actual, \ -+ INTRINSIC_##comp, NULL, &gname); \ -+ if (!tbo) \ -+ tbo = matching_typebound_op (&tb_base, actual, \ -+ INTRINSIC_##comp##_OS, NULL, &gname); \ -+ break; -+ CHECK_OS_COMPARISON(EQ) -+ CHECK_OS_COMPARISON(NE) -+ CHECK_OS_COMPARISON(GT) -+ CHECK_OS_COMPARISON(GE) -+ CHECK_OS_COMPARISON(LT) -+ CHECK_OS_COMPARISON(LE) -+#undef CHECK_OS_COMPARISON -+ -+ default: -+ tbo = matching_typebound_op (&tb_base, actual, i, NULL, &gname); -+ break; -+ } -+ -+ /* If there is a matching typebound-operator, replace the expression with -+ a call to it and succeed. */ -+ if (tbo) - { -+ gcc_assert (tb_base); -+ build_compcall_for_operator (e, actual, tb_base, tbo, gname); -+ -+ if (gfc_resolve_expr (e) == FAILURE) -+ return MATCH_ERROR; -+ else -+ return MATCH_YES; -+ } -+ -+ if (i == INTRINSIC_USER) -+ { - for (ns = gfc_current_ns; ns; ns = ns->parent) - { - uop = gfc_find_uop (e->value.op.uop->name, ns); -@@ -3623,54 +3667,6 @@ - - if (sym == NULL) - { -- gfc_typebound_proc* tbo; -- gfc_expr* tb_base; -- -- /* See if we find a matching type-bound operator. */ -- if (i == INTRINSIC_USER) -- tbo = matching_typebound_op (&tb_base, actual, -- i, e->value.op.uop->name, &gname); -- else -- switch (i) -- { --#define CHECK_OS_COMPARISON(comp) \ -- case INTRINSIC_##comp: \ -- case INTRINSIC_##comp##_OS: \ -- tbo = matching_typebound_op (&tb_base, actual, \ -- INTRINSIC_##comp, NULL, &gname); \ -- if (!tbo) \ -- tbo = matching_typebound_op (&tb_base, actual, \ -- INTRINSIC_##comp##_OS, NULL, &gname); \ -- break; -- CHECK_OS_COMPARISON(EQ) -- CHECK_OS_COMPARISON(NE) -- CHECK_OS_COMPARISON(GT) -- CHECK_OS_COMPARISON(GE) -- CHECK_OS_COMPARISON(LT) -- CHECK_OS_COMPARISON(LE) --#undef CHECK_OS_COMPARISON -- -- default: -- tbo = matching_typebound_op (&tb_base, actual, i, NULL, &gname); -- break; -- } -- -- /* If there is a matching typebound-operator, replace the expression with -- a call to it and succeed. */ -- if (tbo) -- { -- gfc_try result; -- -- gcc_assert (tb_base); -- build_compcall_for_operator (e, actual, tb_base, tbo, gname); -- -- result = gfc_resolve_expr (e); -- if (result == FAILURE) -- return MATCH_ERROR; -- -- return MATCH_YES; -- } -- - /* Don't use gfc_free_actual_arglist(). */ - free (actual->next); - free (actual); -Index: gcc/fortran/trans-array.c -=================================================================== ---- gcc/fortran/trans-array.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/fortran/trans-array.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -4299,11 +4299,20 @@ - - for (ss = rss; ss != gfc_ss_terminator; ss = ss->next) - { -- if (ss->info->type != GFC_SS_SECTION) -- continue; - - ss_expr = ss->info->expr; - -+ if (ss->info->type != GFC_SS_SECTION) -+ { -+ /* Check for cases like c(:)(1:2) = c(2)(2:3) */ -+ if (!nDepend && dest_expr->rank > 0 -+ && dest_expr->ts.type == BT_CHARACTER -+ && ss_expr->expr_type == EXPR_VARIABLE) -+ -+ nDepend = gfc_check_dependency (dest_expr, ss_expr, false); -+ continue; -+ } -+ - if (dest_expr->symtree->n.sym != ss_expr->symtree->n.sym) - { - if (gfc_could_be_alias (dest, ss) -Index: gcc/fortran/ChangeLog -=================================================================== ---- gcc/fortran/ChangeLog (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1,3 +1,42 @@ -+2015-02-01 Jakub Jelinek -+ -+ Backported from mainline -+ 2015-01-13 Jakub Jelinek -+ -+ PR fortran/64528 -+ * trans-decl.c (create_function_arglist): Don't set TREE_READONLY -+ on dummy args with VALUE attribute. -+ -+2015-01-24 Thomas Koenig -+ -+ PR fortran/56867 -+ * trans-array.c (gfc_conv_resolve_dependencies): Also check -+ dependencies when there may be substrings of character arrays. -+ -+2015-01-24 Thomas Koenig -+ -+ Backport from trunk -+ PR fortran/57023 -+ * dependency.c (callback_dummy_intent_not_int): New function. -+ (dummy_intent_not_in): New function. -+ (gfc_full_array_ref_p): Use dummy_intent_not_in. -+ -+2015-01-12 Janus Weil -+ -+ Backport from mainline -+ PR fortran/63733 -+ * interface.c (gfc_extend_expr): Look for type-bound operators before -+ non-typebound ones. -+ -+2014-12-23 Janus Weil -+ -+ Backport from mainline -+ PR fortran/64244 -+ * resolve.c (resolve_typebound_call): New argument to pass out the -+ non-overridable attribute of the specific procedure. -+ (resolve_typebound_subroutine): Get overridable flag from -+ resolve_typebound_call. -+ - 2014-12-19 Release Manager - - * GCC 4.8.4 released. -Index: gcc/fortran/resolve.c -=================================================================== ---- gcc/fortran/resolve.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/fortran/resolve.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -6048,7 +6048,7 @@ - /* Resolve a call to a type-bound subroutine. */ - - static gfc_try --resolve_typebound_call (gfc_code* c, const char **name) -+resolve_typebound_call (gfc_code* c, const char **name, bool *overridable) - { - gfc_actual_arglist* newactual; - gfc_symtree* target; -@@ -6072,6 +6072,10 @@ - if (resolve_typebound_generic_call (c->expr1, name) == FAILURE) - return FAILURE; - -+ /* Pass along the NON_OVERRIDABLE attribute of the specific TBP. */ -+ if (overridable) -+ *overridable = !c->expr1->value.compcall.tbp->non_overridable; -+ - /* Transform into an ordinary EXEC_CALL for now. */ - - if (resolve_typebound_static (c->expr1, &target, &newactual) == FAILURE) -@@ -6324,7 +6328,7 @@ - if (c->ts.u.derived == NULL) - c->ts.u.derived = gfc_find_derived_vtab (declared); - -- if (resolve_typebound_call (code, &name) == FAILURE) -+ if (resolve_typebound_call (code, &name, NULL) == FAILURE) - return FAILURE; - - /* Use the generic name if it is there. */ -@@ -6356,7 +6360,7 @@ - } - - if (st == NULL) -- return resolve_typebound_call (code, NULL); -+ return resolve_typebound_call (code, NULL, NULL); - - if (resolve_ref (code->expr1) == FAILURE) - return FAILURE; -@@ -6369,10 +6373,10 @@ - || (!class_ref && st->n.sym->ts.type != BT_CLASS)) - { - gfc_free_ref_list (new_ref); -- return resolve_typebound_call (code, NULL); -+ return resolve_typebound_call (code, NULL, NULL); - } - -- if (resolve_typebound_call (code, &name) == FAILURE) -+ if (resolve_typebound_call (code, &name, &overridable) == FAILURE) - { - gfc_free_ref_list (new_ref); - return FAILURE; -Index: gcc/fortran/trans-decl.c -=================================================================== ---- gcc/fortran/trans-decl.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/fortran/trans-decl.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -2186,8 +2186,9 @@ - /* Fill in arg stuff. */ - DECL_CONTEXT (parm) = fndecl; - DECL_ARG_TYPE (parm) = TREE_VALUE (typelist); -- /* All implementation args are read-only. */ -- TREE_READONLY (parm) = 1; -+ /* All implementation args except for VALUE are read-only. */ -+ if (!f->sym->attr.value) -+ TREE_READONLY (parm) = 1; - if (POINTER_TYPE_P (type) - && (!f->sym->attr.proc_pointer - && f->sym->attr.flavor != FL_PROCEDURE)) -Index: gcc/fortran/dependency.c -=================================================================== ---- gcc/fortran/dependency.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/fortran/dependency.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1604,11 +1604,40 @@ - return GFC_DEP_EQUAL; - } - -+/* Callback function for checking if an expression depends on a -+ dummy variable which is any other than INTENT(IN). */ - -+static int -+callback_dummy_intent_not_in (gfc_expr **ep, -+ int *walk_subtrees ATTRIBUTE_UNUSED, -+ void *data ATTRIBUTE_UNUSED) -+{ -+ gfc_expr *e = *ep; -+ -+ if (e->expr_type == EXPR_VARIABLE && e->symtree -+ && e->symtree->n.sym->attr.dummy) -+ return e->symtree->n.sym->attr.intent != INTENT_IN; -+ else -+ return 0; -+} -+ -+/* Auxiliary function to check if subexpressions have dummy variables which -+ are not intent(in). -+*/ -+ -+static bool -+dummy_intent_not_in (gfc_expr **ep) -+{ -+ return gfc_expr_walker (ep, callback_dummy_intent_not_in, NULL); -+} -+ - /* Determine if an array ref, usually an array section specifies the - entire array. In addition, if the second, pointer argument is - provided, the function will return true if the reference is -- contiguous; eg. (:, 1) gives true but (1,:) gives false. */ -+ contiguous; eg. (:, 1) gives true but (1,:) gives false. -+ If one of the bounds depends on a dummy variable which is -+ not INTENT(IN), also return false, because the user may -+ have changed the variable. */ - - bool - gfc_full_array_ref_p (gfc_ref *ref, bool *contiguous) -@@ -1672,7 +1701,8 @@ - && (!ref->u.ar.as - || !ref->u.ar.as->lower[i] - || gfc_dep_compare_expr (ref->u.ar.start[i], -- ref->u.ar.as->lower[i]))) -+ ref->u.ar.as->lower[i]) -+ || dummy_intent_not_in (&ref->u.ar.start[i]))) - lbound_OK = false; - /* Check the upper bound. */ - if (ref->u.ar.end[i] -@@ -1679,7 +1709,8 @@ - && (!ref->u.ar.as - || !ref->u.ar.as->upper[i] - || gfc_dep_compare_expr (ref->u.ar.end[i], -- ref->u.ar.as->upper[i]))) -+ ref->u.ar.as->upper[i]) -+ || dummy_intent_not_in (&ref->u.ar.end[i]))) - ubound_OK = false; - /* Check the stride. */ - if (ref->u.ar.stride[i] -Index: gcc/alias.c -=================================================================== ---- gcc/alias.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/alias.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -380,17 +380,9 @@ - static inline int - mems_in_disjoint_alias_sets_p (const_rtx mem1, const_rtx mem2) - { --/* Perform a basic sanity check. Namely, that there are no alias sets -- if we're not using strict aliasing. This helps to catch bugs -- whereby someone uses PUT_CODE, but doesn't clear MEM_ALIAS_SET, or -- where a MEM is allocated in some way other than by the use of -- gen_rtx_MEM, and the MEM_ALIAS_SET is not cleared. If we begin to -- use alias sets to indicate that spilled registers cannot alias each -- other, we might need to remove this check. */ -- gcc_assert (flag_strict_aliasing -- || (!MEM_ALIAS_SET (mem1) && !MEM_ALIAS_SET (mem2))); -- -- return ! alias_sets_conflict_p (MEM_ALIAS_SET (mem1), MEM_ALIAS_SET (mem2)); -+ return (flag_strict_aliasing -+ && ! alias_sets_conflict_p (MEM_ALIAS_SET (mem1), -+ MEM_ALIAS_SET (mem2))); - } - - /* Insert the NODE into the splay tree given by DATA. Used by -Index: gcc/cfgexpand.c -=================================================================== ---- gcc/cfgexpand.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/cfgexpand.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -2111,7 +2111,7 @@ - if (lhs) - expand_assignment (lhs, exp, false); - else -- expand_expr_real_1 (exp, const0_rtx, VOIDmode, EXPAND_NORMAL, NULL); -+ expand_expr (exp, const0_rtx, VOIDmode, EXPAND_NORMAL); - - mark_transaction_restart_calls (stmt); - } -Index: gcc/combine.c -=================================================================== ---- gcc/combine.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/combine.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1527,8 +1527,8 @@ - uns3 = TYPE_UNSIGNED (DECL_ARG_TYPE (arg)); - - /* The mode and signedness of the argument as it is actually passed, -- after any TARGET_PROMOTE_FUNCTION_ARGS-driven ABI promotions. */ -- mode3 = promote_function_mode (DECL_ARG_TYPE (arg), mode2, &uns3, -+ see assign_parm_setup_reg in function.c. */ -+ mode3 = promote_function_mode (TREE_TYPE (arg), mode1, &uns3, - TREE_TYPE (cfun->decl), 0); - - /* The mode of the register in which the argument is being passed. */ -Index: gcc/config/i386/i386.md -=================================================================== ---- gcc/config/i386/i386.md (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/i386/i386.md (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1945,7 +1945,8 @@ - (const_string "ssemov") - (eq_attr "alternative" "15,16") - (const_string "ssecvt") -- (match_operand 1 "pic_32bit_operand") -+ (and (match_operand 0 "register_operand") -+ (match_operand 1 "pic_32bit_operand")) - (const_string "lea") - ] - (const_string "imov"))) -@@ -2171,7 +2172,8 @@ - (const_string "sselog1") - (eq_attr "alternative" "7,8,9,10,11") - (const_string "ssemov") -- (match_operand 1 "pic_32bit_operand") -+ (and (match_operand 0 "register_operand") -+ (match_operand 1 "pic_32bit_operand")) - (const_string "lea") - ] - (const_string "imov"))) -Index: gcc/config/i386/avx2intrin.h -=================================================================== ---- gcc/config/i386/avx2intrin.h (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/i386/avx2intrin.h (.../branches/gcc-4_8-branch) (revision 220382) -@@ -639,11 +639,20 @@ - #ifdef __OPTIMIZE__ - extern __inline __m256i - __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -+_mm256_bslli_epi128 (__m256i __A, const int __N) -+{ -+ return (__m256i)__builtin_ia32_pslldqi256 (__A, __N * 8); -+} -+ -+extern __inline __m256i -+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) - _mm256_slli_si256 (__m256i __A, const int __N) - { - return (__m256i)__builtin_ia32_pslldqi256 (__A, __N * 8); - } - #else -+#define _mm256_bslli_epi128(A, N) \ -+ ((__m256i)__builtin_ia32_pslldqi256 ((__m256i)(A), (int)(N) * 8)) - #define _mm256_slli_si256(A, N) \ - ((__m256i)__builtin_ia32_pslldqi256 ((__m256i)(A), (int)(N) * 8)) - #endif -@@ -721,11 +730,20 @@ - #ifdef __OPTIMIZE__ - extern __inline __m256i - __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -+_mm256_bsrli_epi128 (__m256i __A, const int __N) -+{ -+ return (__m256i)__builtin_ia32_psrldqi256 (__A, __N * 8); -+} -+ -+extern __inline __m256i -+__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) - _mm256_srli_si256 (__m256i __A, const int __N) - { - return (__m256i)__builtin_ia32_psrldqi256 (__A, __N * 8); - } - #else -+#define _mm256_bsrli_epi128(A, N) \ -+ ((__m256i)__builtin_ia32_psrldqi256 ((__m256i)(A), (int)(N) * 8)) - #define _mm256_srli_si256(A, N) \ - ((__m256i)__builtin_ia32_psrldqi256 ((__m256i)(A), (int)(N) * 8)) - #endif -Index: gcc/config/i386/sse.md -=================================================================== ---- gcc/config/i386/sse.md (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/i386/sse.md (.../branches/gcc-4_8-branch) (revision 220382) -@@ -7369,7 +7369,7 @@ - movss\t{%2, %0|%0, %2} - movss\t{%2, %0|%0, %2} - vmovss\t{%2, %1, %0|%0, %1, %2}" -- [(set_attr "isa" "sse2,*,noavx,noavx,avx") -+ [(set_attr "isa" "sse2,sse2,noavx,noavx,avx") - (set_attr "type" "ssemov") - (set_attr "prefix" "maybe_vex,maybe_vex,orig,orig,vex") - (set_attr "mode" "TI,TI,V4SF,SF,SF")]) -Index: gcc/config/i386/emmintrin.h -=================================================================== ---- gcc/config/i386/emmintrin.h (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/i386/emmintrin.h (.../branches/gcc-4_8-branch) (revision 220382) -@@ -1143,6 +1143,18 @@ - - #ifdef __OPTIMIZE__ - extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_bsrli_si128 (__m128i __A, const int __N) -+{ -+ return (__m128i)__builtin_ia32_psrldqi128 (__A, __N * 8); -+} -+ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) -+_mm_bslli_si128 (__m128i __A, const int __N) -+{ -+ return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8); -+} -+ -+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) - _mm_srli_si128 (__m128i __A, const int __N) - { - return (__m128i)__builtin_ia32_psrldqi128 (__A, __N * 8); -@@ -1154,6 +1166,10 @@ - return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8); - } - #else -+#define _mm_bsrli_si128(A, N) \ -+ ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8)) -+#define _mm_bslli_si128(A, N) \ -+ ((__m128i)__builtin_ia32_pslldqi128 ((__m128i)(A), (int)(N) * 8)) - #define _mm_srli_si128(A, N) \ - ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8)) - #define _mm_slli_si128(A, N) \ -Index: gcc/config/i386/i386.c -=================================================================== ---- gcc/config/i386/i386.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/i386/i386.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -5539,7 +5539,18 @@ - if (abi == SYSV_ABI) - { - if (lookup_attribute ("ms_abi", TYPE_ATTRIBUTES (fntype))) -- abi = MS_ABI; -+ { -+ if (TARGET_X32) -+ { -+ static bool warned = false; -+ if (!warned) -+ { -+ error ("X32 does not support ms_abi attribute"); -+ warned = true; -+ } -+ } -+ abi = MS_ABI; -+ } - } - else if (lookup_attribute ("sysv_abi", TYPE_ATTRIBUTES (fntype))) - abi = SYSV_ABI; -@@ -10483,6 +10494,10 @@ - if (sp_is_cfa_reg) - m->fs.cfa_offset += UNITS_PER_WORD; - RTX_FRAME_RELATED_P (insn) = 1; -+ add_reg_note (insn, REG_FRAME_RELATED_EXPR, -+ gen_rtx_SET (VOIDmode, stack_pointer_rtx, -+ plus_constant (Pmode, stack_pointer_rtx, -+ -UNITS_PER_WORD))); - } - } - -@@ -10496,6 +10511,10 @@ - if (sp_is_cfa_reg) - m->fs.cfa_offset += UNITS_PER_WORD; - RTX_FRAME_RELATED_P (insn) = 1; -+ add_reg_note (insn, REG_FRAME_RELATED_EXPR, -+ gen_rtx_SET (VOIDmode, stack_pointer_rtx, -+ plus_constant (Pmode, stack_pointer_rtx, -+ -UNITS_PER_WORD))); - } - } - -Index: gcc/config/rs6000/rs6000-cpus.def -=================================================================== ---- gcc/config/rs6000/rs6000-cpus.def (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/rs6000/rs6000-cpus.def (.../branches/gcc-4_8-branch) (revision 220382) -@@ -91,6 +91,7 @@ - | OPTION_MASK_PPC_GFXOPT \ - | OPTION_MASK_PPC_GPOPT \ - | OPTION_MASK_QUAD_MEMORY \ -+ | OPTION_MASK_QUAD_MEMORY_ATOMIC \ - | OPTION_MASK_RECIP_PRECISION \ - | OPTION_MASK_SOFT_FLOAT \ - | OPTION_MASK_STRICT_ALIGN_OPTIONAL \ -Index: gcc/config/rs6000/rs6000.c -=================================================================== ---- gcc/config/rs6000/rs6000.c (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/rs6000/rs6000.c (.../branches/gcc-4_8-branch) (revision 220382) -@@ -32628,6 +32628,14 @@ - if (complement_op2_p) - op2 = gen_rtx_NOT (mode, op2); - -+ /* For canonical RTL, if only one arm is inverted it is the first. */ -+ if (!complement_op1_p && complement_op2_p) -+ { -+ rtx temp = op1; -+ op1 = op2; -+ op2 = temp; -+ } -+ - bool_rtx = ((code == NOT) - ? gen_rtx_NOT (mode, op1) - : gen_rtx_fmt_ee (code, mode, op1, op2)); -Index: gcc/config/rs6000/rs6000.md -=================================================================== ---- gcc/config/rs6000/rs6000.md (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/rs6000/rs6000.md (.../branches/gcc-4_8-branch) (revision 220382) -@@ -8622,8 +8622,8 @@ - [(set (match_operand:BOOL_128 0 "vlogical_operand" "=") - (match_operator:BOOL_128 3 "boolean_operator" - [(not:BOOL_128 -- (match_operand:BOOL_128 2 "vlogical_operand" "")) -- (match_operand:BOOL_128 1 "vlogical_operand" "")]))] -+ (match_operand:BOOL_128 2 "vlogical_operand" "")) -+ (match_operand:BOOL_128 1 "vlogical_operand" "")]))] - "TARGET_P8_VECTOR || (GET_CODE (operands[3]) == AND)" - { - if (TARGET_VSX && vsx_register_operand (operands[0], mode)) -@@ -8638,7 +8638,7 @@ - && reload_completed && int_reg_operand (operands[0], mode)" - [(const_int 0)] - { -- rs6000_split_logical (operands, GET_CODE (operands[3]), false, true, false, -+ rs6000_split_logical (operands, GET_CODE (operands[3]), false, false, true, - NULL_RTX); - DONE; - } -@@ -8660,14 +8660,14 @@ - [(set (match_operand:TI2 0 "int_reg_operand" "=&r,r,r") - (match_operator:TI2 3 "boolean_operator" - [(not:TI2 -- (match_operand:TI2 1 "int_reg_operand" "r,0,r")) -- (match_operand:TI2 2 "int_reg_operand" "r,r,0")]))] -+ (match_operand:TI2 2 "int_reg_operand" "r,0,r")) -+ (match_operand:TI2 1 "int_reg_operand" "r,r,0")]))] - "!TARGET_P8_VECTOR && (GET_CODE (operands[3]) != AND)" - "#" - "reload_completed && !TARGET_P8_VECTOR && (GET_CODE (operands[3]) != AND)" - [(const_int 0)] - { -- rs6000_split_logical (operands, GET_CODE (operands[3]), false, true, false, -+ rs6000_split_logical (operands, GET_CODE (operands[3]), false, false, true, - NULL_RTX); - DONE; - } -Index: gcc/config/arm/arm.h -=================================================================== ---- gcc/config/arm/arm.h (.../tags/gcc_4_8_4_release) (revision 220382) -+++ gcc/config/arm/arm.h (.../branches/gcc-4_8-branch) (revision 220382) -@@ -63,8 +63,8 @@ - builtin_define_with_int_value ( \ - "__ARM_SIZEOF_MINIMAL_ENUM", \ - flag_short_enums ? 1 : 4); \ -- builtin_define_with_int_value ( \ -- "__ARM_SIZEOF_WCHAR_T", WCHAR_TYPE_SIZE); \ -+ builtin_define_type_sizeof ("__ARM_SIZEOF_WCHAR_T", \ -+ wchar_type_node); \ - if (TARGET_ARM_ARCH_PROFILE) \ - builtin_define_with_int_value ( \ - "__ARM_ARCH_PROFILE", TARGET_ARM_ARCH_PROFILE); \ +--- gcc/ChangeLog (.../tags/gcc_4_8_5_release) (revision 226547) ++++ gcc/ChangeLog (.../branches/gcc-4_8-branch) (revision 226547) +@@ -1,3 +1,9 @@ ++2015-06-23 Ludovic Courtès ++ ++ PR 65711 ++ * config/arm/linux-elf.h (LINUX_TARGET_LINK_SPEC): Move ++ '-dynamic-linker' within %{!shared: ...}. ++ + 2015-06-23 Release Manager + + * GCC 4.8.5 released. +Index: gcc/config/arm/linux-elf.h +=================================================================== +--- gcc/config/arm/linux-elf.h (.../tags/gcc_4_8_5_release) (revision 226547) ++++ gcc/config/arm/linux-elf.h (.../branches/gcc-4_8-branch) (revision 226547) +@@ -65,7 +65,7 @@ + %{symbolic:-Bsymbolic} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ ++ %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC diff --git a/gcc.spec b/gcc.spec index a676c1a..f9c89a9 100644 --- a/gcc.spec +++ b/gcc.spec @@ -82,7 +82,7 @@ %endif %define major_ver 4.8 -%define minor_ver 4 +%define minor_ver 5 %define major_ecj_ver 4.5 # class data version seen with file(1) that this jvm is able to load %define _classdataversion 50.0 @@ -99,7 +99,7 @@ Epoch: 6 License: GPL v3+ Group: Development/Languages Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2 -# Source0-md5: 5a84a30839b2aca22a2d723de2a626ec +# Source0-md5: 80d2c2982a3392bb0b89673ff136e223 Source1: %{name}-optimize-la.pl Source2: ftp://sourceware.org/pub/java/ecj-%{major_ecj_ver}.jar # Source2-md5: d7cd6a27c8801e66cbaa964a039ecfdb -- 2.46.0