gcc: fix up broken chunks of the 4.4.3+cs patch and clean it up a bit more
authorFelix Fietkau <nbd@openwrt.org>
Tue, 26 Jan 2010 20:13:01 +0000 (20:13 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 26 Jan 2010 20:13:01 +0000 (20:13 +0000)
SVN-Revision: 19349

toolchain/gcc/patches/4.4.3+cs/000-codesourcery_2009q3_68.patch

index 88be9a85fff6708153699b73daf3e5dc38354ac0..32652dc5999fd9ffb308d739162dec41e22a93a9 100644 (file)
@@ -1,6 +1,5 @@
-diff -Nur a/config/mh-mingw b/config/mh-mingw
---- a/config/mh-mingw  2008-11-21 14:54:41.000000000 +0100
-+++ b/config/mh-mingw  2010-01-25 09:50:28.945687353 +0100
+--- a/config/mh-mingw
++++ b/config/mh-mingw
 @@ -1,6 +1,8 @@
  # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows
  # Vista (see PR33281 for details).
@@ -12,10 +11,9 @@ diff -Nur a/config/mh-mingw b/config/mh-mingw
 +# CFLAGS += -D__USE_MINGW_ACCESS
  # Increase stack limit to same as Linux default.
  LDFLAGS += -Wl,--stack,8388608
-diff -Nur a/config/stdint.m4 b/config/stdint.m4
---- a/config/stdint.m4 2007-04-12 15:06:43.000000000 +0200
-+++ b/config/stdint.m4 2010-01-25 09:50:28.945687353 +0100
-@@ -115,19 +115,19 @@
+--- a/config/stdint.m4
++++ b/config/stdint.m4
+@@ -115,19 +115,19 @@ AC_MSG_RESULT($acx_cv_header_stdint $acx
  
  # Lacking an uintptr_t?  Test size of void *
  case "$acx_cv_header_stdint:$ac_cv_type_uintptr_t" in
@@ -40,9 +38,8 @@ diff -Nur a/config/stdint.m4 b/config/stdint.m4
  
    AC_MSG_CHECKING(for type equivalent to int8_t)
    case "$ac_cv_sizeof_char" in
-diff -Nur a/config/tls.m4 b/config/tls.m4
---- a/config/tls.m4    2009-01-23 05:58:03.000000000 +0100
-+++ b/config/tls.m4    2010-01-25 09:50:28.945687353 +0100
+--- a/config/tls.m4
++++ b/config/tls.m4
 @@ -1,5 +1,6 @@
  dnl Check whether the target supports TLS.
  AC_DEFUN([GCC_CHECK_TLS], [
@@ -50,7 +47,7 @@ diff -Nur a/config/tls.m4 b/config/tls.m4
    GCC_ENABLE(tls, yes, [], [Use thread-local storage])
    AC_CACHE_CHECK([whether the target supports thread-local storage],
                 gcc_cv_have_tls, [
-@@ -66,7 +67,24 @@
+@@ -66,7 +67,24 @@ AC_DEFUN([GCC_CHECK_TLS], [
        [dnl This is the cross-compiling case. Assume libc supports TLS if the
         dnl binutils and the compiler do.
         AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }],
@@ -76,10 +73,9 @@ diff -Nur a/config/tls.m4 b/config/tls.m4
        ]
      )])
    if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then
-diff -Nur a/configure b/configure
---- a/configure        2009-04-25 06:10:29.000000000 +0200
-+++ b/configure        2010-01-25 09:50:28.945687353 +0100
-@@ -2277,7 +2277,7 @@
+--- a/configure
++++ b/configure
+@@ -2277,7 +2277,7 @@ case "${target}" in
      noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
      ;;
    *-*-vxworks*)
@@ -88,10 +84,9 @@ diff -Nur a/configure b/configure
      ;;
    alpha*-dec-osf*)
      # ld works, but does not support shared libraries.
-diff -Nur a/configure.ac b/configure.ac
---- a/configure.ac     2009-04-25 06:10:29.000000000 +0200
-+++ b/configure.ac     2010-01-25 09:50:28.945687353 +0100
-@@ -512,7 +512,7 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -512,7 +512,7 @@ case "${target}" in
      noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
      ;;
    *-*-vxworks*)
@@ -100,10 +95,9 @@ diff -Nur a/configure.ac b/configure.ac
      ;;
    alpha*-dec-osf*)
      # ld works, but does not support shared libraries.
-diff -Nur a/fixincludes/fixincl.tpl b/fixincludes/fixincl.tpl
---- a/fixincludes/fixincl.tpl  2008-09-06 21:57:26.000000000 +0200
-+++ b/fixincludes/fixincl.tpl  2010-01-25 09:50:28.945687353 +0100
-@@ -38,7 +38,7 @@
+--- a/fixincludes/fixincl.tpl
++++ b/fixincludes/fixincl.tpl
+@@ -38,7 +38,7 @@ x=fixincl.x =]
  #ifndef SED_PROGRAM
  #define SED_PROGRAM "/usr/bin/sed"
  #endif
@@ -112,9 +106,8 @@ diff -Nur a/fixincludes/fixincl.tpl b/fixincludes/fixincl.tpl
  [=
  
  FOR fix =]
-diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
---- a/fixincludes/fixincl.x    2009-02-28 19:13:31.000000000 +0100
-+++ b/fixincludes/fixincl.x    2010-01-25 09:50:28.945687353 +0100
+--- a/fixincludes/fixincl.x
++++ b/fixincludes/fixincl.x
 @@ -2,11 +2,11 @@
   * 
   * DO NOT EDIT THIS FILE   (fixincl.x)
@@ -147,7 +140,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
-@@ -2300,6 +2300,42 @@
+@@ -2300,6 +2300,42 @@ s/{ { 0, } }/{ { 0, 0, 0, 0, 0, 0 } }/\n
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
@@ -190,7 +183,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
   *  Description of Gnu_Types fix
   */
  tSCC zGnu_TypesName[] =
-@@ -5617,8 +5653,7 @@
+@@ -5617,8 +5653,7 @@ tSCC zSolaris_Mutex_Init_2List[] =
   *  Machine/OS name selection pattern
   */
  tSCC* apzSolaris_Mutex_Init_2Machs[] = {
@@ -200,7 +193,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
          (const char*)NULL };
  
  /*
-@@ -5627,8 +5662,15 @@
+@@ -5627,8 +5662,15 @@ tSCC* apzSolaris_Mutex_Init_2Machs[] = {
  tSCC zSolaris_Mutex_Init_2Select0[] =
         "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
  
@@ -217,7 +210,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
    { TT_EGREP,    zSolaris_Mutex_Init_2Select0, (regex_t*)NULL }, };
  
  /*
-@@ -5670,8 +5712,15 @@
+@@ -5670,8 +5712,15 @@ tSCC* apzSolaris_Rwlock_Init_1Machs[] = 
  tSCC zSolaris_Rwlock_Init_1Select0[] =
         "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
  
@@ -234,7 +227,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
    { TT_EGREP,    zSolaris_Rwlock_Init_1Select0, (regex_t*)NULL }, };
  
  /*
-@@ -5741,8 +5790,7 @@
+@@ -5741,8 +5790,7 @@ tSCC zSolaris_Once_Init_2List[] =
   *  Machine/OS name selection pattern
   */
  tSCC* apzSolaris_Once_Init_2Machs[] = {
@@ -244,7 +237,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
          (const char*)NULL };
  
  /*
-@@ -5751,8 +5799,15 @@
+@@ -5751,8 +5799,15 @@ tSCC* apzSolaris_Once_Init_2Machs[] = {
  tSCC zSolaris_Once_Init_2Select0[] =
         "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
  
@@ -261,7 +254,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
    { TT_EGREP,    zSolaris_Once_Init_2Select0, (regex_t*)NULL }, };
  
  /*
-@@ -7308,9 +7363,9 @@
+@@ -7308,9 +7363,9 @@ static const char* apzX11_SprintfPatch[]
   *
   *  List of all fixes
   */
@@ -274,7 +267,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
  
  /*
   *  Enumerate the fixes
-@@ -7371,6 +7426,7 @@
+@@ -7371,6 +7426,7 @@ typedef enum {
      GLIBC_C99_INLINE_3_FIXIDX,
      GLIBC_C99_INLINE_4_FIXIDX,
      GLIBC_MUTEX_INIT_FIXIDX,
@@ -282,7 +275,7 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
      GNU_TYPES_FIXIDX,
      HP_INLINE_FIXIDX,
      HP_SYSFILE_FIXIDX,
-@@ -7774,6 +7830,11 @@
+@@ -7774,6 +7830,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
       GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY,
       aGlibc_Mutex_InitTests,   apzGlibc_Mutex_InitPatch, 0 },
  
@@ -294,10 +287,9 @@ diff -Nur a/fixincludes/fixincl.x b/fixincludes/fixincl.x
    {  zGnu_TypesName,    zGnu_TypesList,
       apzGnu_TypesMachs,
       GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE,
-diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
---- a/fixincludes/inclhack.def 2009-02-28 19:13:31.000000000 +0100
-+++ b/fixincludes/inclhack.def 2010-01-25 09:50:28.955687088 +0100
-@@ -1302,6 +1302,21 @@
+--- a/fixincludes/inclhack.def
++++ b/fixincludes/inclhack.def
+@@ -1302,6 +1302,21 @@ fix = {
  };
  
  
@@ -319,7 +311,7 @@ diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
  /*
   * Fix these files to use the types we think they should for
   * ptrdiff_t, size_t, and wchar_t.
-@@ -2939,24 +2954,32 @@
+@@ -2939,24 +2954,32 @@ fix = {
  };
  
  /*
@@ -365,7 +357,7 @@ diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
      c_fix = format;
      c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                  "%0\n"
-@@ -2967,6 +2990,7 @@
+@@ -2967,6 +2990,7 @@ fix = {
                  "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)"
                  ",[ \t]*0\\}" "(|[ \t].*)$";
      test_text =
@@ -373,7 +365,7 @@ diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
      '#ident "@(#)pthread.h  1.26  98/04/12 SMI"'"\n"
      "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n"
      "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n"
-@@ -2978,17 +3002,14 @@
+@@ -2978,17 +3002,14 @@ fix = {
  
  
  /*
@@ -393,7 +385,7 @@ diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
      c_fix = format;
      c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                  "%0\n"
-@@ -3024,24 +3045,14 @@
+@@ -3024,24 +3045,14 @@ fix = {
  
  
  /*
@@ -421,10 +413,9 @@ diff -Nur a/fixincludes/inclhack.def b/fixincludes/inclhack.def
      c_fix = format;
      c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n"
                  "%0\n"
-diff -Nur a/fixincludes/server.c b/fixincludes/server.c
---- a/fixincludes/server.c     2005-08-15 02:50:43.000000000 +0200
-+++ b/fixincludes/server.c     2010-01-25 09:50:28.955687088 +0100
-@@ -266,7 +266,7 @@
+--- a/fixincludes/server.c
++++ b/fixincludes/server.c
+@@ -266,7 +266,7 @@ run_shell (const char* pz_cmd)
    /*  Make sure the process will pay attention to us, send the
       supplied command, and then have it output a special marker that
       we can find.  */
@@ -433,9 +424,8 @@ diff -Nur a/fixincludes/server.c b/fixincludes/server.c
             p_cur_dir, pz_cmd, z_done);
    fflush (server_pair.pf_write);
  
-diff -Nur a/fixincludes/tests/base/bits/string2.h b/fixincludes/tests/base/bits/string2.h
---- a/fixincludes/tests/base/bits/string2.h    2007-03-26 15:25:26.000000000 +0200
-+++ b/fixincludes/tests/base/bits/string2.h    2010-01-25 09:50:28.955687088 +0100
+--- a/fixincludes/tests/base/bits/string2.h
++++ b/fixincludes/tests/base/bits/string2.h
 @@ -16,3 +16,12 @@
  #  define __STRING_INLINE extern __inline
  # endif
@@ -449,75 +439,218 @@ diff -Nur a/fixincludes/tests/base/bits/string2.h b/fixincludes/tests/base/bits/
 +#endif
 +
 +#endif  /* GLIBC_STRING2_MEMSET_CHECK */
-diff -Nur a/fixincludes/tests/base/sys/types.h b/fixincludes/tests/base/sys/types.h
---- a/fixincludes/tests/base/sys/types.h       2004-08-31 11:27:00.000000000 +0200
-+++ b/fixincludes/tests/base/sys/types.h       2010-01-25 09:50:28.955687088 +0100
-@@ -28,3 +28,4 @@
+--- a/fixincludes/tests/base/sys/types.h
++++ b/fixincludes/tests/base/sys/types.h
+@@ -28,3 +28,4 @@ typedef __WCHAR_TYPE__ wchar_t;
  
  #endif /* ushort_t */
  #endif  /* GNU_TYPES_CHECK */
 +#if  !defined(__STRICT_ANSI__) && !defined(_NO_LONGLONG)
-diff -Nur a/gcc/acinclude.m4 b/gcc/acinclude.m4
---- a/gcc/acinclude.m4 2008-06-02 21:37:45.000000000 +0200
-+++ b/gcc/acinclude.m4 2010-01-25 09:50:28.955687088 +0100
-@@ -482,3 +482,53 @@
- AC_DEFUN([gcc_AC_BUILD_EXEEXT], [
- ac_executable_extensions="$build_exeext"])
-+
-+# --with-license=PATH
-+AC_DEFUN([CSL_AC_LICENSE],[
-+  AC_ARG_WITH(license,
-+    AC_HELP_STRING([--with-license],
-+                   [the path to the installed license component]),
-+    [case "$withval" in
-+     (yes) AC_MSG_ERROR([license not specified]) ;;
-+     (no)  with_license= ;;
-+     (*) ;;
-+  esac],
-+  [with_license=])
-+  AC_SUBST(licensedir, $with_license)
-+])
-+
-+# --with-csl-license-feature=FOO
-+AC_DEFUN([CSL_AC_LICENSE_FEATURE],[
-+  AC_ARG_WITH(csl-license-feature,
-+    AC_HELP_STRING([--with-csl-license-feature=FEATURE],
-+                   [Use FEATURE to communicate with the license manager]),
-+    [case "$withval" in
-+      (yes) AC_MSG_ERROR([license feature not specified]) ;;
-+      (no)  CSL_LICENSE_FEATURE="" ;; 
-+      (*)   CSL_LICENSE_FEATURE="$withval" ;;
-+     esac],
-+     CSL_LICENSE_FEATURE=""
-+  )
-+  if test x"$CSL_LICENSE_FEATURE" != x; then
-+    AC_DEFINE_UNQUOTED(CSL_LICENSE_FEATURE, "$CSL_LICENSE_FEATURE",
-+                       [Required license feature])
-+  fi
-+])
-+
-+# --with-csl-license-version=VERSION
-+AC_DEFUN([CSL_AC_LICENSE_VERSION],[
-+  AC_ARG_WITH(csl-license-version,
-+    AC_HELP_STRING([--with-csl-license-version=VERSION],
-+                   [Use VERSION to communicate with the license manager]),
-+    [case "$withval" in
-+      (yes) AC_MSG_ERROR([license version not specified]) ;;
-+      (no)  CSL_LICENSE_VERSION="" ;; 
-+      (*)   CSL_LICENSE_VERSION="$withval" ;;
-+     esac],
-+     CSL_LICENSE_VERSION=""
-+  )
-+  if test x"$CSL_LICENSE_VERSION" != x; then
-+    AC_DEFINE_UNQUOTED(CSL_LICENSE_VERSION, "$CSL_LICENSE_VERSION",
-+                       [Required license version])
-+  fi
-+])
-diff -Nur a/gcc/addresses.h b/gcc/addresses.h
---- a/gcc/addresses.h  2007-07-26 10:37:01.000000000 +0200
-+++ b/gcc/addresses.h  2010-01-25 09:50:28.955687088 +0100
-@@ -78,3 +78,42 @@
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -327,6 +327,8 @@ GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./x
+ # It also specifies -isystem ./include to find, e.g., stddef.h.
+ GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS)
++EGLIBC_CONFIGS = @EGLIBC_CONFIGS@
++
+ # ---------------------------------------------------
+ # Programs which produce files for the target machine
+ # ---------------------------------------------------
+@@ -408,6 +410,9 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT
+ xmake_file=@xmake_file@
+ tmake_file=@tmake_file@
++TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
++TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
++TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
+ out_file=$(srcdir)/config/@out_file@
+ out_object_file=@out_object_file@
+ md_file=$(srcdir)/config/@md_file@
+@@ -1249,6 +1254,7 @@ OBJS-common = \
+       tree-ssa-loop-manip.o \
+       tree-ssa-loop-niter.o \
+       tree-ssa-loop-prefetch.o \
++      tree-ssa-loop-promote.o \
+       tree-ssa-loop-unswitch.o \
+       tree-ssa-loop.o \
+       tree-ssa-math-opts.o \
+@@ -1258,6 +1264,7 @@ OBJS-common = \
+       tree-ssa-pre.o \
+       tree-ssa-propagate.o \
+       tree-ssa-reassoc.o \
++      tree-ssa-remove-local-statics.o \
+       tree-ssa-sccvn.o \
+       tree-ssa-sink.o \
+       tree-ssa-structalias.o \
+@@ -1674,7 +1681,7 @@ libgcc-support: libgcc.mvars stmp-int-hd
+       $(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \
+       $(LIB2ADD_ST) $(LIB2ADDEH) $(srcdir)/emutls.c gcov-iov.h $(SFP_MACHINE)
+-libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
++libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs $(tmake_file) \
+               xgcc$(exeext)
+       : > tmp-libgcc.mvars
+       echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars
+@@ -1728,7 +1735,7 @@ libgcc.mvars: config.status Makefile $(L
+ # driver program needs to select the library directory based on the
+ # switches.
+ multilib.h: s-mlib; @true
+-s-mlib: $(srcdir)/genmultilib Makefile
++s-mlib: $(srcdir)/genmultilib Makefile $(tmakefile)
+       if test @enable_multilib@ = yes \
+          || test -n "$(MULTILIB_OSDIRNAMES)"; then \
+         $(SHELL) $(srcdir)/genmultilib \
+@@ -1739,10 +1746,11 @@ s-mlib: $(srcdir)/genmultilib Makefile
+           "$(MULTILIB_EXTRA_OPTS)" \
+           "$(MULTILIB_EXCLUSIONS)" \
+           "$(MULTILIB_OSDIRNAMES)" \
++          "$(MULTILIB_ALIASES)" \
+           "@enable_multilib@" \
+           > tmp-mlib.h; \
+       else \
+-        $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
++        $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' '' no \
+           > tmp-mlib.h; \
+       fi
+       $(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h
+@@ -1816,7 +1824,7 @@ gcc.srcextra: gengtype-lex.c
+ incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
+               intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \
+-              $(MACHMODE_H)
++              $(MACHMODE_H) $(FLAGS_H) toplev.h
+ c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
+     $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \
+@@ -1900,7 +1908,7 @@ c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM
+         $(TREE_H) $(C_PRAGMA_H) $(FLAGS_H) $(TOPLEV_H) langhooks.h            \
+         $(TREE_INLINE_H) $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H) \
+         opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h $(TARGET_H) \
+-      $(TM_P_H) $(VARRAY_H)
++      $(TM_P_H) $(VARRAY_H) $(C_TREE_H)
+       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
+               $< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@
+@@ -1953,7 +1961,8 @@ DRIVER_DEFINES = \
+   -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \
+   @TARGET_SYSTEM_ROOT_DEFINE@ \
+   $(VALGRIND_DRIVER_DEFINES) \
+-  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"`
++  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
++  -DCONFIGURE_SPECS="\"@CONFIGURE_SPECS@\""
+ gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \
+     Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \
+@@ -2176,6 +2185,9 @@ tree-ssa-pre.o : tree-ssa-pre.c $(TREE_F
+    alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \
+    $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
+    $(DBGCNT_H)
++tree-ssa-remove-local-statics.o: tree-ssa-remove-local-statics.c \
++   coretypes.h $(CONFIG_H) $(SYSTEM_H) $(BASIC_BLOCK_H) tree.h tree-pass.h \
++   $(TM_H) $(HASHTAB_H) $(BASIC_BLOCK_H)
+ tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
+    $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
+    $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
+@@ -2271,6 +2283,12 @@ tree-ssa-loop-prefetch.o: tree-ssa-loop-
+    $(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \
+    tree-chrec.h $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \
+    $(OPTABS_H)
++tree-ssa-loop-promote.o: tree-ssa-loop-promote.c \
++   coretypes.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) \
++   $(RTL_H) $(TM_P_H) hard-reg-set.h $(OBSTACK_H) $(BASIC_BLOCK_H) \
++   pointer-set.h intl.h $(TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(DIAGNOSTIC_H) \
++   $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(FLAGS_H) $(TIMEVAR_H) \
++   tree-pass.h $(TM_H)
+ tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
+    $(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) $(SCEV_H) \
+    $(PARAMS_H) $(DIAGNOSTIC_H) tree-pass.h $(TM_H) coretypes.h tree-affine.h \
+@@ -2865,7 +2883,7 @@ postreload.o : postreload.c $(CONFIG_H) 
+    $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
+    hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
+    $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \
+-   $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H)
++   $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h addresses.h $(DF_H) $(DBGCNT_H)
+ postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
+    $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
+@@ -3582,7 +3600,7 @@ gcov-dump$(exeext): $(GCOV_DUMP_OBJS) $(
+ # be rebuilt.
+ # Build the include directories.
+-stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list
++stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H)
+ # Copy in the headers provided with gcc.
+ # The sed command gets just the last file name component;
+ # this is necessary because VPATH could add a dirname.
+@@ -3601,21 +3619,23 @@ stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) 
+       done
+       rm -f include/unwind.h
+       cp $(UNWIND_H) include/unwind.h
+-      set -e; for ml in `cat fixinc_list`; do \
+-        sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
+-        multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
+-        fix_dir=include-fixed$${multi_dir}; \
+-        if $(LIMITS_H_TEST) ; then \
+-          cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
+-        else \
+-          cat $(srcdir)/glimits.h > tmp-xlimits.h; \
+-        fi; \
+-        $(mkinstalldirs) $${fix_dir}; \
+-        chmod a+rx $${fix_dir} || true; \
+-        rm -f $${fix_dir}/limits.h; \
+-        mv tmp-xlimits.h $${fix_dir}/limits.h; \
+-        chmod a+r $${fix_dir}/limits.h; \
+-      done
++      set -e; if [ -f fixinc_list ] ; then \
++        for ml in `cat fixinc_list`; do \
++          sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
++          multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
++          fix_dir=include-fixed$${multi_dir}; \
++          if $(LIMITS_H_TEST) ; then \
++            cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
++          else \
++            cat $(srcdir)/glimits.h > tmp-xlimits.h; \
++          fi; \
++          $(mkinstalldirs) $${fix_dir}; \
++          chmod a+rx $${fix_dir} || true; \
++          rm -f $${fix_dir}/limits.h; \
++          mv tmp-xlimits.h $${fix_dir}/limits.h; \
++          chmod a+r $${fix_dir}/limits.h; \
++        done; \
++      fi
+ # Install the README
+       rm -f include-fixed/README
+       cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
+@@ -4340,16 +4360,18 @@ real-install-headers-cp:
+ # Install supporting files for fixincludes to be run later.
+ install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-itoolsdirs \
+-  macro_list fixinc_list
++  macro_list
+       $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
+         $(DESTDIR)$(itoolsdatadir)/gsyslimits.h
+       $(INSTALL_DATA) macro_list $(DESTDIR)$(itoolsdatadir)/macro_list
+-      $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list
+-      set -e; for ml in `cat fixinc_list`; do \
+-        multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
+-        $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
+-        $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
+-      done
++      set -e; if [ -f fixinc_list ] ; then \
++        $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list; \
++        for ml in `cat fixinc_list`; do \
++          multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
++          $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
++          $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
++        done; \
++      fi
+       $(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
+               $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
+       if [ x$(STMP_FIXPROTO) != x ] ; then \
+--- a/gcc/addresses.h
++++ b/gcc/addresses.h
+@@ -78,3 +78,42 @@ regno_ok_for_base_p (unsigned regno, enu
  
    return ok_for_base_p_1 (regno, mode, outer_code, index_code);
  }
@@ -560,42 +693,9 @@ diff -Nur a/gcc/addresses.h b/gcc/addresses.h
 +
 +  return ok_for_index_p_1 (regno, mode);
 +}
-diff -Nur a/gcc/calls.c b/gcc/calls.c
---- a/gcc/calls.c      2009-02-20 12:19:34.000000000 +0100
-+++ b/gcc/calls.c      2010-01-25 09:50:28.955687088 +0100
-@@ -3803,7 +3803,7 @@
-      cse'ing of library calls could delete a call and leave the pop.  */
-   NO_DEFER_POP;
-   valreg = (mem_value == 0 && outmode != VOIDmode
--          ? hard_libcall_value (outmode) : NULL_RTX);
-+          ? hard_libcall_value (outmode, orgfun) : NULL_RTX);
-   /* Stack must be properly aligned now.  */
-   gcc_assert (!(stack_pointer_delta
-@@ -4048,8 +4048,17 @@
-             /* We need to make a save area.  */
-             unsigned int size = arg->locate.size.constant * BITS_PER_UNIT;
-             enum machine_mode save_mode = mode_for_size (size, MODE_INT, 1);
--            rtx adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
--            rtx stack_area = gen_rtx_MEM (save_mode, adr);
-+            rtx adr;
-+            rtx stack_area;
-+
-+            /* We can only use save_mode if the arg is sufficiently
-+               aligned.  */
-+            if (STRICT_ALIGNMENT
-+                && GET_MODE_ALIGNMENT (save_mode) > arg->locate.boundary)
-+              save_mode = BLKmode;
-+
-+            adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
-+            stack_area = gen_rtx_MEM (save_mode, adr);
-             if (save_mode == BLKmode)
-               {
-diff -Nur a/gcc/c-common.c b/gcc/c-common.c
---- a/gcc/c-common.c   2009-03-30 19:42:27.000000000 +0200
-+++ b/gcc/c-common.c   2010-01-25 09:50:28.955687088 +0100
-@@ -33,7 +33,6 @@
+--- a/gcc/c-common.c
++++ b/gcc/c-common.c
+@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3.  
  #include "varray.h"
  #include "expr.h"
  #include "c-common.h"
@@ -603,7 +703,7 @@ diff -Nur a/gcc/c-common.c b/gcc/c-common.c
  #include "tm_p.h"
  #include "obstack.h"
  #include "cpplib.h"
-@@ -42,6 +41,7 @@
+@@ -42,6 +41,7 @@ along with GCC; see the file COPYING3.  
  #include "tree-inline.h"
  #include "c-tree.h"
  #include "toplev.h"
@@ -611,7 +711,7 @@ diff -Nur a/gcc/c-common.c b/gcc/c-common.c
  #include "tree-iterator.h"
  #include "hashtab.h"
  #include "tree-mudflap.h"
-@@ -497,6 +497,10 @@
+@@ -497,6 +497,10 @@ tree (*make_fname_decl) (tree, int);
     This is a count, since unevaluated expressions can nest.  */
  int skip_evaluation;
  
@@ -622,7 +722,7 @@ diff -Nur a/gcc/c-common.c b/gcc/c-common.c
  /* Information about how a function name is generated.  */
  struct fname_var_t
  {
-@@ -7522,6 +7526,68 @@
+@@ -7522,6 +7526,68 @@ c_parse_error (const char *gmsgid, enum 
  #undef catenate_messages
  }
  
@@ -691,10 +791,9 @@ diff -Nur a/gcc/c-common.c b/gcc/c-common.c
  /* Walk a gimplified function and warn for functions whose return value is
     ignored and attribute((warn_unused_result)) is set.  This is done before
     inlining, so we don't have to worry about that.  */
-diff -Nur a/gcc/c-common.h b/gcc/c-common.h
---- a/gcc/c-common.h   2009-03-30 19:42:27.000000000 +0200
-+++ b/gcc/c-common.h   2010-01-25 09:50:28.955687088 +0100
-@@ -658,6 +658,11 @@
+--- a/gcc/c-common.h
++++ b/gcc/c-common.h
+@@ -658,6 +658,11 @@ extern int max_tinst_depth;
  
  extern int skip_evaluation;
  
@@ -706,10 +805,9 @@ diff -Nur a/gcc/c-common.h b/gcc/c-common.h
  /* C types are partitioned into three subsets: object, function, and
     incomplete types.  */
  #define C_TYPE_OBJECT_P(type) \
-diff -Nur a/gcc/c-convert.c b/gcc/c-convert.c
---- a/gcc/c-convert.c  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/c-convert.c  2010-01-25 09:50:28.955687088 +0100
-@@ -70,6 +70,7 @@
+--- a/gcc/c-convert.c
++++ b/gcc/c-convert.c
+@@ -70,6 +70,7 @@ convert (tree type, tree expr)
    tree e = expr;
    enum tree_code code = TREE_CODE (type);
    const char *invalid_conv_diag;
@@ -717,7 +815,7 @@ diff -Nur a/gcc/c-convert.c b/gcc/c-convert.c
  
    if (type == error_mark_node
        || expr == error_mark_node
-@@ -85,6 +86,9 @@
+@@ -85,6 +86,9 @@ convert (tree type, tree expr)
  
    if (type == TREE_TYPE (expr))
      return expr;
@@ -727,10 +825,9 @@ diff -Nur a/gcc/c-convert.c b/gcc/c-convert.c
  
    if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (expr)))
      return fold_convert (type, expr);
-diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
---- a/gcc/c-decl.c     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/c-decl.c     2010-01-25 09:50:28.955687088 +0100
-@@ -3994,6 +3994,7 @@
+--- a/gcc/c-decl.c
++++ b/gcc/c-decl.c
+@@ -4001,6 +4001,7 @@ grokdeclarator (const struct c_declarato
    bool bitfield = width != NULL;
    tree element_type;
    struct c_arg_info *arg_info = 0;
@@ -738,7 +835,7 @@ diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
  
    if (decl_context == FUNCDEF)
      funcdef_flag = true, decl_context = NORMAL;
-@@ -4531,6 +4532,12 @@
+@@ -4538,6 +4539,12 @@ grokdeclarator (const struct c_declarato
                error ("%qs declared as function returning an array", name);
                type = integer_type_node;
              }
@@ -751,7 +848,7 @@ diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
  
            /* Construct the function type and go to the next
               inner layer of declarator.  */
-@@ -5044,6 +5051,7 @@
+@@ -5051,6 +5058,7 @@ grokparms (struct c_arg_info *arg_info, 
      {
        tree parm, type, typelt;
        unsigned int parmno;
@@ -759,7 +856,7 @@ diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
  
        /* If there is a parameter of incomplete type in a definition,
         this is an error.  In a declaration this is valid, and a
-@@ -5087,6 +5095,14 @@
+@@ -5094,6 +5102,14 @@ grokparms (struct c_arg_info *arg_info, 
                }
            }
  
@@ -774,7 +871,7 @@ diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
          if (DECL_NAME (parm) && TREE_USED (parm))
            warn_if_shadowing (parm);
        }
-@@ -8071,7 +8087,7 @@
+@@ -8080,7 +8096,7 @@ c_write_global_declarations (void)
  
    /* Don't waste time on further processing if -fsyntax-only or we've
       encountered errors.  */
@@ -783,10 +880,205 @@ diff -Nur a/gcc/c-decl.c b/gcc/c-decl.c
      return;
  
    /* Close the external scope.  */
-diff -Nur a/gcc/cfgexpand.c b/gcc/cfgexpand.c
---- a/gcc/cfgexpand.c  2009-07-11 21:06:26.000000000 +0200
-+++ b/gcc/cfgexpand.c  2010-01-25 09:50:28.955687088 +0100
-@@ -488,7 +488,8 @@
+--- a/gcc/c-opts.c
++++ b/gcc/c-opts.c
+@@ -40,6 +40,7 @@ along with GCC; see the file COPYING3.  
+ #include "mkdeps.h"
+ #include "target.h"
+ #include "tm_p.h"
++#include "c-tree.h"           /* For c_cpp_error.  */
+ #ifndef DOLLARS_IN_IDENTIFIERS
+ # define DOLLARS_IN_IDENTIFIERS true
+@@ -201,6 +202,7 @@ c_common_init_options (unsigned int argc
+ {
+   static const unsigned int lang_flags[] = {CL_C, CL_ObjC, CL_CXX, CL_ObjCXX};
+   unsigned int i, result;
++  struct cpp_callbacks *cb;
+   /* This is conditionalized only because that is the way the front
+      ends used to do it.  Maybe this should be unconditional?  */
+@@ -216,6 +218,8 @@ c_common_init_options (unsigned int argc
+   parse_in = cpp_create_reader (c_dialect_cxx () ? CLK_GNUCXX: CLK_GNUC89,
+                               ident_hash, line_table);
++  cb = cpp_get_callbacks (parse_in);
++  cb->error = c_cpp_error;
+   cpp_opts = cpp_get_options (parse_in);
+   cpp_opts->dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
+@@ -333,12 +337,12 @@ c_common_handle_option (size_t scode, co
+        or environment var dependency generation is used.  */
+       cpp_opts->deps.style = (code == OPT_M ? DEPS_SYSTEM: DEPS_USER);
+       flag_no_output = 1;
+-      cpp_opts->inhibit_warnings = 1;
+       break;
+     case OPT_MD:
+     case OPT_MMD:
+       cpp_opts->deps.style = (code == OPT_MD ? DEPS_SYSTEM: DEPS_USER);
++      cpp_opts->deps.need_preprocessor_output = true;
+       deps_file = arg;
+       break;
+@@ -444,7 +448,6 @@ c_common_handle_option (size_t scode, co
+       break;
+     case OPT_Werror:
+-      cpp_opts->warnings_are_errors = value;
+       global_dc->warning_as_error_requested = value;
+       break;
+@@ -503,10 +506,6 @@ c_common_handle_option (size_t scode, co
+       warn_strict_null_sentinel = value;
+       break;
+-    case OPT_Wsystem_headers:
+-      cpp_opts->warn_system_headers = value;
+-      break;
+-
+     case OPT_Wtraditional:
+       cpp_opts->warn_traditional = value;
+       break;
+@@ -895,8 +894,6 @@ c_common_handle_option (size_t scode, co
+        c_common_post_options, so that a subsequent -Wno-endif-labels
+        is not overridden.  */
+     case OPT_pedantic_errors:
+-      cpp_opts->pedantic_errors = 1;
+-      /* Fall through.  */
+     case OPT_pedantic:
+       cpp_opts->pedantic = 1;
+       cpp_opts->warn_endif_labels = 1;
+@@ -971,10 +968,6 @@ c_common_handle_option (size_t scode, co
+       flag_undef = 1;
+       break;
+-    case OPT_w:
+-      cpp_opts->inhibit_warnings = 1;
+-      break;
+-
+     case OPT_v:
+       verbose = true;
+       break;
+@@ -1159,10 +1152,6 @@ c_common_post_options (const char **pfil
+   input_location = UNKNOWN_LOCATION;
+-  /* If an error has occurred in cpplib, note it so we fail
+-     immediately.  */
+-  errorcount += cpp_errors (parse_in);
+-
+   *pfilename = this_input_filename
+     = cpp_read_main_file (parse_in, in_fnames[0]);
+   /* Don't do any compilation or preprocessing if there is no input file.  */
+@@ -1274,7 +1263,8 @@ c_common_finish (void)
+ {
+   FILE *deps_stream = NULL;
+-  if (cpp_opts->deps.style != DEPS_NONE)
++  /* Don't write the deps file if there are errors.  */
++  if (cpp_opts->deps.style != DEPS_NONE && errorcount == 0)
+     {
+       /* If -M or -MM was seen without -MF, default output to the
+        output stream.  */
+@@ -1290,7 +1280,7 @@ c_common_finish (void)
+   /* For performance, avoid tearing down cpplib's internal structures
+      with cpp_destroy ().  */
+-  errorcount += cpp_finish (parse_in, deps_stream);
++  cpp_finish (parse_in, deps_stream);
+   if (deps_stream && deps_stream != out_stream
+       && (ferror (deps_stream) || fclose (deps_stream)))
+--- a/gcc/c-ppoutput.c
++++ b/gcc/c-ppoutput.c
+@@ -521,6 +521,7 @@ pp_file_change (const struct line_map *m
+   if (map != NULL)
+     {
++      input_location = map->start_location;
+       if (print.first_time)
+       {
+         /* Avoid printing foo.i when the main file is foo.c.  */
+--- a/gcc/c-tree.h
++++ b/gcc/c-tree.h
+@@ -647,4 +647,8 @@ extern void c_write_global_declarations 
+ extern void pedwarn_c90 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4);
+ extern void pedwarn_c99 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4);
++extern bool c_cpp_error (cpp_reader *, int, location_t, unsigned int,
++                       const char *, va_list *)
++     ATTRIBUTE_GCC_CDIAG(5,0);
++
+ #endif /* ! GCC_C_TREE_H */
+--- a/gcc/c-typeck.c
++++ b/gcc/c-typeck.c
+@@ -1765,6 +1765,7 @@ default_conversion (tree exp)
+   tree orig_exp;
+   tree type = TREE_TYPE (exp);
+   enum tree_code code = TREE_CODE (type);
++  tree promoted_type;
+   /* Functions and arrays have been converted during parsing.  */
+   gcc_assert (code != FUNCTION_TYPE);
+@@ -1801,6 +1802,10 @@ default_conversion (tree exp)
+   if (exp == error_mark_node)
+     return error_mark_node;
++  promoted_type = targetm.promoted_type (type);
++  if (promoted_type)
++    return convert (promoted_type, exp);
++
+   if (INTEGRAL_TYPE_P (type))
+     return perform_integral_promotions (exp);
+--- a/gcc/c.opt
++++ b/gcc/c.opt
+@@ -720,6 +720,10 @@ fpreprocessed
+ C ObjC C++ ObjC++
+ Treat the input file as already preprocessed
++fremove-local-statics
++C C++ Var(flag_remove_local_statics) Optimization
++Convert function-local static variables to automatic variables when it is safe to do so
++
+ freplace-objc-classes
+ ObjC ObjC++
+ Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
+--- a/gcc/calls.c
++++ b/gcc/calls.c
+@@ -3806,7 +3806,7 @@ emit_library_call_value_1 (int retval, r
+      cse'ing of library calls could delete a call and leave the pop.  */
+   NO_DEFER_POP;
+   valreg = (mem_value == 0 && outmode != VOIDmode
+-          ? hard_libcall_value (outmode) : NULL_RTX);
++          ? hard_libcall_value (outmode, orgfun) : NULL_RTX);
+   /* Stack must be properly aligned now.  */
+   gcc_assert (!(stack_pointer_delta
+@@ -4051,8 +4051,17 @@ store_one_arg (struct arg_data *arg, rtx
+             /* We need to make a save area.  */
+             unsigned int size = arg->locate.size.constant * BITS_PER_UNIT;
+             enum machine_mode save_mode = mode_for_size (size, MODE_INT, 1);
+-            rtx adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
+-            rtx stack_area = gen_rtx_MEM (save_mode, adr);
++            rtx adr;
++            rtx stack_area;
++
++            /* We can only use save_mode if the arg is sufficiently
++               aligned.  */
++            if (STRICT_ALIGNMENT
++                && GET_MODE_ALIGNMENT (save_mode) > arg->locate.boundary)
++              save_mode = BLKmode;
++
++            adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
++            stack_area = gen_rtx_MEM (save_mode, adr);
+             if (save_mode == BLKmode)
+               {
+--- a/gcc/cfgexpand.c
++++ b/gcc/cfgexpand.c
+@@ -488,7 +488,8 @@ get_decl_align_unit (tree decl)
  {
    unsigned int align;
  
@@ -796,10 +1088,9 @@ diff -Nur a/gcc/cfgexpand.c b/gcc/cfgexpand.c
  
    if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
      align = MAX_SUPPORTED_STACK_ALIGNMENT;
-diff -Nur a/gcc/cgraph.c b/gcc/cgraph.c
---- a/gcc/cgraph.c     2008-11-16 23:31:58.000000000 +0100
-+++ b/gcc/cgraph.c     2010-01-25 09:50:28.955687088 +0100
-@@ -475,9 +475,11 @@
+--- a/gcc/cgraph.c
++++ b/gcc/cgraph.c
+@@ -475,9 +475,11 @@ cgraph_node (tree decl)
    if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)
      {
        node->origin = cgraph_node (DECL_CONTEXT (decl));
@@ -811,10 +1102,9 @@ diff -Nur a/gcc/cgraph.c b/gcc/cgraph.c
      }
    if (assembler_name_hash)
      {
-diff -Nur a/gcc/cgraph.h b/gcc/cgraph.h
---- a/gcc/cgraph.h     2009-03-23 17:29:33.000000000 +0100
-+++ b/gcc/cgraph.h     2010-01-25 09:50:28.955687088 +0100
-@@ -185,6 +185,8 @@
+--- a/gcc/cgraph.h
++++ b/gcc/cgraph.h
+@@ -185,6 +185,8 @@ struct cgraph_node GTY((chain_next ("%h.
    unsigned output : 1;
    /* Set for aliases once they got through assemble_alias.  */
    unsigned alias : 1;
@@ -823,10 +1113,9 @@ diff -Nur a/gcc/cgraph.h b/gcc/cgraph.h
  
    /* In non-unit-at-a-time mode the function body of inline candidates is saved
       into clone before compiling so the function in original form can be
-diff -Nur a/gcc/common.opt b/gcc/common.opt
---- a/gcc/common.opt   2009-03-28 18:28:45.000000000 +0100
-+++ b/gcc/common.opt   2010-01-25 09:50:28.955687088 +0100
-@@ -153,6 +153,10 @@
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -153,6 +153,10 @@ Wpadded
  Common Var(warn_padded) Warning
  Warn when padding is required to align structure members
  
@@ -837,7 +1126,7 @@ diff -Nur a/gcc/common.opt b/gcc/common.opt
  Wshadow
  Common Var(warn_shadow) Warning
  Warn when one local variable shadows another
-@@ -270,6 +274,12 @@
+@@ -270,6 +274,12 @@ Common Separate
  fabi-version=
  Common Joined UInteger Var(flag_abi_version) Init(2)
  
@@ -850,7 +1139,7 @@ diff -Nur a/gcc/common.opt b/gcc/common.opt
  falign-functions
  Common Report Var(align_functions,0) Optimization UInteger
  Align the start of functions
-@@ -467,6 +477,10 @@
+@@ -467,6 +477,10 @@ fearly-inlining
  Common Report Var(flag_early_inlining) Init(1) Optimization
  Perform early inlining
  
@@ -861,7 +1150,7 @@ diff -Nur a/gcc/common.opt b/gcc/common.opt
  feliminate-dwarf2-dups
  Common Report Var(flag_eliminate_dwarf2_dups)
  Perform DWARF2 duplicate elimination
-@@ -895,6 +909,10 @@
+@@ -895,6 +909,10 @@ fprofile-values
  Common Report Var(flag_profile_values)
  Insert code to profile values of expressions
  
@@ -872,7 +1161,7 @@ diff -Nur a/gcc/common.opt b/gcc/common.opt
  frandom-seed
  Common
  
-@@ -1227,6 +1245,15 @@
+@@ -1227,6 +1245,15 @@ ftree-pre
  Common Report Var(flag_tree_pre) Optimization
  Enable SSA-PRE optimization on trees
  
@@ -888,154 +1177,473 @@ diff -Nur a/gcc/common.opt b/gcc/common.opt
  ftree-reassoc
  Common Report Var(flag_tree_reassoc) Init(1) Optimization
  Enable reassociation on tree level
-diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
---- a/gcc/config/arm/arm.c     2009-06-02 09:18:16.000000000 +0200
-+++ b/gcc/config/arm/arm.c     2010-01-25 09:50:28.975687047 +0100
-@@ -43,6 +43,7 @@
- #include "optabs.h"
- #include "toplev.h"
- #include "recog.h"
-+#include "cgraph.h"
- #include "ggc.h"
- #include "except.h"
- #include "c-pragma.h"
-@@ -53,6 +54,8 @@
- #include "debug.h"
- #include "langhooks.h"
- #include "df.h"
-+#include "intl.h"
-+#include "params.h"
- /* Forward definitions of types.  */
- typedef struct minipool_node    Mnode;
-@@ -110,6 +113,7 @@
- static unsigned long arm_isr_value (tree);
- static unsigned long arm_compute_func_type (void);
- static tree arm_handle_fndecl_attribute (tree *, tree, tree, int, bool *);
-+static tree arm_handle_pcs_attribute (tree *, tree, tree, int, bool *);
- static tree arm_handle_isr_attribute (tree *, tree, tree, int, bool *);
- #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
- static tree arm_handle_notshared_attribute (tree *, tree, tree, int, bool *);
-@@ -123,6 +127,10 @@
- static int count_insns_for_constant (HOST_WIDE_INT, int);
- static int arm_get_strip_length (int);
- static bool arm_function_ok_for_sibcall (tree, tree);
-+static bool arm_return_in_memory (const_tree, const_tree);
-+static rtx arm_function_value (const_tree, const_tree, bool);
-+static rtx arm_libcall_value (enum machine_mode, rtx);
-+
- static void arm_internal_label (FILE *, const char *, unsigned long);
- static void arm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT,
-                                tree);
-@@ -148,6 +156,9 @@
- static rtx emit_set_insn (rtx, rtx);
- static int arm_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode,
-                                 tree, bool);
-+static rtx aapcs_allocate_return_reg (enum machine_mode, const_tree,
-+                                    const_tree);
-+static int aapcs_select_return_coproc (const_tree, const_tree);
- #ifdef OBJECT_FORMAT_ELF
- static void arm_elf_asm_constructor (rtx, int) ATTRIBUTE_UNUSED;
-@@ -175,6 +186,7 @@
- static bool arm_output_ttype (rtx);
- #endif
- static void arm_dwarf_handle_frame_unspec (const char *, rtx, int);
-+static rtx arm_dwarf_register_span(rtx);
- static tree arm_cxx_guard_type (void);
- static bool arm_cxx_guard_mask_bit (void);
-@@ -197,6 +209,15 @@
- static int arm_issue_rate (void);
- static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
- static bool arm_allocate_stack_slots_for_args (void);
-+static bool arm_warn_func_result (void);
-+static int arm_multipass_dfa_lookahead (void);
-+static const char *arm_invalid_parameter_type (const_tree t);
-+static const char *arm_invalid_return_type (const_tree t);
-+static tree arm_promoted_type (const_tree t);
-+static tree arm_convert_to_type (tree type, tree expr);
-+static bool arm_scalar_mode_supported_p (enum machine_mode);
-+static int arm_vector_min_alignment (const_tree type);
-+static bool arm_vector_always_misalign(const_tree);
\f
- /* Initialize the GCC target structure.  */
-@@ -256,6 +277,12 @@
- #undef  TARGET_FUNCTION_OK_FOR_SIBCALL
- #define TARGET_FUNCTION_OK_FOR_SIBCALL arm_function_ok_for_sibcall
-+#undef  TARGET_FUNCTION_VALUE
-+#define TARGET_FUNCTION_VALUE arm_function_value
-+
-+#undef  TARGET_LIBCALL_VALUE
-+#define TARGET_LIBCALL_VALUE arm_libcall_value
-+
- #undef  TARGET_ASM_OUTPUT_MI_THUNK
- #define TARGET_ASM_OUTPUT_MI_THUNK arm_output_mi_thunk
- #undef  TARGET_ASM_CAN_OUTPUT_MI_THUNK
-@@ -299,6 +326,9 @@
- #undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS
- #define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS arm_allocate_stack_slots_for_args
-+#undef TARGET_WARN_FUNC_RESULT
-+#define TARGET_WARN_FUNC_RESULT arm_warn_func_result
-+
- #undef TARGET_DEFAULT_SHORT_ENUMS
- #define TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums
-@@ -353,6 +383,9 @@
- #undef TARGET_ASM_TTYPE
- #define TARGET_ASM_TTYPE arm_output_ttype
-+#undef TARGET_CXX_TTYPE_REF_ENCODE
-+#define TARGET_CXX_TTYPE_REF_ENCODE hook_cxx_ttype_ref_in_bit0
-+
- #undef TARGET_ARM_EABI_UNWINDER
- #define TARGET_ARM_EABI_UNWINDER true
- #endif /* TARGET_UNWIND_INFO */
-@@ -360,6 +393,9 @@
- #undef TARGET_DWARF_HANDLE_FRAME_UNSPEC
- #define TARGET_DWARF_HANDLE_FRAME_UNSPEC arm_dwarf_handle_frame_unspec
-+#undef TARGET_DWARF_REGISTER_SPAN
-+#define TARGET_DWARF_REGISTER_SPAN arm_dwarf_register_span
-+
- #undef  TARGET_CANNOT_COPY_INSN_P
- #define TARGET_CANNOT_COPY_INSN_P arm_cannot_copy_insn_p
-@@ -398,6 +434,30 @@
- #define TARGET_ASM_OUTPUT_DWARF_DTPREL arm_output_dwarf_dtprel
- #endif
-+#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
-+#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD arm_multipass_dfa_lookahead
-+
-+#undef TARGET_INVALID_PARAMETER_TYPE
-+#define TARGET_INVALID_PARAMETER_TYPE arm_invalid_parameter_type
-+
-+#undef TARGET_INVALID_RETURN_TYPE
-+#define TARGET_INVALID_RETURN_TYPE arm_invalid_return_type
-+
-+#undef TARGET_PROMOTED_TYPE
-+#define TARGET_PROMOTED_TYPE arm_promoted_type
-+
-+#undef TARGET_CONVERT_TO_TYPE
-+#define TARGET_CONVERT_TO_TYPE arm_convert_to_type
-+
-+#undef TARGET_SCALAR_MODE_SUPPORTED_P
-+#define TARGET_SCALAR_MODE_SUPPORTED_P arm_scalar_mode_supported_p
-+
-+#undef TARGET_VECTOR_MIN_ALIGNMENT
-+#define TARGET_VECTOR_MIN_ALIGNMENT arm_vector_min_alignment
-+
-+#undef TARGET_VECTOR_ALWAYS_MISALIGN
-+#define TARGET_VECTOR_ALWAYS_MISALIGN arm_vector_always_misalign
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -1088,7 +1088,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
+                       tmake_file="${tmake_file} i386/t-linux64"
+                       need_64bit_hwint=yes
+                       case X"${with_cpu}" in
+-                      Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
++                      Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
+                               ;;
+                       X)
+                               if test x$with_cpu_64 = x; then
+@@ -1097,7 +1097,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
+                               ;;
+                       *)
+                               echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
+-                              echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
++                              echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
+                               exit 1
+                               ;;
+                       esac
+@@ -1202,7 +1202,7 @@ i[34567]86-*-solaris2*)
+               # libgcc/configure.ac instead.
+               need_64bit_hwint=yes
+               case X"${with_cpu}" in
+-              Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
++              Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
+                       ;;
+               X)
+                       if test x$with_cpu_64 = x; then
+@@ -1211,7 +1211,7 @@ i[34567]86-*-solaris2*)
+                       ;;
+               *)
+                       echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
+-                      echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
++                      echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
+                       exit 1
+                       ;;
+               esac
+@@ -1573,6 +1573,7 @@ mips64*-*-linux* | mipsisa64*-*-linux*)
+                       tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
+                       ;;
+       esac
++      tmake_file="$tmake_file mips/t-crtfm"
+       gnu_ld=yes
+       gas=yes
+       test x$with_llsc != x || with_llsc=yes
+@@ -1803,6 +1804,10 @@ powerpc-*-elf*)
+       tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h"
+       extra_options="${extra_options} rs6000/sysv4.opt"
+       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
++      if test x$enable_powerpc_e500mc_elf = xyes; then
++        tm_file="${tm_file} rs6000/e500mc.h"
++        tmake_file="${tmake_file} rs6000/t-ppc-e500mc"
++      fi
+       ;;
+ powerpc-*-eabialtivec*)
+       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabialtivec.h"
+@@ -2016,9 +2021,14 @@ sh-*-symbianelf* | sh[12346l]*-*-symbian
+               *)                                 with_endian=big,little ;;
+               esac
+       fi
++      # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
++      #  First word : the default endian.
++      #  Second word: the secondary endian (optional).
+       case ${with_endian} in
+-      big|little)     tmake_file="${tmake_file} sh/t-1e" ;;
+-      big,little|little,big) ;;
++      big)            TM_ENDIAN_CONFIG=mb ;;
++      little)         TM_ENDIAN_CONFIG=ml ;;
++      big,little)     TM_ENDIAN_CONFIG="mb ml" ;;
++      little,big)     TM_ENDIAN_CONFIG="ml mb" ;;
+       *)      echo "with_endian=${with_endian} not supported."; exit 1 ;;
+       esac
+       case ${with_endian} in
+@@ -2125,7 +2135,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbian
+       *)      echo "with_cpu=$with_cpu not supported"; exit 1 ;;
+       esac
+       sh_multilibs=${with_multilib_list}
+-      if test x${sh_multilibs} = x ; then
++      if test "$sh_multilibs" = "default" ; then
+               case ${target} in
+               sh64-superh-linux* | \
+               sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
+@@ -2141,25 +2151,32 @@ sh-*-symbianelf* | sh[12346l]*-*-symbian
+       fi
+       target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
+       tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
+-      sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[  ,/][    ,]*/ /g' -e 's/ $//' -e 's/^m/sh/' -e 's/ m/ sh/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
++      tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
++      sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^sh/m/i' -e 's/ sh/ m/gi' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
+       for sh_multilib in ${sh_multilibs}; do
+               case ${sh_multilib} in
+-              sh1 | sh2 | sh2e | sh3 | sh3e | \
+-              sh4 | sh4-single | sh4-single-only | sh4-nofpu | sh4-300 |\
+-              sh4a | sh4a-single | sh4a-single-only | sh4a-nofpu | sh4al | \
+-              sh2a | sh2a-single | sh2a-single-only | sh2a-nofpu | \
+-              sh5-64media | sh5-64media-nofpu | \
+-              sh5-32media | sh5-32media-nofpu | \
+-              sh5-compact | sh5-compact-nofpu)
+-                      tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}"
+-                      tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
+-                      ;;
++              m1 | m2 | m2e | m3 | m3e | \
++              m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
++              m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
++              m2a | m2a-single | m2a-single-only | m2a-nofpu | \
++              m5-64media | m5-64media-nofpu | \
++              m5-32media | m5-32media-nofpu | \
++              m5-compact | m5-compact-nofpu)
++                      # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
++                      # It is passed to MULTIILIB_OPTIONS verbatim.
++                      TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
++                      tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
++                      ;;
++              \!*)    # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
++                      # It is passed the MULTILIB_EXCEPTIONS verbatim.
++                      TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
+               *)
+                       echo "with_multilib_list=${sh_multilib} not supported."
+                       exit 1
+                       ;;
+               esac
+       done
++      TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
+       if test x${enable_incomplete_targets} = xyes ; then
+               tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1"
+       fi
+@@ -2427,6 +2444,8 @@ i[34567]86-*-linux* | x86_64-*-linux*)
+ i[34567]86-*-* | x86_64-*-*)
+       tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
+       ;;
++powerpc*-*-* | rs6000-*-*)
++      tm_file="${tm_file} rs6000/option-defaults.h"
+ esac
+ # Support for --with-cpu and related options (and a few unrelated options,
+@@ -2653,8 +2672,8 @@ case "${target}" in
+               | armv[23456] | armv2a | armv3m | armv4t | armv5t \
+               | armv5te | armv6j |armv6k | armv6z | armv6zk | armv6-m \
+               | armv7 | armv7-a | armv7-r | armv7-m \
+-              | iwmmxt | ep9312)
+-                      # OK
++              | iwmmxt | ep9312 | marvell-f )
++                      # OK
+                       ;;
+               *)
+                       echo "Unknown arch used in --with-arch=$with_arch" 1>&2
+@@ -2675,7 +2694,10 @@ case "${target}" in
+               case "$with_fpu" in
+               "" \
+-              | fpa | fpe2 | fpe3 | maverick | vfp | vfp3 | vfpv3 | vfpv3-d16 | neon )
++              | fpa | fpe2 | fpe3 | maverick \
++              | vfp | vfp3 | vfpv3 | vfpv3-fp16 | vfpv3-d16 \
++              | vfpv3-d16-fp16 | vfpv4 | vfpv4-d16 | fpv4-sp-d16 \
++              | neon | neon-fp16 | neon-vfpv4 )
+                       # OK
+                       ;;
+               *)
+@@ -2812,7 +2834,7 @@ case "${target}" in
+                               esac
+                               # OK
+                               ;;
+-                      "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic)
++                      "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | atom | generic)
+                               # OK
+                               ;;
+                       *)
+@@ -2824,7 +2846,7 @@ case "${target}" in
+               ;;
+       mips*-*-*)
+-              supported_defaults="abi arch float tune divide llsc mips-plt"
++              supported_defaults="abi arch arch_32 arch_64 float tune tune_32 tune_64 divide llsc mips-plt"
+               case ${with_float} in
+               "" | soft | hard)
+@@ -2889,12 +2911,20 @@ case "${target}" in
+               ;;
+       powerpc*-*-* | rs6000-*-*)
+-              supported_defaults="cpu float tune"
++              supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
+-              for which in cpu tune; do
++              for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
+                       eval "val=\$with_$which"
+                       case ${val} in
+                       default32 | default64)
++                              case $which in
++                              cpu | tune)
++                                      ;;
++                              *)
++                                      echo "$val only valid for --with-cpu and --with-tune." 1>&2
++                                      exit 1
++                                      ;;
++                              esac
+                               with_which="with_$which"
+                               eval $with_which=
+                               ;;
+--- a/gcc/config.in
++++ b/gcc/config.in
+@@ -108,6 +108,12 @@
+ #endif
++/* Define to warn for use of native system header directories */
++#ifndef USED_FOR_TARGET
++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
++#endif
++
++
+ /* Define if you want all operations on RTL (the basic data structure of the
+    optimizer and back end) to be checked for dynamic type safety at runtime.
+    This is quite expensive. */
+@@ -821,6 +827,13 @@
+ #endif
++/* Define if your assembler supports specifying the alignment of objects
++   allocated using the GAS .comm command. */
++#ifndef USED_FOR_TARGET
++#undef HAVE_GAS_ALIGNED_COMM
++#endif
++
++
+ /* Define if your assembler supports .balign and .p2align. */
+ #ifndef USED_FOR_TARGET
+ #undef HAVE_GAS_BALIGN_AND_P2ALIGN
+--- a/gcc/config/arm/arm-cores.def
++++ b/gcc/config/arm/arm-cores.def
+@@ -104,6 +104,7 @@ ARM_CORE("arm1022e",      arm1022e,        5TE,
+ ARM_CORE("xscale",        xscale,     5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale)
+ ARM_CORE("iwmmxt",        iwmmxt,     5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
+ ARM_CORE("iwmmxt2",       iwmmxt2,    5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
++ARM_CORE("marvell-f",   marvell_f,    5TE,                             FL_LDSCHED | FL_VFPV2 | FL_MARVELL_F, 9e)
+ /* V5TEJ Architecture Processors */
+ ARM_CORE("arm926ej-s",    arm926ejs,  5TEJ,                            FL_LDSCHED, 9e)
+@@ -117,9 +118,13 @@ ARM_CORE("arm1176jzf-s",  arm1176jzfs,    6
+ ARM_CORE("mpcorenovfp",         mpcorenovfp,  6K,                              FL_LDSCHED, 9e)
+ ARM_CORE("mpcore",      mpcore,       6K,                              FL_LDSCHED | FL_VFPV2, 9e)
+ ARM_CORE("arm1156t2-s",         arm1156t2s,   6T2,                             FL_LDSCHED, 9e)
++
++/* V7 Architecture Processors */
++ARM_CORE("cortex-a5",   cortexa5,     7A,                              FL_LDSCHED, 9e)
+ ARM_CORE("cortex-a8",   cortexa8,     7A,                              FL_LDSCHED, 9e)
+ ARM_CORE("cortex-a9",   cortexa9,     7A,                              FL_LDSCHED, 9e)
+ ARM_CORE("cortex-r4",   cortexr4,     7R,                              FL_LDSCHED, 9e)
+ ARM_CORE("cortex-r4f",          cortexr4f,    7R,                              FL_LDSCHED, 9e)
+ ARM_CORE("cortex-m3",   cortexm3,     7M,                              FL_LDSCHED, 9e)
+ ARM_CORE("cortex-m1",   cortexm1,     6M,                              FL_LDSCHED, 9e)
++ARM_CORE("cortex-m0",   cortexm0,     6M,                              FL_LDSCHED, 9e)
+--- a/gcc/config/arm/arm-modes.def
++++ b/gcc/config/arm/arm-modes.def
+@@ -25,6 +25,11 @@
+    FIXME What format is this?  */
+ FLOAT_MODE (XF, 12, 0);
++/* Half-precision floating point */
++FLOAT_MODE (HF, 2, 0);
++ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
++                        ? &arm_half_format : &ieee_half_format));
++
+ /* CCFPEmode should be used with floating inequalities,
+    CCFPmode should be used with floating equalities.
+    CC_NOOVmode should be used with SImode integer equalities.
+@@ -62,6 +67,4 @@ VECTOR_MODES (FLOAT, 16);     /*       V
+ INT_MODE (EI, 24);
+ INT_MODE (OI, 32);
+ INT_MODE (CI, 48);
+-/* ??? This should actually have 512 bits but the precision only has 9
+-   bits.  */
+-FRACTIONAL_INT_MODE (XI, 511, 64);
++INT_MODE (XI, 64);
+--- a/gcc/config/arm/arm-protos.h
++++ b/gcc/config/arm/arm-protos.h
+@@ -88,7 +88,7 @@ extern bool arm_cannot_force_const_mem (
+ extern int cirrus_memory_offset (rtx);
+ extern int arm_coproc_mem_operand (rtx, bool);
+-extern int neon_vector_mem_operand (rtx, bool);
++extern int neon_vector_mem_operand (rtx, int);
+ extern int neon_struct_mem_operand (rtx);
+ extern int arm_no_early_store_addr_dep (rtx, rtx);
+ extern int arm_no_early_alu_shift_dep (rtx, rtx);
+@@ -144,6 +144,7 @@ extern void arm_final_prescan_insn (rtx)
+ extern int arm_debugger_arg_offset (int, rtx);
+ extern bool arm_is_long_call_p (tree);
+ extern int    arm_emit_vector_const (FILE *, rtx);
++extern void arm_emit_fp16_const (rtx c);
+ extern const char * arm_output_load_gr (rtx *);
+ extern const char *vfp_output_fstmd (rtx *);
+ extern void arm_set_return_address (rtx, rtx);
+@@ -154,13 +155,15 @@ extern bool arm_output_addr_const_extra 
+ #if defined TREE_CODE
+ extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
++extern void arm_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode,
++                                    tree, bool);
+ extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
+ extern bool arm_pad_arg_upward (enum machine_mode, const_tree);
+ extern bool arm_pad_reg_upward (enum machine_mode, tree, int);
+ extern bool arm_needs_doubleword_align (enum machine_mode, tree);
+-extern rtx arm_function_value(const_tree, const_tree);
+ #endif
+ extern int arm_apply_result_size (void);
++extern rtx aapcs_libcall_value (enum machine_mode);
+ #endif /* RTX_CODE */
+--- a/gcc/config/arm/arm-tune.md
++++ b/gcc/config/arm/arm-tune.md
+@@ -1,5 +1,5 @@
+ ;; -*- buffer-read-only: t -*-
+ ;; Generated automatically by gentune.sh from arm-cores.def
+ (define_attr "tune"
+-      "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm3,cortexm1"
++      "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,marvell_f,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,cortexa5,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm3,cortexm1,cortexm0"
+       (const (symbol_ref "arm_tune")))
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -43,6 +43,7 @@
+ #include "optabs.h"
+ #include "toplev.h"
+ #include "recog.h"
++#include "cgraph.h"
+ #include "ggc.h"
+ #include "except.h"
+ #include "c-pragma.h"
+@@ -54,6 +55,8 @@
+ #include "langhooks.h"
+ #include "df.h"
+ #include "libfuncs.h"
++#include "intl.h"
++#include "params.h"
+ /* Forward definitions of types.  */
+ typedef struct minipool_node    Mnode;
+@@ -111,6 +114,7 @@ static unsigned long arm_compute_save_re
+ static unsigned long arm_isr_value (tree);
+ static unsigned long arm_compute_func_type (void);
+ static tree arm_handle_fndecl_attribute (tree *, tree, tree, int, bool *);
++static tree arm_handle_pcs_attribute (tree *, tree, tree, int, bool *);
+ static tree arm_handle_isr_attribute (tree *, tree, tree, int, bool *);
+ #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
+ static tree arm_handle_notshared_attribute (tree *, tree, tree, int, bool *);
+@@ -124,6 +128,10 @@ static int arm_adjust_cost (rtx, rtx, rt
+ static int count_insns_for_constant (HOST_WIDE_INT, int);
+ static int arm_get_strip_length (int);
+ static bool arm_function_ok_for_sibcall (tree, tree);
++static bool arm_return_in_memory (const_tree, const_tree);
++static rtx arm_function_value (const_tree, const_tree, bool);
++static rtx arm_libcall_value (enum machine_mode, rtx);
++
+ static void arm_internal_label (FILE *, const char *, unsigned long);
+ static void arm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT,
+                                tree);
+@@ -149,6 +157,9 @@ static void emit_constant_insn (rtx cond
+ static rtx emit_set_insn (rtx, rtx);
+ static int arm_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode,
+                                 tree, bool);
++static rtx aapcs_allocate_return_reg (enum machine_mode, const_tree,
++                                    const_tree);
++static int aapcs_select_return_coproc (const_tree, const_tree);
+ #ifdef OBJECT_FORMAT_ELF
+ static void arm_elf_asm_constructor (rtx, int) ATTRIBUTE_UNUSED;
+@@ -176,6 +187,7 @@ static void arm_unwind_emit (FILE *, rtx
+ static bool arm_output_ttype (rtx);
+ #endif
+ static void arm_dwarf_handle_frame_unspec (const char *, rtx, int);
++static rtx arm_dwarf_register_span(rtx);
+ static tree arm_cxx_guard_type (void);
+ static bool arm_cxx_guard_mask_bit (void);
+@@ -198,6 +210,15 @@ static bool arm_tls_symbol_p (rtx x);
+ static int arm_issue_rate (void);
+ static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
+ static bool arm_allocate_stack_slots_for_args (void);
++static bool arm_warn_func_result (void);
++static int arm_multipass_dfa_lookahead (void);
++static const char *arm_invalid_parameter_type (const_tree t);
++static const char *arm_invalid_return_type (const_tree t);
++static tree arm_promoted_type (const_tree t);
++static tree arm_convert_to_type (tree type, tree expr);
++static bool arm_scalar_mode_supported_p (enum machine_mode);
++static int arm_vector_min_alignment (const_tree type);
++static bool arm_vector_always_misalign(const_tree);
\f
+ /* Initialize the GCC target structure.  */
+@@ -257,6 +278,12 @@ static bool arm_allocate_stack_slots_for
+ #undef  TARGET_FUNCTION_OK_FOR_SIBCALL
+ #define TARGET_FUNCTION_OK_FOR_SIBCALL arm_function_ok_for_sibcall
++#undef  TARGET_FUNCTION_VALUE
++#define TARGET_FUNCTION_VALUE arm_function_value
++
++#undef  TARGET_LIBCALL_VALUE
++#define TARGET_LIBCALL_VALUE arm_libcall_value
++
+ #undef  TARGET_ASM_OUTPUT_MI_THUNK
+ #define TARGET_ASM_OUTPUT_MI_THUNK arm_output_mi_thunk
+ #undef  TARGET_ASM_CAN_OUTPUT_MI_THUNK
+@@ -300,6 +327,9 @@ static bool arm_allocate_stack_slots_for
+ #undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS
+ #define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS arm_allocate_stack_slots_for_args
++#undef TARGET_WARN_FUNC_RESULT
++#define TARGET_WARN_FUNC_RESULT arm_warn_func_result
++
+ #undef TARGET_DEFAULT_SHORT_ENUMS
+ #define TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums
+@@ -354,6 +384,9 @@ static bool arm_allocate_stack_slots_for
+ #undef TARGET_ASM_TTYPE
+ #define TARGET_ASM_TTYPE arm_output_ttype
++#undef TARGET_CXX_TTYPE_REF_ENCODE
++#define TARGET_CXX_TTYPE_REF_ENCODE hook_cxx_ttype_ref_in_bit0
++
+ #undef TARGET_ARM_EABI_UNWINDER
+ #define TARGET_ARM_EABI_UNWINDER true
+ #endif /* TARGET_UNWIND_INFO */
+@@ -361,6 +394,9 @@ static bool arm_allocate_stack_slots_for
+ #undef TARGET_DWARF_HANDLE_FRAME_UNSPEC
+ #define TARGET_DWARF_HANDLE_FRAME_UNSPEC arm_dwarf_handle_frame_unspec
++#undef TARGET_DWARF_REGISTER_SPAN
++#define TARGET_DWARF_REGISTER_SPAN arm_dwarf_register_span
++
+ #undef  TARGET_CANNOT_COPY_INSN_P
+ #define TARGET_CANNOT_COPY_INSN_P arm_cannot_copy_insn_p
+@@ -399,6 +435,30 @@ static bool arm_allocate_stack_slots_for
+ #define TARGET_ASM_OUTPUT_DWARF_DTPREL arm_output_dwarf_dtprel
+ #endif
++#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
++#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD arm_multipass_dfa_lookahead
++
++#undef TARGET_INVALID_PARAMETER_TYPE
++#define TARGET_INVALID_PARAMETER_TYPE arm_invalid_parameter_type
++
++#undef TARGET_INVALID_RETURN_TYPE
++#define TARGET_INVALID_RETURN_TYPE arm_invalid_return_type
++
++#undef TARGET_PROMOTED_TYPE
++#define TARGET_PROMOTED_TYPE arm_promoted_type
++
++#undef TARGET_CONVERT_TO_TYPE
++#define TARGET_CONVERT_TO_TYPE arm_convert_to_type
++
++#undef TARGET_SCALAR_MODE_SUPPORTED_P
++#define TARGET_SCALAR_MODE_SUPPORTED_P arm_scalar_mode_supported_p
++
++#undef TARGET_VECTOR_MIN_ALIGNMENT
++#define TARGET_VECTOR_MIN_ALIGNMENT arm_vector_min_alignment
++
++#undef TARGET_VECTOR_ALWAYS_MISALIGN
++#define TARGET_VECTOR_ALWAYS_MISALIGN arm_vector_always_misalign
++
+ struct gcc_target targetm = TARGET_INITIALIZER;
  \f
  /* Obstack for minipool constant handling.  */
-@@ -423,18 +483,18 @@
+@@ -424,18 +484,18 @@ enum processor_type arm_tune = arm_none;
  /* The default processor used if not overridden by commandline.  */
  static enum processor_type arm_default_cpu = arm_none;
  
@@ -1061,7 +1669,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  /* Which ABI to use.  */
  enum arm_abi_type arm_abi;
  
-@@ -473,9 +533,19 @@
+@@ -474,9 +534,19 @@ static int thumb_call_reg_needed;
  #define FL_DIV              (1 << 18)       /* Hardware divide.  */
  #define FL_VFPV3      (1 << 19)       /* Vector Floating Point V3.  */
  #define FL_NEON       (1 << 20)       /* Neon instructions.  */
@@ -1081,7 +1689,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  #define FL_FOR_ARCH2  FL_NOTM
  #define FL_FOR_ARCH3  (FL_FOR_ARCH2 | FL_MODE32)
  #define FL_FOR_ARCH3M (FL_FOR_ARCH3 | FL_ARCH3M)
-@@ -497,6 +567,7 @@
+@@ -498,6 +568,7 @@ static int thumb_call_reg_needed;
  #define FL_FOR_ARCH7A (FL_FOR_ARCH7 | FL_NOTM)
  #define FL_FOR_ARCH7R (FL_FOR_ARCH7A | FL_DIV)
  #define FL_FOR_ARCH7M (FL_FOR_ARCH7 | FL_DIV)
@@ -1089,7 +1697,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
  /* The bits in this mask specify which
     instructions we are allowed to generate.  */
-@@ -533,6 +604,9 @@
+@@ -534,6 +605,9 @@ int arm_arch6k = 0;
  /* Nonzero if instructions not present in the 'M' profile can be used.  */
  int arm_arch_notm = 0;
  
@@ -1099,7 +1707,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  /* Nonzero if this chip can benefit from load scheduling.  */
  int arm_ld_sched = 0;
  
-@@ -551,6 +625,9 @@
+@@ -552,6 +626,9 @@ int arm_arch_xscale = 0;
  /* Nonzero if tuning for XScale  */
  int arm_tune_xscale = 0;
  
@@ -1109,7 +1717,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  /* Nonzero if we want to tune for stores that access the write-buffer.
     This typically means an ARM6 or ARM7 with MMU or MPU.  */
  int arm_tune_wbuf = 0;
-@@ -561,6 +638,9 @@
+@@ -562,6 +639,9 @@ int arm_tune_cortex_a9 = 0;
  /* Nonzero if generating Thumb instructions.  */
  int thumb_code = 0;
  
@@ -1119,7 +1727,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  /* Nonzero if we should define __THUMB_INTERWORK__ in the
     preprocessor.
     XXX This is a bit of a hack, it's intended to help work around
-@@ -593,6 +673,8 @@
+@@ -594,6 +674,8 @@ static int after_arm_reorg = 0;
  /* The maximum number of insns to be used when loading a constant.  */
  static int arm_constant_limit = 3;
  
@@ -1128,7 +1736,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  /* For an explanation of these variables, see final_prescan_insn below.  */
  int arm_ccfsm_state;
  /* arm_current_cc is also used for Thumb-2 cond_exec blocks.  */
-@@ -673,9 +755,11 @@
+@@ -674,9 +756,11 @@ static const struct processors all_archi
    {"armv7-a", cortexa8,         "7A",  FL_CO_PROC |             FL_FOR_ARCH7A, NULL},
    {"armv7-r", cortexr4,         "7R",  FL_CO_PROC |             FL_FOR_ARCH7R, NULL},
    {"armv7-m", cortexm3,         "7M",  FL_CO_PROC |             FL_FOR_ARCH7M, NULL},
@@ -1140,7 +1748,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    {NULL, arm_none, NULL, 0 , NULL}
  };
  
-@@ -705,49 +789,34 @@
+@@ -706,49 +790,34 @@ static struct arm_cpu_select arm_select[
  
  /* The name of the preprocessor macro to define for this architecture.  */
  
@@ -1212,7 +1820,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  struct float_abi
  {
    const char * name;
-@@ -765,6 +834,23 @@
+@@ -766,6 +835,23 @@ static const struct float_abi all_float_
  };
  
  
@@ -1236,15 +1844,15 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  struct abi_name
  {
    const char *name;
-@@ -922,6 +1008,44 @@
-   set_optab_libfunc (umod_optab, DImode, NULL);
+@@ -924,6 +1010,45 @@ arm_init_libfuncs (void)
    set_optab_libfunc (smod_optab, SImode, NULL);
    set_optab_libfunc (umod_optab, SImode, NULL);
 +
 +  /* Half-precision float operations.  The compiler handles all operations
 +     with NULL libfuncs by converting the SFmode.  */
 +  switch (arm_fp16_format)
-+    {
++  {
 +    case ARM_FP16_FORMAT_IEEE:
 +    case ARM_FP16_FORMAT_ALTERNATIVE:
 +
@@ -1257,7 +1865,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
 +                      (arm_fp16_format == ARM_FP16_FORMAT_IEEE
 +                       ? "__gnu_h2f_ieee"
 +                       : "__gnu_h2f_alternative"));
-+      
++
 +      /* Arithmetic.  */
 +      set_optab_libfunc (add_optab, HFmode, NULL);
 +      set_optab_libfunc (sdiv_optab, HFmode, NULL);
@@ -1277,11 +1885,12 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
 +
 +    default:
 +      break;
-+    }
++  }
++
+   if (TARGET_AAPCS_BASED)
+     synchronize_libfunc = init_one_libfunc ("__sync_synchronize");
  }
- /* On AAPCS systems, this is the "struct __va_list".  */
-@@ -1135,6 +1259,7 @@
+@@ -1139,6 +1264,7 @@ void
  arm_override_options (void)
  {
    unsigned i;
@@ -1289,7 +1898,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    enum processor_type target_arch_cpu = arm_none;
    enum processor_type selected_cpu = arm_none;
  
-@@ -1152,7 +1277,11 @@
+@@ -1156,7 +1282,11 @@ arm_override_options (void)
                {
                /* Set the architecture define.  */
                if (i != ARM_OPT_SET_TUNE)
@@ -1302,7 +1911,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
                /* Determine the processor core for which we should
                   tune code-generation.  */
-@@ -1178,8 +1307,8 @@
+@@ -1182,8 +1312,8 @@ arm_override_options (void)
                       make sure that they are compatible.  We only generate
                       a warning though, and we prefer the CPU over the
                       architecture.  */
@@ -1313,7 +1922,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
                               ptr->string);
  
                    insn_flags = sel->flags;
-@@ -1279,7 +1408,11 @@
+@@ -1283,7 +1413,11 @@ arm_override_options (void)
  
          insn_flags = sel->flags;
        }
@@ -1326,7 +1935,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        arm_default_cpu = (enum processor_type) (sel - all_cores);
        if (arm_tune == arm_none)
        arm_tune = arm_default_cpu;
-@@ -1289,8 +1422,35 @@
+@@ -1293,8 +1427,35 @@ arm_override_options (void)
       chosen.  */
    gcc_assert (arm_tune != arm_none);
  
@@ -1362,7 +1971,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    if (target_abi_name)
      {
        for (i = 0; i < ARRAY_SIZE (arm_all_abis); i++)
-@@ -1383,6 +1543,7 @@
+@@ -1387,6 +1548,7 @@ arm_override_options (void)
    arm_arch6 = (insn_flags & FL_ARCH6) != 0;
    arm_arch6k = (insn_flags & FL_ARCH6K) != 0;
    arm_arch_notm = (insn_flags & FL_NOTM) != 0;
@@ -1370,7 +1979,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
    arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
    arm_arch_cirrus = (insn_flags & FL_CIRRUS) != 0;
-@@ -1390,12 +1551,25 @@
+@@ -1394,12 +1556,25 @@ arm_override_options (void)
    arm_ld_sched = (tune_flags & FL_LDSCHED) != 0;
    arm_tune_strongarm = (tune_flags & FL_STRONG) != 0;
    thumb_code = (TARGET_ARM == 0);
@@ -1397,7 +2006,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* If we are not using the default (ARM mode) section anchor offset
       ranges, then set the correct ranges now.  */
    if (TARGET_THUMB1)
-@@ -1434,7 +1608,6 @@
+@@ -1438,7 +1613,6 @@ arm_override_options (void)
    if (TARGET_IWMMXT_ABI && !TARGET_IWMMXT)
      error ("iwmmxt abi requires an iwmmxt capable cpu");
  
@@ -1405,7 +2014,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    if (target_fpu_name == NULL && target_fpe_name != NULL)
      {
        if (streq (target_fpe_name, "2"))
-@@ -1445,46 +1618,52 @@
+@@ -1449,46 +1623,52 @@ arm_override_options (void)
        error ("invalid floating point emulation option: -mfpe=%s",
               target_fpe_name);
      }
@@ -1491,7 +2100,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      }
  
    if (target_float_abi_name != NULL)
-@@ -1505,9 +1684,6 @@
+@@ -1509,9 +1689,6 @@ arm_override_options (void)
    else
      arm_float_abi = TARGET_DEFAULT_FLOAT_ABI;
  
@@ -1501,7 +2110,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* FPA and iWMMXt are incompatible because the insn encodings overlap.
       VFP and iWMMXt can theoretically coexist, but it's unlikely such silicon
       will ever exist.  GCC makes no attempt to support this combination.  */
-@@ -1518,15 +1694,40 @@
+@@ -1522,15 +1699,40 @@ arm_override_options (void)
    if (TARGET_THUMB2 && TARGET_IWMMXT)
      sorry ("Thumb-2 iWMMXt");
  
@@ -1545,7 +2154,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        && (tune_flags & FL_MODE32) == 0)
      flag_schedule_insns = flag_schedule_insns_after_reload = 0;
  
-@@ -1616,8 +1817,7 @@
+@@ -1620,8 +1822,7 @@ arm_override_options (void)
        fix_cm3_ldrd = 0;
      }
  
@@ -1555,7 +2164,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      {
        /* Don't warn since it's on by default in -O2.  */
        flag_schedule_insns = 0;
-@@ -1653,6 +1853,36 @@
+@@ -1664,6 +1865,36 @@ arm_override_options (void)
  
    /* Register global variables with the garbage collector.  */
    arm_add_gc_roots ();
@@ -1592,7 +2201,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  }
  
  static void
-@@ -1782,6 +2012,14 @@
+@@ -1793,6 +2024,14 @@ arm_allocate_stack_slots_for_args (void)
    return !IS_NAKED (arm_current_func_type ());
  }
  
@@ -1607,7 +2216,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  \f
  /* Return 1 if it is possible to return using a single instruction.
     If SIBLING is non-null, this is a test for a return before a sibling
-@@ -2873,14 +3111,19 @@
+@@ -2884,14 +3123,19 @@ arm_canonicalize_comparison (enum rtx_co
  
  /* Define how to find the value returned by a function.  */
  
@@ -1629,7 +2238,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Promote integer types.  */
    if (INTEGRAL_TYPE_P (type))
      PROMOTE_FUNCTION_MODE (mode, unsignedp, type);
-@@ -2897,7 +3140,36 @@
+@@ -2908,7 +3152,36 @@ arm_function_value(const_tree type, cons
        }
      }
  
@@ -1667,7 +2276,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  }
  
  /* Determine the amount of memory needed to store the possible return
-@@ -2907,10 +3179,12 @@
+@@ -2918,10 +3191,12 @@ arm_apply_result_size (void)
  {
    int size = 16;
  
@@ -1681,7 +2290,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
          if (TARGET_FPA)
            size += 12;
          if (TARGET_MAVERICK)
-@@ -2923,27 +3197,56 @@
+@@ -2934,27 +3209,56 @@ arm_apply_result_size (void)
    return size;
  }
  
@@ -1750,7 +2359,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
    if (arm_abi != ARM_ABI_APCS)
      {
-@@ -2960,7 +3263,7 @@
+@@ -2971,7 +3275,7 @@ arm_return_in_memory (const_tree type, c
       the aggregate is either huge or of variable size, and in either case
       we will want to return it via memory and not in a register.  */
    if (size < 0 || size > UNITS_PER_WORD)
@@ -1759,7 +2368,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
    if (TREE_CODE (type) == RECORD_TYPE)
      {
-@@ -2980,18 +3283,18 @@
+@@ -2991,18 +3295,18 @@ arm_return_in_memory (const_tree type, c
        continue;
  
        if (field == NULL)
@@ -1781,7 +2390,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
        /* Now check the remaining fields, if any.  Only bitfields are allowed,
         since they are not addressable.  */
-@@ -3003,10 +3306,10 @@
+@@ -3014,10 +3318,10 @@ arm_return_in_memory (const_tree type, c
            continue;
  
          if (!DECL_BIT_FIELD_TYPE (field))
@@ -1794,7 +2403,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      }
  
    if (TREE_CODE (type) == UNION_TYPE)
-@@ -3023,18 +3326,18 @@
+@@ -3034,18 +3338,18 @@ arm_return_in_memory (const_tree type, c
            continue;
  
          if (FLOAT_TYPE_P (TREE_TYPE (field)))
@@ -1817,7 +2426,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  }
  
  /* Indicate whether or not words of a double are in big-endian order.  */
-@@ -3059,14 +3362,780 @@
+@@ -3070,14 +3374,780 @@ arm_float_words_big_endian (void)
    return 1;
  }
  
@@ -2599,7 +3208,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* On the ARM, the offset starts at 0.  */
    pcum->nregs = 0;
    pcum->iwmmxt_nregs = 0;
-@@ -3120,6 +4189,17 @@
+@@ -3131,6 +4201,17 @@ arm_function_arg (CUMULATIVE_ARGS *pcum,
  {
    int nregs;
  
@@ -2617,7 +3226,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Varargs vectors are treated the same as long long.
       named_count avoids having to change the way arm handles 'named' */
    if (TARGET_IWMMXT_ABI
-@@ -3161,10 +4241,16 @@
+@@ -3172,10 +4253,16 @@ arm_function_arg (CUMULATIVE_ARGS *pcum,
  
  static int
  arm_arg_partial_bytes (CUMULATIVE_ARGS *pcum, enum machine_mode mode,
@@ -2635,7 +3244,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    if (TARGET_IWMMXT_ABI && arm_vector_mode_supported_p (mode))
      return 0;
  
-@@ -3173,7 +4259,40 @@
+@@ -3184,7 +4271,40 @@ arm_arg_partial_bytes (CUMULATIVE_ARGS *
        && pcum->can_split)
      return (NUM_ARG_REGS - nregs) * UNITS_PER_WORD;
  
@@ -2677,7 +3286,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  }
  
  /* Variable sized types are passed by reference.  This is a GCC
-@@ -3226,6 +4345,8 @@
+@@ -3237,6 +4357,8 @@ const struct attribute_spec arm_attribut
    /* Whereas these functions are always known to reside within the 26 bit
       addressing range.  */
    { "short_call",   0, 0, false, true,  true,  NULL },
@@ -2686,7 +3295,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Interrupt Service Routines have special prologue and epilogue requirements.  */
    { "isr",          0, 1, false, false, false, arm_handle_isr_attribute },
    { "interrupt",    0, 1, false, false, false, arm_handle_isr_attribute },
-@@ -3328,6 +4449,21 @@
+@@ -3339,6 +4461,21 @@ arm_handle_isr_attribute (tree *node, tr
    return NULL_TREE;
  }
  
@@ -2708,7 +3317,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
  /* Handle the "notshared" attribute.  This attribute is another way of
     requesting hidden visibility.  ARM's compiler supports
-@@ -3489,7 +4625,7 @@
+@@ -3500,7 +4637,7 @@ arm_is_long_call_p (tree decl)
  
  /* Return nonzero if it is ok to make a tail-call to DECL.  */
  static bool
@@ -2717,7 +3326,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  {
    unsigned long func_type;
  
-@@ -3522,6 +4658,21 @@
+@@ -3533,6 +4670,21 @@ arm_function_ok_for_sibcall (tree decl, 
    if (IS_INTERRUPT (func_type))
      return false;
  
@@ -2739,7 +3348,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Never tailcall if function may be called with a misaligned SP.  */
    if (IS_STACKALIGN (func_type))
      return false;
-@@ -4120,6 +5271,7 @@
+@@ -4131,6 +5283,7 @@ arm_legitimate_index_p (enum machine_mod
    if (GET_MODE_SIZE (mode) <= 4
        && ! (arm_arch4
            && (mode == HImode
@@ -2747,7 +3356,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
                || (mode == QImode && outer == SIGN_EXTEND))))
      {
        if (code == MULT)
-@@ -4148,13 +5300,15 @@
+@@ -4159,13 +5312,15 @@ arm_legitimate_index_p (enum machine_mod
       load.  */
    if (arm_arch4)
      {
@@ -2765,7 +3374,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
    return (code == CONST_INT
          && INTVAL (index) < range
-@@ -4325,7 +5479,8 @@
+@@ -4336,7 +5491,8 @@ thumb1_legitimate_address_p (enum machin
      return 1;
  
    /* This is PC relative data after arm_reorg runs.  */
@@ -2775,7 +3384,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
           && (GET_CODE (x) == LABEL_REF
               || (GET_CODE (x) == CONST
                   && GET_CODE (XEXP (x, 0)) == PLUS
-@@ -5024,7 +6179,7 @@
+@@ -5035,7 +6191,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
      case UMOD:
        if (TARGET_HARD_FLOAT && mode == SFmode)
        *total = COSTS_N_INSNS (2);
@@ -2784,7 +3393,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        *total = COSTS_N_INSNS (4);
        else
        *total = COSTS_N_INSNS (20);
-@@ -5063,23 +6218,6 @@
+@@ -5074,23 +6230,6 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
        return true;
  
      case MINUS:
@@ -2808,7 +3417,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        if (mode == DImode)
        {
          *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
-@@ -5102,7 +6240,9 @@
+@@ -5113,7 +6252,9 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
  
        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
        {
@@ -2819,7 +3428,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              *total = COSTS_N_INSNS (1);
              if (GET_CODE (XEXP (x, 0)) == CONST_DOUBLE
-@@ -5143,6 +6283,17 @@
+@@ -5154,6 +6295,17 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
          return true;
        }
  
@@ -2837,7 +3446,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        if (subcode == MULT
          && GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT
          && ((INTVAL (XEXP (XEXP (x, 1), 1)) &
-@@ -5164,6 +6315,19 @@
+@@ -5175,6 +6327,19 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
          return true;
        }
  
@@ -2857,7 +3466,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        /* Fall through */
  
      case PLUS:
-@@ -5192,7 +6356,9 @@
+@@ -5203,7 +6368,9 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
  
        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
        {
@@ -2868,7 +3477,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              *total = COSTS_N_INSNS (1);
              if (GET_CODE (XEXP (x, 1)) == CONST_DOUBLE
-@@ -5307,7 +6473,9 @@
+@@ -5318,7 +6485,9 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
      case NEG:
        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
        {
@@ -2879,7 +3488,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              *total = COSTS_N_INSNS (1);
              return false;
-@@ -5460,7 +6628,9 @@
+@@ -5471,7 +6640,9 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
      case ABS:
        if (GET_MODE_CLASS (mode == MODE_FLOAT))
        {
@@ -2890,7 +3499,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              *total = COSTS_N_INSNS (1);
              return false;
-@@ -5563,7 +6733,8 @@
+@@ -5574,7 +6745,8 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou
        return true;
  
      case CONST_DOUBLE:
@@ -2900,7 +3509,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        *total = COSTS_N_INSNS (1);
        else
        *total = COSTS_N_INSNS (4);
-@@ -5638,7 +6809,8 @@
+@@ -5649,7 +6821,8 @@ arm_size_rtx_costs (rtx x, enum rtx_code
        return false;
  
      case MINUS:
@@ -2910,7 +3519,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        {
          *total = COSTS_N_INSNS (1);
          return false;
-@@ -5668,7 +6840,8 @@
+@@ -5679,7 +6852,8 @@ arm_size_rtx_costs (rtx x, enum rtx_code
        return false;
  
      case PLUS:
@@ -2920,7 +3529,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        {
          *total = COSTS_N_INSNS (1);
          return false;
-@@ -5698,7 +6871,8 @@
+@@ -5709,7 +6883,8 @@ arm_size_rtx_costs (rtx x, enum rtx_code
        return false;
  
      case NEG:
@@ -2930,7 +3539,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        {
          *total = COSTS_N_INSNS (1);
          return false;
-@@ -5722,7 +6896,8 @@
+@@ -5733,7 +6908,8 @@ arm_size_rtx_costs (rtx x, enum rtx_code
        return false;
  
      case ABS:
@@ -2940,7 +3549,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        *total = COSTS_N_INSNS (1);
        else
        *total = COSTS_N_INSNS (1 + ARM_NUM_REGS (mode));
-@@ -5939,7 +7114,9 @@
+@@ -5950,7 +7126,9 @@ arm_fastmul_rtx_costs (rtx x, enum rtx_c
  
        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
        {
@@ -2951,7 +3560,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              *total = COSTS_N_INSNS (1);
              return false;
-@@ -6096,7 +7273,9 @@
+@@ -6107,7 +7285,9 @@ arm_9e_rtx_costs (rtx x, enum rtx_code c
  
        if (GET_MODE_CLASS (mode) == MODE_FLOAT)
        {
@@ -2962,7 +3571,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              *total = COSTS_N_INSNS (1);
              return false;
-@@ -6919,10 +8098,13 @@
+@@ -6930,10 +8110,13 @@ arm_coproc_mem_operand (rtx op, bool wb)
  }
  
  /* Return TRUE if OP is a memory operand which we can load or store a vector
@@ -2979,7 +3588,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  {
    rtx ind;
  
-@@ -6955,23 +8137,16 @@
+@@ -6966,23 +8149,16 @@ neon_vector_mem_operand (rtx op, bool co
      return arm_address_register_rtx_p (ind, 0);
  
    /* Allow post-increment with Neon registers.  */
@@ -3007,7 +3616,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        && GET_CODE (ind) == PLUS
        && GET_CODE (XEXP (ind, 0)) == REG
        && REG_MODE_OK_FOR_BASE_P (XEXP (ind, 0), VOIDmode)
-@@ -7038,10 +8213,19 @@
+@@ -7049,10 +8225,19 @@ arm_eliminable_register (rtx x)
  enum reg_class
  coproc_secondary_reload_class (enum machine_mode mode, rtx x, bool wb)
  {
@@ -3028,7 +3637,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
       return NO_REGS;
  
    if (arm_coproc_mem_operand (x, wb) || s_register_operand (x, mode))
-@@ -7438,6 +8622,9 @@
+@@ -7449,6 +8634,9 @@ load_multiple_sequence (rtx *operands, i
    int base_reg = -1;
    int i;
  
@@ -3038,7 +3647,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Can only handle 2, 3, or 4 insns at present,
       though could be easily extended if required.  */
    gcc_assert (nops >= 2 && nops <= 4);
-@@ -7667,6 +8854,9 @@
+@@ -7678,6 +8866,9 @@ store_multiple_sequence (rtx *operands, 
    int base_reg = -1;
    int i;
  
@@ -3048,7 +3657,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Can only handle 2, 3, or 4 insns at present, though could be easily
       extended if required.  */
    gcc_assert (nops >= 2 && nops <= 4);
-@@ -7874,7 +9064,7 @@
+@@ -7885,7 +9076,7 @@ arm_gen_load_multiple (int base_regno, i
  
       As a compromise, we use ldr for counts of 1 or 2 regs, and ldm
       for counts of 3 or 4 regs.  */
@@ -3057,7 +3666,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      {
        rtx seq;
  
-@@ -7937,7 +9127,7 @@
+@@ -7948,7 +9139,7 @@ arm_gen_store_multiple (int base_regno, 
  
    /* See arm_gen_load_multiple for discussion of
       the pros/cons of ldm/stm usage for XScale.  */
@@ -3066,7 +3675,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      {
        rtx seq;
  
-@@ -9555,7 +10745,10 @@
+@@ -9566,7 +10757,10 @@ create_fix_barrier (Mfix *fix, HOST_WIDE
        gcc_assert (GET_CODE (from) != BARRIER);
  
        /* Count the length of this insn.  */
@@ -3078,7 +3687,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
        /* If there is a jump table, add its length.  */
        tmp = is_jump_table (from);
-@@ -9867,6 +11060,8 @@
+@@ -9878,6 +11072,8 @@ arm_reorg (void)
              insn = table;
            }
        }
@@ -3087,7 +3696,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      }
  
    fix = minipool_fix_head;
-@@ -10072,6 +11267,21 @@
+@@ -10083,6 +11279,21 @@ static void
  vfp_output_fldmd (FILE * stream, unsigned int base, int reg, int count)
  {
    int i;
@@ -3109,7 +3718,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
    /* Workaround ARM10 VFPr1 bug.  */
    if (count == 2 && !arm_arch6)
-@@ -10142,6 +11352,56 @@
+@@ -10153,6 +11364,56 @@ vfp_emit_fstmd (int base_reg, int count)
    rtx tmp, reg;
    int i;
  
@@ -3166,7 +3775,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* Workaround ARM10 VFPr1 bug.  Data corruption can occur when exactly two
       register pairs are stored by a store multiple insn.  We avoid this
       by pushing an extra pair.  */
-@@ -10758,7 +12018,7 @@
+@@ -10769,7 +12030,7 @@ output_move_double (rtx *operands)
  }
  
  /* Output a move, load or store for quad-word vectors in ARM registers.  Only
@@ -3175,7 +3784,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
  const char *
  output_move_quad (rtx *operands)
-@@ -10954,6 +12214,12 @@
+@@ -10965,6 +12226,12 @@ output_move_neon (rtx *operands)
        ops[1] = reg;
        break;
  
@@ -3188,16 +3797,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      case POST_MODIFY:
        /* FIXME: Not currently enabled in neon_vector_mem_operand.  */
        gcc_unreachable ();
-@@ -10968,7 +12234,7 @@
-         {
-           /* We're only using DImode here because it's a convenient size.  */
-           ops[0] = gen_rtx_REG (DImode, REGNO (reg) + 2 * i);
--          ops[1] = adjust_address (mem, SImode, 8 * i);
-+          ops[1] = adjust_address (mem, DImode, 8 * i);
-           if (reg_overlap_mentioned_p (ops[0], mem))
-             {
-               gcc_assert (overlap == -1);
-@@ -11557,7 +12823,7 @@
+@@ -11568,7 +12835,7 @@ arm_get_vfp_saved_size (void)
              if (count > 0)
                {
                  /* Workaround ARM10 VFPr1 bug.  */
@@ -3206,7 +3806,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
                    count++;
                  saved += count * 8;
                }
-@@ -11886,6 +13152,41 @@
+@@ -11897,6 +13164,41 @@ arm_output_function_prologue (FILE *f, H
    return_used_this_function = 0;
  }
  
@@ -3248,7 +3848,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  const char *
  arm_output_epilogue (rtx sibling)
  {
-@@ -11946,7 +13247,7 @@
+@@ -11957,7 +13259,7 @@ arm_output_epilogue (rtx sibling)
        /* This variable is for the Virtual Frame Pointer, not VFP regs.  */
        int vfp_offset = offsets->frame;
  
@@ -3257,7 +3857,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        {
          for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
            if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
-@@ -12169,7 +13470,7 @@
+@@ -12180,7 +13482,7 @@ arm_output_epilogue (rtx sibling)
                         SP_REGNUM, HARD_FRAME_POINTER_REGNUM);
        }
  
@@ -3266,7 +3866,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        {
          for (reg = FIRST_FPA_REGNUM; reg <= LAST_FPA_REGNUM; reg++)
            if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
-@@ -12253,22 +13554,19 @@
+@@ -12264,22 +13566,19 @@ arm_output_epilogue (rtx sibling)
         to load use the LDR instruction - it is faster.  For Thumb-2
         always use pop and the assembler will pick the best instruction.*/
        if (TARGET_ARM && saved_regs_mask == (1 << LR_REGNUM)
@@ -3297,7 +3897,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
          else
            print_multi_reg (f, "pop\t", SP_REGNUM, saved_regs_mask, 0);
        }
-@@ -12389,6 +13687,32 @@
+@@ -12400,6 +13699,32 @@ emit_multi_reg_push (unsigned long mask)
  
    gcc_assert (num_regs && num_regs <= 16);
  
@@ -3330,7 +3930,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* We don't record the PC in the dwarf frame information.  */
    num_dwarf_regs = num_regs;
    if (mask & (1 << PC_REGNUM))
-@@ -12737,22 +14061,23 @@
+@@ -12748,22 +14073,23 @@ arm_get_frame_offsets (void)
        {
          int reg = -1;
  
@@ -3367,7 +3967,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
          if (reg != -1)
            {
-@@ -12876,7 +14201,7 @@
+@@ -12887,7 +14213,7 @@ arm_save_coproc_regs(void)
  
    /* Save any floating point call-saved registers used by this
       function.  */
@@ -3376,7 +3976,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      {
        for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
        if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
-@@ -13483,7 +14808,11 @@
+@@ -13494,7 +14820,11 @@ arm_print_operand (FILE *stream, rtx x, 
          {
            fprintf (stream, ", %s ", shift);
            if (val == -1)
@@ -3389,7 +3989,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            else
              fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, val);
          }
-@@ -13704,6 +15033,30 @@
+@@ -13715,6 +15045,30 @@ arm_print_operand (FILE *stream, rtx x, 
        }
        return;
  
@@ -3420,7 +4020,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      /* Print a VFP/Neon double precision or quad precision register name.  */
      case 'P':
      case 'q':
-@@ -13821,6 +15174,57 @@
+@@ -13832,6 +15186,57 @@ arm_print_operand (FILE *stream, rtx x, 
        }
        return;
  
@@ -3478,7 +4078,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      default:
        if (x == 0)
        {
-@@ -13854,6 +15258,12 @@
+@@ -13865,6 +15270,12 @@ arm_print_operand (FILE *stream, rtx x, 
        default:
          gcc_assert (GET_CODE (x) != NEG);
          fputc ('#', stream);
@@ -3491,7 +4091,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
          output_addr_const (stream, x);
          break;
        }
-@@ -14245,6 +15655,10 @@
+@@ -14256,6 +15667,10 @@ arm_final_prescan_insn (rtx insn)
       first insn after the following code_label if REVERSE is true.  */
    rtx start_insn = insn;
  
@@ -3502,7 +4102,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    /* If in state 4, check if the target branch is reached, in order to
       change back to state 0.  */
    if (arm_ccfsm_state == 4)
-@@ -14618,6 +16032,11 @@
+@@ -14629,6 +16044,11 @@ arm_hard_regno_mode_ok (unsigned int reg
        if (mode == DFmode)
        return VFP_REGNO_OK_FOR_DOUBLE (regno);
  
@@ -3514,7 +4114,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        if (TARGET_NEON)
          return (VALID_NEON_DREG_MODE (mode) && VFP_REGNO_OK_FOR_DOUBLE (regno))
                 || (VALID_NEON_QREG_MODE (mode)
-@@ -14637,16 +16056,16 @@
+@@ -14648,16 +16068,16 @@ arm_hard_regno_mode_ok (unsigned int reg
        return mode == SImode;
  
        if (IS_IWMMXT_REGNUM (regno))
@@ -3536,7 +4136,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
    if (regno == FRAME_POINTER_REGNUM
        || regno == ARG_POINTER_REGNUM)
-@@ -16103,6 +17522,15 @@
+@@ -16114,6 +17534,15 @@ arm_init_neon_builtins (void)
  }
  
  static void
@@ -3552,7 +4152,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  arm_init_builtins (void)
  {
    arm_init_tls_builtins ();
-@@ -16112,6 +17540,71 @@
+@@ -16123,6 +17552,71 @@ arm_init_builtins (void)
  
    if (TARGET_NEON)
      arm_init_neon_builtins ();
@@ -3624,7 +4224,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  }
  
  /* Errors in the source file can cause expand_expr to return const0_rtx
-@@ -17191,6 +18684,7 @@
+@@ -17202,6 +18696,7 @@ thumb_shiftable_const (unsigned HOST_WID
    unsigned HOST_WIDE_INT mask = 0xff;
    int i;
  
@@ -3632,7 +4232,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    if (val == 0) /* XXX */
      return 0;
  
-@@ -18279,40 +19773,8 @@
+@@ -18290,40 +19785,8 @@ arm_file_start (void)
        else
        {
          int set_float_abi_attributes = 0;
@@ -3675,7 +4275,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
            {
              if (TARGET_HARD_FLOAT)
                asm_fprintf (asm_out_file, "\t.eabi_attribute 27, 3\n");
-@@ -18362,6 +19824,11 @@
+@@ -18373,6 +19836,11 @@ arm_file_start (void)
        val = 6;
        asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val);
  
@@ -3687,7 +4287,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        if (arm_lang_output_object_attributes_hook)
        arm_lang_output_object_attributes_hook();
      }
-@@ -18591,6 +20058,23 @@
+@@ -18602,6 +20070,23 @@ arm_emit_vector_const (FILE *file, rtx x
    return 1;
  }
  
@@ -3711,7 +4311,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  const char *
  arm_output_load_gr (rtx *operands)
  {
-@@ -18628,19 +20112,24 @@
+@@ -18639,19 +20124,24 @@ arm_output_load_gr (rtx *operands)
     that way.  */
  
  static void
@@ -3743,7 +4343,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    if (nregs < NUM_ARG_REGS)
      *pretend_size = (NUM_ARG_REGS - nregs) * UNITS_PER_WORD;
  }
-@@ -19024,9 +20513,10 @@
+@@ -19035,9 +20525,10 @@ arm_vector_mode_supported_p (enum machin
        || mode == V16QImode || mode == V4SFmode || mode == V2DImode))
      return true;
  
@@ -3757,7 +4357,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
      return true;
  
    return false;
-@@ -19057,9 +20547,14 @@
+@@ -19068,9 +20559,14 @@ arm_dbx_register_number (unsigned int re
    if (IS_FPA_REGNUM (regno))
      return (TARGET_AAPCS_BASED ? 96 : 16) + regno - FIRST_FPA_REGNUM;
  
@@ -3774,7 +4374,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
    if (IS_IWMMXT_GR_REGNUM (regno))
      return 104 + regno - FIRST_IWMMXT_GR_REGNUM;
-@@ -19070,6 +20565,39 @@
+@@ -19081,6 +20577,39 @@ arm_dbx_register_number (unsigned int re
    gcc_unreachable ();
  }
  
@@ -3814,7 +4414,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  
  #ifdef TARGET_UNWIND_INFO
  /* Emit unwind directives for a store-multiple instruction or stack pointer
-@@ -19556,6 +21084,7 @@
+@@ -19567,6 +21096,7 @@ arm_issue_rate (void)
      case cortexr4f:
      case cortexa8:
      case cortexa9:
@@ -3822,7 +4422,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
        return 2;
  
      default:
-@@ -19620,6 +21149,10 @@
+@@ -19631,6 +21161,10 @@ arm_mangle_type (const_tree type)
        return "St9__va_list";
      }
  
@@ -3833,7 +4433,7 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
    if (TREE_CODE (type) != VECTOR_TYPE)
      return NULL;
  
-@@ -19676,6 +21209,86 @@
+@@ -19687,6 +21221,86 @@ arm_optimization_options (int level, int
       given on the command line.  */
    if (level > 0)
      flag_section_anchors = 2;
@@ -3920,35 +4520,9 @@ diff -Nur a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
  }
  
  #include "gt-arm.h"
-diff -Nur a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def
---- a/gcc/config/arm/arm-cores.def     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/arm-cores.def     2010-01-25 09:50:28.975687047 +0100
-@@ -104,6 +104,7 @@
- ARM_CORE("xscale",        xscale,     5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale)
- ARM_CORE("iwmmxt",        iwmmxt,     5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
- ARM_CORE("iwmmxt2",       iwmmxt2,    5TE,                             FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
-+ARM_CORE("marvell-f",   marvell_f,    5TE,                             FL_LDSCHED | FL_VFPV2 | FL_MARVELL_F, 9e)
- /* V5TEJ Architecture Processors */
- ARM_CORE("arm926ej-s",    arm926ejs,  5TEJ,                            FL_LDSCHED, 9e)
-@@ -117,9 +118,13 @@
- ARM_CORE("mpcorenovfp",         mpcorenovfp,  6K,                              FL_LDSCHED, 9e)
- ARM_CORE("mpcore",      mpcore,       6K,                              FL_LDSCHED | FL_VFPV2, 9e)
- ARM_CORE("arm1156t2-s",         arm1156t2s,   6T2,                             FL_LDSCHED, 9e)
-+
-+/* V7 Architecture Processors */
-+ARM_CORE("cortex-a5",   cortexa5,     7A,                              FL_LDSCHED, 9e)
- ARM_CORE("cortex-a8",   cortexa8,     7A,                              FL_LDSCHED, 9e)
- ARM_CORE("cortex-a9",   cortexa9,     7A,                              FL_LDSCHED, 9e)
- ARM_CORE("cortex-r4",   cortexr4,     7R,                              FL_LDSCHED, 9e)
- ARM_CORE("cortex-r4f",          cortexr4f,    7R,                              FL_LDSCHED, 9e)
- ARM_CORE("cortex-m3",   cortexm3,     7M,                              FL_LDSCHED, 9e)
- ARM_CORE("cortex-m1",   cortexm1,     6M,                              FL_LDSCHED, 9e)
-+ARM_CORE("cortex-m0",   cortexm0,     6M,                              FL_LDSCHED, 9e)
-diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
---- a/gcc/config/arm/arm.h     2009-04-23 02:31:13.000000000 +0200
-+++ b/gcc/config/arm/arm.h     2010-01-25 09:50:28.975687047 +0100
-@@ -85,6 +85,10 @@
+--- a/gcc/config/arm/arm.h
++++ b/gcc/config/arm/arm.h
+@@ -85,6 +85,10 @@ extern char arm_arch_name[];
          builtin_define ("__IWMMXT__");                \
        if (TARGET_AAPCS_BASED)                         \
          builtin_define ("__ARM_EABI__");              \
@@ -3959,7 +4533,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
      } while (0)
  
  /* The various ARM cores.  */
-@@ -199,6 +203,13 @@
+@@ -199,6 +203,13 @@ extern void (*arm_lang_output_object_att
  #define TARGET_AAPCS_BASED \
      (arm_abi != ARM_ABI_APCS && arm_abi != ARM_ABI_ATPCS)
  
@@ -3973,7 +4547,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  #define TARGET_HARD_TP                        (target_thread_pointer == TP_CP15)
  #define TARGET_SOFT_TP                        (target_thread_pointer == TP_SOFT)
  
-@@ -211,35 +222,43 @@
+@@ -211,35 +222,43 @@ extern void (*arm_lang_output_object_att
  /* Thumb-1 only.  */
  #define TARGET_THUMB1_ONLY            (TARGET_THUMB1 && !arm_arch_notm)
  
@@ -4027,7 +4601,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  
  /* Should MOVW/MOVT be used in preference to a constant pool.  */
  #define TARGET_USE_MOVT (arm_arch_thumb2 && !optimize_size)
-@@ -289,40 +308,30 @@
+@@ -289,40 +308,30 @@ enum arm_fp_model
    ARM_FP_MODEL_VFP
  };
  
@@ -4089,7 +4663,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  
  enum float_abi_type
  {
-@@ -337,6 +346,21 @@
+@@ -337,6 +346,21 @@ extern enum float_abi_type arm_float_abi
  #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
  #endif
  
@@ -4111,7 +4685,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  /* Which ABI to use.  */
  enum arm_abi_type
  {
-@@ -383,12 +407,18 @@
+@@ -383,12 +407,18 @@ extern int arm_arch6;
  /* Nonzero if instructions not present in the 'M' profile can be used.  */
  extern int arm_arch_notm;
  
@@ -4130,7 +4704,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  /* Nonzero if this chip is a StrongARM.  */
  extern int arm_tune_strongarm;
  
-@@ -404,6 +434,9 @@
+@@ -404,6 +434,9 @@ extern int arm_arch_xscale;
  /* Nonzero if tuning for XScale.  */
  extern int arm_tune_xscale;
  
@@ -4140,7 +4714,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  /* Nonzero if tuning for stores via the write buffer.  */
  extern int arm_tune_wbuf;
  
-@@ -423,6 +456,10 @@
+@@ -423,6 +456,10 @@ extern int arm_arch_thumb2;
  /* Nonzero if chip supports integer division instruction.  */
  extern int arm_arch_hwdiv;
  
@@ -4151,7 +4725,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  #ifndef TARGET_DEFAULT
  #define TARGET_DEFAULT  (MASK_APCS_FRAME)
  #endif
-@@ -757,12 +794,11 @@
+@@ -757,12 +794,11 @@ extern int arm_structure_size_boundary;
        fixed_regs[regno] = call_used_regs[regno] = 1;          \
      }                                                         \
                                                                \
@@ -4169,7 +4743,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
        for (regno = FIRST_HI_REGNUM;                           \
           regno <= LAST_HI_REGNUM; ++regno)                    \
        fixed_regs[regno] = call_used_regs[regno] = 1;          \
-@@ -881,6 +917,9 @@
+@@ -881,6 +917,9 @@ extern int arm_structure_size_boundary;
  /* The number of (integer) argument register available.  */
  #define NUM_ARG_REGS          4
  
@@ -4179,7 +4753,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  /* Return the register number of the N'th (integer) argument.  */
  #define ARG_REGISTER(N)       (N - 1)
  
-@@ -1059,7 +1098,7 @@
+@@ -1059,7 +1098,7 @@ extern int arm_structure_size_boundary;
    (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2))
  
  #define VALID_IWMMXT_REG_MODE(MODE) \
@@ -4188,7 +4762,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  
  /* Modes valid for Neon D registers.  */
  #define VALID_NEON_DREG_MODE(MODE) \
-@@ -1230,11 +1269,14 @@
+@@ -1230,11 +1269,14 @@ enum reg_class
       || reg_classes_intersect_p (VFP_REGS, (CLASS))   \
     : 0)
  
@@ -4207,7 +4781,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
       || (CLASS) == CC_REG)
  
  /* The class value for index registers, and the one for base regs.  */
-@@ -1245,7 +1287,7 @@
+@@ -1245,7 +1287,7 @@ enum reg_class
     when addressing quantities in QI or HI mode; if we don't know the
     mode, then we must be conservative.  */
  #define MODE_BASE_REG_CLASS(MODE)                                     \
@@ -4216,7 +4790,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
       (((MODE) == SImode) ? BASE_REGS : LO_REGS))
  
  /* For Thumb we can not support SP+reg addressing, so we return LO_REGS
-@@ -1346,6 +1388,9 @@
+@@ -1346,6 +1388,9 @@ enum reg_class
          else if (TARGET_MAVERICK && TARGET_HARD_FLOAT)                   \
            /* Need to be careful, -256 is not a valid offset.  */         \
            low = val >= 0 ? (val & 0xff) : -((-val) & 0xff);              \
@@ -4226,7 +4800,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
          else if (MODE == SImode                                          \
                   || (MODE == SFmode && TARGET_SOFT_FLOAT)                \
                   || ((MODE == HImode || MODE == QImode) && ! arm_arch4)) \
-@@ -1416,13 +1461,17 @@
+@@ -1416,13 +1461,17 @@ do {                                                                         \
  /* If defined, gives a class of registers that cannot be used as the
     operand of a SUBREG that changes the mode of the object illegally.  */
  
@@ -4247,7 +4821,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
      (FROM) == IWMMXT_REGS && (TO) != IWMMXT_REGS ? 4 :  \
      (FROM) != IWMMXT_REGS && (TO) == IWMMXT_REGS ? 4 :  \
      (FROM) == IWMMXT_GR_REGS || (TO) == IWMMXT_GR_REGS ? 20 :  \
-@@ -1491,9 +1540,10 @@
+@@ -1491,9 +1540,10 @@ do {                                                                          \
  
  /* Define how to find the value returned by a library function
     assuming the value has mode MODE.  */
@@ -4261,7 +4835,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
     ? gen_rtx_REG (MODE, FIRST_FPA_REGNUM)                             \
     : TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK         \
       && GET_MODE_CLASS (MODE) == MODE_FLOAT                           \
-@@ -1502,22 +1552,16 @@
+@@ -1502,22 +1552,16 @@ do {                                                                         \
     ? gen_rtx_REG (MODE, FIRST_IWMMXT_REGNUM)                          \
     : gen_rtx_REG (MODE, ARG_REGISTER (1)))
  
@@ -4294,7 +4868,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
         && TARGET_HARD_FLOAT_ABI && TARGET_FPA))
  
  /* Amount of memory needed for an untyped call to save all possible return
-@@ -1617,9 +1661,27 @@
+@@ -1617,9 +1661,27 @@ machine_function;
     that is in text_section.  */
  extern GTY(()) rtx thumb_call_via_label[14];
  
@@ -4324,7 +4898,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  typedef struct
  {
    /* This is the number of registers of arguments scanned so far.  */
-@@ -1628,9 +1690,33 @@
+@@ -1628,9 +1690,33 @@ typedef struct
    int iwmmxt_nregs;
    int named_count;
    int nargs;
@@ -4359,7 +4933,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  /* Define where to put the arguments to a function.
     Value is zero to push the argument on the stack,
     or a hard register in which to store the argument.
-@@ -1674,13 +1760,7 @@
+@@ -1674,13 +1760,7 @@ typedef struct
     of mode MODE and data type TYPE.
     (TYPE is null for libcalls where that information may not be available.)  */
  #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)  \
@@ -4374,7 +4948,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  
  /* If defined, a C expression that gives the alignment boundary, in bits, of an
     argument with the specified mode and type.  If it is not defined,
-@@ -1692,9 +1772,11 @@
+@@ -1692,9 +1772,11 @@ typedef struct
  
  /* 1 if N is a possible register number for function argument passing.
     On the ARM, r0-r3 are used to pass args.  */
@@ -4389,7 +4963,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
        && IN_RANGE ((REGNO), FIRST_IWMMXT_REGNUM, FIRST_IWMMXT_REGNUM + 9)))
  
  \f
-@@ -2324,7 +2406,8 @@
+@@ -2324,7 +2406,8 @@ do {                                                     \
  /* Try to generate sequences that don't involve branches, we can then use
     conditional instructions */
  #define BRANCH_COST(speed_p, predictable_p) \
@@ -4399,7 +4973,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  \f
  /* Position Independent Code.  */
  /* We decide which register to use based on the compilation options and
-@@ -2392,6 +2475,7 @@
+@@ -2392,6 +2475,7 @@ extern int making_const_table;
  
  /* The arm5 clz instruction returns 32.  */
  #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  ((VALUE) = 32, 1)
@@ -4407,7 +4981,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
  \f
  #undef  ASM_APP_OFF
  #define ASM_APP_OFF (TARGET_THUMB1 ? "\t.code\t16\n" : \
-@@ -2404,6 +2488,19 @@
+@@ -2404,6 +2488,19 @@ extern int making_const_table;
        if (TARGET_ARM)                                 \
        asm_fprintf (STREAM,"\tstmfd\t%r!,{%r}\n",      \
                     STACK_POINTER_REGNUM, REGNO);      \
@@ -4427,7 +5001,7 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
        else                                            \
        asm_fprintf (STREAM, "\tpush {%r}\n", REGNO);   \
      } while (0)
-@@ -2415,6 +2512,14 @@
+@@ -2415,6 +2512,14 @@ extern int making_const_table;
        if (TARGET_ARM)                                 \
        asm_fprintf (STREAM, "\tldmfd\t%r!,{%r}\n",     \
                     STACK_POINTER_REGNUM, REGNO);      \
@@ -4442,9 +5016,8 @@ diff -Nur a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
        else                                            \
        asm_fprintf (STREAM, "\tpop {%r}\n", REGNO);    \
      } while (0)
-diff -Nur a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
---- a/gcc/config/arm/arm.md    2009-05-16 15:28:27.000000000 +0200
-+++ b/gcc/config/arm/arm.md    2010-01-25 09:50:28.985687200 +0100
+--- a/gcc/config/arm/arm.md
++++ b/gcc/config/arm/arm.md
 @@ -99,6 +99,7 @@
                          ; correctly for PIC usage.
     (UNSPEC_GOTSYM_OFF 24) ; The offset of the start of the the GOT from a
@@ -4527,18 +5100,6 @@ diff -Nur a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
  (include "vfp11.md")
  
  \f
-@@ -472,9 +479,9 @@
-   if (TARGET_THUMB1)
-     {
-       if (GET_CODE (operands[1]) != REG)
--        operands[1] = force_reg (SImode, operands[1]);
-+        operands[1] = force_reg (DImode, operands[1]);
-       if (GET_CODE (operands[2]) != REG)
--        operands[2] = force_reg (SImode, operands[2]);
-+        operands[2] = force_reg (DImode, operands[2]);
-      }
-   "
- )
 @@ -620,10 +627,11 @@
     sub%?\\t%0, %1, #%n2
     sub%?\\t%0, %1, #%n2
@@ -6552,32 +7113,54 @@ diff -Nur a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
    ""
  )
  
-diff -Nur a/gcc/config/arm/arm-modes.def b/gcc/config/arm/arm-modes.def
---- a/gcc/config/arm/arm-modes.def     2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/arm/arm-modes.def     2010-01-25 09:50:28.985687200 +0100
-@@ -25,6 +25,11 @@
-    FIXME What format is this?  */
- FLOAT_MODE (XF, 12, 0);
+--- a/gcc/config/arm/arm.opt
++++ b/gcc/config/arm/arm.opt
+@@ -78,6 +78,10 @@ Specify if floating point hardware shoul
+ mfp=
+ Target RejectNegative Joined Undocumented Var(target_fpe_name)
  
-+/* Half-precision floating point */
-+FLOAT_MODE (HF, 2, 0);
-+ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
-+                        ? &arm_half_format : &ieee_half_format));
++mfp16-format=
++Target RejectNegative Joined Var(target_fp16_format_name)
++Specify the __fp16 floating-point format
 +
- /* CCFPEmode should be used with floating inequalities,
-    CCFPmode should be used with floating equalities.
-    CC_NOOVmode should be used with SImode integer equalities.
-@@ -62,6 +67,4 @@
- INT_MODE (EI, 24);
- INT_MODE (OI, 32);
- INT_MODE (CI, 48);
--/* ??? This should actually have 512 bits but the precision only has 9
--   bits.  */
--FRACTIONAL_INT_MODE (XI, 511, 64);
-+INT_MODE (XI, 64);
-diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
---- a/gcc/config/arm/arm_neon.h        2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/arm_neon.h        2010-01-25 09:50:28.985687200 +0100
+ ;; Now ignored.
+ mfpe
+ Target RejectNegative Mask(FPE) Undocumented
+@@ -93,6 +97,10 @@ mhard-float
+ Target RejectNegative
+ Alias for -mfloat-abi=hard
++mfix-janus-2cc
++Target Report Mask(FIX_JANUS)
++Work around hardware errata for Avalent Janus 2CC cores.
++
+ mlittle-endian
+ Target Report RejectNegative InverseMask(BIG_END)
+ Assume target CPU is configured as little endian
+@@ -101,6 +109,10 @@ mlong-calls
+ Target Report Mask(LONG_CALLS)
+ Generate call insns as indirect calls, if necessary
++mmarvell-div
++Target Report Mask(MARVELL_DIV)
++Generate hardware integer division instructions supported by some Marvell cores.
++
+ mpic-register=
+ Target RejectNegative Joined Var(arm_pic_register_string)
+ Specify the register to be used for PIC addressing
+@@ -157,6 +169,10 @@ mvectorize-with-neon-quad
+ Target Report Mask(NEON_VECTORIZE_QUAD)
+ Use Neon quad-word (rather than double-word) registers for vectorization
++mlow-irq-latency
++Target Report Var(low_irq_latency)
++Try to reduce interrupt latency of the generated code
++
+ mword-relocations
+ Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
+ Only generate absolute relocations on word sized values.
+--- a/gcc/config/arm/arm_neon.h
++++ b/gcc/config/arm/arm_neon.h
 @@ -36,7 +36,11 @@
  extern "C" {
  #endif
@@ -6590,7 +7173,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  
  typedef __builtin_neon_qi int8x8_t    __attribute__ ((__vector_size__ (8)));
  typedef __builtin_neon_hi int16x4_t   __attribute__ ((__vector_size__ (8)));
-@@ -61,7 +65,7 @@
+@@ -61,7 +65,7 @@ typedef __builtin_neon_uhi uint16x8_t        __
  typedef __builtin_neon_usi uint32x4_t __attribute__ ((__vector_size__ (16)));
  typedef __builtin_neon_udi uint64x2_t __attribute__ ((__vector_size__ (16)));
  
@@ -6599,7 +7182,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  typedef __builtin_neon_poly8 poly8_t;
  typedef __builtin_neon_poly16 poly16_t;
  
-@@ -5085,7 +5089,7 @@
+@@ -5085,7 +5089,7 @@ vset_lane_s32 (int32_t __a, int32x2_t __
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vset_lane_f32 (float32_t __a, float32x2_t __b, const int __c)
  {
@@ -6608,7 +7191,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-@@ -5151,7 +5155,7 @@
+@@ -5151,7 +5155,7 @@ vsetq_lane_s32 (int32_t __a, int32x4_t _
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __c)
  {
@@ -6617,7 +7200,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
-@@ -5283,7 +5287,7 @@
+@@ -5283,7 +5287,7 @@ vdup_n_s32 (int32_t __a)
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vdup_n_f32 (float32_t __a)
  {
@@ -6626,7 +7209,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-@@ -5349,7 +5353,7 @@
+@@ -5349,7 +5353,7 @@ vdupq_n_s32 (int32_t __a)
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vdupq_n_f32 (float32_t __a)
  {
@@ -6635,7 +7218,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
-@@ -5415,7 +5419,7 @@
+@@ -5415,7 +5419,7 @@ vmov_n_s32 (int32_t __a)
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vmov_n_f32 (float32_t __a)
  {
@@ -6644,7 +7227,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-@@ -5481,7 +5485,7 @@
+@@ -5481,7 +5485,7 @@ vmovq_n_s32 (int32_t __a)
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vmovq_n_f32 (float32_t __a)
  {
@@ -6653,7 +7236,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
-@@ -6591,7 +6595,7 @@
+@@ -6591,7 +6595,7 @@ vmul_n_s32 (int32x2_t __a, int32_t __b)
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vmul_n_f32 (float32x2_t __a, float32_t __b)
  {
@@ -6662,7 +7245,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-@@ -6621,7 +6625,7 @@
+@@ -6621,7 +6625,7 @@ vmulq_n_s32 (int32x4_t __a, int32_t __b)
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vmulq_n_f32 (float32x4_t __a, float32_t __b)
  {
@@ -6671,7 +7254,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
-@@ -6735,7 +6739,7 @@
+@@ -6735,7 +6739,7 @@ vmla_n_s32 (int32x2_t __a, int32x2_t __b
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
  {
@@ -6680,7 +7263,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-@@ -6765,7 +6769,7 @@
+@@ -6765,7 +6769,7 @@ vmlaq_n_s32 (int32x4_t __a, int32x4_t __
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
  {
@@ -6689,7 +7272,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
-@@ -6831,7 +6835,7 @@
+@@ -6831,7 +6835,7 @@ vmls_n_s32 (int32x2_t __a, int32x2_t __b
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
  {
@@ -6698,7 +7281,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
-@@ -6861,7 +6865,7 @@
+@@ -6861,7 +6865,7 @@ vmlsq_n_s32 (int32x4_t __a, int32x4_t __
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
  {
@@ -6707,7 +7290,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
-@@ -7851,7 +7855,7 @@
+@@ -7851,7 +7855,7 @@ vld1_s64 (const int64_t * __a)
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vld1_f32 (const float32_t * __a)
  {
@@ -6716,7 +7299,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-@@ -7917,7 +7921,7 @@
+@@ -7917,7 +7921,7 @@ vld1q_s64 (const int64_t * __a)
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vld1q_f32 (const float32_t * __a)
  {
@@ -6725,7 +7308,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
-@@ -7977,7 +7981,7 @@
+@@ -7977,7 +7981,7 @@ vld1_lane_s32 (const int32_t * __a, int3
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vld1_lane_f32 (const float32_t * __a, float32x2_t __b, const int __c)
  {
@@ -6734,7 +7317,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-@@ -8043,7 +8047,7 @@
+@@ -8043,7 +8047,7 @@ vld1q_lane_s32 (const int32_t * __a, int
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vld1q_lane_f32 (const float32_t * __a, float32x4_t __b, const int __c)
  {
@@ -6743,7 +7326,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
-@@ -8109,7 +8113,7 @@
+@@ -8109,7 +8113,7 @@ vld1_dup_s32 (const int32_t * __a)
  __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
  vld1_dup_f32 (const float32_t * __a)
  {
@@ -6752,7 +7335,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
-@@ -8175,7 +8179,7 @@
+@@ -8175,7 +8179,7 @@ vld1q_dup_s32 (const int32_t * __a)
  __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
  vld1q_dup_f32 (const float32_t * __a)
  {
@@ -6761,7 +7344,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
-@@ -8247,7 +8251,7 @@
+@@ -8247,7 +8251,7 @@ vst1_s64 (int64_t * __a, int64x1_t __b)
  __extension__ static __inline void __attribute__ ((__always_inline__))
  vst1_f32 (float32_t * __a, float32x2_t __b)
  {
@@ -6770,7 +7353,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -8313,7 +8317,7 @@
+@@ -8313,7 +8317,7 @@ vst1q_s64 (int64_t * __a, int64x2_t __b)
  __extension__ static __inline void __attribute__ ((__always_inline__))
  vst1q_f32 (float32_t * __a, float32x4_t __b)
  {
@@ -6779,7 +7362,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -8373,7 +8377,7 @@
+@@ -8373,7 +8377,7 @@ vst1_lane_s32 (int32_t * __a, int32x2_t 
  __extension__ static __inline void __attribute__ ((__always_inline__))
  vst1_lane_f32 (float32_t * __a, float32x2_t __b, const int __c)
  {
@@ -6788,7 +7371,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -8439,7 +8443,7 @@
+@@ -8439,7 +8443,7 @@ vst1q_lane_s32 (int32_t * __a, int32x4_t
  __extension__ static __inline void __attribute__ ((__always_inline__))
  vst1q_lane_f32 (float32_t * __a, float32x4_t __b, const int __c)
  {
@@ -6797,7 +7380,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -8512,7 +8516,7 @@
+@@ -8512,7 +8516,7 @@ __extension__ static __inline float32x2x
  vld2_f32 (const float32_t * __a)
  {
    union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
@@ -6806,7 +7389,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -8600,7 +8604,7 @@
+@@ -8600,7 +8604,7 @@ __extension__ static __inline float32x4x
  vld2q_f32 (const float32_t * __a)
  {
    union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
@@ -6815,7 +7398,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -8676,7 +8680,7 @@
+@@ -8676,7 +8680,7 @@ vld2_lane_f32 (const float32_t * __a, fl
  {
    union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
    union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
@@ -6824,7 +7407,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -8748,7 +8752,7 @@
+@@ -8748,7 +8752,7 @@ vld2q_lane_f32 (const float32_t * __a, f
  {
    union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
    union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
@@ -6833,7 +7416,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -8807,7 +8811,7 @@
+@@ -8807,7 +8811,7 @@ __extension__ static __inline float32x2x
  vld2_dup_f32 (const float32_t * __a)
  {
    union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
@@ -6842,7 +7425,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -8892,7 +8896,7 @@
+@@ -8892,7 +8896,7 @@ __extension__ static __inline void __att
  vst2_f32 (float32_t * __a, float32x2x2_t __b)
  {
    union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
@@ -6851,7 +7434,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -8969,7 +8973,7 @@
+@@ -8969,7 +8973,7 @@ __extension__ static __inline void __att
  vst2q_f32 (float32_t * __a, float32x4x2_t __b)
  {
    union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
@@ -6860,7 +7443,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9032,7 +9036,7 @@
+@@ -9032,7 +9036,7 @@ __extension__ static __inline void __att
  vst2_lane_f32 (float32_t * __a, float32x2x2_t __b, const int __c)
  {
    union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
@@ -6869,7 +7452,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9088,7 +9092,7 @@
+@@ -9088,7 +9092,7 @@ __extension__ static __inline void __att
  vst2q_lane_f32 (float32_t * __a, float32x4x2_t __b, const int __c)
  {
    union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
@@ -6878,7 +7461,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9140,7 +9144,7 @@
+@@ -9140,7 +9144,7 @@ __extension__ static __inline float32x2x
  vld3_f32 (const float32_t * __a)
  {
    union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
@@ -6887,7 +7470,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9228,7 +9232,7 @@
+@@ -9228,7 +9232,7 @@ __extension__ static __inline float32x4x
  vld3q_f32 (const float32_t * __a)
  {
    union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
@@ -6896,7 +7479,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9304,7 +9308,7 @@
+@@ -9304,7 +9308,7 @@ vld3_lane_f32 (const float32_t * __a, fl
  {
    union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
    union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
@@ -6905,7 +7488,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9376,7 +9380,7 @@
+@@ -9376,7 +9380,7 @@ vld3q_lane_f32 (const float32_t * __a, f
  {
    union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
    union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
@@ -6914,7 +7497,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9435,7 +9439,7 @@
+@@ -9435,7 +9439,7 @@ __extension__ static __inline float32x2x
  vld3_dup_f32 (const float32_t * __a)
  {
    union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
@@ -6923,7 +7506,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9520,7 +9524,7 @@
+@@ -9520,7 +9524,7 @@ __extension__ static __inline void __att
  vst3_f32 (float32_t * __a, float32x2x3_t __b)
  {
    union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
@@ -6932,7 +7515,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9597,7 +9601,7 @@
+@@ -9597,7 +9601,7 @@ __extension__ static __inline void __att
  vst3q_f32 (float32_t * __a, float32x4x3_t __b)
  {
    union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
@@ -6941,7 +7524,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9660,7 +9664,7 @@
+@@ -9660,7 +9664,7 @@ __extension__ static __inline void __att
  vst3_lane_f32 (float32_t * __a, float32x2x3_t __b, const int __c)
  {
    union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
@@ -6950,7 +7533,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9716,7 +9720,7 @@
+@@ -9716,7 +9720,7 @@ __extension__ static __inline void __att
  vst3q_lane_f32 (float32_t * __a, float32x4x3_t __b, const int __c)
  {
    union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
@@ -6959,7 +7542,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -9768,7 +9772,7 @@
+@@ -9768,7 +9772,7 @@ __extension__ static __inline float32x2x
  vld4_f32 (const float32_t * __a)
  {
    union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
@@ -6968,7 +7551,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9856,7 +9860,7 @@
+@@ -9856,7 +9860,7 @@ __extension__ static __inline float32x4x
  vld4q_f32 (const float32_t * __a)
  {
    union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
@@ -6977,7 +7560,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -9932,7 +9936,7 @@
+@@ -9932,7 +9936,7 @@ vld4_lane_f32 (const float32_t * __a, fl
  {
    union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
    union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
@@ -6986,7 +7569,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -10004,7 +10008,7 @@
+@@ -10004,7 +10008,7 @@ vld4q_lane_f32 (const float32_t * __a, f
  {
    union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
    union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
@@ -6995,7 +7578,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -10063,7 +10067,7 @@
+@@ -10063,7 +10067,7 @@ __extension__ static __inline float32x2x
  vld4_dup_f32 (const float32_t * __a)
  {
    union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
@@ -7004,7 +7587,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
    return __rv.__i;
  }
  
-@@ -10148,7 +10152,7 @@
+@@ -10148,7 +10152,7 @@ __extension__ static __inline void __att
  vst4_f32 (float32_t * __a, float32x2x4_t __b)
  {
    union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
@@ -7013,7 +7596,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -10225,7 +10229,7 @@
+@@ -10225,7 +10229,7 @@ __extension__ static __inline void __att
  vst4q_f32 (float32_t * __a, float32x4x4_t __b)
  {
    union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
@@ -7022,7 +7605,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -10288,7 +10292,7 @@
+@@ -10288,7 +10292,7 @@ __extension__ static __inline void __att
  vst4_lane_f32 (float32_t * __a, float32x2x4_t __b, const int __c)
  {
    union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
@@ -7031,7 +7614,7 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-@@ -10344,7 +10348,7 @@
+@@ -10344,7 +10348,7 @@ __extension__ static __inline void __att
  vst4q_lane_f32 (float32_t * __a, float32x4x4_t __b, const int __c)
  {
    union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
@@ -7040,161 +7623,73 @@ diff -Nur a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h
  }
  
  __extension__ static __inline void __attribute__ ((__always_inline__))
-diff -Nur a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
---- a/gcc/config/arm/arm.opt   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/arm.opt   2010-01-25 09:50:28.985687200 +0100
-@@ -78,6 +78,10 @@
- mfp=
- Target RejectNegative Joined Undocumented Var(target_fpe_name)
-+mfp16-format=
-+Target RejectNegative Joined Var(target_fp16_format_name)
-+Specify the __fp16 floating-point format
-+
- ;; Now ignored.
- mfpe
- Target RejectNegative Mask(FPE) Undocumented
-@@ -93,6 +97,10 @@
- Target RejectNegative
- Alias for -mfloat-abi=hard
+--- a/gcc/config/arm/bpabi-v6m.S
++++ b/gcc/config/arm/bpabi-v6m.S
+@@ -69,9 +69,52 @@ FUNC_START aeabi_ulcmp
  
-+mfix-janus-2cc
-+Target Report Mask(FIX_JANUS)
-+Work around hardware errata for Avalent Janus 2CC cores.
-+
- mlittle-endian
- Target Report RejectNegative InverseMask(BIG_END)
- Assume target CPU is configured as little endian
-@@ -101,6 +109,10 @@
- Target Report Mask(LONG_CALLS)
- Generate call insns as indirect calls, if necessary
+ #endif /* L_aeabi_ulcmp */
  
-+mmarvell-div
-+Target Report Mask(MARVELL_DIV)
-+Generate hardware integer division instructions supported by some Marvell cores.
++.macro test_div_by_zero signed
++      cmp     yyh, #0
++      bne     7f
++      cmp     yyl, #0
++      bne     7f
++      cmp     xxh, #0
++      bne     2f
++      cmp     xxl, #0
++2:
++      .ifc    \signed, unsigned
++      beq     3f
++      mov     xxh, #0
++      mvn     xxh, xxh                @ 0xffffffff
++      mov     xxl, xxh
++3:
++      .else
++      beq     5f
++      blt     6f
++      mov     xxl, #0
++      mvn     xxl, xxl                @ 0xffffffff
++      lsr     xxh, xxl, #1            @ 0x7fffffff
++      b       5f
++6:    mov     xxh, #0x80
++      lsl     xxh, xxh, #24           @ 0x80000000
++      mov     xxl, #0
++5:
++      .endif
++      @ tailcalls are tricky on v6-m.
++      push    {r0, r1, r2}
++      ldr     r0, 1f
++      adr     r1, 1f
++      add     r0, r1
++      str     r0, [sp, #8]
++      @ We know we are not on armv4t, so pop pc is safe.
++      pop     {r0, r1, pc}
++      .align  2
++1:
++      .word   __aeabi_ldiv0 - 1b
++7:
++.endm
 +
- mpic-register=
- Target RejectNegative Joined Var(arm_pic_register_string)
- Specify the register to be used for PIC addressing
-@@ -157,6 +169,10 @@
- Target Report Mask(NEON_VECTORIZE_QUAD)
- Use Neon quad-word (rather than double-word) registers for vectorization
+ #ifdef L_aeabi_ldivmod
  
-+mlow-irq-latency
-+Target Report Var(low_irq_latency)
-+Try to reduce interrupt latency of the generated code
+ FUNC_START aeabi_ldivmod
++      test_div_by_zero signed
 +
- mword-relocations
- Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
- Only generate absolute relocations on word sized values.
-diff -Nur a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h
---- a/gcc/config/arm/arm-protos.h      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/arm-protos.h      2010-01-25 09:50:28.985687200 +0100
-@@ -88,7 +88,7 @@
- extern int cirrus_memory_offset (rtx);
- extern int arm_coproc_mem_operand (rtx, bool);
--extern int neon_vector_mem_operand (rtx, bool);
-+extern int neon_vector_mem_operand (rtx, int);
- extern int neon_struct_mem_operand (rtx);
- extern int arm_no_early_store_addr_dep (rtx, rtx);
- extern int arm_no_early_alu_shift_dep (rtx, rtx);
-@@ -144,6 +144,7 @@
- extern int arm_debugger_arg_offset (int, rtx);
- extern bool arm_is_long_call_p (tree);
- extern int    arm_emit_vector_const (FILE *, rtx);
-+extern void arm_emit_fp16_const (rtx c);
- extern const char * arm_output_load_gr (rtx *);
- extern const char *vfp_output_fstmd (rtx *);
- extern void arm_set_return_address (rtx, rtx);
-@@ -154,13 +155,15 @@
- #if defined TREE_CODE
- extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern void arm_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode,
-+                                    tree, bool);
- extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree);
- extern bool arm_pad_arg_upward (enum machine_mode, const_tree);
- extern bool arm_pad_reg_upward (enum machine_mode, tree, int);
- extern bool arm_needs_doubleword_align (enum machine_mode, tree);
--extern rtx arm_function_value(const_tree, const_tree);
- #endif
- extern int arm_apply_result_size (void);
-+extern rtx aapcs_libcall_value (enum machine_mode);
- #endif /* RTX_CODE */
-diff -Nur a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md
---- a/gcc/config/arm/arm-tune.md       2009-07-22 09:43:59.000000000 +0200
-+++ b/gcc/config/arm/arm-tune.md       2010-01-25 09:50:28.985687200 +0100
-@@ -1,5 +1,5 @@
- ;; -*- buffer-read-only: t -*-
- ;; Generated automatically by gentune.sh from arm-cores.def
- (define_attr "tune"
--      "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm3,cortexm1"
-+      "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,marvell_f,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,cortexa5,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm3,cortexm1,cortexm0"
-       (const (symbol_ref "arm_tune")))
-diff -Nur a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
---- a/gcc/config/arm/bpabi.h   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/bpabi.h   2010-01-25 09:50:28.985687200 +0100
-@@ -30,7 +30,7 @@
- /* Section 4.1 of the AAPCS requires the use of VFP format.  */
- #undef  FPUTYPE_DEFAULT
--#define FPUTYPE_DEFAULT FPUTYPE_VFP
-+#define FPUTYPE_DEFAULT "vfp"
- /* TARGET_BIG_ENDIAN_DEFAULT is set in
-    config.gcc for big endian configurations.  */
-@@ -53,6 +53,8 @@
- #define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}"
+       push {r0, r1}
+       mov r0, sp
+       push {r0, lr}
+@@ -89,6 +132,8 @@ FUNC_START aeabi_ldivmod
+ #ifdef L_aeabi_uldivmod
  
-+#define BE8_LINK_SPEC " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5|mcpu=cortex-a8|mcpu=cortex-a9:%{!r:--be8}}}"
+ FUNC_START aeabi_uldivmod
++      test_div_by_zero unsigned
 +
- /* Tell the assembler to build BPABI binaries.  */
- #undef  SUBTARGET_EXTRA_ASM_SPEC
- #define SUBTARGET_EXTRA_ASM_SPEC "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC
-@@ -65,7 +67,7 @@
- #define BPABI_LINK_SPEC \
-   "%{mbig-endian:-EB} %{mlittle-endian:-EL} "         \
-   "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "      \
--  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC
-+  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC BE8_LINK_SPEC
- #undef  LINK_SPEC
- #define LINK_SPEC BPABI_LINK_SPEC
-@@ -90,16 +92,22 @@
- #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, lmul)
- #endif
- #ifdef L_fixdfdi
--#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz)
-+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz) \
-+  extern DWtype __fixdfdi (DFtype) __attribute__((pcs("aapcs"))); \
-+  extern UDWtype __fixunsdfdi (DFtype) __asm__("__aeabi_d2ulz") __attribute__((pcs("aapcs")));
- #endif
- #ifdef L_fixunsdfdi
--#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz)
-+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz) \
-+  extern UDWtype __fixunsdfdi (DFtype) __attribute__((pcs("aapcs")));
- #endif
- #ifdef L_fixsfdi
--#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz)
-+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz) \
-+  extern DWtype __fixsfdi (SFtype) __attribute__((pcs("aapcs"))); \
-+  extern UDWtype __fixunssfdi (SFtype) __asm__("__aeabi_f2ulz") __attribute__((pcs("aapcs")));
- #endif
- #ifdef L_fixunssfdi
--#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz)
-+#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz) \
-+  extern UDWtype __fixunssfdi (SFtype) __attribute__((pcs("aapcs")));
- #endif
- #ifdef L_floatdidf
- #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, l2d)
-diff -Nur a/gcc/config/arm/bpabi.S b/gcc/config/arm/bpabi.S
---- a/gcc/config/arm/bpabi.S   2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/bpabi.S   2010-01-25 09:50:28.985687200 +0100
-@@ -64,20 +64,69 @@
+       push {r0, r1}
+       mov r0, sp
+       push {r0, lr}
+--- a/gcc/config/arm/bpabi.S
++++ b/gcc/config/arm/bpabi.S
+@@ -64,20 +64,69 @@ ARM_FUNC_START aeabi_ulcmp
  
  #endif /* L_aeabi_ulcmp */
  
@@ -7268,7 +7763,7 @@ diff -Nur a/gcc/config/arm/bpabi.S b/gcc/config/arm/bpabi.S
        RET
        
  #endif /* L_aeabi_ldivmod */
-@@ -85,17 +134,20 @@
+@@ -85,17 +134,20 @@ ARM_FUNC_START aeabi_ldivmod
  #ifdef L_aeabi_uldivmod
  
  ARM_FUNC_START aeabi_uldivmod
@@ -7293,74 +7788,64 @@ diff -Nur a/gcc/config/arm/bpabi.S b/gcc/config/arm/bpabi.S
        RET
        
  #endif /* L_aeabi_divmod */
-diff -Nur a/gcc/config/arm/bpabi-v6m.S b/gcc/config/arm/bpabi-v6m.S
---- a/gcc/config/arm/bpabi-v6m.S       2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/bpabi-v6m.S       2010-01-25 09:50:28.985687200 +0100
-@@ -69,9 +69,52 @@
+--- a/gcc/config/arm/bpabi.h
++++ b/gcc/config/arm/bpabi.h
+@@ -30,7 +30,7 @@
  
- #endif /* L_aeabi_ulcmp */
+ /* Section 4.1 of the AAPCS requires the use of VFP format.  */
+ #undef  FPUTYPE_DEFAULT
+-#define FPUTYPE_DEFAULT FPUTYPE_VFP
++#define FPUTYPE_DEFAULT "vfp"
  
-+.macro test_div_by_zero signed
-+      cmp     yyh, #0
-+      bne     7f
-+      cmp     yyl, #0
-+      bne     7f
-+      cmp     xxh, #0
-+      bne     2f
-+      cmp     xxl, #0
-+2:
-+      .ifc    \signed, unsigned
-+      beq     3f
-+      mov     xxh, #0
-+      mvn     xxh, xxh                @ 0xffffffff
-+      mov     xxl, xxh
-+3:
-+      .else
-+      beq     5f
-+      blt     6f
-+      mov     xxl, #0
-+      mvn     xxl, xxl                @ 0xffffffff
-+      lsr     xxh, xxl, #1            @ 0x7fffffff
-+      b       5f
-+6:    mov     xxh, #0x80
-+      lsl     xxh, xxh, #24           @ 0x80000000
-+      mov     xxl, #0
-+5:
-+      .endif
-+      @ tailcalls are tricky on v6-m.
-+      push    {r0, r1, r2}
-+      ldr     r0, 1f
-+      adr     r1, 1f
-+      add     r0, r1
-+      str     r0, [sp, #8]
-+      @ We know we are not on armv4t, so pop pc is safe.
-+      pop     {r0, r1, pc}
-+      .align  2
-+1:
-+      .word   __aeabi_ldiv0 - 1b
-+7:
-+.endm
-+
- #ifdef L_aeabi_ldivmod
+ /* TARGET_BIG_ENDIAN_DEFAULT is set in
+    config.gcc for big endian configurations.  */
+@@ -53,6 +53,8 @@
  
- FUNC_START aeabi_ldivmod
-+      test_div_by_zero signed
-+
-       push {r0, r1}
-       mov r0, sp
-       push {r0, lr}
-@@ -89,6 +132,8 @@
- #ifdef L_aeabi_uldivmod
+ #define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}"
  
- FUNC_START aeabi_uldivmod
-+      test_div_by_zero unsigned
++#define BE8_LINK_SPEC " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5|mcpu=cortex-a8|mcpu=cortex-a9:%{!r:--be8}}}"
 +
-       push {r0, r1}
-       mov r0, sp
-       push {r0, lr}
-diff -Nur a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md
---- a/gcc/config/arm/constraints.md    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/constraints.md    2010-01-25 09:50:28.985687200 +0100
+ /* Tell the assembler to build BPABI binaries.  */
+ #undef  SUBTARGET_EXTRA_ASM_SPEC
+ #define SUBTARGET_EXTRA_ASM_SPEC "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC
+@@ -65,7 +67,7 @@
+ #define BPABI_LINK_SPEC \
+   "%{mbig-endian:-EB} %{mlittle-endian:-EL} "         \
+   "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "      \
+-  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC
++  "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC BE8_LINK_SPEC
+ #undef  LINK_SPEC
+ #define LINK_SPEC BPABI_LINK_SPEC
+@@ -90,16 +92,22 @@
+ #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, lmul)
+ #endif
+ #ifdef L_fixdfdi
+-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz)
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz) \
++  extern DWtype __fixdfdi (DFtype) __attribute__((pcs("aapcs"))); \
++  extern UDWtype __fixunsdfdi (DFtype) __asm__("__aeabi_d2ulz") __attribute__((pcs("aapcs")));
+ #endif
+ #ifdef L_fixunsdfdi
+-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz)
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz) \
++  extern UDWtype __fixunsdfdi (DFtype) __attribute__((pcs("aapcs")));
+ #endif
+ #ifdef L_fixsfdi
+-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz)
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz) \
++  extern DWtype __fixsfdi (SFtype) __attribute__((pcs("aapcs"))); \
++  extern UDWtype __fixunssfdi (SFtype) __asm__("__aeabi_f2ulz") __attribute__((pcs("aapcs")));
+ #endif
+ #ifdef L_fixunssfdi
+-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz)
++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz) \
++  extern UDWtype __fixunssfdi (SFtype) __attribute__((pcs("aapcs")));
+ #endif
+ #ifdef L_floatdidf
+ #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, l2d)
+--- a/gcc/config/arm/constraints.md
++++ b/gcc/config/arm/constraints.md
 @@ -25,14 +25,15 @@
  ;; In ARM state, 'l' is an alias for 'r'
  
@@ -7473,9 +7958,8 @@ diff -Nur a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md
  
  (define_memory_constraint "Uq"
   "@internal
-diff -Nur a/gcc/config/arm/fp16.c b/gcc/config/arm/fp16.c
---- a/gcc/config/arm/fp16.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/fp16.c    2010-01-25 09:50:28.985687200 +0100
+--- /dev/null
++++ b/gcc/config/arm/fp16.c
 @@ -0,0 +1,145 @@
 +/* Half-float conversion routines.
 +
@@ -7622,9 +8106,8 @@ diff -Nur a/gcc/config/arm/fp16.c b/gcc/config/arm/fp16.c
 +{
 +  return __gnu_h2f_internal(a, 0);
 +}
-diff -Nur a/gcc/config/arm/fpa.md b/gcc/config/arm/fpa.md
---- a/gcc/config/arm/fpa.md    2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/arm/fpa.md    2010-01-25 09:50:28.985687200 +0100
+--- a/gcc/config/arm/fpa.md
++++ b/gcc/config/arm/fpa.md
 @@ -599,10 +599,10 @@
      {
      default:
@@ -7638,9 +8121,8 @@ diff -Nur a/gcc/config/arm/fpa.md b/gcc/config/arm/fpa.md
              return \"stf%?e\\t%1, %0\";
            return \"sfm%?\\t%1, 1, %0\";
      }
-diff -Nur a/gcc/config/arm/hwdiv.md b/gcc/config/arm/hwdiv.md
---- a/gcc/config/arm/hwdiv.md  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/hwdiv.md  2010-01-25 09:50:28.985687200 +0100
+--- /dev/null
++++ b/gcc/config/arm/hwdiv.md
 @@ -0,0 +1,41 @@
 +;; ARM instruction patterns for hardware division 
 +;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -7683,10 +8165,9 @@ diff -Nur a/gcc/config/arm/hwdiv.md b/gcc/config/arm/hwdiv.md
 +   (set_attr "insn" "udiv")]
 +)
 +
-diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
---- a/gcc/config/arm/ieee754-df.S      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/ieee754-df.S      2010-01-25 09:50:28.985687200 +0100
-@@ -83,7 +83,7 @@
+--- a/gcc/config/arm/ieee754-df.S
++++ b/gcc/config/arm/ieee754-df.S
+@@ -83,7 +83,7 @@ ARM_FUNC_ALIAS aeabi_dsub subdf3
  ARM_FUNC_START adddf3
  ARM_FUNC_ALIAS aeabi_dadd adddf3
  
@@ -7695,7 +8176,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
  
        @ Look for zeroes, equal values, INF, or NAN.
        shift1  lsl, r4, xh, #1
-@@ -427,7 +427,7 @@
+@@ -427,7 +427,7 @@ ARM_FUNC_ALIAS aeabi_ui2d floatunsidf
        do_it   eq, t
        moveq   r1, #0
        RETc(eq)
@@ -7704,7 +8185,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
        mov     r4, #0x400              @ initial exponent
        add     r4, r4, #(52-1 - 1)
        mov     r5, #0                  @ sign bit is 0
-@@ -447,7 +447,7 @@
+@@ -447,7 +447,7 @@ ARM_FUNC_ALIAS aeabi_i2d floatsidf
        do_it   eq, t
        moveq   r1, #0
        RETc(eq)
@@ -7713,7 +8194,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
        mov     r4, #0x400              @ initial exponent
        add     r4, r4, #(52-1 - 1)
        ands    r5, r0, #0x80000000     @ sign bit in r5
-@@ -481,7 +481,7 @@
+@@ -481,7 +481,7 @@ ARM_FUNC_ALIAS aeabi_f2d extendsfdf2
        RETc(eq)                        @ we are done already.
  
        @ value was denormalized.  We can normalize it now.
@@ -7722,7 +8203,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
        mov     r4, #0x380              @ setup corresponding exponent
        and     r5, xh, #0x80000000     @ move sign bit in r5
        bic     xh, xh, #0x80000000
-@@ -508,9 +508,9 @@
+@@ -508,9 +508,9 @@ ARM_FUNC_ALIAS aeabi_ul2d floatundidf
        @ compatibility.
        adr     ip, LSYM(f0_ret)
        @ Push pc as well so that RETLDM works correctly.
@@ -7734,7 +8215,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
  #endif
  
        mov     r5, #0
-@@ -534,9 +534,9 @@
+@@ -534,9 +534,9 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
        @ compatibility.
        adr     ip, LSYM(f0_ret)
        @ Push pc as well so that RETLDM works correctly.
@@ -7746,7 +8227,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
  #endif
  
        ands    r5, ah, #0x80000000     @ sign bit in r5
-@@ -585,7 +585,7 @@
+@@ -585,7 +585,7 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
        @ Legacy code expects the result to be returned in f0.  Copy it
        @ there as well.
  LSYM(f0_ret):
@@ -7755,7 +8236,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
        ldfd    f0, [sp], #8
        RETLDM
  
-@@ -602,7 +602,7 @@
+@@ -602,7 +602,7 @@ LSYM(f0_ret):
  
  ARM_FUNC_START muldf3
  ARM_FUNC_ALIAS aeabi_dmul muldf3
@@ -7764,7 +8245,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
  
        @ Mask out exponents, trap any zero/denormal/INF/NAN.
        mov     ip, #0xff
-@@ -910,7 +910,7 @@
+@@ -910,7 +910,7 @@ LSYM(Lml_n):
  ARM_FUNC_START divdf3
  ARM_FUNC_ALIAS aeabi_ddiv divdf3
        
@@ -7773,35 +8254,7 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
  
        @ Mask out exponents, trap any zero/denormal/INF/NAN.
        mov     ip, #0xff
-@@ -1117,7 +1117,7 @@
- ARM_FUNC_ALIAS eqdf2 cmpdf2
-       mov     ip, #1                  @ how should we specify unordered here?
--1:    str     ip, [sp, #-4]
-+1:    str     ip, [sp, #-4]!
-       @ Trap any INF/NAN first.
-       mov     ip, xh, lsl #1
-@@ -1129,7 +1129,8 @@
-       @ Test for equality.
-       @ Note that 0.0 is equal to -0.0.
--2:    orrs    ip, xl, xh, lsl #1      @ if x == 0.0 or -0.0
-+2:    add     sp, sp, #4
-+      orrs    ip, xl, xh, lsl #1      @ if x == 0.0 or -0.0
-       do_it   eq, e
-       COND(orr,s,eq)  ip, yl, yh, lsl #1      @ and y == 0.0 or -0.0
-       teqne   xh, yh                  @ or xh == yh
-@@ -1168,7 +1169,7 @@
-       bne     2b
-       orrs    ip, yl, yh, lsl #12
-       beq     2b                      @ y is not NAN
--5:    ldr     r0, [sp, #-4]           @ unordered return code
-+5:    ldr     r0, [sp], #4            @ unordered return code
-       RET
-       FUNC_END gedf2
-@@ -1194,7 +1195,7 @@
+@@ -1195,7 +1195,7 @@ ARM_FUNC_ALIAS aeabi_cdcmple aeabi_cdcmp
  
        @ The status-returning routines are required to preserve all
        @ registers except ip, lr, and cpsr.
@@ -7810,10 +8263,9 @@ diff -Nur a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
        ARM_CALL cmpdf2
        @ Set the Z flag correctly, and the C flag unconditionally.
        cmp     r0, #0
-diff -Nur a/gcc/config/arm/ieee754-sf.S b/gcc/config/arm/ieee754-sf.S
---- a/gcc/config/arm/ieee754-sf.S      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/ieee754-sf.S      2010-01-25 09:50:28.985687200 +0100
-@@ -481,7 +481,7 @@
+--- a/gcc/config/arm/ieee754-sf.S
++++ b/gcc/config/arm/ieee754-sf.S
+@@ -481,7 +481,7 @@ LSYM(Lml_x):
        and     r3, ip, #0x80000000
  
        @ Well, no way to make it shorter without the umull instruction.
@@ -7822,7 +8274,7 @@ diff -Nur a/gcc/config/arm/ieee754-sf.S b/gcc/config/arm/ieee754-sf.S
        mov     r4, r0, lsr #16
        mov     r5, r1, lsr #16
        bic     r0, r0, r4, lsl #16
-@@ -492,7 +492,7 @@
+@@ -492,7 +492,7 @@ LSYM(Lml_x):
        mla     r0, r4, r1, r0
        adds    r3, r3, r0, lsl #16
        adc     r1, ip, r0, lsr #16
@@ -7831,35 +8283,7 @@ diff -Nur a/gcc/config/arm/ieee754-sf.S b/gcc/config/arm/ieee754-sf.S
  
  #else
  
-@@ -822,7 +822,7 @@
- ARM_FUNC_ALIAS eqsf2 cmpsf2
-       mov     ip, #1                  @ how should we specify unordered here?
--1:    str     ip, [sp, #-4]
-+1:    str     ip, [sp, #-4]!
-       @ Trap any INF/NAN first.
-       mov     r2, r0, lsl #1
-@@ -834,7 +834,8 @@
-       @ Compare values.
-       @ Note that 0.0 is equal to -0.0.
--2:    orrs    ip, r2, r3, lsr #1      @ test if both are 0, clear C flag
-+2:    add     sp, sp, #4
-+      orrs    ip, r2, r3, lsr #1      @ test if both are 0, clear C flag
-       do_it   ne
-       teqne   r0, r1                  @ if not 0 compare sign
-       do_it   pl
-@@ -858,7 +859,7 @@
-       bne     2b
-       movs    ip, r1, lsl #9
-       beq     2b                      @ r1 is not NAN
--5:    ldr     r0, [sp, #-4]           @ return unordered code.
-+5:    ldr     r0, [sp], #4            @ return unordered code.
-       RET
-       FUNC_END gesf2
-@@ -881,7 +882,7 @@
+@@ -882,7 +882,7 @@ ARM_FUNC_ALIAS aeabi_cfcmple aeabi_cfcmp
  
        @ The status-returning routines are required to preserve all
        @ registers except ip, lr, and cpsr.
@@ -7868,10 +8292,9 @@ diff -Nur a/gcc/config/arm/ieee754-sf.S b/gcc/config/arm/ieee754-sf.S
        ARM_CALL cmpsf2
        @ Set the Z flag correctly, and the C flag unconditionally.
        cmp     r0, #0
-diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
---- a/gcc/config/arm/lib1funcs.asm     2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/lib1funcs.asm     2010-01-25 09:50:28.985687200 +0100
-@@ -27,8 +27,17 @@
+--- a/gcc/config/arm/lib1funcs.asm
++++ b/gcc/config/arm/lib1funcs.asm
+@@ -27,8 +27,17 @@ see the files COPYING3 and COPYING.RUNTI
  #if defined(__ELF__) && defined(__linux__)
  .section .note.GNU-stack,"",%progbits
  .previous
@@ -7890,7 +8313,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  /* ------------------------------------------------------------------------ */
  
  /* We need to know what prefix to add to function names.  */
-@@ -233,8 +242,8 @@
+@@ -233,8 +242,8 @@ LSYM(Lend_fde):
  .macro shift1 op, arg0, arg1, arg2
        \op     \arg0, \arg1, \arg2
  .endm
@@ -7901,7 +8324,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  #define COND(op1, op2, cond) op1 ## op2 ## cond
  /* Perform an arithmetic operation with a variable shift operand.  This
     requires two instructions and a scratch register on Thumb-2.  */
-@@ -248,24 +257,133 @@
+@@ -248,24 +257,133 @@ LSYM(Lend_fde):
  .macro shift1 op, arg0, arg1, arg2
        mov     \arg0, \arg1, \op \arg2
  .endm
@@ -8039,7 +8462,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        push    { r1, lr }
  98:   cfi_push 98b - __\name, 0xe, -0x4, 0x8
        bl      SYM (__div0)
-@@ -277,18 +395,19 @@
+@@ -277,18 +395,19 @@ LSYM(Lend_fde):
        pop     { r1, pc }
  #endif
  .endm
@@ -8062,7 +8485,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  #endif
        cfi_end LSYM(Lend_div0)
        FUNC_END \name
-@@ -413,6 +532,12 @@
+@@ -413,6 +532,12 @@ SYM (__\name):
  #define yyl r2
  #endif        
  
@@ -8075,7 +8498,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  #ifdef __thumb__
  /* Register aliases.  */
  
-@@ -437,6 +562,43 @@
+@@ -437,6 +562,43 @@ pc                .req    r15
  
  #if __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__)
  
@@ -8119,7 +8542,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        clz     \curbit, \dividend
        clz     \result, \divisor
        sub     \curbit, \result, \curbit
-@@ -452,6 +614,7 @@
+@@ -452,6 +614,7 @@ pc         .req    r15
        adc     \result, \result, \result
        subcs   \dividend, \dividend, \divisor, lsl #shift
        .endr
@@ -8127,7 +8550,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  
  #else /* __ARM_ARCH__ < 5 || defined (__OPTIMIZE_SIZE__) */
  #if __ARM_ARCH__ >= 5
-@@ -499,18 +662,23 @@
+@@ -499,18 +662,23 @@ pc               .req    r15
  
        @ Division loop
  1:    cmp     \dividend, \divisor
@@ -8151,7 +8574,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        movnes  \curbit,   \curbit,  lsr #4     @ No, any more bits to do?
        movne   \divisor,  \divisor, lsr #4
        bne     1b
-@@ -799,13 +967,14 @@
+@@ -799,13 +967,14 @@ LSYM(Lgot_result):
  /* ------------------------------------------------------------------------ */
  #ifdef L_udivsi3
  
@@ -8168,7 +8591,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        mov     curbit, #1
        mov     result, #0
        
-@@ -819,9 +988,16 @@
+@@ -819,9 +988,16 @@ LSYM(Lgot_result):
        pop     { work }
        RET
  
@@ -8186,7 +8609,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        RETc(eq)
        bcc     LSYM(Ldiv0)
        cmp     r0, r1
-@@ -834,7 +1010,8 @@
+@@ -834,7 +1010,8 @@ LSYM(Lgot_result):
        mov     r0, r2
        RET     
  
@@ -8196,7 +8619,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        movne   r0, #0
        RET
  
-@@ -845,19 +1022,24 @@
+@@ -845,19 +1022,24 @@ LSYM(Lgot_result):
  
  #endif /* ARM version */
  
@@ -8225,7 +8648,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        ldmfd   sp!, { r1, r2, lr }
        mul     r3, r2, r0
        sub     r1, r1, r3
-@@ -904,19 +1086,20 @@
+@@ -904,19 +1086,20 @@ LSYM(Lover10):
  
  #endif /* ARM version.  */
        
@@ -8249,7 +8672,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        push    { work }
        mov     work, dividend
        eor     work, divisor           @ Save the sign of the result.
-@@ -945,15 +1128,21 @@
+@@ -945,15 +1128,21 @@ LSYM(Lover12):
        pop     { work }
        RET
  
@@ -8273,7 +8696,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        rsbmi   r3, r0, #0                      @ positive dividend value
        cmp     r3, r1
        bls     11f
-@@ -963,14 +1152,18 @@
+@@ -963,14 +1152,18 @@ LSYM(Lover12):
        ARM_DIV_BODY r3, r1, r0, r2
        
        cmp     ip, #0
@@ -8293,7 +8716,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        moveq   r0, ip, asr #31
        orreq   r0, r0, #1
        RET
-@@ -979,24 +1172,30 @@
+@@ -979,24 +1172,30 @@ LSYM(Lover12):
  
        cmp     ip, #0
        mov     r0, r3, lsr r2
@@ -8328,7 +8751,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        ldmfd   sp!, { r1, r2, lr }
        mul     r3, r2, r0
        sub     r1, r1, r3
-@@ -1062,21 +1261,25 @@
+@@ -1062,21 +1261,25 @@ LSYM(Lover12):
  
  #endif /* ARM version */
        
@@ -8360,7 +8783,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
        
  #endif /* L_divmodsi_tools */
  /* ------------------------------------------------------------------------ */
-@@ -1086,16 +1289,49 @@
+@@ -1086,16 +1289,49 @@ LSYM(Lover12):
  /* Constant taken from <asm/signal.h>.  */
  #define SIGFPE        8
  
@@ -8411,7 +8834,7 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  /* ------------------------------------------------------------------------ */
  /* Dword shift operations.  */
  /* All the following Dword shift variants rely on the fact that
-@@ -1292,7 +1528,7 @@
+@@ -1292,7 +1528,7 @@ FUNC_START clzdi2
        push    {r4, lr}
  # else
  ARM_FUNC_START clzdi2
@@ -8420,9 +8843,8 @@ diff -Nur a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
  # endif
        cmp     xxh, #0
        bne     1f
-diff -Nur a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
---- a/gcc/config/arm/linux-eabi.h      2007-11-08 14:44:09.000000000 +0100
-+++ b/gcc/config/arm/linux-eabi.h      2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/linux-eabi.h
++++ b/gcc/config/arm/linux-eabi.h
 @@ -66,22 +66,14 @@
  /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
     use the GNU/Linux version, not the generic BPABI version.  */
@@ -8451,9 +8873,8 @@ diff -Nur a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
 -                  : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \
 -}
 +#define CLEAR_INSN_CACHE(BEG, END) not used
-diff -Nur a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
---- a/gcc/config/arm/linux-elf.h       2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/linux-elf.h       2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/linux-elf.h
++++ b/gcc/config/arm/linux-elf.h
 @@ -98,7 +98,7 @@
  
  /* NWFPE always understands FPA instructions.  */
@@ -8463,9 +8884,164 @@ diff -Nur a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
  
  /* Call the function profiler with a given profile label.  */
  #undef  ARM_FUNCTION_PROFILER
-diff -Nur a/gcc/config/arm/marvell-f.md b/gcc/config/arm/marvell-f.md
---- a/gcc/config/arm/marvell-f.md      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/marvell-f.md      2010-01-25 09:50:28.995687913 +0100
+--- /dev/null
++++ b/gcc/config/arm/marvell-f-vfp.md
+@@ -0,0 +1,153 @@
++;; Marvell 2850 VFP pipeline description
++;; Copyright (C) 2007 Free Software Foundation, Inc.
++;; Written by CodeSourcery, Inc.
++
++;; This file is part of GCC.
++
++;; GCC 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 COPYING.  If not, write to
++;; the Free Software Foundation, 51 Franklin Street, Fifth Floor,
++;; Boston, MA 02110-1301, USA.
++
++;; This automaton provides a pipeline description for the Marvell
++;; 2850 core.
++;;
++;; The model given here assumes that the condition for all conditional
++;; instructions is "true", i.e., that all of the instructions are
++;; actually executed.
++
++(define_automaton "marvell_f_vfp")
++
++;; This is a single-issue VFPv2 implementation with the following execution
++;; units:
++;;
++;; 1. Addition/subtraction unit; takes three cycles, pipelined.
++;; 2. Multiplication unit; takes four cycles, pipelined.
++;; 3. Add buffer, used for multiply-accumulate (see below).
++;; 4. Divide/square root unit, not pipelined.
++;;    For single-precision: takes sixteen cycles, can accept another insn
++;;                        after fifteen cycles.
++;;    For double-precision: takes thirty-one cycles, can accept another insn
++;;                        after thirty cycles.
++;; 5. Single-cycle unit, pipelined.
++;;    This does absolute value/copy/negate/compare in one cycle and
++;;    conversion in two cycles.
++;;
++;; When all three operands of a multiply-accumulate instruction are ready,
++;; one is issued to the add buffer (which can hold six operands in a FIFO)
++;; and the two to be multiplied are issued to the multiply unit.  After
++;; four cycles in the multiply unit, one cycle is taken to issue the
++;; operand from the add buffer plus the multiplication result to the
++;; addition/subtraction unit.  That issue takes priority over any add/sub
++;; instruction waiting at the normal issue stage, but may be performed in
++;; parallel with the issue of a non-add/sub instruction.  The total time
++;; for a multiply-accumulate instruction to pass through the execution
++;; units is hence eight cycles.
++;;
++;; We do not need to explicitly model the add buffer because it can
++;; always issue the instruction at the head of its FIFO (due to the above
++;; priority rule) and there are more spaces in the add buffer (six) than
++;; there are stages (four) in the multiplication unit.
++;;
++;; Two instructions may be retired at once from the head of an 8-entry
++;; reorder buffer.  Data from these first two instructions only may be
++;; forwarded to the inputs of the issue unit.  We assume that the
++;; pressure on the reorder buffer will be sufficiently low that every
++;; instruction entering it will be eligible for data forwarding.  Since
++;; data is forwarded to the issue unit and not the execution units (so
++;; for example single-cycle instructions cannot be issued back-to-back),
++;; the latencies given below are the cycle counts above plus one.
++
++(define_cpu_unit "mf_vfp_issue" "marvell_f_vfp")
++(define_cpu_unit "mf_vfp_add" "marvell_f_vfp")
++(define_cpu_unit "mf_vfp_mul" "marvell_f_vfp")
++(define_cpu_unit "mf_vfp_div" "marvell_f_vfp")
++(define_cpu_unit "mf_vfp_single_cycle" "marvell_f_vfp")
++
++;; An attribute to indicate whether our reservations are applicable.
++
++(define_attr "marvell_f_vfp" "yes,no"
++  (const (if_then_else (and (eq_attr "tune" "marvell_f")
++                            (eq_attr "fpu" "vfp"))
++                       (const_string "yes") (const_string "no"))))
++
++;; Reservations of functional units.  The nothing*2 reservations at the
++;; start of many of the reservation strings correspond to the decode
++;; stages.  We need to have these reservations so that we can correctly
++;; reserve parts of the core's A1 pipeline for loads and stores.  For
++;; that case (since loads skip E1) the pipelines line up thus:
++;;    A1 pipe:        Issue   E2      OF      WR      WB       ...
++;;    VFP pipe:       Fetch   Decode1 Decode2 Issue   Execute1 ...
++;; For a load, we need to make a reservation of E2, and thus we must
++;; use Decode1 as the starting point for all VFP reservations here.
++;;
++;; For reservations of pipelined VFP execution units we only reserve
++;; the execution unit for the first execution cycle, omitting any trailing
++;; "nothing" reservations.
++
++(define_insn_reservation "marvell_f_vfp_add" 4
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "farith"))
++  "nothing*2,mf_vfp_issue,mf_vfp_add")
++
++(define_insn_reservation "marvell_f_vfp_mul" 5
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "fmuls,fmuld"))
++  "nothing*2,mf_vfp_issue,mf_vfp_mul")
++
++(define_insn_reservation "marvell_f_vfp_divs" 17
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "fdivs"))
++  "nothing*2,mf_vfp_issue,mf_vfp_div*15")
++
++(define_insn_reservation "marvell_f_vfp_divd" 32
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "fdivd"))
++  "nothing*2,mf_vfp_issue,mf_vfp_div*30")
++
++;; The DFA lookahead is small enough that the "add" reservation here
++;; will always take priority over any addition/subtraction instruction
++;; issued five cycles after the multiply-accumulate instruction, as
++;; required.
++(define_insn_reservation "marvell_f_vfp_mac" 9
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "fmacs,fmacd"))
++  "nothing*2,mf_vfp_issue,mf_vfp_mul,nothing*4,mf_vfp_add")
++
++(define_insn_reservation "marvell_f_vfp_single" 2
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "ffarith"))
++  "nothing*2,mf_vfp_issue,mf_vfp_single_cycle")
++
++(define_insn_reservation "marvell_f_vfp_convert" 3
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "f_cvt"))
++  "nothing*2,mf_vfp_issue,mf_vfp_single_cycle")
++
++(define_insn_reservation "marvell_f_vfp_load" 2
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "f_loads,f_loadd"))
++  "a1_e2+sram,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
++
++(define_insn_reservation "marvell_f_vfp_from_core" 2
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "r_2_f"))
++  "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
++
++;; The interaction between the core and VFP pipelines during VFP
++;; store operations and core <-> VFP moves is not clear, so we guess.
++(define_insn_reservation "marvell_f_vfp_store" 3
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "f_stores,f_stored"))
++  "a1_e2,a1_of,mf_vfp_issue,a1_wr+sram+mf_vfp_single_cycle")
++
++(define_insn_reservation "marvell_f_vfp_to_core" 4
++  (and (eq_attr "marvell_f_vfp" "yes")
++       (eq_attr "type" "f_2_r"))
++  "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
++
+--- /dev/null
++++ b/gcc/config/arm/marvell-f.md
 @@ -0,0 +1,365 @@
 +;; Marvell 2850 pipeline description
 +;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -8832,204 +9408,9 @@ diff -Nur a/gcc/config/arm/marvell-f.md b/gcc/config/arm/marvell-f.md
 +      (eq_attr "type" "store3,store4"))
 + "a1_e1,a1_e1+a1_e2,a1_e2+a1_of,a1_of+a1_wr+sram,a1_wr+sram+a1_wb,a1_wb")
 +
-diff -Nur a/gcc/config/arm/marvell-f-vfp.md b/gcc/config/arm/marvell-f-vfp.md
---- a/gcc/config/arm/marvell-f-vfp.md  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/marvell-f-vfp.md  2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,153 @@
-+;; Marvell 2850 VFP pipeline description
-+;; Copyright (C) 2007 Free Software Foundation, Inc.
-+;; Written by CodeSourcery, Inc.
-+
-+;; This file is part of GCC.
-+
-+;; GCC 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 COPYING.  If not, write to
-+;; the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-+;; Boston, MA 02110-1301, USA.
-+
-+;; This automaton provides a pipeline description for the Marvell
-+;; 2850 core.
-+;;
-+;; The model given here assumes that the condition for all conditional
-+;; instructions is "true", i.e., that all of the instructions are
-+;; actually executed.
-+
-+(define_automaton "marvell_f_vfp")
-+
-+;; This is a single-issue VFPv2 implementation with the following execution
-+;; units:
-+;;
-+;; 1. Addition/subtraction unit; takes three cycles, pipelined.
-+;; 2. Multiplication unit; takes four cycles, pipelined.
-+;; 3. Add buffer, used for multiply-accumulate (see below).
-+;; 4. Divide/square root unit, not pipelined.
-+;;    For single-precision: takes sixteen cycles, can accept another insn
-+;;                        after fifteen cycles.
-+;;    For double-precision: takes thirty-one cycles, can accept another insn
-+;;                        after thirty cycles.
-+;; 5. Single-cycle unit, pipelined.
-+;;    This does absolute value/copy/negate/compare in one cycle and
-+;;    conversion in two cycles.
-+;;
-+;; When all three operands of a multiply-accumulate instruction are ready,
-+;; one is issued to the add buffer (which can hold six operands in a FIFO)
-+;; and the two to be multiplied are issued to the multiply unit.  After
-+;; four cycles in the multiply unit, one cycle is taken to issue the
-+;; operand from the add buffer plus the multiplication result to the
-+;; addition/subtraction unit.  That issue takes priority over any add/sub
-+;; instruction waiting at the normal issue stage, but may be performed in
-+;; parallel with the issue of a non-add/sub instruction.  The total time
-+;; for a multiply-accumulate instruction to pass through the execution
-+;; units is hence eight cycles.
-+;;
-+;; We do not need to explicitly model the add buffer because it can
-+;; always issue the instruction at the head of its FIFO (due to the above
-+;; priority rule) and there are more spaces in the add buffer (six) than
-+;; there are stages (four) in the multiplication unit.
-+;;
-+;; Two instructions may be retired at once from the head of an 8-entry
-+;; reorder buffer.  Data from these first two instructions only may be
-+;; forwarded to the inputs of the issue unit.  We assume that the
-+;; pressure on the reorder buffer will be sufficiently low that every
-+;; instruction entering it will be eligible for data forwarding.  Since
-+;; data is forwarded to the issue unit and not the execution units (so
-+;; for example single-cycle instructions cannot be issued back-to-back),
-+;; the latencies given below are the cycle counts above plus one.
-+
-+(define_cpu_unit "mf_vfp_issue" "marvell_f_vfp")
-+(define_cpu_unit "mf_vfp_add" "marvell_f_vfp")
-+(define_cpu_unit "mf_vfp_mul" "marvell_f_vfp")
-+(define_cpu_unit "mf_vfp_div" "marvell_f_vfp")
-+(define_cpu_unit "mf_vfp_single_cycle" "marvell_f_vfp")
-+
-+;; An attribute to indicate whether our reservations are applicable.
-+
-+(define_attr "marvell_f_vfp" "yes,no"
-+  (const (if_then_else (and (eq_attr "tune" "marvell_f")
-+                            (eq_attr "fpu" "vfp"))
-+                       (const_string "yes") (const_string "no"))))
-+
-+;; Reservations of functional units.  The nothing*2 reservations at the
-+;; start of many of the reservation strings correspond to the decode
-+;; stages.  We need to have these reservations so that we can correctly
-+;; reserve parts of the core's A1 pipeline for loads and stores.  For
-+;; that case (since loads skip E1) the pipelines line up thus:
-+;;    A1 pipe:        Issue   E2      OF      WR      WB       ...
-+;;    VFP pipe:       Fetch   Decode1 Decode2 Issue   Execute1 ...
-+;; For a load, we need to make a reservation of E2, and thus we must
-+;; use Decode1 as the starting point for all VFP reservations here.
-+;;
-+;; For reservations of pipelined VFP execution units we only reserve
-+;; the execution unit for the first execution cycle, omitting any trailing
-+;; "nothing" reservations.
-+
-+(define_insn_reservation "marvell_f_vfp_add" 4
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "farith"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_add")
-+
-+(define_insn_reservation "marvell_f_vfp_mul" 5
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "fmuls,fmuld"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_mul")
-+
-+(define_insn_reservation "marvell_f_vfp_divs" 17
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "fdivs"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_div*15")
-+
-+(define_insn_reservation "marvell_f_vfp_divd" 32
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "fdivd"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_div*30")
-+
-+;; The DFA lookahead is small enough that the "add" reservation here
-+;; will always take priority over any addition/subtraction instruction
-+;; issued five cycles after the multiply-accumulate instruction, as
-+;; required.
-+(define_insn_reservation "marvell_f_vfp_mac" 9
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "fmacs,fmacd"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_mul,nothing*4,mf_vfp_add")
-+
-+(define_insn_reservation "marvell_f_vfp_single" 2
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "ffarith"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_single_cycle")
-+
-+(define_insn_reservation "marvell_f_vfp_convert" 3
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "f_cvt"))
-+  "nothing*2,mf_vfp_issue,mf_vfp_single_cycle")
-+
-+(define_insn_reservation "marvell_f_vfp_load" 2
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "f_loads,f_loadd"))
-+  "a1_e2+sram,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
-+
-+(define_insn_reservation "marvell_f_vfp_from_core" 2
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "r_2_f"))
-+  "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
-+
-+;; The interaction between the core and VFP pipelines during VFP
-+;; store operations and core <-> VFP moves is not clear, so we guess.
-+(define_insn_reservation "marvell_f_vfp_store" 3
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "f_stores,f_stored"))
-+  "a1_e2,a1_of,mf_vfp_issue,a1_wr+sram+mf_vfp_single_cycle")
-+
-+(define_insn_reservation "marvell_f_vfp_to_core" 4
-+  (and (eq_attr "marvell_f_vfp" "yes")
-+       (eq_attr "type" "f_2_r"))
-+  "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle")
-+
-diff -Nur a/gcc/config/arm/montavista-linux.h b/gcc/config/arm/montavista-linux.h
---- a/gcc/config/arm/montavista-linux.h        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/montavista-linux.h        2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,33 @@
-+/* MontaVista GNU/Linux Configuration.
-+   Copyright (C) 2009
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* Add -tarmv6 and -tthumb2 options for convenience in generating multilibs.
-+*/
-+#undef CC1_SPEC
-+#define CC1_SPEC "                                                    \
-+ %{tarmv6:      -march=armv6 -mfloat-abi=softfp ;                     \
-+   tthumb2:     -mthumb -march=armv7-a -mfloat-abi=softfp ;             \
-+   :            -march=armv5t}"
-+
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                                   \
-+  "%{tarmv6:/armv6 ;                                          \
-+     tthumb2:/thumb2}"
-diff -Nur a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml
---- a/gcc/config/arm/neon-gen.ml       2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/neon-gen.ml       2010-01-25 09:50:28.995687913 +0100
-@@ -122,6 +122,7 @@
+--- a/gcc/config/arm/neon-gen.ml
++++ b/gcc/config/arm/neon-gen.ml
+@@ -122,6 +122,7 @@ let rec signed_ctype = function
    | T_uint16 | T_int16 -> T_intHI
    | T_uint32 | T_int32 -> T_intSI
    | T_uint64 | T_int64 -> T_intDI
@@ -9037,7 +9418,7 @@ diff -Nur a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml
    | T_poly8 -> T_intQI
    | T_poly16 -> T_intHI
    | T_arrayof (n, elt) -> T_arrayof (n, signed_ctype elt)
-@@ -320,7 +321,7 @@
+@@ -320,7 +321,7 @@ let deftypes () =
      typeinfo;
    Format.print_newline ();
    (* Extra types not in <stdint.h>.  *)
@@ -9046,7 +9427,7 @@ diff -Nur a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml
    Format.printf "typedef __builtin_neon_poly8 poly8_t;\n";
    Format.printf "typedef __builtin_neon_poly16 poly16_t;\n"
  
-@@ -399,7 +400,11 @@
+@@ -399,7 +400,11 @@ let _ =
  "extern \"C\" {";
  "#endif";
  "";
@@ -9058,9 +9439,21 @@ diff -Nur a/gcc/config/arm/neon-gen.ml b/gcc/config/arm/neon-gen.ml
  ""];
    deftypes ();
    arrtypes ();
-diff -Nur a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
---- a/gcc/config/arm/neon.md   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/neon.md   2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/neon-testgen.ml
++++ b/gcc/config/arm/neon-testgen.ml
+@@ -51,8 +51,8 @@ let emit_prologue chan test_name =
+   Printf.fprintf chan "/* This file was autogenerated by neon-testgen.  */\n\n";
+   Printf.fprintf chan "/* { dg-do assemble } */\n";
+   Printf.fprintf chan "/* { dg-require-effective-target arm_neon_ok } */\n";
+-  Printf.fprintf chan
+-                 "/* { dg-options \"-save-temps -O0 -mfpu=neon -mfloat-abi=softfp\" } */\n";
++  Printf.fprintf chan "/* { dg-options \"-save-temps -O0\" } */\n";
++  Printf.fprintf chan "/* { dg-add-options arm_neon } */\n";
+   Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n";
+   Printf.fprintf chan "void test_%s (void)\n{\n" test_name
+--- a/gcc/config/arm/neon.md
++++ b/gcc/config/arm/neon.md
 @@ -159,7 +159,8 @@
     (UNSPEC_VUZP1              201)
     (UNSPEC_VUZP2              202)
@@ -9236,20 +9629,9 @@ diff -Nur a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md
  (define_insn "ior<mode>3"
    [(set (match_operand:VDQ 0 "s_register_operand" "=w,w")
        (ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0")
-@@ -3611,7 +3715,8 @@
-                         UNSPEC_VSHLL_N))]
-   "TARGET_NEON"
- {
--  neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode));
-+  /* The boundaries are: 0 < imm <= size.  */
-+  neon_const_bounds (operands[2], 0, neon_element_bits (<MODE>mode) + 1);
-   return "vshll.%T3%#<V_sz_elem>\t%q0, %P1, %2";
- }
-   [(set_attr "neon_type" "neon_shift_1")]
-diff -Nur a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml
---- a/gcc/config/arm/neon.ml   2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/arm/neon.ml   2010-01-25 09:50:28.995687913 +0100
-@@ -50,7 +50,7 @@
+--- a/gcc/config/arm/neon.ml
++++ b/gcc/config/arm/neon.ml
+@@ -50,7 +50,7 @@ type vectype = T_int8x8    | T_int8x16
               | T_ptrto of vectype | T_const of vectype
               | T_void      | T_intQI
               | T_intHI     | T_intSI
@@ -9258,7 +9640,7 @@ diff -Nur a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml
  
  (* The meanings of the following are:
       TImode : "Tetra", two registers (four words).
-@@ -1693,6 +1693,7 @@
+@@ -1693,6 +1693,7 @@ let string_of_vectype vt =
    | T_intHI -> "__builtin_neon_hi"
    | T_intSI -> "__builtin_neon_si"
    | T_intDI -> "__builtin_neon_di"
@@ -9266,33 +9648,17 @@ diff -Nur a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml
    | T_arrayof (num, base) ->
        let basename = name (fun x -> x) base in
        affix (Printf.sprintf "%sx%d" basename num)
-diff -Nur a/gcc/config/arm/neon-testgen.ml b/gcc/config/arm/neon-testgen.ml
---- a/gcc/config/arm/neon-testgen.ml   2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/arm/neon-testgen.ml   2010-01-25 09:50:28.995687913 +0100
-@@ -51,8 +51,8 @@
-   Printf.fprintf chan "/* This file was autogenerated by neon-testgen.  */\n\n";
-   Printf.fprintf chan "/* { dg-do assemble } */\n";
-   Printf.fprintf chan "/* { dg-require-effective-target arm_neon_ok } */\n";
--  Printf.fprintf chan
--                 "/* { dg-options \"-save-temps -O0 -mfpu=neon -mfloat-abi=softfp\" } */\n";
-+  Printf.fprintf chan "/* { dg-options \"-save-temps -O0\" } */\n";
-+  Printf.fprintf chan "/* { dg-add-options arm_neon } */\n";
-   Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n";
-   Printf.fprintf chan "void test_%s (void)\n{\n" test_name
-diff -Nur a/gcc/config/arm/netbsd-elf.h b/gcc/config/arm/netbsd-elf.h
---- a/gcc/config/arm/netbsd-elf.h      2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/arm/netbsd-elf.h      2010-01-25 09:50:28.995687913 +0100
-@@ -153,5 +153,5 @@
+--- a/gcc/config/arm/netbsd-elf.h
++++ b/gcc/config/arm/netbsd-elf.h
+@@ -153,5 +153,5 @@ do                                                                 \
  while (0)
  
  #undef FPUTYPE_DEFAULT
 -#define FPUTYPE_DEFAULT FPUTYPE_VFP
 +#define FPUTYPE_DEFAULT "vfp"
  
-diff -Nur a/gcc/config/arm/nocrt0.h b/gcc/config/arm/nocrt0.h
---- a/gcc/config/arm/nocrt0.h  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/nocrt0.h  2010-01-25 09:50:28.995687913 +0100
+--- /dev/null
++++ b/gcc/config/arm/nocrt0.h
 @@ -0,0 +1,25 @@
 +/* Definitions for generic libgloss based cofigs where crt0 is supplied by
 +   the linker script.
@@ -9319,9 +9685,8 @@ diff -Nur a/gcc/config/arm/nocrt0.h b/gcc/config/arm/nocrt0.h
 +
 +#undef LIB_SPEC
 +#define LIB_SPEC "-lc"
-diff -Nur a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
---- a/gcc/config/arm/predicates.md     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/predicates.md     2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/predicates.md
++++ b/gcc/config/arm/predicates.md
 @@ -73,6 +73,10 @@
              || REGNO_REG_CLASS (REGNO (op)) == FPA_REGS));
  })
@@ -9365,9 +9730,8 @@ diff -Nur a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
    if (count <= 1
        || GET_CODE (XVECEXP (op, 0, 0)) != SET)
      return false;
-diff -Nur a/gcc/config/arm/sfp-machine.h b/gcc/config/arm/sfp-machine.h
---- a/gcc/config/arm/sfp-machine.h     2008-03-03 15:30:48.000000000 +0100
-+++ b/gcc/config/arm/sfp-machine.h     2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/sfp-machine.h
++++ b/gcc/config/arm/sfp-machine.h
 @@ -14,9 +14,11 @@
  #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y)
  #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y)
@@ -9388,10 +9752,9 @@ diff -Nur a/gcc/config/arm/sfp-machine.h b/gcc/config/arm/sfp-machine.h
 +#define __truncsfhf2  __gnu_f2h_ieee
  
  #endif /* __ARM_EABI__ */
-diff -Nur a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm
---- a/gcc/config/arm/t-arm     2008-03-27 20:20:18.000000000 +0100
-+++ b/gcc/config/arm/t-arm     2010-01-25 09:50:28.995687913 +0100
-@@ -13,7 +13,9 @@
+--- a/gcc/config/arm/t-arm
++++ b/gcc/config/arm/t-arm
+@@ -13,7 +13,9 @@ MD_INCLUDES=         $(srcdir)/config/arm/arm-t
                $(srcdir)/config/arm/iwmmxt.md \
                $(srcdir)/config/arm/vfp.md \
                $(srcdir)/config/arm/neon.md \
@@ -9402,10 +9765,9 @@ diff -Nur a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm
  
  s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \
        s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES)
-diff -Nur a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
---- a/gcc/config/arm/t-arm-elf 2008-06-12 19:29:47.000000000 +0200
-+++ b/gcc/config/arm/t-arm-elf 2010-01-25 09:50:28.995687913 +0100
-@@ -24,10 +24,18 @@
+--- a/gcc/config/arm/t-arm-elf
++++ b/gcc/config/arm/t-arm-elf
+@@ -24,10 +24,18 @@ MULTILIB_MATCHES     =
  #MULTILIB_MATCHES      += march?armv7=march?armv7-a
  #MULTILIB_MATCHES      += march?armv7=march?armv7-r
  #MULTILIB_MATCHES      += march?armv7=march?armv7-m
@@ -9424,9 +9786,8 @@ diff -Nur a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
  # MULTILIB_OPTIONS    += mcpu=ep9312
  # MULTILIB_DIRNAMES   += ep9312
  # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312*
-diff -Nur a/gcc/config/arm/t-asa b/gcc/config/arm/t-asa
---- a/gcc/config/arm/t-asa     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-asa     2010-01-25 09:50:28.995687913 +0100
+--- /dev/null
++++ b/gcc/config/arm/t-asa
 @@ -0,0 +1,45 @@
 +# Overrides for ASA
 +
@@ -9473,9 +9834,8 @@ diff -Nur a/gcc/config/arm/t-asa b/gcc/config/arm/t-asa
 +MULTILIB_ALIASES += march?armv7-a/mfpu?neon/mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
 +MULTILIB_ALIASES += mthumb/march?armv7-a/mfpu?neon/mfloat-abi?softfp=mthumb/march?armv7-a/mfpu?neon
 +MULTILIB_ALIASES += mthumb/march?armv7-a/mfpu?neon/mfloat-abi?softfp=mthumb/march?armv7-a/mfloat-abi?softfp
-diff -Nur a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi
---- a/gcc/config/arm/t-bpabi   2005-11-04 15:51:20.000000000 +0100
-+++ b/gcc/config/arm/t-bpabi   2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/t-bpabi
++++ b/gcc/config/arm/t-bpabi
 @@ -1,10 +1,13 @@
  # Add the bpabi.S functions.
 -LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod
@@ -9491,489 +9851,33 @@ diff -Nur a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi
  UNWIND_H = $(srcdir)/config/arm/unwind-arm.h
  LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \
    $(srcdir)/config/arm/libunwind.S \
-diff -Nur a/gcc/config/arm/t-cs-eabi b/gcc/config/arm/t-cs-eabi
---- a/gcc/config/arm/t-cs-eabi 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-cs-eabi 2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,198 @@
-+# Multilibs for SourceryG++ arm-none-eabi
-+
-+MULTILIB_OPTIONS     = mthumb
-+MULTILIB_DIRNAMES    = t
-+MULTILIB_EXCEPTIONS  = 
-+MULTILIB_MATCHES     =
-+MULTILIB_ALIASES     =
-+
-+MULTILIB_OPTIONS      += march=armv7/march=armv7-a/march=armv5te/march=armv6-m
-+MULTILIB_DIRNAMES     += v7 v7a v5te v6m
-+MULTILIB_MATCHES      += march?armv7-a=march?armv7a
-+MULTILIB_MATCHES      += march?armv7=march?armv7r
-+MULTILIB_MATCHES      += march?armv7=march?armv7m
-+MULTILIB_MATCHES      += march?armv7=march?armv7-r
-+MULTILIB_MATCHES      += march?armv7=march?armv7-m
-+MULTILIB_MATCHES      += march?armv7=march?armv7e-m
-+MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a9
-+MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a8
-+MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a5
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
-+MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
-+MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
-+MULTILIB_MATCHES      += march?armv5te=march?armv6
-+MULTILIB_MATCHES      += march?armv5te=march?armv6j
-+MULTILIB_MATCHES      += march?armv5te=march?armv6k
-+MULTILIB_MATCHES      += march?armv5te=march?armv6z
-+MULTILIB_MATCHES      += march?armv5te=march?armv6zk
-+MULTILIB_MATCHES      += march?armv5te=march?armv6t2
-+MULTILIB_MATCHES      += march?armv5te=march?iwmmxt
-+MULTILIB_MATCHES      += march?armv5te=march?iwmmxt2
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm9e
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm946e-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm966e-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm968e-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm10e
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1020e
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1022e
-+MULTILIB_MATCHES      += march?armv5te=mcpu?xscale
-+MULTILIB_MATCHES      += march?armv5te=mcpu?iwmmxt
-+MULTILIB_MATCHES      += march?armv5te=mcpu?iwmmxt2
-+MULTILIB_MATCHES      += march?armv5te=mcpu?marvell-f
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm926ej-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1026ej-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1136j-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1136jf-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1176jz-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1176jzf-s
-+MULTILIB_MATCHES      += march?armv5te=mcpu?mpcorenovfp
-+MULTILIB_MATCHES      += march?armv5te=mcpu?mpcore
-+MULTILIB_MATCHES      += march?armv5te=mcpu?arm1156t2-s
-+
-+MULTILIB_OPTIONS      += mfloat-abi=softfp/mfloat-abi=hard
-+MULTILIB_DIRNAMES     += softfp hard
-+MULTILIB_MATCHES      += mfloat-abi?hard=mhard-float
-+
-+MULTILIB_OPTIONS      += mfpu=neon
-+MULTILIB_DIRNAMES     += neon
-+MULTILIB_EXCEPTIONS   += mfpu=neon
-+MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-fp16
-+MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-vfpv4
-+
-+MULTILIB_ALIASES      += mthumb=mthumb/mfpu?neon
-+MULTILIB_ALIASES      += mthumb=mthumb/march?armv5te/mfpu?neon
-+MULTILIB_ALIASES      += mbig-endian=mthumb/mfpu?neon/mbig-endian
-+#MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon
-+#MULTILIB_ALIASES      += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon
-+#MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
-+#MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfpu?neon
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?softfp/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon
-+
-+MULTILIB_OPTIONS      += mbig-endian
-+MULTILIB_DIRNAMES     += be
-+MULTILIB_ALIASES      += mbig-endian=mfpu?neon/mbig-endian
-+
-+# ARMv6-M  does not have ARM mode.
-+MULTILIB_EXCEPTIONS   += march=armv6-m
-+
-+# Some ARMv7 variants have ARM mode.  Use the ARM libraries.
-+MULTILIB_EXCEPTIONS   += march=armv7 march=armv7/*
-+MULTILIB_ALIASES      += mbig-endian=march?armv7/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv7/mfloat-abi?softfp
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv7/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7/mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=march?armv7/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfpu?neon
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+
-+# ARMv7-A is specially useful used with VFPv3 (enabled by NEON). Rest of the cases behaves as ARMv7.
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a
-+MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfloat-abi?softfp
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfloat-abi?softfp             
-+MULTILIB_ALIASES      += march?armv5te=march?armv7-a
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
-+MULTILIB_ALIASES      += march?armv5te=march?armv7-a/mfpu?neon
-+MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+
-+# ARMv5T thumb uses the ARMv5T ARM libraries (with or without VFP).
-+MULTILIB_ALIASES      += mthumb=mthumb/march?armv5te
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=mthumb/march?armv5te/mfloat-abi?softfp
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=march?armv5te/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp=mthumb/march?armv5te/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += march?armv5te=march?armv5te/mfpu?neon
-+MULTILIB_ALIASES      += mbig-endian=march?armv5te/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv5te/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mthumb/march?armv5te/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=mthumb/march?armv5te/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+
-+# ARMv6-M and VFP are incompatible.
-+# FIXME:  The compiler should probably error.
-+MULTILIB_EXCEPTIONS   += *march=armv6-m/mfloat-abi=softfp
-+MULTILIB_ALIASES      += mthumb/march?armv6-m=mthumb/march?armv6-m/mfpu?neon
-+MULTILIB_EXCEPTIONS   += march=armv6-m*mfpu=neon
-+MULTILIB_EXCEPTIONS   += mthumb/march=armv6-m/mfloat-abi=softfp/mfpu=neon
-+
-+# ARMv4t VFP isn't really supported, so use the soft-float libraries.
-+MULTILIB_EXCEPTIONS   += mfloat-abi?softfp
-+MULTILIB_EXCEPTIONS   += mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += mthumb=mthumb/mfloat-abi?softfp
-+MULTILIB_ALIASES      += mthumb=mthumb/mfloat-abi?softfp/mfpu?neon
-+
-+MULTILIB_ALIASES      += mbig-endian=mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+
-+# We don't have a big-endian ARMv6-M compatible multilibs.
-+MULTILIB_EXCEPTIONS   += *march=armv6-m*mbig-endian
-+
-+# Use the generic libraries for big-endian ARMv5T
-+MULTILIB_ALIASES      += mbig-endian=march?armv5te/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mthumb/march?armv5te/mbig-endian
-+MULTILIB_ALIASES      += march?armv5te/mfloat-abi?softfp/mbig-endian=mthumb/march?armv5te/mfloat-abi?softfp/mbig-endian
-+
-+# Use ARM libraries for big-endian Thumb.
-+MULTILIB_ALIASES      += mbig-endian=mthumb/mbig-endian
-+
-+# Don't bother with big-endian Thumb-2 VFP.  Use the soft-float libraries
-+# for now.
-+MULTILIB_ALIASES      += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfloat-abi?softfp/mbig-endian
-+
-+# The only -mfloat-abi=hard libraries provided are for little-endian
-+# v7-A NEON.
-+MULTILIB_EXCEPTIONS   += mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += *march=armv5te*mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += *march=armv7/*mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += *march=armv6-m*mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += mthumb/mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += *mfloat-abi=hard*mbig-endian
-+MULTILIB_EXCEPTIONS   += *mfloat-abi=hard
-+
-+# FIXME: We need a sane way of doing this.
-+# This isn't really a multilib, it's a hack to add an extra option
-+# to the v7-m multilib.
-+MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
-+MULTILIB_DIRNAMES     += broken_ldrd
-+
-+MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *march=armv7-a*mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *mcpu=*mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *mbig-endian*mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *mfloat-abi=softfp*mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *march=armv5te*mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *mfpu=neon*mfix-cortex-m3-ldrd
-+
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfix-cortex-m3-ldrd
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfpu?neon/mfix-cortex-m3-ldrd
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfpu?neon/mfix-cortex-m3-ldrd
-+
-+# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
-+# omitted from MULTILIB_OSDIRNAMES
-+MULTILIB_OSDIRNAMES    = mthumb=!thumb
-+MULTILIB_OSDIRNAMES   += mbig-endian=!be
-+MULTILIB_OSDIRNAMES   += march.armv5te=!armv5te
-+MULTILIB_OSDIRNAMES   += march.armv5te/mfloat-abi.softfp=!vfp
-+MULTILIB_OSDIRNAMES   += march.armv5te/mfloat-abi.softfp/mbig-endian=!vfp-be
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
-+MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon
-+MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mbig-endian=!thumb2-be
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
-diff -Nur a/gcc/config/arm/t-cs-eabi-lite b/gcc/config/arm/t-cs-eabi-lite
---- a/gcc/config/arm/t-cs-eabi-lite    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-cs-eabi-lite    2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,47 @@
-+# We build 4 multilibs:
-+#  ./           (default)
-+#  thumb/       -mthumb
-+#  thumb2/      -mthumb -march=armv7
-+#  armv6-m/     -mthumb -march=armv6-m
-+
-+MULTILIB_OPTIONS     = mthumb
-+MULTILIB_DIRNAMES    = thumb
-+MULTILIB_EXCEPTIONS  =
-+MULTILIB_MATCHES     =
-+MULTILIB_ALIASES     =
-+
-+MULTILIB_OPTIONS      += march=armv7/march=armv6-m
-+MULTILIB_DIRNAMES     += v7 v6-m
-+MULTILIB_EXCEPTIONS   += march=armv7*
-+MULTILIB_MATCHES      += march?armv7=march?armv7-a
-+MULTILIB_MATCHES      += march?armv7=march?armv7-r
-+MULTILIB_MATCHES      += march?armv7=march?armv7-m
-+MULTILIB_MATCHES      += march?armv7=march?armv7e-m
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
-+
-+MULTILIB_EXCEPTIONS   += march=armv6-m
-+MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
-+MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
-+
-+# FIXME: We need a sane way of doing this.
-+# This isn't really a multilib, it's a hack to add an extra option
-+# to the v7-m multilib.
-+MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
-+MULTILIB_DIRNAMES     += broken_ldrd
-+
-+MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd
-+
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
-+
-+# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
-+# omitted from MULTILIB_OSDIRNAMES
-+MULTILIB_OSDIRNAMES    = mthumb=!thumb
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
-diff -Nur a/gcc/config/arm/t-cs-linux b/gcc/config/arm/t-cs-linux
---- a/gcc/config/arm/t-cs-linux        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-cs-linux        2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,112 @@
-+# Multilibs for SourceryG++ arm-none-linux-gnueabi
-+
-+MULTILIB_OPTIONS     = mthumb
-+MULTILIB_DIRNAMES    = t
-+MULTILIB_EXCEPTIONS  = 
-+MULTILIB_MATCHES     =
-+MULTILIB_ALIASES     =
-+
-+MULTILIB_OPTIONS      += march=armv4t/march=armv7-a
-+MULTILIB_DIRNAMES     += v4t v7a
-+
-+MULTILIB_MATCHES      += march?armv7-a=march?armv7a
-+MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a9
-+MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a8
-+MULTILIB_MATCHES      += march?armv7-a=mcpu?cortex-a5
-+MULTILIB_MATCHES      += march?armv4t=march?ep9312
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi-s
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm710t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm720t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm740t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm9
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm9tdmi
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm920
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm920t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm922t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm940t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?ep9312
-+MULTILIB_MATCHES      += march?armv4t=march?armv5
-+MULTILIB_MATCHES      += march?armv4t=march?armv5t
-+MULTILIB_MATCHES      += march?armv4t=march?arm10tdmi
-+MULTILIB_MATCHES      += march?armv4t=march?arm1020t
-+
-+MULTILIB_OPTIONS      += mfloat-abi=softfp/mfloat-abi=hard
-+MULTILIB_DIRNAMES     += softfp hard
-+MULTILIB_MATCHES      += mfloat-abi?hard=mhard-float
-+
-+MULTILIB_OPTIONS      += mfpu=neon
-+MULTILIB_DIRNAMES     += neon
-+MULTILIB_EXCEPTIONS   += mfpu=neon
-+MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-fp16
-+MULTILIB_MATCHES      += mfpu?neon=mfpu?neon-vfpv4
-+MULTILIB_ALIASES      += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon
-+
-+MULTILIB_OPTIONS      += mbig-endian
-+MULTILIB_DIRNAMES     += be
-+MULTILIB_ALIASES      += mbig-endian=mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=mthumb/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+
-+# Do not build Thumb libraries.
-+MULTILIB_EXCEPTIONS   += mthumb
-+MULTILIB_EXCEPTIONS   += mthumb/mfpu=neon
-+
-+# Use ARM libraries for ARMv4t Thumb and VFP.
-+MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t
-+MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfloat-abi?softfp
-+MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp
-+MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfpu?neon
-+MULTILIB_ALIASES      += march?armv4t=march?armv4t/mfloat-abi?softfp/mfpu?neon
-+MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfpu?neon
-+MULTILIB_ALIASES      += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp/mfpu?neon
-+
-+# We do not support ARMv4t big-endian.
-+MULTILIB_EXCEPTIONS   += *march=armv4t*mbig-endian
-+
-+# Behave ARMv7-A as ARMv7 for some cases.
-+MULTILIB_EXCEPTIONS   += march=armv7-a
-+MULTILIB_EXCEPTIONS   += march=armv7-a/mfpu=neon
-+MULTILIB_ALIASES      += mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp
-+MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mbig-endian
-+MULTILIB_ALIASES      += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian
-+MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7-a=mthumb/march?armv7-a/mfpu?neon
-+MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian
-+MULTILIB_ALIASES      += mthumb/march?armv7-a=mthumb/march?armv7-a/mfloat-abi?softfp
-+
-+# Thumb-1 VFP isn't really a meaningful combination.  Use the ARM VFP.
-+MULTILIB_ALIASES      += mfloat-abi?softfp=mthumb/mfloat-abi?softfp
-+MULTILIB_ALIASES      += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian
-+
-+# Use ARM libraries for big-endian Thumb.
-+MULTILIB_ALIASES      += mbig-endian=mthumb/mbig-endian
-+
-+# Don't bother with big-endian Thumb-2 VFP.  Use the soft-float libraries
-+# for now.
-+MULTILIB_ALIASES      += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian
-+
-+# The only -mfloat-abi=hard libraries provided are for little-endian
-+# v7-A NEON.
-+MULTILIB_EXCEPTIONS   += mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += *march=armv4t*mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += mthumb/mfloat-abi=hard*
-+MULTILIB_EXCEPTIONS   += *mfloat-abi=hard*mbig-endian
-+MULTILIB_EXCEPTIONS   += *mfloat-abi=hard
-+
-+# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
-+# omitted from MULTILIB_OSDIRNAMES
-+MULTILIB_OSDIRNAMES    = march.armv4t=!armv4t
-+MULTILIB_OSDIRNAMES   += mbig-endian=!be
-+MULTILIB_OSDIRNAMES   += mfloat-abi.softfp=!vfp
-+MULTILIB_OSDIRNAMES   += mfloat-abi.softfp/mbig-endian=!vfp-be
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a=!thumb2
-+MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a/mfloat-abi.softfp/mfpu.neon=!thumb2-neon
-+MULTILIB_OSDIRNAMES   += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7-a/mbig-endian=!thumb2-be
-diff -Nur a/gcc/config/arm/t-cs-linux-lite b/gcc/config/arm/t-cs-linux-lite
---- a/gcc/config/arm/t-cs-linux-lite   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-cs-linux-lite   2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,48 @@
-+# We build 3 multilibs:
-+#  ./           (default)
-+#  armv4t/      -march=armv4t [-mthumb]
-+#  thumb2/      -mthumb -march=armv7
-+MULTILIB_OPTIONS     = mthumb
-+MULTILIB_DIRNAMES    = thumb
-+MULTILIB_OPTIONS    += march=armv4t/march=armv7
-+MULTILIB_DIRNAMES   += v4t v7
-+MULTILIB_EXCEPTIONS += march=armv7
-+MULTILIB_EXCEPTIONS += mthumb
-+
-+MULTILIB_ALIASES     = march?armv4t=mthumb/march?armv4t
-+
-+# As of at least 4.2, gcc passes the wrong -L options if some multilibs are
-+# omitted from MULTILIB_OSDIRNAMES
-+MULTILIB_OSDIRNAMES    = march.armv4t=!armv4t
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv7=!thumb2
-+
-+MULTILIB_MATCHES      += march?armv7=march?armv7a
-+MULTILIB_MATCHES      += march?armv7=march?armv7r
-+MULTILIB_MATCHES      += march?armv7=march?armv7m
-+MULTILIB_MATCHES      += march?armv7=march?armv7-a
-+MULTILIB_MATCHES      += march?armv7=march?armv7-r
-+MULTILIB_MATCHES      += march?armv7=march?armv7-m
-+MULTILIB_MATCHES      += march?armv7=march?armv7e-m
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
-+MULTILIB_MATCHES      += march?armv4t=march?ep9312
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm7tdmi-s
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm710t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm720t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm740t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm9
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm9tdmi
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm920
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm920t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm922t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?arm940t
-+MULTILIB_MATCHES      += march?armv4t=mcpu?ep9312
-+MULTILIB_MATCHES      += march?armv4t=march?armv5
-+MULTILIB_MATCHES      += march?armv4t=march?armv5t
-+MULTILIB_MATCHES      += march?armv4t=march?arm10tdmi
-+MULTILIB_MATCHES      += march?armv4t=march?arm1020t
-diff -Nur a/gcc/config/arm/t-cs-uclinux-eabi b/gcc/config/arm/t-cs-uclinux-eabi
---- a/gcc/config/arm/t-cs-uclinux-eabi 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-cs-uclinux-eabi 2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,55 @@
-+# EABI uClinux multilib selection.  Other setting are inherited from t-arm-elf
-+
-+# We build 3 multilibs:
-+#  .      (default)
-+#  thumb2/  -mthumb -march=armv7 -mfix-cortex-m3-ldrd
-+#  armv6-m/ -mthumb -march=armv6-m
-+
-+MULTILIB_OPTIONS     = mthumb
-+MULTILIB_DIRNAMES    = thumb
-+MULTILIB_EXCEPTIONS  = 
-+MULTILIB_MATCHES     =
-+
-+MULTILIB_OPTIONS      += march=armv7/march=armv6-m
-+MULTILIB_DIRNAMES     += armv7 armv6-m
-+
-+MULTILIB_EXCEPTIONS   += mthumb
-+
-+MULTILIB_EXCEPTIONS   += march=armv7
-+MULTILIB_MATCHES      += march?armv7=march?armv7a
-+MULTILIB_MATCHES      += march?armv7=march?armv7r
-+MULTILIB_MATCHES      += march?armv7=march?armv7m
-+MULTILIB_MATCHES      += march?armv7=march?armv7-a
-+MULTILIB_MATCHES      += march?armv7=march?armv7-r
-+MULTILIB_MATCHES      += march?armv7=march?armv7-m
-+MULTILIB_MATCHES      += march?armv7=march?armv7e-m
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a9
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a8
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-a5
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4f
-+MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
-+
-+MULTILIB_EXCEPTIONS   += march=armv6-m
-+MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m1
-+MULTILIB_MATCHES      += march?armv6-m=mcpu?cortex-m0
-+
-+MULTILIB_ALIASES       =
-+
-+# FIXME: We need a sane way of doing this.
-+# This isn't really a multilib, it's a hack to add an extra option
-+# to the v7-m multilib.
-+MULTILIB_OPTIONS      += mfix-cortex-m3-ldrd
-+MULTILIB_DIRNAMES     += broken_ldrd
-+
-+MULTILIB_EXCEPTIONS   += mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += mthumb/mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += march=armv7/mfix-cortex-m3-ldrd
-+MULTILIB_EXCEPTIONS   += *march=armv6-m*mfix-cortex-m3-ldrd
-+
-+MULTILIB_ALIASES      += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7
-+
-+
-+MULTILIB_OSDIRNAMES    = mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2
-+MULTILIB_OSDIRNAMES   += mthumb/march.armv6-m=!armv6-m
-+
-diff -Nur a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md
---- a/gcc/config/arm/thumb2.md 2008-11-21 00:00:00.000000000 +0100
-+++ b/gcc/config/arm/thumb2.md 2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/t-linux-eabi
++++ b/gcc/config/arm/t-linux-eabi
+@@ -6,8 +6,8 @@ TARGET_LIBGCC2_CFLAGS = -fPIC
+ MULTILIB_OPTIONS      =
+ MULTILIB_DIRNAMES     =
+-# Use a version of div0 which raises SIGFPE.
+-LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx
++# Use a version of div0 which raises SIGFPE, and a special __clear_cache.
++LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache
+ # Multilib the standard Linux files.  Don't include crti.o or crtn.o,
+ # which are provided by glibc.
+--- a/gcc/config/arm/t-symbian
++++ b/gcc/config/arm/t-symbian
+@@ -17,6 +17,9 @@ UNWIND_H = $(srcdir)/config/arm/unwind-a
+ LIB2ADDEH = $(srcdir)/unwind-c.c $(srcdir)/config/arm/pr-support.c
+ LIB2ADDEHDEP = $(UNWIND_H)
++# Include half-float helpers.
++LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
++
+ # Create a multilib for processors with VFP floating-point, and a
+ # multilib for those without -- using the soft-float ABI in both
+ # cases.  Symbian OS object should be compiled with interworking
+--- a/gcc/config/arm/thumb2.md
++++ b/gcc/config/arm/thumb2.md
 @@ -24,6 +24,8 @@
  ;; changes made in armv5t as "thumb2".  These are considered part
  ;; the 16-bit Thumb-1 instruction set.
@@ -10191,120 +10095,8 @@ diff -Nur a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md
            (const_int 2)
            (const_int 8)))]
  )
-diff -Nur a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi
---- a/gcc/config/arm/t-linux-eabi      2009-01-24 22:06:08.000000000 +0100
-+++ b/gcc/config/arm/t-linux-eabi      2010-01-25 09:50:28.995687913 +0100
-@@ -6,8 +6,8 @@
- MULTILIB_OPTIONS      =
- MULTILIB_DIRNAMES     =
--# Use a version of div0 which raises SIGFPE.
--LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx
-+# Use a version of div0 which raises SIGFPE, and a special __clear_cache.
-+LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache
- # Multilib the standard Linux files.  Don't include crti.o or crtn.o,
- # which are provided by glibc.
-diff -Nur a/gcc/config/arm/t-montavista-linux b/gcc/config/arm/t-montavista-linux
---- a/gcc/config/arm/t-montavista-linux        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-montavista-linux        2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,33 @@
-+# MontaVista GNU/Linux Configuration.
-+# Copyright (C) 2009
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+MULTILIB_OPTIONS = tarmv6/tthumb2
-+MULTILIB_DIRNAMES = armv6 thumb2
-+
-+MULTILIB_EXCEPTIONS =
-+
-+MULTILIB_OSDIRNAMES =
-+
-+MULTILIB_ALIASES =
-+
-+MULTILIB_MATCHES =
-+
-+# These files must be built for each multilib.
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-diff -Nur a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian
---- a/gcc/config/arm/t-symbian 2008-06-12 19:29:47.000000000 +0200
-+++ b/gcc/config/arm/t-symbian 2010-01-25 09:50:28.995687913 +0100
-@@ -17,6 +17,9 @@
- LIB2ADDEH = $(srcdir)/unwind-c.c $(srcdir)/config/arm/pr-support.c
- LIB2ADDEHDEP = $(UNWIND_H)
-+# Include half-float helpers.
-+LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
-+
- # Create a multilib for processors with VFP floating-point, and a
- # multilib for those without -- using the soft-float ABI in both
- # cases.  Symbian OS object should be compiled with interworking
-diff -Nur a/gcc/config/arm/t-wrs-linux b/gcc/config/arm/t-wrs-linux
---- a/gcc/config/arm/t-wrs-linux       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/t-wrs-linux       2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,43 @@
-+# Wind River GNU/Linux Configuration.
-+# Copyright (C) 2006, 2007, 2008
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+MULTILIB_OPTIONS = muclibc
-+MULTILIB_OPTIONS += tarm926ej-s/tiwmmxt/txscale/tarm920t/tthumb2/tcortex-a8-be8
-+MULTILIB_OPTIONS += mfloat-abi=softfp
-+MULTILIB_DIRNAMES = uclibc
-+MULTILIB_DIRNAMES += tarm926ej-s tiwmmxt txscale tarm920t thumb2 cortex-a8-be8
-+MULTILIB_DIRNAMES += softfp
-+
-+MULTILIB_EXCEPTIONS = *muclibc*/*tarm920t*
-+MULTILIB_EXCEPTIONS += *muclibc*/*cortex-a8-be8*
-+
-+MULTILIB_EXCEPTIONS += *tiwmmxt*/*mfloat-abi=softfp*
-+MULTILIB_EXCEPTIONS += *txscale*/*mfloat-abi=softfp*
-+MULTILIB_EXCEPTIONS += *tarm920t*/*mfloat-abi=softfp*
-+MULTILIB_EXCEPTIONS += *thumb2*/*mfloat-abi=softfp*
-+
-+MULTILIB_MATCHES = tiwmmxt=tiwmmxt2
-+
-+MULTILIB_ALIASES = tcortex-a8-be8=tcortex-a8-be8/mfloat-abi?softfp
-+MULTILIB_OSDIRNAMES =
-+
-+# These files must be built for each multilib.
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-+
-diff -Nur a/gcc/config/arm/uclinux-eabi.h b/gcc/config/arm/uclinux-eabi.h
---- a/gcc/config/arm/uclinux-eabi.h    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/uclinux-eabi.h    2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/uclinux-eabi.h
++++ b/gcc/config/arm/uclinux-eabi.h
 @@ -50,6 +50,10 @@
  #undef ARM_DEFAULT_ABI
  #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
@@ -10316,10 +10108,9 @@ diff -Nur a/gcc/config/arm/uclinux-eabi.h b/gcc/config/arm/uclinux-eabi.h
  /* Clear the instruction cache from `beg' to `end'.  This makes an
     inline system call to SYS_cacheflush.  */
  #undef CLEAR_INSN_CACHE
-diff -Nur a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
---- a/gcc/config/arm/unwind-arm.c      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/unwind-arm.c      2010-01-25 09:50:28.995687913 +0100
-@@ -1000,7 +1000,6 @@
+--- a/gcc/config/arm/unwind-arm.c
++++ b/gcc/config/arm/unwind-arm.c
+@@ -1000,7 +1000,6 @@ __gnu_Unwind_Backtrace(_Unwind_Trace_Fn 
    while (code != _URC_END_OF_STACK
         && code != _URC_FAILURE);
  
@@ -10327,7 +10118,7 @@ diff -Nur a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
    restore_non_core_regs (&saved_vrs);
    return code;
  }
-@@ -1168,6 +1167,9 @@
+@@ -1168,6 +1167,9 @@ __gnu_unwind_pr_common (_Unwind_State st
                        {
                          matched = (void *)(ucbp + 1);
                          rtti = _Unwind_decode_target2 ((_uw) &data[i + 1]);
@@ -10337,7 +10128,7 @@ diff -Nur a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
                          if (__cxa_type_match (ucbp, (type_info *) rtti, 0,
                                                &matched))
                            break;
-@@ -1197,8 +1199,6 @@
+@@ -1197,8 +1199,6 @@ __gnu_unwind_pr_common (_Unwind_State st
                  ucbp->barrier_cache.bitpattern[4] = (_uw) &data[1];
  
                  if (data[0] & uint32_highbit)
@@ -10346,7 +10137,7 @@ diff -Nur a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
                    {
                      data += rtti_count + 1;
                      /* Setup for entry to the handler.  */
-@@ -1208,6 +1208,8 @@
+@@ -1208,6 +1208,8 @@ __gnu_unwind_pr_common (_Unwind_State st
                      _Unwind_SetGR (context, 0, (_uw) ucbp);
                      return _URC_INSTALL_CONTEXT;
                    }
@@ -10355,10 +10146,9 @@ diff -Nur a/gcc/config/arm/unwind-arm.c b/gcc/config/arm/unwind-arm.c
                }
              if (data[0] & uint32_highbit)
                data++;
-diff -Nur a/gcc/config/arm/unwind-arm.h b/gcc/config/arm/unwind-arm.h
---- a/gcc/config/arm/unwind-arm.h      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/arm/unwind-arm.h      2010-01-25 09:50:28.995687913 +0100
-@@ -229,9 +229,10 @@
+--- a/gcc/config/arm/unwind-arm.h
++++ b/gcc/config/arm/unwind-arm.h
+@@ -229,9 +229,10 @@ extern "C" {
        return 0;
  
  #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__)
@@ -10371,9 +10161,8 @@ diff -Nur a/gcc/config/arm/unwind-arm.h b/gcc/config/arm/unwind-arm.h
  #elif defined(__symbian__) || defined(__uClinux__)
        /* Absolute pointer.  Nothing more to do.  */
  #else
-diff -Nur a/gcc/config/arm/vec-common.md b/gcc/config/arm/vec-common.md
---- a/gcc/config/arm/vec-common.md     2007-08-22 22:32:18.000000000 +0200
-+++ b/gcc/config/arm/vec-common.md     2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/vec-common.md
++++ b/gcc/config/arm/vec-common.md
 @@ -38,6 +38,11 @@
    "TARGET_NEON
     || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
@@ -10386,9 +10175,8 @@ diff -Nur a/gcc/config/arm/vec-common.md b/gcc/config/arm/vec-common.md
  })
  
  ;; Vector arithmetic. Expanders are blank, then unnamed insns implement
-diff -Nur a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
---- a/gcc/config/arm/vfp.md    2008-09-01 15:40:49.000000000 +0200
-+++ b/gcc/config/arm/vfp.md    2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/arm/vfp.md
++++ b/gcc/config/arm/vfp.md
 @@ -51,7 +51,7 @@
  ;; problems because small constants get converted into adds.
  (define_insn "*arm_movsi_vfp"
@@ -11061,10 +10849,9 @@ diff -Nur a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
    "@
     fcmped%?\\t%P0, %P1
     fcmpezd%?\\t%P0"
-diff -Nur a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h
---- a/gcc/config/arm/vxworks.h 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/arm/vxworks.h 2010-01-25 09:50:28.995687913 +0100
-@@ -97,7 +97,7 @@
+--- a/gcc/config/arm/vxworks.h
++++ b/gcc/config/arm/vxworks.h
+@@ -97,7 +97,7 @@ along with GCC; see the file COPYING3.  
  /* There is no default multilib.  */
  #undef MULTILIB_DEFAULTS
  
@@ -11073,89 +10860,8 @@ diff -Nur a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h
  
  #undef FUNCTION_PROFILER
  #define FUNCTION_PROFILER VXWORKS_FUNCTION_PROFILER
-diff -Nur a/gcc/config/arm/wrs-linux.h b/gcc/config/arm/wrs-linux.h
---- a/gcc/config/arm/wrs-linux.h       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/arm/wrs-linux.h       2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,76 @@
-+/* Wind River GNU/Linux Configuration.
-+   Copyright (C) 2006, 2007, 2008
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* Use the ARM926EJ-S by default.  */
-+#undef SUBTARGET_CPU_DEFAULT
-+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm926ejs
-+
-+/* Add a -tiwmmxt option for convenience in generating multilibs.
-+   This option generates big-endian IWMMXT code.  */
-+#undef CC1_SPEC
-+#define CC1_SPEC "                                                    \
-+ %{tarm926ej-s:       -mcpu=arm926ej-s ;                                      \
-+   tiwmmxt:     -mcpu=iwmmxt ;                                                \
-+   tiwmmxt2:    -mcpu=iwmmxt ;                                                \
-+   txscale:     -mcpu=xscale -mbig-endian ;                           \
-+   tarm920t:    -mcpu=arm920t ;                                               \
-+   tthumb2:     %{!mcpu=*:%{!march=*:-march=armv6t2}} -mthumb ;               \
-+   tcortex-a8-be8: -mcpu=cortex-a8 -mbig-endian -mfloat-abi=softfp    \
-+                   -mfpu=neon }                                               \
-+ %{txscale:%{mfloat-abi=softfp:%eXScale VFP multilib not provided}}   \
-+ %{tarm920t:%{mfloat-abi=softfp:%eARM920T VFP multilib not provided}} \
-+ %{profile:-p}"
-+
-+/* Since the ARM926EJ-S is the default processor, we do not need to
-+   provide an explicit multilib for that processor.  */
-+#undef MULTILIB_DEFAULTS
-+#define MULTILIB_DEFAULTS \
-+  { "tarm926ej-s" }
-+
-+/* The GLIBC headers are in /usr/include, relative to the sysroot; the
-+   uClibc headers are in /uclibc/usr/include.  */
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC           \
-+  "%{muclibc:/uclibc}" 
-+
-+/* Translate -tiwmmxt appropriately for the assembler.  The -meabi=5
-+   option is the relevant part of SUBTARGET_EXTRA_ASM_SPEC in bpabi.h.  */
-+#undef SUBTARGET_EXTRA_ASM_SPEC
-+#define SUBTARGET_EXTRA_ASM_SPEC \
-+  "%{tiwmmxt2:-mcpu=iwmmxt2} %{tiwmmxt:-mcpu=iwmmxt} %{txscale:-mcpu=xscale -EB} %{tcortex-a8-be8:-mcpu=cortex-a8 -EB} -meabi=5" 
-+
-+/* Translate -tiwmmxt for the linker.  */
-+#undef SUBTARGET_EXTRA_LINK_SPEC
-+#define SUBTARGET_EXTRA_LINK_SPEC                     \
-+  " %{tiwmmxt:-m armelf_linux_eabi ;                  \
-+     txscale:-m armelfb_linux_eabi ;                  \
-+     tcortex-a8-be8:-m armelfb_linux_eabi %{!r:--be8} ;       \
-+     : -m armelf_linux_eabi}"
-+
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                                   \
-+  "%{muclibc:/uclibc}%{tiwmmxt:/tiwmmxt ;                     \
-+     tiwmmxt2:/tiwmmxt ;                                      \
-+     txscale:/txscale ;                                               \
-+     tarm920t:/tarm920t ;                                     \
-+     tthumb2:/thumb2 ;                                                \
-+     tcortex-a8-be8:/cortex-a8-be8}%{!tthumb2:%{!tcortex-a8-be8:%{mfloat-abi=softfp:/softfp}}}"
-+
-diff -Nur a/gcc/config/i386/atom.md b/gcc/config/i386/atom.md
---- a/gcc/config/i386/atom.md  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/atom.md  2010-01-25 09:50:28.995687913 +0100
+--- /dev/null
++++ b/gcc/config/i386/atom.md
 @@ -0,0 +1,795 @@
 +;; Atom Scheduling
 +;; Copyright (C) 2009 Free Software Foundation, Inc.
@@ -11952,9 +11658,8 @@ diff -Nur a/gcc/config/i386/atom.md b/gcc/config/i386/atom.md
 +                  atom_ishift_mem, atom_ishift1_mem, 
 +                  atom_rotate_mem, atom_rotate1_mem"
 +                 "ix86_dep_by_shift_count")
-diff -Nur a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h
---- a/gcc/config/i386/cpuid.h  2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/i386/cpuid.h  2010-01-25 09:50:28.995687913 +0100
+--- a/gcc/config/i386/cpuid.h
++++ b/gcc/config/i386/cpuid.h
 @@ -29,6 +29,7 @@
  #define bit_CMPXCHG16B        (1 << 13)
  #define bit_SSE4_1    (1 << 19)
@@ -11963,105 +11668,9 @@ diff -Nur a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h
  #define bit_POPCNT    (1 << 23)
  #define bit_AES               (1 << 25)
  #define bit_XSAVE     (1 << 26)
-diff -Nur a/gcc/config/i386/cs-linux.h b/gcc/config/i386/cs-linux.h
---- a/gcc/config/i386/cs-linux.h       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/cs-linux.h       2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,41 @@
-+/* Sourcery G++ IA32 GNU/Linux Configuration.
-+   Copyright (C) 2007
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* This configuration may be used either with the system glibc (in
-+   system32 and system64 subdirectories) or with the included glibc
-+   (in the sgxx-glibc subdirectory).  */
-+
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{msgxx-glibc:/sgxx-glibc ;                        \
-+     m64:/system64 ;                          \
-+     mrhel3:/system64 ;                               \
-+     mrh73:/system32-old ;                    \
-+     :/system32}"
-+
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC SYSROOT_SUFFIX_SPEC
-+
-+/* See mips/wrs-linux.h for details on this use of
-+   STARTFILE_PREFIX_SPEC.  */
-+#undef STARTFILE_PREFIX_SPEC
-+#define STARTFILE_PREFIX_SPEC                         \
-+  "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/}      \
-+   %{!m64: /usr/local/lib/ /lib/ /usr/lib/}"
-diff -Nur a/gcc/config/i386/cs-linux-lite.h b/gcc/config/i386/cs-linux-lite.h
---- a/gcc/config/i386/cs-linux-lite.h  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/cs-linux-lite.h  2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,31 @@
-+/* Sourcery G++ Lite IA32 GNU/Linux Configuration.
-+   Copyright (C) 2009
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{march=atom:%{!m64:/atom} ;                       \
-+     march=core2:%{m64:/core2}}"
-+
-+/* See mips/wrs-linux.h for details on this use of
-+   STARTFILE_PREFIX_SPEC.  */
-+#undef STARTFILE_PREFIX_SPEC
-+#define STARTFILE_PREFIX_SPEC                         \
-+  "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/}      \
-+   %{!m64: /usr/local/lib/ /lib/ /usr/lib/}"
-diff -Nur a/gcc/config/i386/cs-linux.opt b/gcc/config/i386/cs-linux.opt
---- a/gcc/config/i386/cs-linux.opt     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/cs-linux.opt     2010-01-25 09:50:28.995687913 +0100
-@@ -0,0 +1,11 @@
-+; Additional options for Sourcery G++.
-+
-+mrh73
-+Target Undocumented
-+
-+mrhel3
-+Target Undocumented
-+
-+msgxx-glibc
-+Target
-+Use included version of GLIBC
-diff -Nur a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
---- a/gcc/config/i386/cygming.h        2009-07-12 17:56:41.000000000 +0200
-+++ b/gcc/config/i386/cygming.h        2010-01-25 09:50:28.995687913 +0100
-@@ -34,7 +34,7 @@
+--- a/gcc/config/i386/cygming.h
++++ b/gcc/config/i386/cygming.h
+@@ -34,7 +34,7 @@ along with GCC; see the file COPYING3.  
  #endif
  
  #undef TARGET_64BIT_MS_ABI
@@ -12070,7 +11679,7 @@ diff -Nur a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
  
  #undef DEFAULT_ABI
  #define DEFAULT_ABI (TARGET_64BIT ? MS_ABI : SYSV_ABI)
-@@ -203,7 +203,7 @@
+@@ -202,7 +202,7 @@ do {                                               \
  #define CHECK_STACK_LIMIT 4000
  
  #undef STACK_BOUNDARY
@@ -12079,10 +11688,9 @@ diff -Nur a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
  
  /* By default, target has a 80387, uses IEEE compatible arithmetic,
     returns float values in the 387 and needs stack probes.
-diff -Nur a/gcc/config/i386/cygming.opt b/gcc/config/i386/cygming.opt
---- a/gcc/config/i386/cygming.opt      2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/i386/cygming.opt      2010-01-25 09:50:28.995687913 +0100
-@@ -45,3 +45,7 @@
+--- a/gcc/config/i386/cygming.opt
++++ b/gcc/config/i386/cygming.opt
+@@ -45,3 +45,7 @@ Set Windows defines
  mwindows
  Target
  Create GUI application
@@ -12090,10 +11698,9 @@ diff -Nur a/gcc/config/i386/cygming.opt b/gcc/config/i386/cygming.opt
 +mpe-aligned-commons
 +Target Var(use_pe_aligned_common) Init(HAVE_GAS_ALIGNED_COMM)
 +Use the GNU extension to the PE format for aligned common data
-diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
---- a/gcc/config/i386/driver-i386.c    2009-05-27 16:54:00.000000000 +0200
-+++ b/gcc/config/i386/driver-i386.c    2010-01-25 09:50:29.005686600 +0100
-@@ -378,7 +378,7 @@
+--- a/gcc/config/i386/driver-i386.c
++++ b/gcc/config/i386/driver-i386.c
+@@ -378,7 +378,7 @@ const char *host_detect_local_cpu (int a
    /* Extended features */
    unsigned int has_lahf_lm = 0, has_sse4a = 0;
    unsigned int has_longmode = 0, has_3dnowp = 0, has_3dnow = 0;
@@ -12102,7 +11709,7 @@ diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
    unsigned int has_popcnt = 0, has_aes = 0, has_avx = 0;
    unsigned int has_pclmul = 0;
  
-@@ -398,9 +398,22 @@
+@@ -398,9 +398,22 @@ const char *host_detect_local_cpu (int a
  
    __cpuid (1, eax, ebx, ecx, edx);
  
@@ -12126,7 +11733,7 @@ diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
  
    has_sse3 = ecx & bit_SSE3;
    has_ssse3 = ecx & bit_SSSE3;
-@@ -408,6 +421,7 @@
+@@ -408,6 +421,7 @@ const char *host_detect_local_cpu (int a
    has_sse4_2 = ecx & bit_SSE4_2;
    has_avx = ecx & bit_AVX;
    has_cmpxchg16b = ecx & bit_CMPXCHG16B;
@@ -12134,7 +11741,7 @@ diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
    has_popcnt = ecx & bit_POPCNT;
    has_aes = ecx & bit_AES;
    has_pclmul = ecx & bit_PCLMUL;
-@@ -505,8 +519,8 @@
+@@ -505,8 +519,8 @@ const char *host_detect_local_cpu (int a
        break;
      case PROCESSOR_PENTIUMPRO:
        if (has_longmode)
@@ -12145,7 +11752,7 @@ diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
        else if (arch)
        {
          if (has_sse3)
-@@ -597,6 +611,8 @@
+@@ -597,6 +611,8 @@ const char *host_detect_local_cpu (int a
        options = concat (options, "-mcx16 ", NULL);
        if (has_lahf_lm)
        options = concat (options, "-msahf ", NULL);
@@ -12154,10 +11761,56 @@ diff -Nur a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
        if (has_aes)
        options = concat (options, "-maes ", NULL);
        if (has_pclmul)
-diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
---- a/gcc/config/i386/i386.c   2009-07-21 09:22:51.000000000 +0200
-+++ b/gcc/config/i386/i386.c   2010-01-25 09:50:29.005686600 +0100
-@@ -1036,6 +1036,79 @@
+--- a/gcc/config/i386/i386-c.c
++++ b/gcc/config/i386/i386-c.c
+@@ -119,6 +119,10 @@ ix86_target_macros_internal (int isa_fla
+       def_or_undef (parse_in, "__core2");
+       def_or_undef (parse_in, "__core2__");
+       break;
++    case PROCESSOR_ATOM:
++      def_or_undef (parse_in, "__atom");
++      def_or_undef (parse_in, "__atom__");
++      break;
+     /* use PROCESSOR_max to not set/unset the arch macro.  */
+     case PROCESSOR_max:
+       break;
+@@ -187,6 +191,9 @@ ix86_target_macros_internal (int isa_fla
+     case PROCESSOR_CORE2:
+       def_or_undef (parse_in, "__tune_core2__");
+       break;
++    case PROCESSOR_ATOM:
++      def_or_undef (parse_in, "__tune_atom__");
++      break;
+     case PROCESSOR_GENERIC32:
+     case PROCESSOR_GENERIC64:
+       break;
+--- a/gcc/config/i386/i386-protos.h
++++ b/gcc/config/i386/i386-protos.h
+@@ -86,6 +86,9 @@ extern void ix86_fixup_binary_operands_n
+ extern void ix86_expand_binary_operator (enum rtx_code,
+                                        enum machine_mode, rtx[]);
+ extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]);
++extern bool ix86_lea_for_add_ok (enum rtx_code, rtx, rtx[]);
++extern bool ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn);
++extern bool ix86_agi_dependent (rtx set_insn, rtx use_insn);
+ extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode,
+                                       rtx[]);
+ extern rtx ix86_build_const_vector (enum machine_mode, bool, rtx);
+@@ -140,9 +143,8 @@ extern int ix86_function_arg_boundary (e
+ extern bool ix86_sol10_return_in_memory (const_tree,const_tree);
+ extern rtx ix86_force_to_memory (enum machine_mode, rtx);
+ extern void ix86_free_from_memory (enum machine_mode);
+-extern int ix86_cfun_abi (void);
+-extern int ix86_function_abi (const_tree);
+-extern int ix86_function_type_abi (const_tree);
++extern enum calling_abi ix86_cfun_abi (void);
++extern enum calling_abi ix86_function_type_abi (const_tree);
+ extern void ix86_call_abi_override (const_tree);
+ extern tree ix86_fn_abi_va_list (tree);
+ extern tree ix86_canonical_va_list_type (tree);
+--- a/gcc/config/i386/i386.c
++++ b/gcc/config/i386/i386.c
+@@ -1036,6 +1036,79 @@ struct processor_costs core2_cost = {
    1,                                    /* cond_not_taken_branch_cost.  */
  };
  
@@ -12237,7 +11890,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  /* Generic64 should produce code tuned for Nocona and K8.  */
  static const
  struct processor_costs generic64_cost = {
-@@ -1194,6 +1267,7 @@
+@@ -1194,6 +1267,7 @@ const struct processor_costs *ix86_cost 
  #define m_PENT4  (1<<PROCESSOR_PENTIUM4)
  #define m_NOCONA  (1<<PROCESSOR_NOCONA)
  #define m_CORE2  (1<<PROCESSOR_CORE2)
@@ -12245,7 +11898,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
  #define m_GEODE  (1<<PROCESSOR_GEODE)
  #define m_K6  (1<<PROCESSOR_K6)
-@@ -1231,10 +1305,11 @@
+@@ -1231,10 +1305,11 @@ static unsigned int initial_ix86_tune_fe
    m_486 | m_PENT,
  
    /* X86_TUNE_UNROLL_STRLEN */
@@ -12259,7 +11912,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_BRANCH_PREDICTION_HINTS: Branch hints were put in P4 based
       on simulation result. But after P4 was made, no performance benefit
-@@ -1246,12 +1321,12 @@
+@@ -1246,12 +1321,12 @@ static unsigned int initial_ix86_tune_fe
    ~m_386,
  
    /* X86_TUNE_USE_SAHF */
@@ -12274,7 +11927,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
    | m_CORE2 | m_GENERIC | m_GEODE /* m_386 | m_K6 */,
  
    /* X86_TUNE_PARTIAL_REG_STALL: We probably ought to watch for partial
-@@ -1271,13 +1346,13 @@
+@@ -1271,13 +1346,13 @@ static unsigned int initial_ix86_tune_fe
    m_386 | m_486 | m_K6_GEODE,
  
    /* X86_TUNE_USE_SIMODE_FIOP */
@@ -12290,7 +11943,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_USE_XCHGB: Use xchgb %rh,%rl instead of rolw/rorw $8,rx.  */
    m_PENT4,
-@@ -1292,8 +1367,8 @@
+@@ -1292,8 +1367,8 @@ static unsigned int initial_ix86_tune_fe
    ~(m_PENT | m_PPRO),
  
    /* X86_TUNE_PROMOTE_QIMODE */
@@ -12301,7 +11954,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_FAST_PREFIX */
    ~(m_PENT | m_486 | m_386),
-@@ -1317,26 +1392,28 @@
+@@ -1317,26 +1392,28 @@ static unsigned int initial_ix86_tune_fe
    m_PPRO,
  
    /* X86_TUNE_ADD_ESP_4: Enable if add/sub is preferred over 1/2 push/pop.  */
@@ -12336,7 +11989,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: In the Generic model we have a
       conflict here in between PPro/Pentium4 based chips that thread 128bit
-@@ -1347,7 +1424,8 @@
+@@ -1347,7 +1424,8 @@ static unsigned int initial_ix86_tune_fe
       shows that disabling this option on P4 brings over 20% SPECfp regression,
       while enabling it on K8 brings roughly 2.4% regression that can be partly
       masked by careful scheduling of moves.  */
@@ -12346,7 +11999,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_SSE_UNALIGNED_MOVE_OPTIMAL */
    m_AMDFAM10,
-@@ -1365,13 +1443,13 @@
+@@ -1365,13 +1443,13 @@ static unsigned int initial_ix86_tune_fe
    m_PPRO | m_PENT4 | m_NOCONA,
  
    /* X86_TUNE_MEMORY_MISMATCH_STALL */
@@ -12363,7 +12016,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_SHIFT1 */
    ~m_486,
-@@ -1380,29 +1458,32 @@
+@@ -1380,29 +1458,32 @@ static unsigned int initial_ix86_tune_fe
    m_AMD_MULTIPLE,
  
    /* X86_TUNE_INTER_UNIT_MOVES */
@@ -12402,7 +12055,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* X86_TUNE_SHORTEN_X87_SSE */
    ~m_K8,
-@@ -1447,6 +1528,10 @@
+@@ -1447,6 +1528,10 @@ static unsigned int initial_ix86_tune_fe
       with a subsequent conditional jump instruction into a single
       compare-and-branch uop.  */
    m_CORE2,
@@ -12413,7 +12066,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  };
  
  /* Feature tests against the various architecture variations.  */
-@@ -1472,10 +1557,11 @@
+@@ -1472,10 +1557,11 @@ static unsigned int initial_ix86_arch_fe
  };
  
  static const unsigned int x86_accumulate_outgoing_args
@@ -12427,7 +12080,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      | m_NOCONA | m_CORE2 | m_GENERIC;
  
  static enum stringop_alg stringop_alg = no_stringop;
-@@ -1743,6 +1829,9 @@
+@@ -1743,6 +1829,9 @@ static unsigned int ix86_default_incomin
  /* Alignment for incoming stack boundary in bits.  */
  unsigned int ix86_incoming_stack_boundary;
  
@@ -12437,7 +12090,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  /* Values 1-5: see jump.c */
  int ix86_branch_cost;
  
-@@ -1819,6 +1908,8 @@
+@@ -1819,6 +1908,8 @@ static bool ix86_valid_target_attribute_
  static bool ix86_can_inline_p (tree, tree);
  static void ix86_set_current_function (tree);
  
@@ -12446,7 +12099,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  \f
  /* The svr4 ABI for the i386 says that records and unions are returned
     in memory.  */
-@@ -1880,6 +1971,7 @@
+@@ -1880,6 +1971,7 @@ static int ix86_isa_flags_explicit;
  #define OPTION_MASK_ISA_POPCNT_SET OPTION_MASK_ISA_POPCNT
  #define OPTION_MASK_ISA_CX16_SET OPTION_MASK_ISA_CX16
  #define OPTION_MASK_ISA_SAHF_SET OPTION_MASK_ISA_SAHF
@@ -12454,7 +12107,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
  /* Define a set of ISAs which aren't available when a given ISA is
     disabled.  MMX and SSE ISAs are handled separately.  */
-@@ -1921,6 +2013,7 @@
+@@ -1921,6 +2013,7 @@ static int ix86_isa_flags_explicit;
  #define OPTION_MASK_ISA_POPCNT_UNSET OPTION_MASK_ISA_POPCNT
  #define OPTION_MASK_ISA_CX16_UNSET OPTION_MASK_ISA_CX16
  #define OPTION_MASK_ISA_SAHF_UNSET OPTION_MASK_ISA_SAHF
@@ -12462,7 +12115,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
  /* Vectorization library interface and handlers.  */
  tree (*ix86_veclib_handler)(enum built_in_function, tree, tree) = NULL;
-@@ -1953,7 +2046,8 @@
+@@ -1953,7 +2046,8 @@ static const struct ptt processor_target
    {&core2_cost, 16, 10, 16, 10, 16},
    {&generic32_cost, 16, 7, 16, 7, 16},
    {&generic64_cost, 16, 10, 16, 10, 16},
@@ -12472,7 +12125,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  };
  
  static const char *const cpu_names[TARGET_CPU_DEFAULT_max] =
-@@ -1971,6 +2065,7 @@
+@@ -1971,6 +2065,7 @@ static const char *const cpu_names[TARGE
    "prescott",
    "nocona",
    "core2",
@@ -12480,7 +12133,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
    "geode",
    "k6",
    "k6-2",
-@@ -2209,6 +2304,19 @@
+@@ -2209,6 +2304,19 @@ ix86_handle_option (size_t code, const c
        }
        return true;
  
@@ -12500,7 +12153,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      case OPT_maes:
        if (value)
        {
-@@ -2271,6 +2379,7 @@
+@@ -2271,6 +2379,7 @@ ix86_target_string (int isa, int flags, 
      { "-mmmx",                OPTION_MASK_ISA_MMX },
      { "-mabm",                OPTION_MASK_ISA_ABM },
      { "-mpopcnt",     OPTION_MASK_ISA_POPCNT },
@@ -12508,7 +12161,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      { "-maes",                OPTION_MASK_ISA_AES },
      { "-mpclmul",     OPTION_MASK_ISA_PCLMUL },
    };
-@@ -2487,7 +2596,8 @@
+@@ -2487,7 +2596,8 @@ override_options (bool main_args_p)
        PTA_AES = 1 << 17,
        PTA_PCLMUL = 1 << 18,
        PTA_AVX = 1 << 19,
@@ -12518,7 +12171,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      };
  
    static struct pta
-@@ -2529,6 +2639,9 @@
+@@ -2529,6 +2639,9 @@ override_options (bool main_args_p)
        {"core2", PROCESSOR_CORE2, CPU_CORE2,
        PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
        | PTA_SSSE3 | PTA_CX16},
@@ -12528,7 +12181,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        {"geode", PROCESSOR_GEODE, CPU_GEODE,
        PTA_MMX | PTA_3DNOW | PTA_3DNOW_A |PTA_PREFETCH_SSE},
        {"k6", PROCESSOR_K6, CPU_K6, PTA_MMX},
-@@ -2716,6 +2829,20 @@
+@@ -2716,6 +2829,20 @@ override_options (bool main_args_p)
      error ("bad value (%s) for %sarch=%s %s",
           ix86_arch_string, prefix, suffix, sw);
  
@@ -12549,7 +12202,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
    if (ix86_cmodel_string != 0)
      {
        if (!strcmp (ix86_cmodel_string, "small"))
-@@ -2828,6 +2955,9 @@
+@@ -2828,6 +2955,9 @@ override_options (bool main_args_p)
        if (!(TARGET_64BIT && (processor_alias_table[i].flags & PTA_NO_SAHF))
            && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_SAHF))
          ix86_isa_flags |= OPTION_MASK_ISA_SAHF;
@@ -12559,7 +12212,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        if (processor_alias_table[i].flags & PTA_AES
            && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_AES))
          ix86_isa_flags |= OPTION_MASK_ISA_AES;
-@@ -4592,14 +4722,14 @@
+@@ -4592,14 +4722,14 @@ ix86_function_arg_regno_p (int regno)
       default ABI.  */
  
    /* RAX is used as hidden argument to va_arg functions.  */
@@ -12577,7 +12230,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
                                         : X86_64_REGPARM_MAX); i++)
      if (regno == parm_regs[i])
        return true;
-@@ -4627,7 +4757,7 @@
+@@ -4627,7 +4757,7 @@ ix86_must_pass_in_stack (enum machine_mo
  int
  ix86_reg_parm_stack_space (const_tree fndecl)
  {
@@ -12586,7 +12239,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
    if (fndecl != NULL_TREE && TREE_CODE (fndecl) == FUNCTION_DECL)
      call_abi = ix86_function_abi (fndecl);
    else
-@@ -4639,37 +4769,39 @@
+@@ -4639,37 +4769,39 @@ ix86_reg_parm_stack_space (const_tree fn
  
  /* Returns value SYSV_ABI, MS_ABI dependent on fntype, specifying the
     call abi used.  */
@@ -12638,7 +12291,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
    return cfun->machine->call_abi;
  }
  
-@@ -4683,7 +4815,7 @@
+@@ -4683,7 +4815,7 @@ void
  ix86_call_abi_override (const_tree fndecl)
  {
    if (fndecl == NULL_TREE)
@@ -12647,7 +12300,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
    else
      cfun->machine->call_abi = ix86_function_type_abi (TREE_TYPE (fndecl));
  }
-@@ -4724,8 +4856,8 @@
+@@ -4724,8 +4856,8 @@ init_cumulative_args (CUMULATIVE_ARGS *c
    cum->nregs = ix86_regparm;
    if (TARGET_64BIT)
      {
@@ -12658,7 +12311,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
                                             : X64_REGPARM_MAX;
      }
    if (TARGET_SSE)
-@@ -4733,8 +4865,8 @@
+@@ -4733,8 +4865,8 @@ init_cumulative_args (CUMULATIVE_ARGS *c
        cum->sse_nregs = SSE_REGPARM_MAX;
        if (TARGET_64BIT)
          {
@@ -12669,7 +12322,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
                                                     : X64_SSE_REGPARM_MAX;
          }
      }
-@@ -5700,7 +5832,7 @@
+@@ -5700,7 +5832,7 @@ function_arg_advance (CUMULATIVE_ARGS *c
    if (type)
      mode = type_natural_mode (type, NULL);
  
@@ -12678,7 +12331,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      function_arg_advance_ms_64 (cum, bytes, words);
    else if (TARGET_64BIT)
      function_arg_advance_64 (cum, mode, type, words, named);
-@@ -5846,9 +5978,9 @@
+@@ -5846,9 +5978,9 @@ function_arg_64 (CUMULATIVE_ARGS *cum, e
    if (mode == VOIDmode)
      return GEN_INT (cum->maybe_vaarg
                    ? (cum->sse_nregs < 0
@@ -12690,7 +12343,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
                                                     : X64_SSE_REGPARM_MAX))
               : cum->sse_regno)
                    : -1);
-@@ -5942,7 +6074,7 @@
+@@ -5942,7 +6074,7 @@ function_arg (CUMULATIVE_ARGS *cum, enum
    if (type && TREE_CODE (type) == VECTOR_TYPE)
      mode = type_natural_mode (type, cum);
  
@@ -12699,7 +12352,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      return function_arg_ms_64 (cum, mode, omode, named, bytes);
    else if (TARGET_64BIT)
      return function_arg_64 (cum, mode, omode, type, named);
-@@ -5962,7 +6094,7 @@
+@@ -5962,7 +6094,7 @@ ix86_pass_by_reference (CUMULATIVE_ARGS 
                        const_tree type, bool named ATTRIBUTE_UNUSED)
  {
    /* See Windows x64 Software Convention.  */
@@ -12708,7 +12361,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      {
        int msize = (int) GET_MODE_SIZE (mode);
        if (type)
-@@ -6102,7 +6234,7 @@
+@@ -6102,7 +6234,7 @@ ix86_function_value_regno_p (int regno)
        /* TODO: The function should depend on current function ABI but
         builtins.c would need updating then. Therefore we use the
         default ABI.  */
@@ -12717,7 +12370,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        return false;
        return TARGET_FLOAT_RETURNS_IN_80387;
  
-@@ -6498,13 +6630,13 @@
+@@ -6498,13 +6630,13 @@ ix86_build_builtin_va_list_abi (enum cal
  static tree
  ix86_build_builtin_va_list (void)
  {
@@ -12733,7 +12386,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
          {
            t = ix86_build_builtin_va_list_abi (SYSV_ABI);
            if (TREE_CODE (t) != RECORD_TYPE)
-@@ -6518,7 +6650,7 @@
+@@ -6518,7 +6650,7 @@ ix86_build_builtin_va_list (void)
              t = build_variant_type_copy (t);
            sysv_va_list_type_node = t;
          }
@@ -12742,7 +12395,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
          {
            t = ix86_build_builtin_va_list_abi (MS_ABI);
            if (TREE_CODE (t) != RECORD_TYPE)
-@@ -6551,8 +6683,8 @@
+@@ -6551,8 +6683,8 @@ setup_incoming_varargs_64 (CUMULATIVE_AR
    int i;
    int regparm = ix86_regparm;
  
@@ -12753,7 +12406,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    /* GPR size of varargs save area.  */
    if (cfun->va_list_gpr_size)
-@@ -6705,7 +6837,7 @@
+@@ -6705,7 +6837,7 @@ is_va_list_char_pointer (tree type)
      return true;
    canonic = ix86_canonical_va_list_type (type);
    return (canonic == ms_va_list_type_node
@@ -12762,7 +12415,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  }
  
  /* Implement va_start.  */
-@@ -12987,6 +13119,316 @@
+@@ -12994,6 +13126,316 @@ ix86_expand_unary_operator (enum rtx_cod
      emit_move_insn (operands[0], dst);
  }
  
@@ -13079,7 +12732,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  /* Return TRUE or FALSE depending on whether the unary operator meets the
     appropriate constraints.  */
  
-@@ -18838,7 +19280,7 @@
+@@ -18850,7 +19292,7 @@ ix86_init_machine_status (void)
    f = GGC_CNEW (struct machine_function);
    f->use_fast_prologue_epilogue_nregs = -1;
    f->tls_descriptor_call_expanded_p = 0;
@@ -13088,7 +12741,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  
    return f;
  }
-@@ -19099,6 +19541,7 @@
+@@ -19111,6 +19553,7 @@ ix86_issue_rate (void)
    switch (ix86_tune)
      {
      case PROCESSOR_PENTIUM:
@@ -13096,7 +12749,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      case PROCESSOR_K6:
        return 2;
  
-@@ -19165,41 +19608,21 @@
+@@ -19177,41 +19620,21 @@ ix86_flags_dependent (rtx insn, rtx dep_
    return 1;
  }
  
@@ -13151,7 +12804,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
  }
  
  static int
-@@ -19227,7 +19650,20 @@
+@@ -19239,7 +19662,20 @@ ix86_adjust_cost (rtx insn, rtx link, rt
      {
      case PROCESSOR_PENTIUM:
        /* Address Generation Interlock adds a cycle of latency.  */
@@ -13173,7 +12826,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        cost += 1;
  
        /* ??? Compares pair with jump/setcc.  */
-@@ -19237,7 +19673,7 @@
+@@ -19249,7 +19685,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
        /* Floating point stores require value to be ready one cycle earlier.  */
        if (insn_type == TYPE_FMOV
          && get_attr_memory (insn) == MEMORY_STORE
@@ -13182,7 +12835,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        cost += 1;
        break;
  
-@@ -19260,7 +19696,7 @@
+@@ -19272,7 +19708,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
         in parallel with previous instruction in case
         previous instruction is not needed to compute the address.  */
        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
@@ -13191,7 +12844,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        {
          /* Claim moves to take one cycle, as core can issue one load
             at time and the next load can start cycle later.  */
-@@ -19289,7 +19725,7 @@
+@@ -19301,7 +19737,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
         in parallel with previous instruction in case
         previous instruction is not needed to compute the address.  */
        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
@@ -13200,7 +12853,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        {
          /* Claim moves to take one cycle, as core can issue one load
             at time and the next load can start cycle later.  */
-@@ -19306,6 +19742,7 @@
+@@ -19318,6 +19754,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
      case PROCESSOR_ATHLON:
      case PROCESSOR_K8:
      case PROCESSOR_AMDFAM10:
@@ -13208,7 +12861,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      case PROCESSOR_GENERIC32:
      case PROCESSOR_GENERIC64:
        memory = get_attr_memory (insn);
-@@ -19314,7 +19751,7 @@
+@@ -19326,7 +19763,7 @@ ix86_adjust_cost (rtx insn, rtx link, rt
         in parallel with previous instruction in case
         previous instruction is not needed to compute the address.  */
        if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH)
@@ -13217,7 +12870,7 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
        {
          enum attr_unit unit = get_attr_unit (insn);
          int loadcost = 3;
-@@ -29594,14 +30031,11 @@
+@@ -29606,14 +30043,11 @@ x86_builtin_vectorization_cost (bool run
  tree
  ix86_fn_abi_va_list (tree fndecl)
  {
@@ -13233,34 +12886,9 @@ diff -Nur a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
      return ms_va_list_type_node;
    else
      return sysv_va_list_type_node;
-diff -Nur a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c
---- a/gcc/config/i386/i386-c.c 2008-08-31 01:50:40.000000000 +0200
-+++ b/gcc/config/i386/i386-c.c 2010-01-25 09:50:29.005686600 +0100
-@@ -119,6 +119,10 @@
-       def_or_undef (parse_in, "__core2");
-       def_or_undef (parse_in, "__core2__");
-       break;
-+    case PROCESSOR_ATOM:
-+      def_or_undef (parse_in, "__atom");
-+      def_or_undef (parse_in, "__atom__");
-+      break;
-     /* use PROCESSOR_max to not set/unset the arch macro.  */
-     case PROCESSOR_max:
-       break;
-@@ -187,6 +191,9 @@
-     case PROCESSOR_CORE2:
-       def_or_undef (parse_in, "__tune_core2__");
-       break;
-+    case PROCESSOR_ATOM:
-+      def_or_undef (parse_in, "__tune_atom__");
-+      break;
-     case PROCESSOR_GENERIC32:
-     case PROCESSOR_GENERIC64:
-       break;
-diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
---- a/gcc/config/i386/i386.h   2009-07-11 21:06:26.000000000 +0200
-+++ b/gcc/config/i386/i386.h   2010-01-25 09:50:29.005686600 +0100
-@@ -59,6 +59,7 @@
+--- a/gcc/config/i386/i386.h
++++ b/gcc/config/i386/i386.h
+@@ -59,6 +59,7 @@ see the files COPYING3 and COPYING.RUNTI
  #define TARGET_ABM    OPTION_ISA_ABM
  #define TARGET_POPCNT OPTION_ISA_POPCNT
  #define TARGET_SAHF   OPTION_ISA_SAHF
@@ -13268,7 +12896,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  #define TARGET_AES    OPTION_ISA_AES
  #define TARGET_PCLMUL OPTION_ISA_PCLMUL
  #define TARGET_CMPXCHG16B OPTION_ISA_CX16
-@@ -236,6 +237,7 @@
+@@ -236,6 +237,7 @@ extern const struct processor_costs ix86
  #define TARGET_GENERIC64 (ix86_tune == PROCESSOR_GENERIC64)
  #define TARGET_GENERIC (TARGET_GENERIC32 || TARGET_GENERIC64)
  #define TARGET_AMDFAM10 (ix86_tune == PROCESSOR_AMDFAM10)
@@ -13276,7 +12904,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  
  /* Feature tests against the various tunings.  */
  enum ix86_tune_indices {
-@@ -300,6 +302,7 @@
+@@ -300,6 +302,7 @@ enum ix86_tune_indices {
    X86_TUNE_USE_VECTOR_FP_CONVERTS,
    X86_TUNE_USE_VECTOR_CONVERTS,
    X86_TUNE_FUSE_CMP_AND_BRANCH,
@@ -13284,7 +12912,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  
    X86_TUNE_LAST
  };
-@@ -387,6 +390,7 @@
+@@ -387,6 +390,7 @@ extern unsigned char ix86_tune_features[
        ix86_tune_features[X86_TUNE_USE_VECTOR_CONVERTS]
  #define TARGET_FUSE_CMP_AND_BRANCH \
        ix86_tune_features[X86_TUNE_FUSE_CMP_AND_BRANCH]
@@ -13292,7 +12920,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  
  /* Feature tests against the various architecture variations.  */
  enum ix86_arch_indices {
-@@ -470,7 +474,10 @@
+@@ -470,7 +474,10 @@ enum calling_abi
    MS_ABI = 1
  };
  
@@ -13304,7 +12932,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  #define DEFAULT_ABI SYSV_ABI
  
  /* Subtargets may reset this to 1 in order to enable 96-bit long double
-@@ -569,6 +576,7 @@
+@@ -569,6 +576,7 @@ enum target_cpu_default
    TARGET_CPU_DEFAULT_prescott,
    TARGET_CPU_DEFAULT_nocona,
    TARGET_CPU_DEFAULT_core2,
@@ -13312,7 +12940,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  
    TARGET_CPU_DEFAULT_geode,
    TARGET_CPU_DEFAULT_k6,
-@@ -658,7 +666,7 @@
+@@ -658,7 +666,7 @@ enum target_cpu_default
  
  /* Boundary (in *bits*) on which stack pointer should be aligned.  */
  #define STACK_BOUNDARY \
@@ -13321,7 +12949,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  
  /* Stack boundary of the main function guaranteed by OS.  */
  #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
-@@ -1584,7 +1592,7 @@
+@@ -1584,7 +1592,7 @@ typedef struct ix86_args {
    int maybe_vaarg;            /* true for calls to possibly vardic fncts.  */
    int float_in_sse;           /* 1 if in 32-bit mode SFmode (2 for DFmode) should
                                   be passed in SSE registers.  Otherwise 0.  */
@@ -13330,7 +12958,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
                                   MS_ABI for ms abi.  */
  } CUMULATIVE_ARGS;
  
-@@ -2230,6 +2238,7 @@
+@@ -2230,6 +2238,7 @@ enum processor_type
    PROCESSOR_GENERIC32,
    PROCESSOR_GENERIC64,
    PROCESSOR_AMDFAM10,
@@ -13338,7 +12966,7 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
    PROCESSOR_max
  };
  
-@@ -2403,7 +2412,7 @@
+@@ -2403,7 +2412,7 @@ struct machine_function GTY(())
    int tls_descriptor_call_expanded_p;
    /* This value is used for amd64 targets and specifies the current abi
       to be used. MS_ABI means ms abi. Otherwise SYSV_ABI means sysv abi.  */
@@ -13347,9 +12975,8 @@ diff -Nur a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
  };
  
  #define ix86_stack_locals (cfun->machine->stack_locals)
-diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
---- a/gcc/config/i386/i386.md  2009-07-08 18:59:15.000000000 +0200
-+++ b/gcc/config/i386/i386.md  2010-01-25 09:50:29.015687523 +0100
+--- a/gcc/config/i386/i386.md
++++ b/gcc/config/i386/i386.md
 @@ -316,7 +316,7 @@
  
  \f
@@ -13546,7 +13173,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
-@@ -15155,7 +15184,7 @@
+@@ -15163,7 +15192,7 @@
                     ? gen_rtx_REG (XCmode, FIRST_FLOAT_REG) : NULL),
                    operands[0], const0_rtx,
                    GEN_INT ((TARGET_64BIT
@@ -13555,7 +13182,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
                                 ? X86_64_SSE_REGPARM_MAX
                                 : X64_SSE_REGPARM_MAX)
                              : X86_32_SSE_REGPARM_MAX)
-@@ -15235,6 +15264,7 @@
+@@ -15243,6 +15272,7 @@
    "reload_completed"
    "ret"
    [(set_attr "length" "1")
@@ -13563,7 +13190,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "length_immediate" "0")
     (set_attr "modrm" "0")])
  
-@@ -15247,6 +15277,7 @@
+@@ -15255,6 +15285,7 @@
    "reload_completed"
    "rep\;ret"
    [(set_attr "length" "1")
@@ -13571,7 +13198,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "length_immediate" "0")
     (set_attr "prefix_rep" "1")
     (set_attr "modrm" "0")])
-@@ -15257,6 +15288,7 @@
+@@ -15265,6 +15296,7 @@
    "reload_completed"
    "ret\t%0"
    [(set_attr "length" "3")
@@ -13579,7 +13206,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "length_immediate" "2")
     (set_attr "modrm" "0")])
  
-@@ -15610,7 +15642,7 @@
+@@ -15618,7 +15650,7 @@
        (bswap:SI (match_operand:SI 1 "register_operand" "")))]
    ""
  {
@@ -13588,7 +13215,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
      {
        rtx x = operands[0];
  
-@@ -15622,6 +15654,21 @@
+@@ -15630,6 +15662,21 @@
      }
  })
  
@@ -13610,7 +13237,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
  (define_insn "*bswapsi_1"
    [(set (match_operand:SI 0 "register_operand" "=r")
        (bswap:SI (match_operand:SI 1 "register_operand" "0")))]
-@@ -15650,7 +15697,29 @@
+@@ -15658,7 +15705,29 @@
    [(set_attr "length" "4")
     (set_attr "mode" "HI")])
  
@@ -13641,7 +13268,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
    [(set (match_operand:DI 0 "register_operand" "=r")
        (bswap:DI (match_operand:DI 1 "register_operand" "0")))]
    "TARGET_64BIT"
-@@ -16378,6 +16447,7 @@
+@@ -16386,6 +16455,7 @@
    "TARGET_SSE_MATH"
    "%vrcpss\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
@@ -13649,7 +13276,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "SF")])
  
-@@ -16729,6 +16799,7 @@
+@@ -16737,6 +16807,7 @@
    "TARGET_SSE_MATH"
    "%vrsqrtss\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
@@ -13657,7 +13284,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "SF")])
  
-@@ -16749,6 +16820,7 @@
+@@ -16757,6 +16828,7 @@
    "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
    "%vsqrts<ssemodefsuffix>\t{%1, %d0|%d0, %1}"
    [(set_attr "type" "sse")
@@ -13665,7 +13292,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "<MODE>")
     (set_attr "athlon_decode" "*")
-@@ -19802,6 +19874,7 @@
+@@ -19810,6 +19882,7 @@
    ; Since we don't have the proper number of operands for an alu insn,
    ; fill in all the blanks.
    [(set_attr "type" "alu")
@@ -13673,7 +13300,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "pent_pair" "pu")
     (set_attr "memory" "none")
     (set_attr "imm_disp" "false")
-@@ -19817,6 +19890,7 @@
+@@ -19825,6 +19898,7 @@
    ""
    "sbb{q}\t%0, %0"
    [(set_attr "type" "alu")
@@ -13681,7 +13308,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "pent_pair" "pu")
     (set_attr "memory" "none")
     (set_attr "imm_disp" "false")
-@@ -19860,6 +19934,7 @@
+@@ -19868,6 +19942,7 @@
    ; Since we don't have the proper number of operands for an alu insn,
    ; fill in all the blanks.
    [(set_attr "type" "alu")
@@ -13689,7 +13316,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "pent_pair" "pu")
     (set_attr "memory" "none")
     (set_attr "imm_disp" "false")
-@@ -19875,6 +19950,7 @@
+@@ -19883,6 +19958,7 @@
    ""
    "sbb{l}\t%0, %0"
    [(set_attr "type" "alu")
@@ -13697,7 +13324,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "pent_pair" "pu")
     (set_attr "memory" "none")
     (set_attr "imm_disp" "false")
-@@ -20207,7 +20283,8 @@
+@@ -20215,7 +20291,8 @@
      }
  }
    [(set (attr "type")
@@ -13707,7 +13334,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
                 (const_string "alu")
               (match_operand:SI 2 "const0_operand" "")
                 (const_string "imov")
-@@ -20250,7 +20327,8 @@
+@@ -20258,7 +20335,8 @@
      }
  }
    [(set (attr "type")
@@ -13717,7 +13344,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
                 (const_string "alu")
               (match_operand:DI 2 "const0_operand" "")
                 (const_string "imov")
-@@ -21734,6 +21812,7 @@
+@@ -21746,6 +21824,7 @@
    return patterns[locality];
  }
    [(set_attr "type" "sse")
@@ -13725,7 +13352,7 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "memory" "none")])
  
  (define_insn "*prefetch_sse_rex"
-@@ -21752,6 +21831,7 @@
+@@ -21764,6 +21843,7 @@
    return patterns[locality];
  }
    [(set_attr "type" "sse")
@@ -13733,10 +13360,9 @@ diff -Nur a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
     (set_attr "memory" "none")])
  
  (define_insn "*prefetch_3dnow"
-diff -Nur a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
---- a/gcc/config/i386/i386.opt 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/i386/i386.opt 2010-01-25 09:50:29.015687523 +0100
-@@ -228,6 +228,10 @@
+--- a/gcc/config/i386/i386.opt
++++ b/gcc/config/i386/i386.opt
+@@ -228,6 +228,10 @@ mtune=
  Target RejectNegative Joined Var(ix86_tune_string)
  Schedule code for given CPU
  
@@ -13747,7 +13373,7 @@ diff -Nur a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
  mveclibabi=
  Target RejectNegative Joined Var(ix86_veclibabi_string)
  Vector library ABI to use
-@@ -335,6 +339,10 @@
+@@ -335,6 +339,10 @@ msahf
  Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) VarExists Save
  Support code generation of sahf instruction in 64bit x86-64 code.
  
@@ -13758,35 +13384,9 @@ diff -Nur a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
  maes
  Target Report Mask(ISA_AES) Var(ix86_isa_flags) VarExists Save
  Support AES built-in functions and code generation
-diff -Nur a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
---- a/gcc/config/i386/i386-protos.h    2009-07-11 21:06:26.000000000 +0200
-+++ b/gcc/config/i386/i386-protos.h    2010-01-25 09:50:29.015687523 +0100
-@@ -86,6 +86,9 @@
- extern void ix86_expand_binary_operator (enum rtx_code,
-                                        enum machine_mode, rtx[]);
- extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]);
-+extern bool ix86_lea_for_add_ok (enum rtx_code, rtx, rtx[]);
-+extern bool ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn);
-+extern bool ix86_agi_dependent (rtx set_insn, rtx use_insn);
- extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode,
-                                       rtx[]);
- extern rtx ix86_build_const_vector (enum machine_mode, bool, rtx);
-@@ -140,9 +143,8 @@
- extern bool ix86_sol10_return_in_memory (const_tree,const_tree);
- extern rtx ix86_force_to_memory (enum machine_mode, rtx);
- extern void ix86_free_from_memory (enum machine_mode);
--extern int ix86_cfun_abi (void);
--extern int ix86_function_abi (const_tree);
--extern int ix86_function_type_abi (const_tree);
-+extern enum calling_abi ix86_cfun_abi (void);
-+extern enum calling_abi ix86_function_type_abi (const_tree);
- extern void ix86_call_abi_override (const_tree);
- extern tree ix86_fn_abi_va_list (tree);
- extern tree ix86_canonical_va_list_type (tree);
-diff -Nur a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
---- a/gcc/config/i386/mingw32.h        2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/i386/mingw32.h        2010-01-25 09:50:29.015687523 +0100
-@@ -38,7 +38,7 @@
+--- a/gcc/config/i386/mingw32.h
++++ b/gcc/config/i386/mingw32.h
+@@ -38,7 +38,7 @@ along with GCC; see the file COPYING3.  
        builtin_define_std ("WINNT");                           \
        builtin_define_with_int_value ("_INTEGRAL_MAX_BITS",    \
                                     TYPE_PRECISION (intmax_type_node));\
@@ -13795,10 +13395,9 @@ diff -Nur a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h
        {                                                       \
          builtin_define ("__MINGW64__");                       \
          builtin_define_std ("WIN64");                         \
-diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
---- a/gcc/config/i386/sse.md   2009-05-06 15:20:41.000000000 +0200
-+++ b/gcc/config/i386/sse.md   2010-01-25 09:50:29.015687523 +0100
-@@ -338,6 +338,7 @@
+--- a/gcc/config/i386/sse.md
++++ b/gcc/config/i386/sse.md
+@@ -342,6 +342,7 @@
     && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "vmovup<avxmodesuffixf2c>\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssemov")
@@ -13806,7 +13405,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "vex")
     (set_attr "mode" "<MODE>")])
  
-@@ -363,6 +364,7 @@
+@@ -367,6 +368,7 @@
     && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "movup<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssemov")
@@ -13814,7 +13413,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "mode" "<MODE>")])
  
  (define_insn "avx_movdqu<avxmodesuffix>"
-@@ -373,6 +375,7 @@
+@@ -377,6 +379,7 @@
    "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "vmovdqu\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssemov")
@@ -13822,7 +13421,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "vex")
     (set_attr "mode" "<avxvecmode>")])
  
-@@ -383,6 +386,7 @@
+@@ -387,6 +390,7 @@
    "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "movdqu\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssemov")
@@ -13830,7 +13429,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "mode" "TI")])
  
-@@ -424,7 +428,7 @@
+@@ -428,7 +432,7 @@
                     UNSPEC_MOVNT))]
    "TARGET_SSE2"
    "movntdq\t{%1, %0|%0, %1}"
@@ -13839,7 +13438,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "mode" "TI")])
  
-@@ -434,7 +438,7 @@
+@@ -438,7 +442,7 @@
                   UNSPEC_MOVNT))]
    "TARGET_SSE2"
    "movnti\t{%1, %0|%0, %1}"
@@ -13848,7 +13447,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "mode" "V2DF")])
  
  (define_insn "avx_lddqu<avxmodesuffix>"
-@@ -445,6 +449,7 @@
+@@ -449,6 +453,7 @@
    "TARGET_AVX"
    "vlddqu\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
@@ -13856,7 +13455,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "vex")
     (set_attr "mode" "<avxvecmode>")])
  
-@@ -454,7 +459,8 @@
+@@ -458,7 +463,8 @@
                      UNSPEC_LDDQU))]
    "TARGET_SSE3"
    "lddqu\t{%1, %0|%0, %1}"
@@ -13866,7 +13465,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_rep" "1")
     (set_attr "mode" "TI")])
  
-@@ -761,6 +767,7 @@
+@@ -765,6 +771,7 @@
    "TARGET_SSE"
    "%vrcpps\t{%1, %0|%0, %1}"
    [(set_attr "type" "sse")
@@ -13874,7 +13473,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "V4SF")])
  
-@@ -787,6 +794,7 @@
+@@ -791,6 +798,7 @@
    "TARGET_SSE"
    "rcpss\t{%1, %0|%0, %1}"
    [(set_attr "type" "sse")
@@ -13882,7 +13481,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "mode" "SF")])
  
  (define_expand "sqrtv8sf2"
-@@ -832,6 +840,7 @@
+@@ -836,6 +844,7 @@
    "TARGET_SSE"
    "%vsqrtps\t{%1, %0|%0, %1}"
    [(set_attr "type" "sse")
@@ -13890,7 +13489,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "V4SF")])
  
-@@ -876,6 +885,7 @@
+@@ -880,6 +889,7 @@
    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
    "sqrts<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
    [(set_attr "type" "sse")
@@ -13898,7 +13497,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "mode" "<ssescalarmode>")])
  
  (define_expand "rsqrtv8sf2"
-@@ -1039,7 +1049,7 @@
+@@ -1043,7 +1053,7 @@
         (const_int 1)))]
    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
    "<maxminfprefix>s<ssemodesuffixf2c>\t{%2, %0|%0, %2}"
@@ -13907,7 +13506,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "mode" "<ssescalarmode>")])
  
  ;; These versions of the min/max patterns implement exactly the operations
-@@ -1175,6 +1185,7 @@
+@@ -1179,6 +1189,7 @@
    "TARGET_SSE3"
    "addsubpd\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseadd")
@@ -13915,7 +13514,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "mode" "V2DF")])
  
  (define_insn "avx_h<plusminus_insn>v4df3"
-@@ -1298,6 +1309,7 @@
+@@ -1302,6 +1313,7 @@
    "TARGET_SSE3"
    "h<plusminus_mnemonic>ps\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseadd")
@@ -13923,7 +13522,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_rep" "1")
     (set_attr "mode" "V4SF")])
  
-@@ -5066,6 +5078,7 @@
+@@ -5069,6 +5081,7 @@
    "TARGET_SSE2 && ix86_binary_operator_ok (MULT, V8HImode, operands)"
    "pmaddwd\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -13931,7 +13530,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "mode" "TI")])
  
-@@ -7025,6 +7038,7 @@
+@@ -7035,6 +7048,7 @@
     movq\t{%H1, %0|%0, %H1}
     mov{q}\t{%H1, %0|%0, %H1}"
    [(set_attr "type" "ssemov,sseishft,ssemov,imov")
@@ -13939,7 +13538,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "memory" "*,none,*,*")
     (set_attr "mode" "V2SF,TI,TI,DI")])
  
-@@ -7057,6 +7071,7 @@
+@@ -7067,6 +7081,7 @@
     psrldq\t{$8, %0|%0, 8}
     movq\t{%H1, %0|%0, %H1}"
    [(set_attr "type" "ssemov,sseishft,ssemov")
@@ -13947,7 +13546,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "memory" "*,none,*")
     (set_attr "mode" "V2SF,TI,TI")])
  
-@@ -7614,6 +7629,7 @@
+@@ -7624,6 +7639,7 @@
    "TARGET_SSE2"
    "psadbw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -13955,7 +13554,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "mode" "TI")])
  
-@@ -7635,7 +7651,7 @@
+@@ -7645,7 +7661,7 @@
          UNSPEC_MOVMSK))]
    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
    "%vmovmskp<ssemodesuffixf2c>\t{%1, %0|%0, %1}"
@@ -13964,7 +13563,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "<MODE>")])
  
-@@ -7645,7 +7661,7 @@
+@@ -7655,7 +7671,7 @@
                   UNSPEC_MOVMSK))]
    "TARGET_SSE2"
    "%vpmovmskb\t{%1, %0|%0, %1}"
@@ -13973,7 +13572,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "SI")])
-@@ -7668,7 +7684,7 @@
+@@ -7678,7 +7694,7 @@
    "TARGET_SSE2 && !TARGET_64BIT"
    ;; @@@ check ordering of operands in intel/nonintel syntax
    "%vmaskmovdqu\t{%2, %1|%1, %2}"
@@ -13982,7 +13581,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "TI")])
-@@ -7682,7 +7698,7 @@
+@@ -7692,7 +7708,7 @@
    "TARGET_SSE2 && TARGET_64BIT"
    ;; @@@ check ordering of operands in intel/nonintel syntax
    "%vmaskmovdqu\t{%2, %1|%1, %2}"
@@ -13991,7 +13590,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "TI")])
-@@ -7693,6 +7709,7 @@
+@@ -7703,6 +7719,7 @@
    "TARGET_SSE"
    "%vldmxcsr\t%0"
    [(set_attr "type" "sse")
@@ -13999,7 +13598,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "memory" "load")])
  
-@@ -7702,6 +7719,7 @@
+@@ -7712,6 +7729,7 @@
    "TARGET_SSE"
    "%vstmxcsr\t%0"
    [(set_attr "type" "sse")
@@ -14007,7 +13606,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix" "maybe_vex")
     (set_attr "memory" "store")])
  
-@@ -7720,6 +7738,7 @@
+@@ -7730,6 +7748,7 @@
    "TARGET_SSE || TARGET_3DNOW_A"
    "sfence"
    [(set_attr "type" "sse")
@@ -14015,7 +13614,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "memory" "unknown")])
  
  (define_insn "sse2_clflush"
-@@ -7728,6 +7747,7 @@
+@@ -7738,6 +7757,7 @@
    "TARGET_SSE2"
    "clflush\t%a0"
    [(set_attr "type" "sse")
@@ -14023,7 +13622,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "memory" "unknown")])
  
  (define_expand "sse2_mfence"
-@@ -7745,6 +7765,7 @@
+@@ -7755,6 +7775,7 @@
    "TARGET_64BIT || TARGET_SSE2"
    "mfence"
    [(set_attr "type" "sse")
@@ -14031,7 +13630,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "memory" "unknown")])
  
  (define_expand "sse2_lfence"
-@@ -7762,6 +7783,7 @@
+@@ -7772,6 +7793,7 @@
    "TARGET_SSE2"
    "lfence"
    [(set_attr "type" "sse")
@@ -14039,7 +13638,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "memory" "unknown")])
  
  (define_insn "sse3_mwait"
-@@ -7885,6 +7907,7 @@
+@@ -7895,6 +7917,7 @@
    "TARGET_SSSE3"
    "phaddw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14047,7 +13646,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -7913,6 +7936,7 @@
+@@ -7923,6 +7946,7 @@
    "TARGET_SSSE3"
    "phaddw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14055,7 +13654,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -7967,6 +7991,7 @@
+@@ -7977,6 +8001,7 @@
    "TARGET_SSSE3"
    "phaddd\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14063,7 +13662,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -7987,6 +8012,7 @@
+@@ -7997,6 +8022,7 @@
    "TARGET_SSSE3"
    "phaddd\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14071,7 +13670,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8073,6 +8099,7 @@
+@@ -8083,6 +8109,7 @@
    "TARGET_SSSE3"
    "phaddsw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14079,7 +13678,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -8101,6 +8128,7 @@
+@@ -8111,6 +8138,7 @@
    "TARGET_SSSE3"
    "phaddsw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14087,7 +13686,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8187,6 +8215,7 @@
+@@ -8197,6 +8225,7 @@
    "TARGET_SSSE3"
    "phsubw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14095,7 +13694,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -8215,6 +8244,7 @@
+@@ -8225,6 +8254,7 @@
    "TARGET_SSSE3"
    "phsubw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14103,7 +13702,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8269,6 +8299,7 @@
+@@ -8279,6 +8309,7 @@
    "TARGET_SSSE3"
    "phsubd\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14111,7 +13710,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -8289,6 +8320,7 @@
+@@ -8299,6 +8330,7 @@
    "TARGET_SSSE3"
    "phsubd\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14119,7 +13718,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8375,6 +8407,7 @@
+@@ -8385,6 +8417,7 @@
    "TARGET_SSSE3"
    "phsubsw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14127,7 +13726,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -8403,6 +8436,7 @@
+@@ -8413,6 +8446,7 @@
    "TARGET_SSSE3"
    "phsubsw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14135,7 +13734,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8509,6 +8543,7 @@
+@@ -8519,6 +8553,7 @@
    "TARGET_SSSE3"
    "pmaddubsw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14143,7 +13742,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -8547,6 +8582,7 @@
+@@ -8557,6 +8592,7 @@
    "TARGET_SSSE3"
    "pmaddubsw\t{%2, %0|%0, %2}"
    [(set_attr "type" "sseiadd")
@@ -14151,7 +13750,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8754,6 +8790,7 @@
+@@ -8764,6 +8800,7 @@
    return "palignr\t{%3, %2, %0|%0, %2, %3}";
  }
    [(set_attr "type" "sseishft")
@@ -14159,7 +13758,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_data16" "1")
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "TI")])
-@@ -8770,6 +8807,7 @@
+@@ -8780,6 +8817,7 @@
    return "palignr\t{%3, %2, %0|%0, %2, %3}";
  }
    [(set_attr "type" "sseishft")
@@ -14167,7 +13766,7 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "mode" "DI")])
  
-@@ -8956,7 +8994,7 @@
+@@ -8966,7 +9004,7 @@
                     UNSPEC_MOVNTDQA))]
    "TARGET_SSE4_1"
    "%vmovntdqa\t{%1, %0|%0, %1}"
@@ -14176,97 +13775,9 @@ diff -Nur a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
     (set_attr "prefix_extra" "1")
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "TI")])
-diff -Nur a/gcc/config/i386/t-cs-linux b/gcc/config/i386/t-cs-linux
---- a/gcc/config/i386/t-cs-linux       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/t-cs-linux       2010-01-25 09:50:29.015687523 +0100
-@@ -0,0 +1,25 @@
-+# Sourcery G++ IA32 GNU/Linux Configuration.
-+# Copyright (C) 2007
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+MULTILIB_OPTIONS = m64/m32 msgxx-glibc/mrh73/mrhel3
-+MULTILIB_DIRNAMES = 64 32 sgxx-glibc rh73 rhel3
-+MULTILIB_OSDIRNAMES = ../lib64 ../lib sgxx-glibc rh73 rhel3
-+MULTILIB_EXCEPTIONS = m64/mrh73 m64/mrhel3
-+
-diff -Nur a/gcc/config/i386/t-cs-linux-lite b/gcc/config/i386/t-cs-linux-lite
---- a/gcc/config/i386/t-cs-linux-lite  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/t-cs-linux-lite  2010-01-25 09:50:29.015687523 +0100
-@@ -0,0 +1,26 @@
-+# Sourcery G++ Lite IA32 GNU/Linux Configuration.
-+# Copyright (C) 2009
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+MULTILIB_OPTIONS = m64 march=atom/march=core2
-+MULTILIB_DIRNAMES = 64 atom core2
-+MULTILIB_EXCEPTIONS = m64/march=atom march=core2
-+MULTILIB_ALIASES = m64=m64/march?atom
-+MULTILIB_OSDIRNAMES = m64=../lib64 march.atom=atom m64/march.core2=../lib64/core2
-+
-diff -Nur a/gcc/config/i386/t-wrs-linux b/gcc/config/i386/t-wrs-linux
---- a/gcc/config/i386/t-wrs-linux      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/t-wrs-linux      2010-01-25 09:50:29.015687523 +0100
-@@ -0,0 +1,24 @@
-+# Wind River GNU/Linux Configuration.
-+# Copyright (C) 2009
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+MULTILIB_OPTIONS = m64/m32 msystem-glibc
-+MULTILIB_DIRNAMES = 64 32 system-glibc
-+MULTILIB_OSDIRNAMES = ../lib64 ../lib system-glibc
-+MULTILIB_EXCEPTIONS = m64/msystem-glibc
-diff -Nur a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
---- a/gcc/config/i386/winnt.c  2009-02-21 04:21:44.000000000 +0100
-+++ b/gcc/config/i386/winnt.c  2010-01-25 09:50:29.015687523 +0100
-@@ -499,8 +499,11 @@
+--- a/gcc/config/i386/winnt.c
++++ b/gcc/config/i386/winnt.c
+@@ -499,8 +499,11 @@ i386_pe_asm_output_aligned_decl_common (
  {
    HOST_WIDE_INT rounded;
  
@@ -14280,7 +13791,7 @@ diff -Nur a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
    rounded = size ? size : 1;
    rounded += (BIGGEST_ALIGNMENT / BITS_PER_UNIT) - 1;
    rounded = (rounded / (BIGGEST_ALIGNMENT / BITS_PER_UNIT)
-@@ -510,9 +513,13 @@
+@@ -510,9 +513,13 @@ i386_pe_asm_output_aligned_decl_common (
  
    fprintf (stream, "\t.comm\t");
    assemble_name (stream, name);
@@ -14297,55 +13808,8 @@ diff -Nur a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
  }
  \f
  /* The Microsoft linker requires that every function be marked as
-diff -Nur a/gcc/config/i386/wrs-linux.h b/gcc/config/i386/wrs-linux.h
---- a/gcc/config/i386/wrs-linux.h      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/wrs-linux.h      2010-01-25 09:50:29.015687523 +0100
-@@ -0,0 +1,33 @@
-+/* Wind River IA32 GNU/Linux Configuration.
-+   Copyright (C) 2009
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{msystem-glibc:/system-glibc}"
-+
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC SYSROOT_SUFFIX_SPEC
-+
-+/* See mips/wrs-linux.h for details on this use of
-+   STARTFILE_PREFIX_SPEC.  */
-+#undef STARTFILE_PREFIX_SPEC
-+#define STARTFILE_PREFIX_SPEC                         \
-+  "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/}      \
-+   %{!m64: /usr/local/lib/ /lib/ /usr/lib/}"
-diff -Nur a/gcc/config/i386/wrs-linux.opt b/gcc/config/i386/wrs-linux.opt
---- a/gcc/config/i386/wrs-linux.opt    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/i386/wrs-linux.opt    2010-01-25 09:50:29.015687523 +0100
-@@ -0,0 +1,5 @@
-+; Additional options for Wind River Linux Sourcery G++.
-+
-+msystem-glibc
-+Target
-+Use system version of GLIBC
-diff -Nur a/gcc/config/m68k/constraints.md b/gcc/config/m68k/constraints.md
---- a/gcc/config/m68k/constraints.md   2007-09-11 15:56:30.000000000 +0200
-+++ b/gcc/config/m68k/constraints.md   2010-01-25 09:50:29.015687523 +0100
+--- a/gcc/config/m68k/constraints.md
++++ b/gcc/config/m68k/constraints.md
 @@ -124,6 +124,11 @@
    (and (match_code "const_int")
         (match_test "ival < -0x8000 || ival > 0x7FFF")))
@@ -14358,10 +13822,9 @@ diff -Nur a/gcc/config/m68k/constraints.md b/gcc/config/m68k/constraints.md
  (define_constraint "CQ"
    "Integers valid for mvq."
    (and (match_code "const_int")
-diff -Nur a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm
---- a/gcc/config/m68k/lb1sf68.asm      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/m68k/lb1sf68.asm      2010-01-25 09:50:29.015687523 +0100
-@@ -163,6 +163,8 @@
+--- a/gcc/config/m68k/lb1sf68.asm
++++ b/gcc/config/m68k/lb1sf68.asm
+@@ -163,6 +163,8 @@ see the files COPYING3 and COPYING.RUNTI
  #if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
        lea     \addr-.-8,a0
        jsr     pc@(a0)
@@ -14370,7 +13833,7 @@ diff -Nur a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm
  #else
        bsr     \addr
  #endif
-@@ -202,6 +204,8 @@
+@@ -202,6 +204,8 @@ see the files COPYING3 and COPYING.RUNTI
  #if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
        lea     \addr-.-8,a0
        jsr     pc@(a0)
@@ -14379,10 +13842,9 @@ diff -Nur a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm
  #else
        bsr     \addr
  #endif
-diff -Nur a/gcc/config/m68k/linux-unwind.h b/gcc/config/m68k/linux-unwind.h
---- a/gcc/config/m68k/linux-unwind.h   2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/m68k/linux-unwind.h   2010-01-25 09:50:29.015687523 +0100
-@@ -77,9 +77,15 @@
+--- a/gcc/config/m68k/linux-unwind.h
++++ b/gcc/config/m68k/linux-unwind.h
+@@ -77,9 +77,15 @@ m68k_fallback_frame_state (struct _Unwin
        fs->regs.reg[9].how = REG_SAVED_OFFSET;
        fs->regs.reg[9].loc.offset = (long) &sc->sc_a1 - cfa;
  
@@ -14398,7 +13860,7 @@ diff -Nur a/gcc/config/m68k/linux-unwind.h b/gcc/config/m68k/linux-unwind.h
        if (*(int *) sc->sc_fpstate)
        {
          int *fpregs = (int *) sc->sc_fpregs;
-@@ -89,11 +95,19 @@
+@@ -89,11 +95,19 @@ m68k_fallback_frame_state (struct _Unwin
          fs->regs.reg[17].how = REG_SAVED_OFFSET;
          fs->regs.reg[17].loc.offset = (long) &fpregs[M68K_FP_SIZE/4] - cfa;
        }
@@ -14420,10 +13882,129 @@ diff -Nur a/gcc/config/m68k/linux-unwind.h b/gcc/config/m68k/linux-unwind.h
  #else
    /* moveq #~__NR_rt_sigreturn,%d0; not.b %d0; trap #0 */
    else if (pc[0] == 0x7052 && pc[1] == 0x4600 && pc[2] == 0x4e40)
-diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
---- a/gcc/config/m68k/m68k.c   2008-11-19 17:24:10.000000000 +0100
-+++ b/gcc/config/m68k/m68k.c   2010-01-25 09:50:29.015687523 +0100
-@@ -46,6 +46,7 @@
+--- a/gcc/config/m68k/m68k-devices.def
++++ b/gcc/config/m68k/m68k-devices.def
+@@ -72,8 +72,8 @@
+ /* 680x0 series processors.  */
+ M68K_DEVICE ("68000", m68000,   "68000", "68000", 68000,    isa_00,    0)
+ M68K_DEVICE ("68010", m68010,   "68010", "68000", 68010,    isa_10,    0)
+-M68K_DEVICE ("68020", m68020,   "68020", "68020", 68020,    isa_20,    FL_MMU)
+-M68K_DEVICE ("68030", m68030,   "68030", "68020", 68030,    isa_20,    FL_MMU)
++M68K_DEVICE ("68020", m68020,   "68020", "68020", 68020,    isa_20,    FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("68030", m68030,   "68030", "68020", 68030,    isa_20,    FL_MMU | FL_UCLINUX)
+ M68K_DEVICE ("68040", m68040,   "68040", "68040", 68040,    isa_40,    FL_MMU)
+ M68K_DEVICE ("68060", m68060,   "68060", "68060", 68060,    isa_40,    FL_MMU)
+ M68K_DEVICE ("68302", m68302,   "68302", "68000", 68000,    isa_00,    FL_MMU)
+@@ -81,7 +81,13 @@ M68K_DEVICE ("68332", m68332,   "68332",
+ M68K_DEVICE ("cpu32", cpu32,    "cpu32", "cpu32", cpu32,    isa_cpu32, FL_MMU)
+ /* ColdFire CFV1 processor.  */
+-M68K_DEVICE ("51qe",  mcf51qe,  "51qe",  "51qe",  cfv1,     isa_c,     FL_CF_USP)
++/* For historical reasons, the 51 multilib is named 51qe.  */
++M68K_DEVICE ("51",    mcf51,    "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
++M68K_DEVICE ("51ac",  mcf51ac,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
++M68K_DEVICE ("51cn",  mcf51cn,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
++M68K_DEVICE ("51em",  mcf51em,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP | FL_CF_MAC)
++M68K_DEVICE ("51jm",  mcf51jm,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
++M68K_DEVICE ("51qe",  mcf51qe,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
+ /* ColdFire CFV2 processors.  */
+ M68K_DEVICE ("5202",  mcf5202,  "5206",  "5206",  cfv2,     isa_a,     0)
+@@ -97,6 +103,7 @@ M68K_DEVICE ("5212",  mcf5212,  "5213", 
+ M68K_DEVICE ("5213",  mcf5213,  "5213",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
+ M68K_DEVICE ("5214",  mcf5214,  "5216",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5216",  mcf5216,  "5216",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("5221x", mcf5221x, "5221x", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
+ M68K_DEVICE ("52221", mcf52221, "52223", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
+ M68K_DEVICE ("52223", mcf52223, "52223", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
+ M68K_DEVICE ("52230", mcf52230, "52235", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+@@ -107,6 +114,14 @@ M68K_DEVICE ("52234", mcf52234, "52235",
+ M68K_DEVICE ("52235", mcf52235, "52235", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5224",  mcf5224,  "5225",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
+ M68K_DEVICE ("5225",  mcf5225,  "5225",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
++M68K_DEVICE ("52252", mcf52252, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52254", mcf52254, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52255", mcf52255, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52256", mcf52256, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52258", mcf52258, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52259", mcf52259, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52274", mcf52274, "52277", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("52277", mcf52277, "52277", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5232",  mcf5232,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5233",  mcf5233,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5234",  mcf5234,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+@@ -126,6 +141,13 @@ M68K_DEVICE ("5282",  mcf5282,  "5282", 
+ M68K_DEVICE ("528x",  mcf528x,  "5282",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ /* CFV3 processors.  */
++M68K_DEVICE ("53011", mcf53011, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("53012", mcf53012, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("53013", mcf53013, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("53014", mcf53014, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("53015", mcf53015, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("53016", mcf53016, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
++M68K_DEVICE ("53017", mcf53017, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5307",  mcf5307,  "5307",  "5307",  cfv3,     isa_a,     FL_CF_HWDIV | FL_CF_MAC)
+ M68K_DEVICE ("5327",  mcf5327,  "5329",  "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+ M68K_DEVICE ("5328",  mcf5328,  "5329",  "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
+@@ -137,12 +159,17 @@ M68K_DEVICE ("537x",  mcf537x,  "5373", 
+ /* CFV4/CFV4e processors.  */
+ M68K_DEVICE ("5407",  mcf5407,  "5407",  "5407",  cfv4,     isa_b,     FL_CF_MAC)
+-M68K_DEVICE ("54450", mcf54450, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
+-M68K_DEVICE ("54451", mcf54451, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
+-M68K_DEVICE ("54452", mcf54452, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
+-M68K_DEVICE ("54453", mcf54453, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
+-M68K_DEVICE ("54454", mcf54454, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
+-M68K_DEVICE ("54455", mcf54455, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
++M68K_DEVICE ("54410", mcf54410, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54415", mcf54415, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54416", mcf54416, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54417", mcf54417, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54418", mcf54418, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54450", mcf54450, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54451", mcf54451, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54452", mcf54452, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54453", mcf54453, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54454", mcf54454, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
++M68K_DEVICE ("54455", mcf54455, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
+ M68K_DEVICE ("5470",  mcf5470,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
+ M68K_DEVICE ("5471",  mcf5471,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
+ M68K_DEVICE ("5472",  mcf5472,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
+--- a/gcc/config/m68k/m68k-protos.h
++++ b/gcc/config/m68k/m68k-protos.h
+@@ -54,19 +54,27 @@ extern void print_operand (FILE *, rtx, 
+ extern bool m68k_output_addr_const_extra (FILE *, rtx);
+ extern void notice_update_cc (rtx, rtx);
+ extern bool m68k_legitimate_base_reg_p (rtx, bool);
+-extern bool m68k_legitimate_index_reg_p (rtx, bool);
++extern bool m68k_legitimate_index_reg_p (enum machine_mode, rtx, bool);
+ extern bool m68k_illegitimate_symbolic_constant_p (rtx);
+ extern bool m68k_legitimate_address_p (enum machine_mode, rtx, bool);
+ extern bool m68k_matches_q_p (rtx);
+ extern bool m68k_matches_u_p (rtx);
+ extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
++extern rtx m68k_legitimize_tls_address (rtx);
++extern bool m68k_tls_reference_p (rtx, bool);
++extern rtx m68k_legitimize_address (rtx, rtx, enum machine_mode);
+ extern int valid_dbcc_comparison_p_2 (rtx, enum machine_mode);
+ extern rtx m68k_libcall_value (enum machine_mode);
+ extern rtx m68k_function_value (const_tree, const_tree);
+ extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
+ extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
+ extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
++extern void m68k_final_prescan_insn (rtx, rtx *, int);
++/* Functions from m68k.c used in constraints.md.  */
++extern rtx m68k_unwrap_symbol (rtx, bool);
++
++/* Functions from m68k.c used in genattrtab.  */
+ #ifdef HAVE_ATTR_cpu
+ extern enum attr_cpu m68k_sched_cpu;
+ extern enum attr_mac m68k_sched_mac;
+--- a/gcc/config/m68k/m68k.c
++++ b/gcc/config/m68k/m68k.c
+@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3.  
  /* ??? Need to add a dependency between m68k.o and sched-int.h.  */
  #include "sched-int.h"
  #include "insn-codes.h"
@@ -14431,7 +14012,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  
  enum reg_class regno_reg_class[] =
  {
-@@ -146,10 +147,12 @@
+@@ -146,10 +147,12 @@ static tree m68k_handle_fndecl_attribute
  static void m68k_compute_frame_layout (void);
  static bool m68k_save_reg (unsigned int regno, bool interrupt_handler);
  static bool m68k_ok_for_sibcall_p (tree, tree);
@@ -14444,7 +14025,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  \f
  
  /* Specify the identification number of the library being built */
-@@ -252,6 +255,14 @@
+@@ -252,6 +255,14 @@ int m68k_last_compare_had_fp_operands;
  #define TARGET_RETURN_IN_MEMORY m68k_return_in_memory
  #endif
  
@@ -14459,7 +14040,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  static const struct attribute_spec m68k_attribute_table[] =
  {
    /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
-@@ -1150,8 +1161,7 @@
+@@ -1150,8 +1161,7 @@ m68k_expand_prologue (void)
                            current_frame.reg_mask, true, true));
      }
  
@@ -14469,7 +14050,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
        && crtl->uses_pic_offset_table)
      insn = emit_insn (gen_load_got (pic_offset_table_rtx));
  }
-@@ -1425,6 +1435,86 @@
+@@ -1425,6 +1435,86 @@ m68k_legitimize_sibcall_address (rtx x)
    return replace_equiv_address (x, gen_rtx_REG (Pmode, STATIC_CHAIN_REGNUM));
  }
  
@@ -14556,7 +14137,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  /* Output a dbCC; jCC sequence.  Note we do not handle the 
     floating point version of this sequence (Fdbcc).  We also
     do not handle alternative conditions when CC_NO_OVERFLOW is
-@@ -1713,15 +1803,16 @@
+@@ -1713,15 +1803,16 @@ m68k_legitimate_base_reg_p (rtx x, bool 
     whether we need strict checking.  */
  
  bool
@@ -14576,7 +14157,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  }
  
  /* Return true if X is a legitimate index expression for a (d8,An,Xn) or
-@@ -1729,7 +1820,8 @@
+@@ -1729,7 +1820,8 @@ m68k_legitimate_index_reg_p (rtx x, bool
     ADDRESS if so.  STRICT_P says whether we need strict checking.  */
  
  static bool
@@ -14586,7 +14167,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  {
    int scale;
  
-@@ -1753,7 +1845,7 @@
+@@ -1753,7 +1845,7 @@ m68k_decompose_index (rtx x, bool strict
        && GET_MODE (XEXP (x, 0)) == HImode)
      x = XEXP (x, 0);
  
@@ -14595,7 +14176,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
      {
        address->scale = scale;
        address->index = x;
-@@ -1777,7 +1869,7 @@
+@@ -1777,7 +1869,7 @@ m68k_illegitimate_symbolic_constant_p (r
          && !offset_within_block_p (base, INTVAL (offset)))
        return true;
      }
@@ -14604,7 +14185,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  }
  
  /* Return true if X is a legitimate constant address that can reach
-@@ -1805,7 +1897,7 @@
+@@ -1805,7 +1897,7 @@ m68k_legitimate_constant_address_p (rtx 
        return false;
      }
  
@@ -14613,7 +14194,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  }
  
  /* Return true if X is a LABEL_REF for a jump table.  Assume that unplaced
-@@ -1872,15 +1964,17 @@
+@@ -1872,15 +1964,17 @@ m68k_decompose_address (enum machine_mod
    /* Check for GOT loads.  These are (bd,An,Xn) addresses if
       TARGET_68020 && flag_pic == 2, otherwise they are (d16,An)
       addresses.  */
@@ -14639,7 +14220,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
      }
  
    /* The ColdFire FPU only accepts addressing modes 2-5.  */
-@@ -1905,7 +1999,7 @@
+@@ -1905,7 +1999,7 @@ m68k_decompose_address (enum machine_mod
       accesses to unplaced labels in other cases.  */
    if (GET_CODE (x) == PLUS
        && m68k_jump_table_ref_p (XEXP (x, 1))
@@ -14648,7 +14229,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
      {
        address->offset = XEXP (x, 1);
        return true;
-@@ -1937,7 +2031,7 @@
+@@ -1937,7 +2031,7 @@ m68k_decompose_address (enum machine_mod
         worse code.  */
        if (address->offset
          && symbolic_operand (address->offset, VOIDmode)
@@ -14657,7 +14238,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
        return true;
      }
    else
-@@ -1956,14 +2050,14 @@
+@@ -1956,14 +2050,14 @@ m68k_decompose_address (enum machine_mod
    if (GET_CODE (x) == PLUS)
      {
        if (m68k_legitimate_base_reg_p (XEXP (x, 0), strict_p)
@@ -14674,7 +14255,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
        {
          address->base = XEXP (x, 1);
          return true;
-@@ -2025,6 +2119,243 @@
+@@ -2025,6 +2119,243 @@ m68k_matches_u_p (rtx x)
          && !address.index);
  }
  
@@ -14918,7 +14499,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  /* Legitimize PIC addresses.  If the address is already
     position-independent, we return ORIG.  Newly generated
     position-independent addresses go to REG.  If we need more
-@@ -2076,42 +2407,15 @@
+@@ -2076,42 +2407,15 @@ legitimize_pic_address (rtx orig, enum m
      {
        gcc_assert (reg);
  
@@ -14964,7 +14545,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
        return orig;
  
        gcc_assert (reg);
-@@ -2124,13 +2428,257 @@
+@@ -2124,13 +2428,257 @@ legitimize_pic_address (rtx orig, enum m
                                     base == reg ? 0 : reg);
  
        if (GET_CODE (orig) == CONST_INT)
@@ -15225,7 +14806,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  \f
  
  #define USE_MOVQ(i)   ((unsigned) ((i) + 128) <= 255)
-@@ -3918,18 +4466,92 @@
+@@ -3918,18 +4466,92 @@ print_operand (FILE *file, rtx op, int l
      }
  }
  
@@ -15324,7 +14905,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  }
  
  \f
-@@ -4019,15 +4641,8 @@
+@@ -4019,15 +4641,8 @@ print_operand_address (FILE *file, rtx a
          else
            {
              if (address.offset)
@@ -15342,7 +14923,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
              putc ('(', file);
              if (address.base)
                fputs (M68K_REGNAME (REGNO (address.base)), file);
-@@ -4060,19 +4675,7 @@
+@@ -4060,19 +4675,7 @@ print_operand_address (FILE *file, rtx a
                    fputs (M68K_REGNAME (REGNO (address.base)), file);
                  fprintf (file, "@(");
                  if (address.offset)
@@ -15363,7 +14944,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
                }
              /* Print the ",index" component, if any.  */
              if (address.index)
-@@ -4580,7 +5183,8 @@
+@@ -4580,7 +5183,8 @@ m68k_libcall_value (enum machine_mode mo
    default:
      break;
    }
@@ -15373,7 +14954,7 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
  }
  
  rtx
-@@ -4846,9 +5450,8 @@
+@@ -4846,9 +5450,8 @@ sched_attr_op_type (rtx insn, bool opx_p
          return OP_TYPE_IMM_L;
  
        default:
@@ -15385,106 +14966,15 @@ diff -Nur a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
            return OP_TYPE_IMM_W;
  
          return OP_TYPE_IMM_L;
-@@ -5793,3 +6396,5 @@
+@@ -5793,3 +6396,5 @@ m68k_sched_indexed_address_bypass_p (rtx
        return 0;
      }
  }
 +
 +#include "gt-m68k.h"
-diff -Nur a/gcc/config/m68k/m68k-devices.def b/gcc/config/m68k/m68k-devices.def
---- a/gcc/config/m68k/m68k-devices.def 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/m68k/m68k-devices.def 2010-01-25 09:50:29.025687257 +0100
-@@ -72,8 +72,8 @@
- /* 680x0 series processors.  */
- M68K_DEVICE ("68000", m68000,   "68000", "68000", 68000,    isa_00,    0)
- M68K_DEVICE ("68010", m68010,   "68010", "68000", 68010,    isa_10,    0)
--M68K_DEVICE ("68020", m68020,   "68020", "68020", 68020,    isa_20,    FL_MMU)
--M68K_DEVICE ("68030", m68030,   "68030", "68020", 68030,    isa_20,    FL_MMU)
-+M68K_DEVICE ("68020", m68020,   "68020", "68020", 68020,    isa_20,    FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("68030", m68030,   "68030", "68020", 68030,    isa_20,    FL_MMU | FL_UCLINUX)
- M68K_DEVICE ("68040", m68040,   "68040", "68040", 68040,    isa_40,    FL_MMU)
- M68K_DEVICE ("68060", m68060,   "68060", "68060", 68060,    isa_40,    FL_MMU)
- M68K_DEVICE ("68302", m68302,   "68302", "68000", 68000,    isa_00,    FL_MMU)
-@@ -81,7 +81,13 @@
- M68K_DEVICE ("cpu32", cpu32,    "cpu32", "cpu32", cpu32,    isa_cpu32, FL_MMU)
- /* ColdFire CFV1 processor.  */
--M68K_DEVICE ("51qe",  mcf51qe,  "51qe",  "51qe",  cfv1,     isa_c,     FL_CF_USP)
-+/* For historical reasons, the 51 multilib is named 51qe.  */
-+M68K_DEVICE ("51",    mcf51,    "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
-+M68K_DEVICE ("51ac",  mcf51ac,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
-+M68K_DEVICE ("51cn",  mcf51cn,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
-+M68K_DEVICE ("51em",  mcf51em,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP | FL_CF_MAC)
-+M68K_DEVICE ("51jm",  mcf51jm,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
-+M68K_DEVICE ("51qe",  mcf51qe,  "51",    "51qe",  cfv1,     isa_c,     FL_CF_USP)
- /* ColdFire CFV2 processors.  */
- M68K_DEVICE ("5202",  mcf5202,  "5206",  "5206",  cfv2,     isa_a,     0)
-@@ -97,6 +103,7 @@
- M68K_DEVICE ("5213",  mcf5213,  "5213",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
- M68K_DEVICE ("5214",  mcf5214,  "5216",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5216",  mcf5216,  "5216",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("5221x", mcf5221x, "5221x", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
- M68K_DEVICE ("52221", mcf52221, "52223", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
- M68K_DEVICE ("52223", mcf52223, "52223", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
- M68K_DEVICE ("52230", mcf52230, "52235", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-@@ -107,6 +114,14 @@
- M68K_DEVICE ("52235", mcf52235, "52235", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5224",  mcf5224,  "5225",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
- M68K_DEVICE ("5225",  mcf5225,  "5225",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_MAC)
-+M68K_DEVICE ("52252", mcf52252, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52254", mcf52254, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52255", mcf52255, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52256", mcf52256, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52258", mcf52258, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52259", mcf52259, "52259", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52274", mcf52274, "52277", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("52277", mcf52277, "52277", "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5232",  mcf5232,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5233",  mcf5233,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5234",  mcf5234,  "5235",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-@@ -126,6 +141,13 @@
- M68K_DEVICE ("528x",  mcf528x,  "5282",  "5208",  cfv2,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- /* CFV3 processors.  */
-+M68K_DEVICE ("53011", mcf53011, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("53012", mcf53012, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("53013", mcf53013, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("53014", mcf53014, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("53015", mcf53015, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("53016", mcf53016, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-+M68K_DEVICE ("53017", mcf53017, "53017", "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5307",  mcf5307,  "5307",  "5307",  cfv3,     isa_a,     FL_CF_HWDIV | FL_CF_MAC)
- M68K_DEVICE ("5327",  mcf5327,  "5329",  "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
- M68K_DEVICE ("5328",  mcf5328,  "5329",  "5329",  cfv3,     isa_aplus, FL_CF_HWDIV | FL_CF_EMAC)
-@@ -137,12 +159,17 @@
- /* CFV4/CFV4e processors.  */
- M68K_DEVICE ("5407",  mcf5407,  "5407",  "5407",  cfv4,     isa_b,     FL_CF_MAC)
--M68K_DEVICE ("54450", mcf54450, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
--M68K_DEVICE ("54451", mcf54451, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
--M68K_DEVICE ("54452", mcf54452, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
--M68K_DEVICE ("54453", mcf54453, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
--M68K_DEVICE ("54454", mcf54454, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
--M68K_DEVICE ("54455", mcf54455, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU)
-+M68K_DEVICE ("54410", mcf54410, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54415", mcf54415, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54416", mcf54416, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54417", mcf54417, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54418", mcf54418, "54418", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54450", mcf54450, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54451", mcf54451, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54452", mcf54452, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54453", mcf54453, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54454", mcf54454, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
-+M68K_DEVICE ("54455", mcf54455, "54455", "54455", cfv4,     isa_c,     FL_CF_HWDIV | FL_CF_USP | FL_CF_EMAC | FL_MMU | FL_UCLINUX)
- M68K_DEVICE ("5470",  mcf5470,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
- M68K_DEVICE ("5471",  mcf5471,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
- M68K_DEVICE ("5472",  mcf5472,  "5475",  "5475",  cfv4e,    isa_b,     FL_CF_USP | FL_CF_EMAC | FL_CF_FPU | FL_MMU)
-diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
---- a/gcc/config/m68k/m68k.h   2008-11-19 12:23:28.000000000 +0100
-+++ b/gcc/config/m68k/m68k.h   2010-01-25 09:50:29.025687257 +0100
-@@ -232,6 +232,7 @@
+--- a/gcc/config/m68k/m68k.h
++++ b/gcc/config/m68k/m68k.h
+@@ -232,6 +232,7 @@ along with GCC; see the file COPYING3.  
  #define FL_ISA_C     (1 << 16)
  #define FL_FIDOA     (1 << 17)
  #define FL_MMU             0   /* Used by multilib machinery.  */
@@ -15492,7 +14982,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  
  #define TARGET_68010          ((m68k_cpu_flags & FL_ISA_68010) != 0)
  #define TARGET_68020          ((m68k_cpu_flags & FL_ISA_68020) != 0)
-@@ -501,7 +502,8 @@
+@@ -501,7 +502,8 @@ enum reg_class {
  
  extern enum reg_class regno_reg_class[];
  #define REGNO_REG_CLASS(REGNO) (regno_reg_class[(REGNO)])
@@ -15502,7 +14992,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  #define BASE_REG_CLASS ADDR_REGS
  
  #define PREFERRED_RELOAD_CLASS(X,CLASS) \
-@@ -644,7 +646,7 @@
+@@ -644,7 +646,7 @@ extern enum reg_class regno_reg_class[];
     (though the operand list is empty).  */
  #define TRANSFER_FROM_TRAMPOLINE                              \
  void                                                          \
@@ -15511,7 +15001,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  {                                                             \
    register char *a0 asm (M68K_STATIC_CHAIN_REG_NAME);         \
    asm (GLOBAL_ASM_OP "___trampoline");                                \
-@@ -675,6 +677,10 @@
+@@ -675,6 +677,10 @@ __transfer_from_trampoline ()                                     \
  #define HAVE_POST_INCREMENT 1
  #define HAVE_PRE_DECREMENT 1
  
@@ -15522,7 +15012,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  /* Macros to check register numbers against specific register classes.  */
  
  /* True for data registers, D0 through D7.  */
-@@ -689,9 +695,10 @@
+@@ -689,9 +695,10 @@ __transfer_from_trampoline ()                                     \
  /* True for floating point registers, FP0 through FP7.  */
  #define FP_REGNO_P(REGNO)     IN_RANGE (REGNO, 16, 23)
  
@@ -15536,7 +15026,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  
  #define REGNO_OK_FOR_BASE_P(REGNO)                    \
    (ADDRESS_REGNO_P (REGNO)                            \
-@@ -751,13 +758,14 @@
+@@ -751,13 +758,14 @@ __transfer_from_trampoline ()                                    \
  
  #define LEGITIMATE_PIC_OPERAND_P(X)                           \
    (!symbolic_operand (X, VOIDmode)                            \
@@ -15554,7 +15044,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  
  #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)                               \
    do                                                                  \
-@@ -770,52 +778,19 @@
+@@ -770,52 +778,19 @@ __transfer_from_trampoline ()                                    \
  /* This address is OK as it stands.  */
  #define PIC_CASE_VECTOR_ADDRESS(index) index
  \f
@@ -15620,7 +15110,7 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  
  /* On the 68000, only predecrement and postincrement address depend thus
     (the amount of decrement or increment being the length of the operand).
-@@ -1028,6 +1003,9 @@
+@@ -1028,6 +1003,9 @@ do { if (cc_prev_status.flags & CC_IN_68
    assemble_name ((FILE), (NAME)),             \
    fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
@@ -15630,9 +15120,8 @@ diff -Nur a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
  /* On the 68000, we use several CODE characters:
     '.' for dot needed in Motorola-style opcode names.
     '-' for an operand pushing on the stack:
-diff -Nur a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
---- a/gcc/config/m68k/m68k.md  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/m68k/m68k.md  2010-01-25 09:50:29.025687257 +0100
+--- a/gcc/config/m68k/m68k.md
++++ b/gcc/config/m68k/m68k.md
 @@ -116,7 +116,8 @@
     (UNSPEC_GOT 3)
     (UNSPEC_IB 4)
@@ -15849,10 +15338,9 @@ diff -Nur a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
    "TARGET_COLDFIRE_FPU"
  {
    if (DATA_REG_P (operands[0]))
-diff -Nur a/gcc/config/m68k/m68k.opt b/gcc/config/m68k/m68k.opt
---- a/gcc/config/m68k/m68k.opt 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/m68k/m68k.opt 2010-01-25 09:50:29.025687257 +0100
-@@ -182,3 +182,7 @@
+--- a/gcc/config/m68k/m68k.opt
++++ b/gcc/config/m68k/m68k.opt
+@@ -182,3 +182,7 @@ Tune for the specified target CPU or arc
  mxgot
  Target Report Mask(XGOT)
  Support more than 8192 GOT entries on ColdFire
@@ -15860,41 +15348,8 @@ diff -Nur a/gcc/config/m68k/m68k.opt b/gcc/config/m68k/m68k.opt
 +mxtls
 +Target Report Mask(XTLS)
 +Support TLS segment larger than 64K
-diff -Nur a/gcc/config/m68k/m68k-protos.h b/gcc/config/m68k/m68k-protos.h
---- a/gcc/config/m68k/m68k-protos.h    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/m68k/m68k-protos.h    2010-01-25 09:50:29.025687257 +0100
-@@ -54,19 +54,27 @@
- extern bool m68k_output_addr_const_extra (FILE *, rtx);
- extern void notice_update_cc (rtx, rtx);
- extern bool m68k_legitimate_base_reg_p (rtx, bool);
--extern bool m68k_legitimate_index_reg_p (rtx, bool);
-+extern bool m68k_legitimate_index_reg_p (enum machine_mode, rtx, bool);
- extern bool m68k_illegitimate_symbolic_constant_p (rtx);
- extern bool m68k_legitimate_address_p (enum machine_mode, rtx, bool);
- extern bool m68k_matches_q_p (rtx);
- extern bool m68k_matches_u_p (rtx);
- extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
-+extern rtx m68k_legitimize_tls_address (rtx);
-+extern bool m68k_tls_reference_p (rtx, bool);
-+extern rtx m68k_legitimize_address (rtx, rtx, enum machine_mode);
- extern int valid_dbcc_comparison_p_2 (rtx, enum machine_mode);
- extern rtx m68k_libcall_value (enum machine_mode);
- extern rtx m68k_function_value (const_tree, const_tree);
- extern int emit_move_sequence (rtx *, enum machine_mode, rtx);
- extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
- extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
-+extern void m68k_final_prescan_insn (rtx, rtx *, int);
-+/* Functions from m68k.c used in constraints.md.  */
-+extern rtx m68k_unwrap_symbol (rtx, bool);
-+
-+/* Functions from m68k.c used in genattrtab.  */
- #ifdef HAVE_ATTR_cpu
- extern enum attr_cpu m68k_sched_cpu;
- extern enum attr_mac m68k_sched_mac;
-diff -Nur a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md
---- a/gcc/config/m68k/predicates.md    2007-09-24 23:00:22.000000000 +0200
-+++ b/gcc/config/m68k/predicates.md    2010-01-25 09:50:29.025687257 +0100
+--- a/gcc/config/m68k/predicates.md
++++ b/gcc/config/m68k/predicates.md
 @@ -130,7 +130,9 @@
    (match_code "sign_extend,zero_extend"))
  
@@ -15906,9 +15361,8 @@ diff -Nur a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md
  
  (define_predicate "symbolic_operand"
    (match_code "symbol_ref,label_ref,const")
-diff -Nur a/gcc/config/m68k/t-uclinux b/gcc/config/m68k/t-uclinux
---- a/gcc/config/m68k/t-uclinux        2008-04-03 08:12:27.000000000 +0200
-+++ b/gcc/config/m68k/t-uclinux        2010-01-25 09:50:29.025687257 +0100
+--- a/gcc/config/m68k/t-uclinux
++++ b/gcc/config/m68k/t-uclinux
 @@ -1,8 +1,8 @@
  # crti and crtn are provided by uClibc.
  EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
@@ -15920,9 +15374,8 @@ diff -Nur a/gcc/config/m68k/t-uclinux b/gcc/config/m68k/t-uclinux
  
  # Add multilibs for execute-in-place and shared-library code.
  M68K_MLIB_OPTIONS += msep-data/mid-shared-library
-diff -Nur a/gcc/config/mips/74k.md b/gcc/config/mips/74k.md
---- a/gcc/config/mips/74k.md   2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/mips/74k.md   2010-01-25 09:50:29.025687257 +0100
+--- a/gcc/config/mips/74k.md
++++ b/gcc/config/mips/74k.md
 @@ -118,8 +118,7 @@
  ;; stores
  (define_insn_reservation "r74k_int_store" 1
@@ -16065,9 +15518,8 @@ diff -Nur a/gcc/config/mips/74k.md b/gcc/config/mips/74k.md
  
  ;; --------------------------------------------------------------
  ;; Floating Point Instructions
-diff -Nur a/gcc/config/mips/crtfastmath.c b/gcc/config/mips/crtfastmath.c
---- a/gcc/config/mips/crtfastmath.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/crtfastmath.c    2010-01-25 09:50:29.025687257 +0100
+--- /dev/null
++++ b/gcc/config/mips/crtfastmath.c
 @@ -0,0 +1,53 @@
 +/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. 
 +
@@ -16122,108 +15574,9 @@ diff -Nur a/gcc/config/mips/crtfastmath.c b/gcc/config/mips/crtfastmath.c
 +}
 +
 +#endif /* __mips_hard_float */
-diff -Nur a/gcc/config/mips/cs-sgxx-linux.h b/gcc/config/mips/cs-sgxx-linux.h
---- a/gcc/config/mips/cs-sgxx-linux.h  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/cs-sgxx-linux.h  2010-01-25 09:50:29.025687257 +0100
-@@ -0,0 +1,44 @@
-+/* MIPS SourceryG++ GNU/Linux Configuration.
-+   Copyright (C) 2008
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* We do not need to provide an explicit big-endian multilib.  */
-+#undef MULTILIB_DEFAULTS
-+#define MULTILIB_DEFAULTS \
-+  { "EB" }
-+
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+"%{muclibc:/uclibc}\
-+%{mips2|mips3|mips4|march=mips2|march=mips3|march=mips4|march=r6000|\
-+march=r4000|march=vr4100|march=vr4111|march=vr4120|march=vr4130|\
-+march=vr4300|march=r4400|march=r4600|march=orion|march=r4650|\
-+march=loongson2e|march=loongson2f|march=r8000|march=r10000|\
-+march=r12000|march=r14000|march=r16000|\
-+march=vr5000|march=vr5400|march=vr5500|march=rm7000|\
-+march=rm9000:/mips2;\
-+mips32|march=mips32|march=4kc|march=4km|march=4kp|march=4ksc|\
-+mips64|march=mips64|march=5kc|march=5kf|march=20kc|march=sb1|march=sb1a|\
-+march=sr71000|march=xlr:/mips32}\
-+%{msoft-float:/soft-float}%{mel|EL:/el}"
-+
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC \
-+  "%{muclibc:/uclibc}"
-diff -Nur a/gcc/config/mips/cs-sgxxlite-linux.h b/gcc/config/mips/cs-sgxxlite-linux.h
---- a/gcc/config/mips/cs-sgxxlite-linux.h      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/cs-sgxxlite-linux.h      2010-01-25 09:50:29.025687257 +0100
-@@ -0,0 +1,33 @@
-+/* MIPS SourceryG++ GNU/Linux Configuration.
-+   Copyright (C) 2008
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* We do not need to provide an explicit big-endian multilib.  */
-+#undef MULTILIB_DEFAULTS
-+#define MULTILIB_DEFAULTS \
-+  { "EB" }
-+
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC \
-+"%{muclibc:/uclibc}%{msoft-float:/soft-float}%{mel|EL:/el}"
-+
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC \
-+  "%{muclibc:/uclibc}"
-diff -Nur a/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h
---- a/gcc/config/mips/linux64.h        2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/linux64.h        2010-01-25 09:50:29.025687257 +0100
-@@ -69,3 +69,9 @@
-    ieee_quad_format is the default, but let's put this here to make
-    sure nobody thinks we just forgot to set it to something else.  */
- #define MIPS_TFMODE_FORMAT mips_quad_format
-+
-+/* Similar to standard Linux, but adding -ffast-math support.  */
-+#undef  ENDFILE_SPEC
-+#define ENDFILE_SPEC \
-+  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
-diff -Nur a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
---- a/gcc/config/mips/linux.h  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/linux.h  2010-01-25 09:50:29.025687257 +0100
-@@ -147,3 +147,17 @@
+--- a/gcc/config/mips/linux.h
++++ b/gcc/config/mips/linux.h
+@@ -147,3 +147,17 @@ extern const char *host_detect_local_cpu
  #define DRIVER_SELF_SPECS \
    BASE_DRIVER_SELF_SPECS, \
    LINUX_DRIVER_SELF_SPECS
@@ -16241,2007 +15594,817 @@ diff -Nur a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
 +  if (linux_uclibc)                                             \
 +    targetm.have_tls = 0;                                               \
 +} while (0)
-diff -Nur a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
---- a/gcc/config/mips/mips.c   2009-03-02 21:26:22.000000000 +0100
-+++ b/gcc/config/mips/mips.c   2010-01-25 09:50:29.025687257 +0100
-@@ -261,18 +261,29 @@
-   /* Likewise FPR X.  */
-   unsigned int fmask;
--  /* The number of GPRs and FPRs saved.  */
-+  /* Likewise doubleword accumulator X ($acX).  */
-+  unsigned int acc_mask;
+--- a/gcc/config/mips/linux64.h
++++ b/gcc/config/mips/linux64.h
+@@ -69,3 +69,9 @@ along with GCC; see the file COPYING3.  
+    ieee_quad_format is the default, but let's put this here to make
+    sure nobody thinks we just forgot to set it to something else.  */
+ #define MIPS_TFMODE_FORMAT mips_quad_format
 +
-+  /* The number of GPRs, FPRs, doubleword accumulators and COP0
-+     registers saved.  */
-   unsigned int num_gp;
-   unsigned int num_fp;
-+  unsigned int num_acc;
-+  unsigned int num_cop0_regs;
++/* Similar to standard Linux, but adding -ffast-math support.  */
++#undef  ENDFILE_SPEC
++#define ENDFILE_SPEC \
++  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
++   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+--- a/gcc/config/mips/mips-dsp.md
++++ b/gcc/config/mips/mips-dsp.md
+@@ -42,9 +42,9 @@
+                    (match_operand:DSPV 2 "register_operand" "d")))
+      (set (reg:CCDSP CCDSP_OU_REGNUM)
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ))])]
+-  ""
++  "ISA_HAS_DSP"
+   "add<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
--  /* The offset of the topmost GPR and FPR save slots from the top of
--     the frame, or zero if no such slots are needed.  */
-+  /* The offset of the topmost GPR, FPR, accumulator and COP0-register
-+     save slots from the top of the frame, or zero if no such slots are
-+     needed.  */
-   HOST_WIDE_INT gp_save_offset;
-   HOST_WIDE_INT fp_save_offset;
-+  HOST_WIDE_INT acc_save_offset;
-+  HOST_WIDE_INT cop0_save_offset;
+ (define_insn "mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>"
+@@ -55,9 +55,9 @@
+                     UNSPEC_ADDQ_S))
+      (set (reg:CCDSP CCDSP_OU_REGNUM)
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ_S))])]
+-  ""
++  "ISA_HAS_DSP"
+   "add<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalusat")
+    (set_attr "mode"   "SI")])
  
-   /* Likewise, but giving offsets from the bottom of the frame.  */
-   HOST_WIDE_INT gp_sp_offset;
-   HOST_WIDE_INT fp_sp_offset;
-+  HOST_WIDE_INT acc_sp_offset;
-+  HOST_WIDE_INT cop0_sp_offset;
+ ;; SUBQ*
+@@ -70,7 +70,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ))])]
+   "ISA_HAS_DSP"
+   "sub<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-   /* The offset of arg_pointer_rtx from frame_pointer_rtx.  */
-   HOST_WIDE_INT arg_pointer_offset;
-@@ -310,6 +321,20 @@
-   /* True if we have emitted an instruction to initialize
-      mips16_gp_pseudo_rtx.  */
-   bool initialized_mips16_gp_pseudo_p;
-+
-+  /* True if this is an interrupt handler.  */
-+  bool interrupt_handler_p;
-+
-+  /* True if this is an interrupt handler that uses shadow registers.  */
-+  bool use_shadow_register_set_p;
-+
-+  /* True if this is an interrupt handler that should keep interrupts
-+     masked.  */
-+  bool keep_interrupts_masked_p;
-+
-+  /* True if this is an interrupt handler that should use DERET
-+     instead of ERET.  */
-+  bool use_debug_exception_return_p;
- };
+ (define_insn "mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>"
+@@ -83,7 +83,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ_S))])]
+   "ISA_HAS_DSP"
+   "sub<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalusat")
+    (set_attr "mode"   "SI")])
  
- /* Information about a single argument.  */
-@@ -542,9 +567,16 @@
-   ALL_REGS,   ALL_REGS,       ALL_REGS,       ALL_REGS
- };
+ ;; ADDSC
+@@ -97,7 +97,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDSC))])]
+   "ISA_HAS_DSP"
+   "addsc\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+#ifdef CVMX_SHARED_BSS_FLAGS
-+static tree octeon_handle_cvmx_shared_attribute (tree *, tree, tree, int, bool *);
-+#endif
-+
- /* The value of TARGET_ATTRIBUTE_TABLE.  */
- const struct attribute_spec mips_attribute_table[] = {
-   /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
-+#ifdef CVMX_SHARED_BSS_FLAGS
-+  { "cvmx_shared", 0, 0, true, false, false, octeon_handle_cvmx_shared_attribute },
-+#endif
-   { "long_call",   0, 0, false, true,  true,  NULL },
-   { "far",               0, 0, false, true,  true,  NULL },
-   { "near",        0, 0, false, true,  true,  NULL },
-@@ -554,6 +586,11 @@
-      code generation but don't carry other semantics.  */
-   { "mips16",            0, 0, true,  false, false, NULL },
-   { "nomips16",    0, 0, true,  false, false, NULL },
-+  /* Allow functions to be specified as interrupt handlers */
-+  { "interrupt",   0, 0, false, true,  true, NULL },
-+  { "use_shadow_register_set",        0, 0, false, true,  true, NULL },
-+  { "keep_interrupts_masked", 0, 0, false, true,  true, NULL },
-+  { "use_debug_exception_return", 0, 0, false, true,  true, NULL },
-   { NULL,        0, 0, false, false, false, NULL }
- };
\f
-@@ -659,6 +696,11 @@
-   { "74kx", PROCESSOR_74KF1_1, 33, 0 },
-   { "74kf3_2", PROCESSOR_74KF3_2, 33, 0 },
+ ;; ADDWC
+@@ -112,7 +112,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDWC))])]
+   "ISA_HAS_DSP"
+   "addwc\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+  { "1004kc", PROCESSOR_24KC, 33, 0 }, /* 1004K with MT/DSP.  */
-+  { "1004kf2_1", PROCESSOR_24KF2_1, 33, 0 },
-+  { "1004kf", PROCESSOR_24KF2_1, 33, 0 },
-+  { "1004kf1_1", PROCESSOR_24KF1_1, 33, 0 },
-+
-   /* MIPS64 processors.  */
-   { "5kc", PROCESSOR_5KC, 64, 0 },
-   { "5kf", PROCESSOR_5KF, 64, 0 },
-@@ -1064,13 +1106,7 @@
-     DEFAULT_COSTS
-   },
-   { /* XLR */
--    /* Need to replace first five with the costs of calling the appropriate 
--       libgcc routine.  */
--    COSTS_N_INSNS (256),          /* fp_add */
--    COSTS_N_INSNS (256),          /* fp_mult_sf */
--    COSTS_N_INSNS (256),          /* fp_mult_df */
--    COSTS_N_INSNS (256),          /* fp_div_sf */
--    COSTS_N_INSNS (256),          /* fp_div_df */
-+    SOFT_FP_COSTS,
-     COSTS_N_INSNS (8),            /* int_mult_si */
-     COSTS_N_INSNS (8),            /* int_mult_di */
-     COSTS_N_INSNS (72),           /* int_div_si */
-@@ -1172,6 +1208,42 @@
-   return lookup_attribute ("nomips16", DECL_ATTRIBUTES (decl)) != NULL;
- }
+ ;; MODSUB
+@@ -123,7 +123,7 @@
+                  UNSPEC_MODSUB))]
+   "ISA_HAS_DSP"
+   "modsub\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+/* Check if the interrupt attribute is set for a function.  */
-+
-+static bool
-+mips_interrupt_type_p (tree type)
-+{
-+  return lookup_attribute ("interrupt", TYPE_ATTRIBUTES (type)) != NULL;
-+}
-+
-+/* Check if the attribute to use shadow register set is set for a function.  */
-+
-+static bool
-+mips_use_shadow_register_set_p (tree type)
-+{
-+  return lookup_attribute ("use_shadow_register_set",
-+                         TYPE_ATTRIBUTES (type)) != NULL;
-+}
-+
-+/* Check if the attribute to keep interrupts masked is set for a function.  */
-+
-+static bool
-+mips_keep_interrupts_masked_p (tree type)
-+{
-+  return lookup_attribute ("keep_interrupts_masked",
-+                         TYPE_ATTRIBUTES (type)) != NULL;
-+}
-+
-+/* Check if the attribute to use debug exception return is set for
-+   a function.  */
-+
-+static bool
-+mips_use_debug_exception_return_p (tree type)
-+{
-+  return lookup_attribute ("use_debug_exception_return",
-+                         TYPE_ATTRIBUTES (type)) != NULL;
-+}
-+
- /* Return true if function DECL is a MIPS16 function.  Return the ambient
-    setting if DECL is null.  */
+ ;; RADDU*
+@@ -133,7 +133,7 @@
+                  UNSPEC_RADDU_W_QB))]
+   "ISA_HAS_DSP"
+   "raddu.w.qb\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-@@ -2795,7 +2867,7 @@
- mips_legitimize_address (rtx *xloc, enum machine_mode mode)
- {
-   rtx base, addr;
--  HOST_WIDE_INT offset;
-+  HOST_WIDE_INT intval, high, offset;
+ ;; ABSQ*
+@@ -146,7 +146,7 @@
+         (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S))])]
+   "ISA_HAS_DSP"
+   "absq_s.<DSPQ:dspfmt2>\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalusat")
+    (set_attr "mode"   "SI")])
  
-   if (mips_tls_symbol_p (*xloc))
-     {
-@@ -2820,6 +2892,32 @@
-       *xloc = mips_force_address (addr, mode);
-       return true;
-     }
-+
-+ /* Handle references to constant addresses by loading the high part
-+    into a register and using an offset for the low part.  */
-+ if (GET_CODE (base) == CONST_INT)
-+   {
-+     intval = INTVAL (base);
-+     high = trunc_int_for_mode (CONST_HIGH_PART (intval), Pmode);
-+     offset = CONST_LOW_PART (intval);
-+     /* Ignore cases in which a positive address would be accessed by a
-+      negative offset from a negative address.  The required wraparound
-+      does not occur for 32-bit addresses on 64-bit targets, and it is
-+      very unlikely that such an access would occur in real code anyway.
-+
-+      If the low offset is not legitimate for MODE, prefer to load
-+      the constant normally, instead of using mips_force_address on
-+      the legitimized address.  The latter option would cause us to
-+      use (D)ADDIU unconditionally, but LUI/ORI is more efficient
-+      than LUI/ADDIU on some targets.  */
-+     if ((intval < 0 || high > 0)
-+        && mips_valid_offset_p (GEN_INT (offset), mode))
-+      {
-+        base = mips_force_temporary (NULL, GEN_INT (high));
-+        *xloc = plus_constant (base, offset);
-+        return true;
-+      }
-+   }
-   return false;
- }
+ ;; PRECRQ*
+@@ -157,7 +157,7 @@
+                    UNSPEC_PRECRQ_QB_PH))]
+   "ISA_HAS_DSP"
+   "precrq.qb.ph\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-@@ -6188,6 +6286,11 @@
-   if (!TARGET_SIBCALLS)
-     return false;
+ (define_insn "mips_precrq_ph_w"
+@@ -167,7 +167,7 @@
+                    UNSPEC_PRECRQ_PH_W))]
+   "ISA_HAS_DSP"
+   "precrq.ph.w\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+  /* Interrupt handlers need special epilogue code and therefore can't
-+     use sibcalls.  */
-+  if (mips_interrupt_type_p (TREE_TYPE (current_function_decl)))
-+    return false;
-+
-   /* We can't do a sibcall if the called function is a MIPS16 function
-      because there is no direct "jx" instruction equivalent to "jalx" to
-      switch the ISA mode.  We only care about cases where the sibling
-@@ -6608,6 +6711,15 @@
-   if (!mips_get_unaligned_mem (&src, width, bitpos, &left, &right))
-     return false;
+ (define_insn "mips_precrq_rs_ph_w"
+@@ -181,7 +181,7 @@
+                       UNSPEC_PRECRQ_RS_PH_W))])]
+   "ISA_HAS_DSP"
+   "precrq_rs.ph.w\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+  if (ISA_HAS_UL_US)
-+    {
-+      if (GET_MODE (dest) == DImode)
-+      emit_insn (gen_mov_uld (dest, src, left));
-+      else
-+      emit_insn (gen_mov_ulw (dest, src, left));
-+      return true;
-+    }
-+
-   temp = gen_reg_rtx (GET_MODE (dest));
-   if (GET_MODE (dest) == DImode)
-     {
-@@ -6642,6 +6754,16 @@
+ ;; PRECRQU*
+@@ -196,7 +196,7 @@
+                       UNSPEC_PRECRQU_S_QB_PH))])]
+   "ISA_HAS_DSP"
+   "precrqu_s.qb.ph\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalusat")
+    (set_attr "mode"   "SI")])
  
-   mode = mode_for_size (width, MODE_INT, 0);
-   src = gen_lowpart (mode, src);
-+
-+  if (ISA_HAS_UL_US)
-+    {
-+      if (GET_MODE (src) == DImode)
-+        emit_insn (gen_mov_usd (dest, src, left));
-+      else
-+        emit_insn (gen_mov_usw (dest, src, left));
-+      return true;
-+    }
-+
-   if (mode == DImode)
-     {
-       emit_insn (gen_mov_sdl (dest, src, left));
-@@ -7229,7 +7351,11 @@
-               || (letter == 'L' && TARGET_BIG_ENDIAN)
-               || letter == 'D')
-             regno++;
--          fprintf (file, "%s", reg_names[regno]);
-+          /* We need to print $0 .. $31 for COP0 registers.  */
-+          if (COP0_REG_P (regno))
-+            fprintf (file, "$%s", &reg_names[regno][4]);
-+          else
-+            fprintf (file, "%s", reg_names[regno]);
-         }
-         break;
+ ;; PRECEQ*
+@@ -206,7 +206,7 @@
+                  UNSPEC_PRECEQ_W_PHL))]
+   "ISA_HAS_DSP"
+   "preceq.w.phl\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-@@ -7369,6 +7495,12 @@
-   if (TARGET_ABICALLS || TARGET_VXWORKS_RTP)
-     return false;
-+#ifdef CVMX_SHARED_BSS_FLAGS
-+  if (TARGET_OCTEON && TREE_CODE (decl) == VAR_DECL
-+      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
-+    return false;
-+#endif
-+
-   if (TREE_CODE (decl) == VAR_DECL && DECL_SECTION_NAME (decl) != 0)
-     {
-       const char *name;
-@@ -7595,6 +7727,37 @@
-   return NULL_RTX;
- }
+ (define_insn "mips_preceq_w_phr"
+@@ -215,7 +215,7 @@
+                  UNSPEC_PRECEQ_W_PHR))]
+   "ISA_HAS_DSP"
+   "preceq.w.phr\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+/* DSP ALU can bypass data with no delays for the following pairs. */
-+enum insn_code dspalu_bypass_table[][2] =
-+{
-+  {CODE_FOR_mips_addsc, CODE_FOR_mips_addwc},
-+  {CODE_FOR_mips_cmpu_eq_qb, CODE_FOR_mips_pick_qb},
-+  {CODE_FOR_mips_cmpu_lt_qb, CODE_FOR_mips_pick_qb},
-+  {CODE_FOR_mips_cmpu_le_qb, CODE_FOR_mips_pick_qb},
-+  {CODE_FOR_mips_cmp_eq_ph, CODE_FOR_mips_pick_ph},
-+  {CODE_FOR_mips_cmp_lt_ph, CODE_FOR_mips_pick_ph},
-+  {CODE_FOR_mips_cmp_le_ph, CODE_FOR_mips_pick_ph},
-+  {CODE_FOR_mips_wrdsp, CODE_FOR_mips_insv}
-+};
-+
-+int
-+mips_dspalu_bypass_p (rtx out_insn, rtx in_insn)
-+{
-+  int i;
-+  int num_bypass = (sizeof (dspalu_bypass_table)
-+                  / (2 * sizeof (enum insn_code)));
-+  enum insn_code out_icode = INSN_CODE (out_insn);
-+  enum insn_code in_icode = INSN_CODE (in_insn);
-+
-+  for (i = 0; i < num_bypass; i++)
-+    {
-+      if (out_icode == dspalu_bypass_table[i][0]
-+        && in_icode == dspalu_bypass_table[i][1])
-+       return true;
-+    }
-+
-+  return false;
-+}
- /* Implement ASM_OUTPUT_ASCII.  */
+ ;; PRECEQU*
+@@ -225,7 +225,7 @@
+                    UNSPEC_PRECEQU_PH_QBL))]
+   "ISA_HAS_DSP"
+   "precequ.ph.qbl\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
- void
-@@ -7819,11 +7982,19 @@
-                "\t.previous\n", TARGET_LONG64 ? 64 : 32);
+ (define_insn "mips_precequ_ph_qbr"
+@@ -234,7 +234,7 @@
+                    UNSPEC_PRECEQU_PH_QBR))]
+   "ISA_HAS_DSP"
+   "precequ.ph.qbr\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
- #ifdef HAVE_AS_GNU_ATTRIBUTE
-+#ifdef TARGET_MIPS_SDEMTK
-+     fprintf (asm_out_file, "\t.gnu_attribute 4, %d\n",
-+             (!TARGET_NO_FLOAT
-+              ? (TARGET_HARD_FLOAT
-+                 ? (TARGET_DOUBLE_FLOAT
-+                    ? ((!TARGET_64BIT && TARGET_FLOAT64) ? 4 : 1) : 2) : 3) : 0));
-+#else
-       fprintf (asm_out_file, "\t.gnu_attribute 4, %d\n",
-              (TARGET_HARD_FLOAT_ABI
-               ? (TARGET_DOUBLE_FLOAT
-                  ? ((!TARGET_64BIT && TARGET_FLOAT64) ? 4 : 1) : 2) : 3));
- #endif
-+#endif
-     }
+ (define_insn "mips_precequ_ph_qbla"
+@@ -243,7 +243,7 @@
+                    UNSPEC_PRECEQU_PH_QBLA))]
+   "ISA_HAS_DSP"
+   "precequ.ph.qbla\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-   /* If TARGET_ABICALLS, tell GAS to generate -KPIC code.  */
-@@ -8436,12 +8607,53 @@
-   return GLOBAL_POINTER_REGNUM;
- }
+ (define_insn "mips_precequ_ph_qbra"
+@@ -252,7 +252,7 @@
+                    UNSPEC_PRECEQU_PH_QBRA))]
+   "ISA_HAS_DSP"
+   "precequ.ph.qbra\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+/* Return true if REGNO is a register that is ordinarily call-clobbered
-+   but must nevertheless be preserved by an interrupt handler.  */
-+
-+static bool
-+mips_interrupt_extra_call_saved_reg_p (unsigned int regno)
-+{
-+  if (MD_REG_P (regno))
-+    return true;
-+
-+  if (TARGET_DSP && DSP_ACC_REG_P (regno))
-+    return true;
-+
-+  if (GP_REG_P (regno) && !cfun->machine->use_shadow_register_set_p)
-+    {
-+      /* $0 is hard-wired.  */
-+      if (regno == GP_REG_FIRST)
-+      return false;
-+
-+      /* The interrupt handler can treat kernel registers as
-+       scratch registers.  */
-+      if (KERNEL_REG_P (regno))
-+      return false;
-+
-+      /* The function will return the stack pointer to its original value
-+       anyway.  */
-+      if (regno == STACK_POINTER_REGNUM)
-+      return false;
-+
-+      /* Otherwise, return true for registers that aren't ordinarily
-+       call-clobbered.  */
-+      return call_really_used_regs[regno];
-+    }
-+
-+  return false;
-+}
-+
- /* Return true if the current function should treat register REGNO
-    as call-saved.  */
+ ;; PRECEU*
+@@ -262,7 +262,7 @@
+                    UNSPEC_PRECEU_PH_QBL))]
+   "ISA_HAS_DSP"
+   "preceu.ph.qbl\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
- static bool
- mips_cfun_call_saved_reg_p (unsigned int regno)
- {
-+  /* Interrupt handlers need to save extra registers.  */
-+  if (cfun->machine->interrupt_handler_p
-+      && mips_interrupt_extra_call_saved_reg_p (regno))
-+    return true;
-+
-   /* call_insns preserve $28 unless they explicitly say otherwise,
-      so call_really_used_regs[] treats $28 as call-saved.  However,
-      we want the ABI property rather than the default call_insn
-@@ -8490,6 +8702,13 @@
-   if (regno == GP_REG_FIRST + 31 && mips16_cfun_returns_in_fpr_p ())
-     return true;
+ (define_insn "mips_preceu_ph_qbr"
+@@ -271,7 +271,7 @@
+                    UNSPEC_PRECEU_PH_QBR))]
+   "ISA_HAS_DSP"
+   "preceu.ph.qbr\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+  /* If REGNO is ordinarily call-clobbered, we must assume that any
-+     called function could modify it.  */
-+  if (cfun->machine->interrupt_handler_p
-+      && !current_function_is_leaf
-+      && mips_interrupt_extra_call_saved_reg_p (regno))
-+    return true;
-+
-   return false;
- }
+ (define_insn "mips_preceu_ph_qbla"
+@@ -280,7 +280,7 @@
+                    UNSPEC_PRECEU_PH_QBLA))]
+   "ISA_HAS_DSP"
+   "preceu.ph.qbla\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-@@ -8545,6 +8764,14 @@
-       C |  callee-allocated save area   |
-       |  for register varargs         |
-       |                               |
-+      +-------------------------------+ <-- frame_pointer_rtx
-+      |                               |       + cop0_sp_offset
-+      |  COP0 reg save area           |       + UNITS_PER_WORD
-+      |                               |
-+      +-------------------------------+ <-- frame_pointer_rtx + acc_sp_offset
-+      |                               |       + UNITS_PER_WORD
-+      |  accumulator save area        |
-+      |                               |
-       +-------------------------------+ <-- frame_pointer_rtx + fp_sp_offset
-       |                               |       + UNITS_PER_HWFPVALUE
-       |  FPR save area                |
-@@ -8588,6 +8815,28 @@
-   HOST_WIDE_INT offset, size;
-   unsigned int regno, i;
+ (define_insn "mips_preceu_ph_qbra"
+@@ -289,7 +289,7 @@
+                    UNSPEC_PRECEU_PH_QBRA))]
+   "ISA_HAS_DSP"
+   "preceu.ph.qbra\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+  /* Set this function's interrupt properties.  */
-+  if (mips_interrupt_type_p (TREE_TYPE (current_function_decl)))
-+    {
-+      if (!ISA_MIPS32R2)
-+      error ("the %<interrupt%> attribute requires a MIPS32r2 processor");
-+      else if (TARGET_HARD_FLOAT)
-+      error ("the %<interrupt%> attribute requires %<-msoft-float%>");
-+      else if (TARGET_MIPS16)
-+      error ("interrupt handlers cannot be MIPS16 functions");
-+      else
-+      {
-+        cfun->machine->interrupt_handler_p = true;
-+        cfun->machine->use_shadow_register_set_p =
-+          mips_use_shadow_register_set_p (TREE_TYPE (current_function_decl));
-+        cfun->machine->keep_interrupts_masked_p =
-+          mips_keep_interrupts_masked_p (TREE_TYPE (current_function_decl));
-+        cfun->machine->use_debug_exception_return_p =
-+          mips_use_debug_exception_return_p (TREE_TYPE
-+                                             (current_function_decl));
-+      }
-+    }
-+
-   frame = &cfun->machine->frame;
-   memset (frame, 0, sizeof (*frame));
-   size = get_frame_size ();
-@@ -8657,7 +8906,7 @@
+ ;; Table 2-2. MIPS DSP ASE Instructions: Shift
+@@ -313,7 +313,7 @@
      }
+   return "shllv.<DSPV:dspfmt2>\t%0,%1,%2";
+ }
+-  [(set_attr "type"   "shift")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-   /* Find out which FPRs we need to save.  This loop must iterate over
--     the same space as its companion in mips_for_each_saved_reg.  */
-+     the same space as its companion in mips_for_each_saved_gpr_and_fpr.  */
-   if (TARGET_HARD_FLOAT)
-     for (regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno += MAX_FPRS_PER_FMT)
-       if (mips_save_reg_p (regno))
-@@ -8673,6 +8922,47 @@
-       frame->fp_sp_offset = offset - UNITS_PER_HWFPVALUE;
+ (define_insn "mips_shll_s_<DSPQ:dspfmt2>"
+@@ -335,7 +335,7 @@
      }
+   return "shllv_s.<DSPQ:dspfmt2>\t%0,%1,%2";
+ }
+-  [(set_attr "type"   "shift")
++  [(set_attr "type"   "dspalusat")
+    (set_attr "mode"   "SI")])
  
-+  /* Add in space for the interrupt context information.  */
-+  if (cfun->machine->interrupt_handler_p)
-+    {
-+      /* Check HI/LO.  */
-+      if (mips_save_reg_p (LO_REGNUM) || mips_save_reg_p (HI_REGNUM))
-+      {
-+        frame->num_acc++;
-+        frame->acc_mask |= (1 << 0);
-+      }
-+
-+      /* Check accumulators 1, 2, 3.  */
-+      for (i = DSP_ACC_REG_FIRST; i <= DSP_ACC_REG_LAST; i += 2)
-+      if (mips_save_reg_p (i) || mips_save_reg_p (i + 1))
-+        {
-+          frame->num_acc++;
-+          frame->acc_mask |= 1 << (((i - DSP_ACC_REG_FIRST) / 2) + 1);
-+        }
-+
-+      /* All interrupt context functions need space to preserve STATUS.  */
-+      frame->num_cop0_regs++;
-+
-+      /* If we don't keep interrupts masked, we need to save EPC.  */
-+      if (!cfun->machine->keep_interrupts_masked_p)
-+      frame->num_cop0_regs++;
-+    }
-+
-+  /* Move above the accumulator save area.  */
-+  if (frame->num_acc > 0)
-+    {
-+      /* Each accumulator needs 2 words.  */
-+      offset += frame->num_acc * 2 * UNITS_PER_WORD;
-+      frame->acc_sp_offset = offset - UNITS_PER_WORD;
-+    }
-+
-+  /* Move above the COP0 register save area.  */
-+  if (frame->num_cop0_regs > 0)
-+    {
-+      offset += frame->num_cop0_regs * UNITS_PER_WORD;
-+      frame->cop0_sp_offset = offset - UNITS_PER_WORD;
-+    }
-+
-   /* Move above the callee-allocated varargs save area.  */
-   offset += MIPS_STACK_ALIGN (cfun->machine->varargs_size);
-   frame->arg_pointer_offset = offset;
-@@ -8686,6 +8976,10 @@
-     frame->gp_save_offset = frame->gp_sp_offset - offset;
-   if (frame->fp_sp_offset > 0)
-     frame->fp_save_offset = frame->fp_sp_offset - offset;
-+  if (frame->acc_sp_offset > 0)
-+    frame->acc_save_offset = frame->acc_sp_offset - offset;
-+  if (frame->num_cop0_regs > 0)
-+    frame->cop0_save_offset = frame->cop0_sp_offset - offset;
-   /* MIPS16 code offsets the frame pointer by the size of the outgoing
-      arguments.  This tends to increase the chances of using unextended
-@@ -8882,12 +9176,41 @@
-   fn (gen_rtx_REG (mode, regno), mem);
+ ;; SHRL*
+@@ -354,7 +354,7 @@
+     }
+   return "shrlv.qb\t%0,%1,%2";
  }
+-  [(set_attr "type"   "shift")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+/* Call FN for each accumlator that is saved by the current function.
-+   SP_OFFSET is the offset of the current stack pointer from the start
-+   of the frame.  */
-+
-+static void
-+mips_for_each_saved_acc (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
-+{
-+  HOST_WIDE_INT offset;
-+  int regno;
-+
-+  offset = cfun->machine->frame.acc_sp_offset - sp_offset;
-+  if (BITSET_P (cfun->machine->frame.acc_mask, 0))
-+    {
-+      mips_save_restore_reg (word_mode, LO_REGNUM, offset, fn);
-+      offset -= UNITS_PER_WORD;
-+      mips_save_restore_reg (word_mode, HI_REGNUM, offset, fn);
-+      offset -= UNITS_PER_WORD;
-+    }
-+
-+  for (regno = DSP_ACC_REG_FIRST; regno <= DSP_ACC_REG_LAST; regno++)
-+    if (BITSET_P (cfun->machine->frame.acc_mask,
-+                ((regno - DSP_ACC_REG_FIRST) / 2) + 1))
-+      {
-+      mips_save_restore_reg (word_mode, regno, offset, fn);
-+      offset -= UNITS_PER_WORD;
-+      }
-+}
-+
- /* Call FN for each register that is saved by the current function.
-    SP_OFFSET is the offset of the current stack pointer from the start
-    of the frame.  */
+ ;; SHRA*
+@@ -373,7 +373,7 @@
+     }
+   return "shrav.ph\t%0,%1,%2";
+ }
+-  [(set_attr "type"   "shift")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
- static void
--mips_for_each_saved_reg (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
-+mips_for_each_saved_gpr_and_fpr (HOST_WIDE_INT sp_offset,
-+                               mips_save_restore_fn fn)
- {
-   enum machine_mode fpr_mode;
-   HOST_WIDE_INT offset;
-@@ -9075,13 +9398,24 @@
+ (define_insn "mips_shra_r_<DSPQ:dspfmt2>"
+@@ -392,7 +392,7 @@
      }
-   else
-     {
--      if (TARGET_MIPS16
--        && REGNO (reg) != GP_REG_FIRST + 31
--        && !M16_REG_P (REGNO (reg)))
--      {
--        /* Save a non-MIPS16 register by moving it through a temporary.
--           We don't need to do this for $31 since there's a special
--           instruction for it.  */
-+      if (REGNO (reg) == HI_REGNUM)
-+      {
-+        if (TARGET_64BIT)
-+          emit_insn (gen_mfhidi_ti (MIPS_PROLOGUE_TEMP (DImode),
-+                                    gen_rtx_REG (TImode, MD_REG_FIRST)));
-+        else
-+          emit_insn (gen_mfhisi_di (MIPS_PROLOGUE_TEMP (SImode),
-+                                    gen_rtx_REG (DImode, MD_REG_FIRST)));
-+        mips_emit_move (mem, MIPS_PROLOGUE_TEMP (GET_MODE (reg)));
-+      }
-+      else if ((TARGET_MIPS16
-+              && REGNO (reg) != GP_REG_FIRST + 31
-+              && !M16_REG_P (REGNO (reg)))
-+             || ACC_REG_P (REGNO (reg)))
-+      {
-+        /* If the register has no direct store instruction, move it
-+           through a temporary.  Note that there's a special MIPS16
-+           instruction to save $31.  */
-         mips_emit_move (MIPS_PROLOGUE_TEMP (GET_MODE (reg)), reg);
-         mips_emit_move (mem, MIPS_PROLOGUE_TEMP (GET_MODE (reg)));
-       }
-@@ -9153,6 +9487,14 @@
-     emit_insn (gen_loadgp_blockage ());
+   return "shrav_r.<DSPQ:dspfmt2>\t%0,%1,%2";
  }
+-  [(set_attr "type"   "shift")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+/* A for_each_rtx callback.  Stop the search if *X is a kernel register.  */
-+
-+static int
-+mips_kernel_reg_p (rtx *x, void *data ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (*x) == REG && KERNEL_REG_P (REGNO (*x));
-+}
-+
- /* Expand the "prologue" pattern.  */
+ ;; Table 2-3. MIPS DSP ASE Instructions: Multiply
+@@ -478,7 +478,7 @@
+                  UNSPEC_DPAU_H_QBL))]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpau.h.qbl\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
  
- void
-@@ -9172,7 +9514,8 @@
-   /* Save the registers.  Allocate up to MIPS_MAX_FIRST_STACK_STEP
-      bytes beforehand; this is enough to cover the register save area
-      without going out of range.  */
--  if ((frame->mask | frame->fmask) != 0)
-+  if (((frame->mask | frame->fmask | frame->acc_mask) != 0)
-+      || frame->num_cop0_regs > 0)
-     {
-       HOST_WIDE_INT step1;
+ (define_insn "mips_dpau_h_qbr"
+@@ -489,7 +489,7 @@
+                  UNSPEC_DPAU_H_QBR))]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpau.h.qbr\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
  
-@@ -9203,12 +9546,97 @@
-       }
-       else
-       {
--        insn = gen_add3_insn (stack_pointer_rtx,
--                              stack_pointer_rtx,
--                              GEN_INT (-step1));
--        RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
--        size -= step1;
--        mips_for_each_saved_reg (size, mips_save_reg);
-+        if (cfun->machine->interrupt_handler_p)
-+          {
-+            HOST_WIDE_INT offset;
-+            rtx mem;
-+
-+            /* If this interrupt is using a shadow register set, we need to
-+               get the stack pointer from the previous register set.  */
-+            if (cfun->machine->use_shadow_register_set_p)
-+              emit_insn (gen_mips_rdpgpr (stack_pointer_rtx,
-+                                          stack_pointer_rtx));
-+
-+            if (!cfun->machine->keep_interrupts_masked_p)
-+              {
-+                /* Move from COP0 Cause to K0.  */
-+                emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K0_REG_NUM),
-+                                          gen_rtx_REG (SImode,
-+                                                       COP0_CAUSE_REG_NUM)));
-+                /* Move from COP0 EPC to K1.  */
-+                emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K1_REG_NUM),
-+                                          gen_rtx_REG (SImode,
-+                                                       COP0_EPC_REG_NUM)));
-+              }
-+
-+            /* Allocate the first part of the frame.  */
-+            insn = gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
-+                                  GEN_INT (-step1));
-+            RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
-+            size -= step1;
-+
-+            /* Start at the uppermost location for saving.  */
-+            offset = frame->cop0_sp_offset - size;
-+            if (!cfun->machine->keep_interrupts_masked_p)
-+              {
-+                /* Push EPC into its stack slot.  */
-+                mem = gen_frame_mem (word_mode,
-+                                     plus_constant (stack_pointer_rtx,
-+                                                    offset));
-+                mips_emit_move (mem, gen_rtx_REG (word_mode, K1_REG_NUM));
-+                offset -= UNITS_PER_WORD;
-+              }
-+
-+            /* Move from COP0 Status to K1.  */
-+            emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K1_REG_NUM),
-+                                      gen_rtx_REG (SImode,
-+                                                   COP0_STATUS_REG_NUM)));
-+
-+            /* Right justify the RIPL in k0.  */
-+            if (!cfun->machine->keep_interrupts_masked_p)
-+              emit_insn (gen_lshrsi3 (gen_rtx_REG (SImode, K0_REG_NUM),
-+                                      gen_rtx_REG (SImode, K0_REG_NUM),
-+                                      GEN_INT (CAUSE_IPL)));
-+
-+            /* Push Status into its stack slot.  */
-+            mem = gen_frame_mem (word_mode,
-+                                 plus_constant (stack_pointer_rtx, offset));
-+            mips_emit_move (mem, gen_rtx_REG (word_mode, K1_REG_NUM));
-+            offset -= UNITS_PER_WORD;
-+
-+            /* Insert the RIPL into our copy of SR (k1) as the new IPL.  */
-+            if (!cfun->machine->keep_interrupts_masked_p)
-+              emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
-+                                     GEN_INT (6),
-+                                     GEN_INT (SR_IPL),
-+                                     gen_rtx_REG (SImode, K0_REG_NUM)));
-+
-+            if (!cfun->machine->keep_interrupts_masked_p)
-+              /* Enable interrupts by clearing the KSU ERL and EXL bits.
-+                 IE is already the correct value, so we don't have to do
-+                 anything explicit.  */
-+              emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
-+                                     GEN_INT (4),
-+                                     GEN_INT (SR_EXL),
-+                                     gen_rtx_REG (SImode, GP_REG_FIRST)));
-+            else
-+              /* Disable interrupts by clearing the KSU, ERL, EXL,
-+                 and IE bits.  */
-+              emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
-+                                     GEN_INT (5),
-+                                     GEN_INT (SR_IE),
-+                                     gen_rtx_REG (SImode, GP_REG_FIRST)));
-+          }
-+        else
-+          {
-+            insn = gen_add3_insn (stack_pointer_rtx,
-+                                  stack_pointer_rtx,
-+                                  GEN_INT (-step1));
-+            RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
-+            size -= step1;
-+          }
-+        mips_for_each_saved_acc (size, mips_save_reg);
-+        mips_for_each_saved_gpr_and_fpr (size, mips_save_reg);
-       }
-     }
+ ;; DPSU*
+@@ -501,7 +501,7 @@
+                  UNSPEC_DPSU_H_QBL))]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpsu.h.qbl\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
  
-@@ -9293,6 +9721,20 @@
-                       pic_offset_table_rtx);
+ (define_insn "mips_dpsu_h_qbr"
+@@ -512,7 +512,7 @@
+                  UNSPEC_DPSU_H_QBR))]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpsu.h.qbr\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
+ ;; DPAQ*
+@@ -528,7 +528,7 @@
+                       UNSPEC_DPAQ_S_W_PH))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpaq_s.w.ph\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
+ ;; DPSQ*
+@@ -544,7 +544,7 @@
+                       UNSPEC_DPSQ_S_W_PH))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpsq_s.w.ph\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
+ ;; MULSAQ*
+@@ -560,7 +560,7 @@
+                       UNSPEC_MULSAQ_S_W_PH))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "mulsaq_s.w.ph\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
+ ;; DPAQ*
+@@ -576,7 +576,7 @@
+                       UNSPEC_DPAQ_SA_L_W))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpaq_sa.l.w\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmacsat")
+    (set_attr "mode"   "SI")])
+ ;; DPSQ*
+@@ -592,7 +592,7 @@
+                       UNSPEC_DPSQ_SA_L_W))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "dpsq_sa.l.w\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmacsat")
+    (set_attr "mode"   "SI")])
+ ;; MAQ*
+@@ -608,7 +608,7 @@
+                       UNSPEC_MAQ_S_W_PHL))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "maq_s.w.phl\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
+ (define_insn "mips_maq_s_w_phr"
+@@ -623,7 +623,7 @@
+                       UNSPEC_MAQ_S_W_PHR))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "maq_s.w.phr\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
+    (set_attr "mode"   "SI")])
+ ;; MAQ_SA*
+@@ -639,7 +639,7 @@
+                       UNSPEC_MAQ_SA_W_PHL))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "maq_sa.w.phl\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmacsat")
+    (set_attr "mode"   "SI")])
+ (define_insn "mips_maq_sa_w_phr"
+@@ -654,7 +654,7 @@
+                       UNSPEC_MAQ_SA_W_PHR))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "maq_sa.w.phr\t%q0,%2,%3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmacsat")
+    (set_attr "mode"   "SI")])
+ ;; Table 2-4. MIPS DSP ASE Instructions: General Bit/Manipulation
+@@ -665,7 +665,7 @@
+                  UNSPEC_BITREV))]
+   "ISA_HAS_DSP"
+   "bitrev\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ ;; INSV
+@@ -678,7 +678,7 @@
+                  UNSPEC_INSV))]
+   "ISA_HAS_DSP"
+   "insv\t%0,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ ;; REPL*
+@@ -696,7 +696,7 @@
      }
+   return "replv.qb\t%0,%1";
+ }
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-+  /* We need to search back to the last use of K0 or K1.  */
-+  if (cfun->machine->interrupt_handler_p)
-+    {
-+      for (insn = get_last_insn (); insn != NULL_RTX; insn = PREV_INSN (insn))
-+      if (INSN_P (insn)
-+          && for_each_rtx (&PATTERN (insn), mips_kernel_reg_p, NULL))
-+        break;
-+      /* Emit a move from K1 to COP0 Status after insn.  */
-+      gcc_assert (insn != NULL_RTX);
-+      emit_insn_after (gen_cop0_move (gen_rtx_REG (SImode, COP0_STATUS_REG_NUM),
-+                                    gen_rtx_REG (SImode, K1_REG_NUM)),
-+                     insn);
-+    }
-+
-   /* If we are profiling, make sure no instructions are scheduled before
-      the call to mcount.  */
-   if (crtl->profile)
-@@ -9309,7 +9751,20 @@
-   if (TARGET_MIPS16 && REGNO (reg) == GP_REG_FIRST + 31)
-     reg = gen_rtx_REG (GET_MODE (reg), GP_REG_FIRST + 7);
+ (define_insn "mips_repl_ph"
+@@ -707,7 +707,7 @@
+   "@
+    repl.ph\t%0,%1
+    replv.ph\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
--  if (TARGET_MIPS16 && !M16_REG_P (REGNO (reg)))
-+  if (REGNO (reg) == HI_REGNUM)
-+    {
-+      mips_emit_move (MIPS_EPILOGUE_TEMP (GET_MODE (reg)), mem);
-+      if (TARGET_64BIT)
-+      emit_insn (gen_mthisi_di (gen_rtx_REG (TImode, MD_REG_FIRST),
-+                                MIPS_EPILOGUE_TEMP (DImode),
-+                                gen_rtx_REG (DImode, LO_REGNUM)));
-+      else
-+      emit_insn (gen_mthisi_di (gen_rtx_REG (DImode, MD_REG_FIRST),
-+                                MIPS_EPILOGUE_TEMP (SImode),
-+                                gen_rtx_REG (SImode, LO_REGNUM)));
-+    }
-+  else if ((TARGET_MIPS16 && !M16_REG_P (REGNO (reg)))
-+         || ACC_REG_P (REGNO (reg)))
-     {
-       /* Can't restore directly; move through a temporary.  */
-       mips_emit_move (MIPS_EPILOGUE_TEMP (GET_MODE (reg)), mem);
-@@ -9345,7 +9800,7 @@
- {
-   const struct mips_frame_info *frame;
-   HOST_WIDE_INT step1, step2;
--  rtx base, target;
-+  rtx base, target, insn;
+ ;; Table 2-5. MIPS DSP ASE Instructions: Compare-Pick
+@@ -720,7 +720,7 @@
+                     UNSPEC_CMP_EQ))]
+   "ISA_HAS_DSP"
+   "cmp<DSPV:dspfmt1_1>.eq.<DSPV:dspfmt2>\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-   if (!sibcall_p && mips_can_use_return_insn ())
-     {
-@@ -9378,7 +9833,8 @@
+ (define_insn "mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>"
+@@ -731,7 +731,7 @@
+                     UNSPEC_CMP_LT))]
+   "ISA_HAS_DSP"
+   "cmp<DSPV:dspfmt1_1>.lt.<DSPV:dspfmt2>\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
-   /* If we need to restore registers, deallocate as much stack as
-      possible in the second step without going out of range.  */
--  if ((frame->mask | frame->fmask) != 0)
-+  if ((frame->mask | frame->fmask | frame->acc_mask) != 0
-+      || frame->num_cop0_regs > 0)
-     {
-       step2 = MIN (step1, MIPS_MAX_FIRST_STACK_STEP);
-       step1 -= step2;
-@@ -9440,13 +9896,53 @@
-   else
-     {
-       /* Restore the registers.  */
--      mips_for_each_saved_reg (frame->total_size - step2, mips_restore_reg);
-+      mips_for_each_saved_acc (frame->total_size - step2, mips_restore_reg);
-+      mips_for_each_saved_gpr_and_fpr (frame->total_size - step2,
-+                                     mips_restore_reg);
+ (define_insn "mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>"
+@@ -742,7 +742,7 @@
+                     UNSPEC_CMP_LE))]
+   "ISA_HAS_DSP"
+   "cmp<DSPV:dspfmt1_1>.le.<DSPV:dspfmt2>\t%0,%1"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
  
--      /* Deallocate the final bit of the frame.  */
--      if (step2 > 0)
--      emit_insn (gen_add3_insn (stack_pointer_rtx,
--                                stack_pointer_rtx,
--                                GEN_INT (step2)));
-+      if (cfun->machine->interrupt_handler_p)
-+      {
-+        HOST_WIDE_INT offset;
-+        rtx mem;
-+
-+        offset = frame->cop0_sp_offset - (frame->total_size - step2);
-+        if (!cfun->machine->keep_interrupts_masked_p)
-+          {
-+            /* Restore the original EPC.  */
-+            mem = gen_frame_mem (word_mode,
-+                                 plus_constant (stack_pointer_rtx, offset));
-+            mips_emit_move (gen_rtx_REG (word_mode, K0_REG_NUM), mem);
-+            offset -= UNITS_PER_WORD;
-+
-+            /* Move to COP0 EPC.  */
-+            emit_insn (gen_cop0_move (gen_rtx_REG (SImode, COP0_EPC_REG_NUM),
-+                                      gen_rtx_REG (SImode, K0_REG_NUM)));
-+          }
-+
-+        /* Restore the original Status.  */
-+        mem = gen_frame_mem (word_mode,
-+                             plus_constant (stack_pointer_rtx, offset));
-+        mips_emit_move (gen_rtx_REG (word_mode, K0_REG_NUM), mem);
-+        offset -= UNITS_PER_WORD;
-+
-+        /* If we don't use shoadow register set, we need to update SP.  */
-+        if (!cfun->machine->use_shadow_register_set_p && step2 > 0)
-+          emit_insn (gen_add3_insn (stack_pointer_rtx,
-+                                    stack_pointer_rtx,
-+                                    GEN_INT (step2)));
-+
-+        /* Move to COP0 Status.  */
-+        emit_insn (gen_cop0_move (gen_rtx_REG (SImode, COP0_STATUS_REG_NUM),
-+                                  gen_rtx_REG (SImode, K0_REG_NUM)));
-+      }
-+      else
-+      {
-+        /* Deallocate the final bit of the frame.  */
-+        if (step2 > 0)
-+          emit_insn (gen_add3_insn (stack_pointer_rtx,
-+                                    stack_pointer_rtx,
-+                                    GEN_INT (step2)));
-+      }
+ (define_insn "mips_cmpgu_eq_qb"
+@@ -752,7 +752,7 @@
+                  UNSPEC_CMPGU_EQ_QB))]
+   "ISA_HAS_DSP"
+   "cmpgu.eq.qb\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ (define_insn "mips_cmpgu_lt_qb"
+@@ -762,7 +762,7 @@
+                  UNSPEC_CMPGU_LT_QB))]
+   "ISA_HAS_DSP"
+   "cmpgu.lt.qb\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ (define_insn "mips_cmpgu_le_qb"
+@@ -772,7 +772,7 @@
+                  UNSPEC_CMPGU_LE_QB))]
+   "ISA_HAS_DSP"
+   "cmpgu.le.qb\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ ;; PICK*
+@@ -784,7 +784,7 @@
+                    UNSPEC_PICK))]
+   "ISA_HAS_DSP"
+   "pick.<DSPV:dspfmt2>\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ ;; PACKRL*
+@@ -795,7 +795,7 @@
+                    UNSPEC_PACKRL_PH))]
+   "ISA_HAS_DSP"
+   "packrl.ph\t%0,%1,%2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
+    (set_attr "mode"   "SI")])
+ ;; Table 2-6. MIPS DSP ASE Instructions: Accumulator and DSPControl Access
+@@ -818,7 +818,7 @@
      }
+   return "extrv.w\t%0,%q1,%2";
+ }
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accext")
+    (set_attr "mode"   "SI")])
  
-   /* Add in the __builtin_eh_return stack adjustment.  We need to
-@@ -9469,18 +9965,44 @@
+ (define_insn "mips_extr_r_w"
+@@ -839,7 +839,7 @@
+     }
+   return "extrv_r.w\t%0,%q1,%2";
+ }
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accext")
+    (set_attr "mode"   "SI")])
  
-   if (!sibcall_p)
-     {
--      unsigned int regno;
--
--      /* When generating MIPS16 code, the normal mips_for_each_saved_reg
--       path will restore the return address into $7 rather than $31.  */
--      if (TARGET_MIPS16
--        && !GENERATE_MIPS16E_SAVE_RESTORE
--        && BITSET_P (frame->mask, 31))
--      regno = GP_REG_FIRST + 7;
--      else
--      regno = GP_REG_FIRST + 31;
-       mips_expand_before_return ();
--      emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
-+      if (cfun->machine->interrupt_handler_p)
-+      {
-+        /* Interrupt handlers generate eret or deret.  */
-+        if (cfun->machine->use_debug_exception_return_p)
-+          emit_jump_insn (gen_mips_deret ());
-+        else
-+          emit_jump_insn (gen_mips_eret ());
-+      }
-+      else
-+      {
-+        unsigned int regno;
-+
-+        /* When generating MIPS16 code, the normal
-+           mips_for_each_saved_gpr_and_fpr path will restore the return
-+           address into $7 rather than $31.  */
-+        if (TARGET_MIPS16
-+            && !GENERATE_MIPS16E_SAVE_RESTORE
-+            && BITSET_P (frame->mask, 31))
-+          regno = GP_REG_FIRST + 7;
-+        else
-+          regno = GP_REG_FIRST + 31;
-+        emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
-+      }
-+    }
-+
-+  /* Search from the beginning to the first use of K0 or K1.  */
-+  if (cfun->machine->interrupt_handler_p
-+      && !cfun->machine->keep_interrupts_masked_p)
-+    {
-+      for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
-+      if (INSN_P (insn)
-+          && for_each_rtx (&PATTERN(insn), mips_kernel_reg_p, NULL))
-+        break;
-+      gcc_assert (insn != NULL_RTX);
-+      /* Insert disable interrupts before the first use of K0 or K1.  */
-+      emit_insn_before (gen_mips_di (), insn);
-+      emit_insn_before (gen_mips_ehb (), insn);
+ (define_insn "mips_extr_rs_w"
+@@ -860,7 +860,7 @@
      }
+   return "extrv_rs.w\t%0,%q1,%2";
  }
\f
-@@ -9491,6 +10013,10 @@
- bool
- mips_can_use_return_insn (void)
- {
-+  /* Interrupt handlers need to go through the epilogue.  */
-+  if (cfun->machine->interrupt_handler_p)
-+    return false;
-+
-   if (!reload_completed)
-     return false;
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accext")
+    (set_attr "mode"   "SI")])
  
-@@ -10422,10 +10948,15 @@
-         s = "bnez\t%2,1f\n\tbreak\t7\n1:";
-       }
-       else if (GENERATE_DIVIDE_TRAPS)
--        {
--        output_asm_insn (s, operands);
--        s = "teq\t%2,%.,7";
--        }
-+      {
-+        if (TUNE_74K)
-+          output_asm_insn ("teq\t%2,%.,7", operands);
-+        else
-+          {
-+            output_asm_insn (s, operands);
-+            s = "teq\t%2,%.,7";
-+          }
-+      }
-       else
-       {
-         output_asm_insn ("%(bne\t%2,%.,1f", operands);
-@@ -10737,7 +11268,17 @@
-       ready[pos2] = temp;
+ ;; EXTR*_S.H
+@@ -882,7 +882,7 @@
      }
+   return "extrv_s.h\t%0,%q1,%2";
  }
--\f
-+
-+int
-+mips_mult_madd_chain_bypass_p (rtx out_insn ATTRIBUTE_UNUSED,
-+                             rtx in_insn ATTRIBUTE_UNUSED)
-+{
-+  if (reload_completed)
-+    return false;
-+  else
-+    return true;
-+}
-+
- /* Used by TUNE_MACC_CHAINS to record the last scheduled instruction
-    that may clobber hi or lo.  */
- static rtx mips_macc_chains_last_hilo;
-@@ -13910,6 +14451,14 @@
-        long as any indirect jumps use $25.  */
-     flag_pic = 1;
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accext")
+    (set_attr "mode"   "SI")])
  
-+  /* For SDE, switch on ABICALLS mode if -fpic or -fpie were used, and the
-+     user hasn't explicitly disabled these modes.  */
-+  if (TARGET_MIPS_SDE
-+      && (flag_pic || flag_pie) && !TARGET_ABICALLS
-+      && !((target_flags_explicit & MASK_ABICALLS))
-+      && mips_abi != ABI_EABI)
-+    target_flags |= MASK_ABICALLS;
-+
-   /* -mvr4130-align is a "speed over size" optimization: it usually produces
-      faster code, but at the expense of more nops.  Enable it at -O3 and
-      above.  */
-@@ -13984,26 +14533,46 @@
-   if (TARGET_DSPR2)
-     target_flags |= MASK_DSP;
+ ;; EXTP*
+@@ -905,7 +905,7 @@
+     }
+   return "extpv\t%0,%q1,%2";
+ }
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accext")
+    (set_attr "mode"   "SI")])
  
--  /* .eh_frame addresses should be the same width as a C pointer.
--     Most MIPS ABIs support only one pointer size, so the assembler
--     will usually know exactly how big an .eh_frame address is.
--
--     Unfortunately, this is not true of the 64-bit EABI.  The ABI was
--     originally defined to use 64-bit pointers (i.e. it is LP64), and
--     this is still the default mode.  However, we also support an n32-like
--     ILP32 mode, which is selected by -mlong32.  The problem is that the
--     assembler has traditionally not had an -mlong option, so it has
--     traditionally not known whether we're using the ILP32 or LP64 form.
--
--     As it happens, gas versions up to and including 2.19 use _32-bit_
--     addresses for EABI64 .cfi_* directives.  This is wrong for the
--     default LP64 mode, so we can't use the directives by default.
--     Moreover, since gas's current behavior is at odds with gcc's
--     default behavior, it seems unwise to rely on future versions
--     of gas behaving the same way.  We therefore avoid using .cfi
--     directives for -mlong32 as well.  */
--  if (mips_abi == ABI_EABI && TARGET_64BIT)
--    flag_dwarf2_cfi_asm = 0;
-+  /* Use the traditional method of generating .eh_frames.
-+     We need this for two reasons:
-+
-+     - .eh_frame addresses should be the same width as a C pointer.
-+       Most MIPS ABIs support only one pointer size, so the assembler
-+       will usually know exactly how big an .eh_frame address is.
-+
-+       Unfortunately, this is not true of the 64-bit EABI.  The ABI was
-+       originally defined to use 64-bit pointers (i.e. it is LP64), and
-+       this is still the default mode.  However, we also support an n32-like
-+       ILP32 mode, which is selected by -mlong32.  The problem is that the
-+       assembler has traditionally not had an -mlong option, so it has
-+       traditionally not known whether we're using the ILP32 or LP64 form.
-+
-+       As it happens, gas versions up to and including 2.19 use _32-bit_
-+       addresses for EABI64 .cfi_* directives.  This is wrong for the
-+       default LP64 mode, so we can't use the directives by default.
-+       Moreover, since gas's current behavior is at odds with gcc's
-+       default behavior, it seems unwise to rely on future versions
-+       of gas behaving the same way.  We therefore avoid using .cfi
-+       directives for -mlong32 as well.
-+
-+     - .cfi* directives generate read-only .eh_frame sections.
-+       However, MIPS has traditionally not allowed directives like:
-+
-+          .long   x-.
-+
-+       in cases where "x" is in a different section, or is not defined
-+       in the same assembly file.  We have therefore traditionally
-+       used absolute addresses and a writable .eh_frame instead.
-+
-+       The linker is able to convert most of these absolute addresses
-+       into PC-relative form where doing so is necessary to avoid
-+       relocations.  However, until 2.21, it wasn't able to do this
-+       for indirect encodings or personality routines.
-+
-+       GNU ld 2.21 and GCC 4.5 have support for read-only .eh_frames,
-+       but for the time being, we should stick to the approach used
-+       in 4.3 and earlier.  */
-+  flag_dwarf2_cfi_asm = 0;
-   mips_init_print_operand_punct ();
-@@ -14242,6 +14811,178 @@
-       reg_alloc_order[24] = 0;
+ (define_insn "mips_extpdp"
+@@ -930,7 +930,7 @@
      }
+   return "extpdpv\t%0,%q1,%2";
  }
-+
-+/* Implement EPILOGUE_USES.  */
-+
-+bool
-+mips_epilogue_uses (unsigned int regno)
-+{
-+  /* Say that the epilogue uses the return address register.  Note that
-+     in the case of sibcalls, the values "used by the epilogue" are
-+     considered live at the start of the called function.  */
-+  if (regno == 31)
-+    return true;
-+
-+  /* If using a GOT, say that the epilogue also uses GOT_VERSION_REGNUM.
-+     See the comment above load_call<mode> for details.  */
-+  if (TARGET_USE_GOT && (regno) == GOT_VERSION_REGNUM)
-+    return true;
-+
-+  /* An interrupt handler must preserve some registers that are
-+     ordinarily call-clobbered.  */
-+  if (cfun->machine->interrupt_handler_p
-+      && mips_interrupt_extra_call_saved_reg_p (regno))
-+    return true;
-+
-+  return false;
-+}
-+\f
-+#ifdef CVMX_SHARED_BSS_FLAGS
-+/* Handle a "cvmx_shared" attribute; arguments as in 
-+   struct attribute_spec.handler.  */
-+
-+static tree
-+octeon_handle_cvmx_shared_attribute (tree *node, tree name, 
-+                                   tree args ATTRIBUTE_UNUSED, 
-+                                   int flags ATTRIBUTE_UNUSED, 
-+                                   bool *no_add_attrs)
-+{
-+  if (TREE_CODE (*node) != VAR_DECL)
-+    {
-+      warning (OPT_Wattributes, "%qs attribute only applies to variables",
-+              IDENTIFIER_POINTER (name));
-+      *no_add_attrs = true;
-+    }
-+
-+  return NULL_TREE;
-+}
-+\f
-+/* Switch to the appropriate section for output of DECL.
-+   DECL is either a `VAR_DECL' node or a constant of some sort.
-+   RELOC indicates whether forming the initial value of DECL requires
-+   link-time relocations.  */
-+
-+static section *
-+octeon_select_section (tree decl, int reloc, unsigned HOST_WIDE_INT align)
-+{
-+  if (decl && TREE_CODE (decl) == VAR_DECL 
-+      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
-+    {
-+      const char *sname = NULL;
-+      unsigned int flags = SECTION_WRITE;
-+
-+      switch (categorize_decl_for_section (decl, reloc))
-+        {
-+        case SECCAT_DATA:
-+        case SECCAT_SDATA:
-+        case SECCAT_RODATA:
-+        case SECCAT_SRODATA:
-+        case SECCAT_RODATA_MERGE_STR:
-+        case SECCAT_RODATA_MERGE_STR_INIT:
-+        case SECCAT_RODATA_MERGE_CONST:
-+        case SECCAT_DATA_REL:
-+        case SECCAT_DATA_REL_LOCAL:
-+        case SECCAT_DATA_REL_RO:
-+        case SECCAT_DATA_REL_RO_LOCAL:
-+          sname = ".cvmx_shared";
-+          break;
-+        case SECCAT_BSS:
-+        case SECCAT_SBSS:
-+          sname = ".cvmx_shared_bss";
-+          flags |= SECTION_BSS;
-+          break;
-+        case SECCAT_TEXT:
-+        case SECCAT_TDATA:
-+        case SECCAT_TBSS:
-+            break;
-+        }
-+      if (sname)
-+      {
-+        return get_section (sname, flags, decl);
-+      }
-+    }
-+  return default_elf_select_section (decl, reloc, align);
-+}
-+\f
-+/* Build up a unique section name, expressed as a
-+   STRING_CST node, and assign it to DECL_SECTION_NAME (decl).
-+   RELOC indicates whether the initial value of EXP requires
-+   link-time relocations.  */
-+
-+static void 
-+octeon_unique_section (tree decl, int reloc)
-+{
-+  if (decl && TREE_CODE (decl) == VAR_DECL 
-+      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
-+    {
-+      const char *sname = NULL;
-+
-+      if (! DECL_ONE_ONLY (decl))
-+      {
-+        section *sect;
-+        sect = octeon_select_section (decl, reloc, DECL_ALIGN (decl));
-+        DECL_SECTION_NAME (decl) = build_string (strlen (sect->named.name),
-+                                                 sect->named.name);
-+        return;
-+      }
-+
-+      switch (categorize_decl_for_section (decl, reloc))
-+        {
-+        case SECCAT_BSS:
-+        case SECCAT_SBSS:
-+          sname = ".cvmx_shared_bss.linkonce."; 
-+          break;
-+        case SECCAT_SDATA:
-+        case SECCAT_DATA:
-+        case SECCAT_DATA_REL:
-+        case SECCAT_DATA_REL_LOCAL:
-+        case SECCAT_DATA_REL_RO:
-+        case SECCAT_DATA_REL_RO_LOCAL:
-+        case SECCAT_RODATA:
-+        case SECCAT_SRODATA:
-+        case SECCAT_RODATA_MERGE_STR:
-+        case SECCAT_RODATA_MERGE_STR_INIT:
-+        case SECCAT_RODATA_MERGE_CONST:
-+          sname = ".cvmx_shared.linkonce.";
-+          break;
-+        case SECCAT_TEXT:
-+        case SECCAT_TDATA:
-+        case SECCAT_TBSS:
-+          break; 
-+      }
-+      if (sname)
-+        {
-+        const char *name;
-+        size_t plen, nlen;
-+        char *string;
-+        plen = strlen (sname);
-+
-+        name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
-+        name = targetm.strip_name_encoding (name);
-+        nlen = strlen (name);
-+
-+        string = alloca (plen + nlen + 1);
-+        memcpy (string, sname, plen);
-+        memcpy (string + plen, name, nlen + 1);
-+        DECL_SECTION_NAME (decl) = build_string (nlen + plen, string);
-+        return;
-+        }
-+    }
-+  default_unique_section (decl, reloc);
-+}
-+\f
-+/* Emit an uninitialized cvmx_shared variable.  */
-+void
-+octeon_output_shared_variable (FILE *stream, tree decl, const char *name,
-+                               unsigned HOST_WIDE_INT size, int align)
-+{
-+  switch_to_section (get_section (".cvmx_shared_bss", CVMX_SHARED_BSS_FLAGS,
-+                                NULL_TREE));
-+  ASM_OUTPUT_ALIGN (stream, floor_log2 (align / BITS_PER_UNIT));
-+  ASM_DECLARE_OBJECT_NAME (stream, name, decl);
-+  ASM_OUTPUT_SKIP (stream, size != 0 ? size : 1);
-+}
-+#endif
\f
- /* Initialize the GCC target structure.  */
- #undef TARGET_ASM_ALIGNED_HI_OP
-diff -Nur a/gcc/config/mips/mips-dsp.md b/gcc/config/mips/mips-dsp.md
---- a/gcc/config/mips/mips-dsp.md      2008-12-21 22:43:51.000000000 +0100
-+++ b/gcc/config/mips/mips-dsp.md      2010-01-25 09:50:29.025687257 +0100
-@@ -42,9 +42,9 @@
-                    (match_operand:DSPV 2 "register_operand" "d")))
-      (set (reg:CCDSP CCDSP_OU_REGNUM)
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ))])]
--  ""
-+  "ISA_HAS_DSP"
-   "add<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>"
-@@ -55,9 +55,9 @@
-                     UNSPEC_ADDQ_S))
-      (set (reg:CCDSP CCDSP_OU_REGNUM)
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ_S))])]
--  ""
-+  "ISA_HAS_DSP"
-   "add<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accext")
     (set_attr "mode"   "SI")])
  
- ;; SUBQ*
-@@ -70,7 +70,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ))])]
-   "ISA_HAS_DSP"
-   "sub<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
+ ;; SHILO*
+@@ -949,7 +949,7 @@
+     }
+   return "shilov\t%q0,%2";
+ }
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accmod")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>"
-@@ -83,7 +83,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ_S))])]
-   "ISA_HAS_DSP"
-   "sub<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
+ ;; MTHLIP*
+@@ -965,7 +965,7 @@
+                        (reg:CCDSP CCDSP_PO_REGNUM)] UNSPEC_MTHLIP))])]
+   "ISA_HAS_DSP && !TARGET_64BIT"
+   "mthlip\t%2,%q0"
+-  [(set_attr "type"   "mfhilo")
++  [(set_attr "type"   "accmod")
     (set_attr "mode"   "SI")])
  
- ;; ADDSC
-@@ -97,7 +97,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDSC))])]
+ ;; WRDSP
+@@ -987,7 +987,7 @@
+         (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))])]
    "ISA_HAS_DSP"
-   "addsc\t%0,%1,%2"
+   "wrdsp\t%0,%1"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; ADDWC
-@@ -112,7 +112,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDWC))])]
+ ;; RDDSP
+@@ -1003,7 +1003,7 @@
+                  UNSPEC_RDDSP))]
    "ISA_HAS_DSP"
-   "addwc\t%0,%1,%2"
+   "rddsp\t%0,%1"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; MODSUB
-@@ -123,7 +123,7 @@
-                  UNSPEC_MODSUB))]
-   "ISA_HAS_DSP"
-   "modsub\t%0,%1,%2"
+ ;; Table 2-7. MIPS DSP ASE Instructions: Indexed-Load
+--- a/gcc/config/mips/mips-dspr2.md
++++ b/gcc/config/mips/mips-dspr2.md
+@@ -9,7 +9,7 @@
+         (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
+   "ISA_HAS_DSPR2"
+   "absq_s.qb\t%0,%z1"
 -  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
++  [(set_attr "type"   "dspalusat")
     (set_attr "mode"   "SI")])
  
- ;; RADDU*
-@@ -133,7 +133,7 @@
-                  UNSPEC_RADDU_W_QB))]
-   "ISA_HAS_DSP"
-   "raddu.w.qb\t%0,%1"
+ (define_insn "mips_addu_ph"
+@@ -21,7 +21,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
+   "ISA_HAS_DSPR2"
+   "addu.ph\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; ABSQ*
-@@ -146,7 +146,7 @@
-         (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S))])]
-   "ISA_HAS_DSP"
-   "absq_s.<DSPQ:dspfmt2>\t%0,%1"
+ (define_insn "mips_addu_s_ph"
+@@ -34,7 +34,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
+   "ISA_HAS_DSPR2"
+   "addu_s.ph\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalusat")
     (set_attr "mode"   "SI")])
  
- ;; PRECRQ*
-@@ -157,7 +157,7 @@
-                    UNSPEC_PRECRQ_QB_PH))]
-   "ISA_HAS_DSP"
-   "precrq.qb.ph\t%0,%1,%2"
+ (define_insn "mips_adduh_qb"
+@@ -44,7 +44,7 @@
+                    UNSPEC_ADDUH_QB))]
+   "ISA_HAS_DSPR2"
+   "adduh.qb\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_precrq_ph_w"
-@@ -167,7 +167,7 @@
-                    UNSPEC_PRECRQ_PH_W))]
-   "ISA_HAS_DSP"
-   "precrq.ph.w\t%0,%1,%2"
+ (define_insn "mips_adduh_r_qb"
+@@ -54,7 +54,7 @@
+                    UNSPEC_ADDUH_R_QB))]
+   "ISA_HAS_DSPR2"
+   "adduh_r.qb\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
++  [(set_attr "type"   "dspalusat")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_precrq_rs_ph_w"
-@@ -181,7 +181,7 @@
-                       UNSPEC_PRECRQ_RS_PH_W))])]
-   "ISA_HAS_DSP"
-   "precrq_rs.ph.w\t%0,%1,%2"
+ (define_insn "mips_append"
+@@ -69,7 +69,7 @@
+     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
+   return "append\t%0,%z2,%3";
+ }
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; PRECRQU*
-@@ -196,7 +196,7 @@
-                       UNSPEC_PRECRQU_S_QB_PH))])]
-   "ISA_HAS_DSP"
-   "precrqu_s.qb.ph\t%0,%1,%2"
+ (define_insn "mips_balign"
+@@ -84,7 +84,7 @@
+     operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
+   return "balign\t%0,%z2,%3";
+ }
 -  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
++  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; PRECEQ*
-@@ -206,7 +206,7 @@
-                  UNSPEC_PRECEQ_W_PHL))]
-   "ISA_HAS_DSP"
-   "preceq.w.phl\t%0,%1"
+ (define_insn "mips_cmpgdu_eq_qb"
+@@ -99,7 +99,7 @@
+                       UNSPEC_CMPGDU_EQ_QB))])]
+   "ISA_HAS_DSPR2"
+   "cmpgdu.eq.qb\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_preceq_w_phr"
-@@ -215,7 +215,7 @@
-                  UNSPEC_PRECEQ_W_PHR))]
-   "ISA_HAS_DSP"
-   "preceq.w.phr\t%0,%1"
+ (define_insn "mips_cmpgdu_lt_qb"
+@@ -114,7 +114,7 @@
+                       UNSPEC_CMPGDU_LT_QB))])]
+   "ISA_HAS_DSPR2"
+   "cmpgdu.lt.qb\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; PRECEQU*
-@@ -225,7 +225,7 @@
-                    UNSPEC_PRECEQU_PH_QBL))]
-   "ISA_HAS_DSP"
-   "precequ.ph.qbl\t%0,%1"
+ (define_insn "mips_cmpgdu_le_qb"
+@@ -129,7 +129,7 @@
+                       UNSPEC_CMPGDU_LE_QB))])]
+   "ISA_HAS_DSPR2"
+   "cmpgdu.le.qb\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_precequ_ph_qbr"
-@@ -234,7 +234,7 @@
-                    UNSPEC_PRECEQU_PH_QBR))]
-   "ISA_HAS_DSP"
-   "precequ.ph.qbr\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
+ (define_insn "mips_dpa_w_ph"
+@@ -140,7 +140,7 @@
+                  UNSPEC_DPA_W_PH))]
+   "ISA_HAS_DSPR2 && !TARGET_64BIT"
+   "dpa.w.ph\t%q0,%z2,%z3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_precequ_ph_qbla"
-@@ -243,7 +243,7 @@
-                    UNSPEC_PRECEQU_PH_QBLA))]
-   "ISA_HAS_DSP"
-   "precequ.ph.qbla\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
+ (define_insn "mips_dps_w_ph"
+@@ -151,7 +151,7 @@
+                  UNSPEC_DPS_W_PH))]
+   "ISA_HAS_DSPR2 && !TARGET_64BIT"
+   "dps.w.ph\t%q0,%z2,%z3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_precequ_ph_qbra"
-@@ -252,7 +252,7 @@
-                    UNSPEC_PRECEQU_PH_QBRA))]
-   "ISA_HAS_DSP"
-   "precequ.ph.qbra\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
+ (define_expand "mips_madd<u>"
+@@ -247,7 +247,7 @@
+                  UNSPEC_MULSA_W_PH))]
+   "ISA_HAS_DSPR2 && !TARGET_64BIT"
+   "mulsa.w.ph\t%q0,%z2,%z3"
+-  [(set_attr "type"   "imadd")
++  [(set_attr "type"   "dspmac")
     (set_attr "mode"   "SI")])
  
- ;; PRECEU*
-@@ -262,7 +262,7 @@
-                    UNSPEC_PRECEU_PH_QBL))]
-   "ISA_HAS_DSP"
-   "preceu.ph.qbl\t%0,%1"
+ (define_insn "mips_mult"
+@@ -277,7 +277,7 @@
+                    UNSPEC_PRECR_QB_PH))]
+   "ISA_HAS_DSPR2"
+   "precr.qb.ph\t%0,%z1,%z2"
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_preceu_ph_qbr"
-@@ -271,7 +271,7 @@
-                    UNSPEC_PRECEU_PH_QBR))]
-   "ISA_HAS_DSP"
-   "preceu.ph.qbr\t%0,%1"
+ (define_insn "mips_precr_sra_ph_w"
+@@ -292,7 +292,7 @@
+     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
+   return "precr_sra.ph.w\t%0,%z2,%3";
+ }
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_preceu_ph_qbla"
-@@ -280,7 +280,7 @@
-                    UNSPEC_PRECEU_PH_QBLA))]
-   "ISA_HAS_DSP"
-   "preceu.ph.qbla\t%0,%1"
+ (define_insn "mips_precr_sra_r_ph_w"
+@@ -307,7 +307,7 @@
+     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
+   return "precr_sra_r.ph.w\t%0,%z2,%3";
+ }
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_preceu_ph_qbra"
-@@ -289,7 +289,7 @@
-                    UNSPEC_PRECEU_PH_QBRA))]
-   "ISA_HAS_DSP"
-   "preceu.ph.qbra\t%0,%1"
+ (define_insn "mips_prepend"
+@@ -322,7 +322,7 @@
+     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
+   return "prepend\t%0,%z2,%3";
+ }
 -  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; Table 2-2. MIPS DSP ASE Instructions: Shift
-@@ -313,7 +313,7 @@
+ (define_insn "mips_shra_qb"
+@@ -340,7 +340,7 @@
      }
-   return "shllv.<DSPV:dspfmt2>\t%0,%1,%2";
+   return "shrav.qb\t%0,%z1,%2";
  }
 -  [(set_attr "type"   "shift")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_shll_s_<DSPQ:dspfmt2>"
-@@ -335,7 +335,7 @@
-     }
-   return "shllv_s.<DSPQ:dspfmt2>\t%0,%1,%2";
- }
--  [(set_attr "type"   "shift")
-+  [(set_attr "type"   "dspalusat")
-    (set_attr "mode"   "SI")])
  
- ;; SHRL*
-@@ -354,7 +354,7 @@
+@@ -359,7 +359,7 @@
      }
-   return "shrlv.qb\t%0,%1,%2";
+   return "shrav_r.qb\t%0,%z1,%2";
  }
 -  [(set_attr "type"   "shift")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; SHRA*
-@@ -373,7 +373,7 @@
+ (define_insn "mips_shrl_ph"
+@@ -377,7 +377,7 @@
      }
-   return "shrav.ph\t%0,%1,%2";
+   return "shrlv.ph\t%0,%z1,%2";
  }
 -  [(set_attr "type"   "shift")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_shra_r_<DSPQ:dspfmt2>"
-@@ -392,7 +392,7 @@
-     }
-   return "shrav_r.<DSPQ:dspfmt2>\t%0,%1,%2";
- }
--  [(set_attr "type"   "shift")
+ (define_insn "mips_subu_ph"
+@@ -390,7 +390,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
+   "ISA_HAS_DSPR2"
+   "subu.ph\t%0,%z1,%z2"
+-  [(set_attr "type"   "arith")
 +  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; Table 2-3. MIPS DSP ASE Instructions: Multiply
-@@ -478,7 +478,7 @@
-                  UNSPEC_DPAU_H_QBL))]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpau.h.qbl\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_dpau_h_qbr"
-@@ -489,7 +489,7 @@
-                  UNSPEC_DPAU_H_QBR))]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpau.h.qbr\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
+ (define_insn "mips_subu_s_ph"
+@@ -403,7 +403,7 @@
+         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
+   "ISA_HAS_DSPR2"
+   "subu_s.ph\t%0,%z1,%z2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalusat")
     (set_attr "mode"   "SI")])
  
- ;; DPSU*
-@@ -501,7 +501,7 @@
-                  UNSPEC_DPSU_H_QBL))]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpsu.h.qbl\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
+ (define_insn "mips_subuh_qb"
+@@ -413,7 +413,7 @@
+                    UNSPEC_SUBUH_QB))]
+   "ISA_HAS_DSPR2"
+   "subuh.qb\t%0,%z1,%z2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- (define_insn "mips_dpsu_h_qbr"
-@@ -512,7 +512,7 @@
-                  UNSPEC_DPSU_H_QBR))]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpsu.h.qbr\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
+ (define_insn "mips_subuh_r_qb"
+@@ -423,7 +423,7 @@
+                    UNSPEC_SUBUH_R_QB))]
+   "ISA_HAS_DSPR2"
+   "subuh_r.qb\t%0,%z1,%z2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
- ;; DPAQ*
-@@ -528,7 +528,7 @@
-                       UNSPEC_DPAQ_S_W_PH))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpaq_s.w.ph\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- ;; DPSQ*
-@@ -544,7 +544,7 @@
-                       UNSPEC_DPSQ_S_W_PH))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpsq_s.w.ph\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- ;; MULSAQ*
-@@ -560,7 +560,7 @@
-                       UNSPEC_MULSAQ_S_W_PH))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "mulsaq_s.w.ph\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- ;; DPAQ*
-@@ -576,7 +576,7 @@
-                       UNSPEC_DPAQ_SA_L_W))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpaq_sa.l.w\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmacsat")
-    (set_attr "mode"   "SI")])
- ;; DPSQ*
-@@ -592,7 +592,7 @@
-                       UNSPEC_DPSQ_SA_L_W))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "dpsq_sa.l.w\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmacsat")
-    (set_attr "mode"   "SI")])
- ;; MAQ*
-@@ -608,7 +608,7 @@
-                       UNSPEC_MAQ_S_W_PHL))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "maq_s.w.phl\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_maq_s_w_phr"
-@@ -623,7 +623,7 @@
-                       UNSPEC_MAQ_S_W_PHR))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "maq_s.w.phr\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- ;; MAQ_SA*
-@@ -639,7 +639,7 @@
-                       UNSPEC_MAQ_SA_W_PHL))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "maq_sa.w.phl\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmacsat")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_maq_sa_w_phr"
-@@ -654,7 +654,7 @@
-                       UNSPEC_MAQ_SA_W_PHR))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "maq_sa.w.phr\t%q0,%2,%3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmacsat")
-    (set_attr "mode"   "SI")])
- ;; Table 2-4. MIPS DSP ASE Instructions: General Bit/Manipulation
-@@ -665,7 +665,7 @@
-                  UNSPEC_BITREV))]
-   "ISA_HAS_DSP"
-   "bitrev\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; INSV
-@@ -678,7 +678,7 @@
-                  UNSPEC_INSV))]
-   "ISA_HAS_DSP"
-   "insv\t%0,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; REPL*
-@@ -696,7 +696,7 @@
-     }
-   return "replv.qb\t%0,%1";
- }
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_repl_ph"
-@@ -707,7 +707,7 @@
-   "@
-    repl.ph\t%0,%1
-    replv.ph\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; Table 2-5. MIPS DSP ASE Instructions: Compare-Pick
-@@ -720,7 +720,7 @@
-                     UNSPEC_CMP_EQ))]
-   "ISA_HAS_DSP"
-   "cmp<DSPV:dspfmt1_1>.eq.<DSPV:dspfmt2>\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>"
-@@ -731,7 +731,7 @@
-                     UNSPEC_CMP_LT))]
-   "ISA_HAS_DSP"
-   "cmp<DSPV:dspfmt1_1>.lt.<DSPV:dspfmt2>\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>"
-@@ -742,7 +742,7 @@
-                     UNSPEC_CMP_LE))]
-   "ISA_HAS_DSP"
-   "cmp<DSPV:dspfmt1_1>.le.<DSPV:dspfmt2>\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmpgu_eq_qb"
-@@ -752,7 +752,7 @@
-                  UNSPEC_CMPGU_EQ_QB))]
-   "ISA_HAS_DSP"
-   "cmpgu.eq.qb\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmpgu_lt_qb"
-@@ -762,7 +762,7 @@
-                  UNSPEC_CMPGU_LT_QB))]
-   "ISA_HAS_DSP"
-   "cmpgu.lt.qb\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmpgu_le_qb"
-@@ -772,7 +772,7 @@
-                  UNSPEC_CMPGU_LE_QB))]
-   "ISA_HAS_DSP"
-   "cmpgu.le.qb\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; PICK*
-@@ -784,7 +784,7 @@
-                    UNSPEC_PICK))]
-   "ISA_HAS_DSP"
-   "pick.<DSPV:dspfmt2>\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; PACKRL*
-@@ -795,7 +795,7 @@
-                    UNSPEC_PACKRL_PH))]
-   "ISA_HAS_DSP"
-   "packrl.ph\t%0,%1,%2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; Table 2-6. MIPS DSP ASE Instructions: Accumulator and DSPControl Access
-@@ -818,7 +818,7 @@
-     }
-   return "extrv.w\t%0,%q1,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accext")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_extr_r_w"
-@@ -839,7 +839,7 @@
-     }
-   return "extrv_r.w\t%0,%q1,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accext")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_extr_rs_w"
-@@ -860,7 +860,7 @@
-     }
-   return "extrv_rs.w\t%0,%q1,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accext")
-    (set_attr "mode"   "SI")])
- ;; EXTR*_S.H
-@@ -882,7 +882,7 @@
-     }
-   return "extrv_s.h\t%0,%q1,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accext")
-    (set_attr "mode"   "SI")])
- ;; EXTP*
-@@ -905,7 +905,7 @@
-     }
-   return "extpv\t%0,%q1,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accext")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_extpdp"
-@@ -930,7 +930,7 @@
-     }
-   return "extpdpv\t%0,%q1,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accext")
-    (set_attr "mode"   "SI")])
- ;; SHILO*
-@@ -949,7 +949,7 @@
-     }
-   return "shilov\t%q0,%2";
- }
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accmod")
-    (set_attr "mode"   "SI")])
- ;; MTHLIP*
-@@ -965,7 +965,7 @@
-                        (reg:CCDSP CCDSP_PO_REGNUM)] UNSPEC_MTHLIP))])]
-   "ISA_HAS_DSP && !TARGET_64BIT"
-   "mthlip\t%2,%q0"
--  [(set_attr "type"   "mfhilo")
-+  [(set_attr "type"   "accmod")
-    (set_attr "mode"   "SI")])
- ;; WRDSP
-@@ -987,7 +987,7 @@
-         (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))])]
-   "ISA_HAS_DSP"
-   "wrdsp\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; RDDSP
-@@ -1003,7 +1003,7 @@
-                  UNSPEC_RDDSP))]
-   "ISA_HAS_DSP"
-   "rddsp\t%0,%1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- ;; Table 2-7. MIPS DSP ASE Instructions: Indexed-Load
-diff -Nur a/gcc/config/mips/mips-dspr2.md b/gcc/config/mips/mips-dspr2.md
---- a/gcc/config/mips/mips-dspr2.md    2007-09-23 11:24:21.000000000 +0200
-+++ b/gcc/config/mips/mips-dspr2.md    2010-01-25 09:50:29.025687257 +0100
-@@ -9,7 +9,7 @@
-         (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
-   "ISA_HAS_DSPR2"
-   "absq_s.qb\t%0,%z1"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_addu_ph"
-@@ -21,7 +21,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
-   "ISA_HAS_DSPR2"
-   "addu.ph\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_addu_s_ph"
-@@ -34,7 +34,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
-   "ISA_HAS_DSPR2"
-   "addu_s.ph\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_adduh_qb"
-@@ -44,7 +44,7 @@
-                    UNSPEC_ADDUH_QB))]
-   "ISA_HAS_DSPR2"
-   "adduh.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_adduh_r_qb"
-@@ -54,7 +54,7 @@
-                    UNSPEC_ADDUH_R_QB))]
-   "ISA_HAS_DSPR2"
-   "adduh_r.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_append"
-@@ -69,7 +69,7 @@
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
-   return "append\t%0,%z2,%3";
- }
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_balign"
-@@ -84,7 +84,7 @@
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
-   return "balign\t%0,%z2,%3";
- }
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmpgdu_eq_qb"
-@@ -99,7 +99,7 @@
-                       UNSPEC_CMPGDU_EQ_QB))])]
-   "ISA_HAS_DSPR2"
-   "cmpgdu.eq.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmpgdu_lt_qb"
-@@ -114,7 +114,7 @@
-                       UNSPEC_CMPGDU_LT_QB))])]
-   "ISA_HAS_DSPR2"
-   "cmpgdu.lt.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_cmpgdu_le_qb"
-@@ -129,7 +129,7 @@
-                       UNSPEC_CMPGDU_LE_QB))])]
-   "ISA_HAS_DSPR2"
-   "cmpgdu.le.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_dpa_w_ph"
-@@ -140,7 +140,7 @@
-                  UNSPEC_DPA_W_PH))]
-   "ISA_HAS_DSPR2 && !TARGET_64BIT"
-   "dpa.w.ph\t%q0,%z2,%z3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_dps_w_ph"
-@@ -151,7 +151,7 @@
-                  UNSPEC_DPS_W_PH))]
-   "ISA_HAS_DSPR2 && !TARGET_64BIT"
-   "dps.w.ph\t%q0,%z2,%z3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- (define_expand "mips_madd<u>"
-@@ -247,7 +247,7 @@
-                  UNSPEC_MULSA_W_PH))]
-   "ISA_HAS_DSPR2 && !TARGET_64BIT"
-   "mulsa.w.ph\t%q0,%z2,%z3"
--  [(set_attr "type"   "imadd")
-+  [(set_attr "type"   "dspmac")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_mult"
-@@ -277,7 +277,7 @@
-                    UNSPEC_PRECR_QB_PH))]
-   "ISA_HAS_DSPR2"
-   "precr.qb.ph\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_precr_sra_ph_w"
-@@ -292,7 +292,7 @@
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
-   return "precr_sra.ph.w\t%0,%z2,%3";
- }
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_precr_sra_r_ph_w"
-@@ -307,7 +307,7 @@
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
-   return "precr_sra_r.ph.w\t%0,%z2,%3";
- }
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_prepend"
-@@ -322,7 +322,7 @@
-     operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
-   return "prepend\t%0,%z2,%3";
- }
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_shra_qb"
-@@ -340,7 +340,7 @@
-     }
-   return "shrav.qb\t%0,%z1,%2";
- }
--  [(set_attr "type"   "shift")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
-@@ -359,7 +359,7 @@
-     }
-   return "shrav_r.qb\t%0,%z1,%2";
- }
--  [(set_attr "type"   "shift")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_shrl_ph"
-@@ -377,7 +377,7 @@
-     }
-   return "shrlv.ph\t%0,%z1,%2";
- }
--  [(set_attr "type"   "shift")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_subu_ph"
-@@ -390,7 +390,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
-   "ISA_HAS_DSPR2"
-   "subu.ph\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_subu_s_ph"
-@@ -403,7 +403,7 @@
-         (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
-   "ISA_HAS_DSPR2"
-   "subu_s.ph\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalusat")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_subuh_qb"
-@@ -413,7 +413,7 @@
-                    UNSPEC_SUBUH_QB))]
-   "ISA_HAS_DSPR2"
-   "subuh.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_subuh_r_qb"
-@@ -423,7 +423,7 @@
-                    UNSPEC_SUBUH_R_QB))]
-   "ISA_HAS_DSPR2"
-   "subuh_r.qb\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
-    (set_attr "mode"   "SI")])
- (define_insn "mips_addqh_ph"
-@@ -433,7 +433,7 @@
-                    UNSPEC_ADDQH_PH))]
-   "ISA_HAS_DSPR2"
-   "addqh.ph\t%0,%z1,%z2"
--  [(set_attr "type"   "arith")
-+  [(set_attr "type"   "dspalu")
+ (define_insn "mips_addqh_ph"
+@@ -433,7 +433,7 @@
+                    UNSPEC_ADDQH_PH))]
+   "ISA_HAS_DSPR2"
+   "addqh.ph\t%0,%z1,%z2"
+-  [(set_attr "type"   "arith")
++  [(set_attr "type"   "dspalu")
     (set_attr "mode"   "SI")])
  
  (define_insn "mips_addqh_r_ph"
@@ -18398,1466 +16561,1590 @@ diff -Nur a/gcc/config/mips/mips-dspr2.md b/gcc/config/mips/mips-dspr2.md
 +  "mult\t%q0,$0,$0\t\t# Clear ACC HI/LO"
 +  [(set_attr "type"   "imul")
     (set_attr "mode"   "SI")])
-diff -Nur a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
---- a/gcc/config/mips/mips.h   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/mips.h   2010-01-25 09:50:29.025687257 +0100
-@@ -342,6 +342,9 @@
- #define TARGET_IRIX      0
- #define TARGET_IRIX6     0
+--- a/gcc/config/mips/mips-protos.h
++++ b/gcc/config/mips/mips-protos.h
+@@ -261,6 +261,8 @@ extern void mips_print_operand_address (
+ extern void mips_output_external (FILE *, tree, const char *);
+ extern void mips_output_filename (FILE *, const char *);
+ extern void mips_output_ascii (FILE *, const char *, size_t);
++extern void octeon_output_shared_variable (FILE *, tree, const char *,
++                                         unsigned HOST_WIDE_INT, int);
+ extern void mips_output_aligned_decl_common (FILE *, tree, const char *,
+                                            unsigned HOST_WIDE_INT,
+                                            unsigned int);
+@@ -307,6 +309,8 @@ extern unsigned int mips_hard_regno_nreg
+ extern bool mips_linked_madd_p (rtx, rtx);
+ extern bool mips_store_data_bypass_p (rtx, rtx);
+ extern rtx mips_prefetch_cookie (rtx, rtx);
++extern int mips_mult_madd_chain_bypass_p (rtx, rtx);
++extern int mips_dspalu_bypass_p (rtx, rtx);
  
-+/* SDE specific stuff.  */
-+#define TARGET_MIPS_SDE    0
-+
- /* Define preprocessor macros for the -march and -mtune options.
-    PREFIX is either _MIPS_ARCH or _MIPS_TUNE, INFO is the selected
-    processor.  If INFO's canonical name is "foo", define PREFIX to
-@@ -708,8 +711,9 @@
-        |march=r10000|march=r12000|march=r14000|march=r16000:-mips4} \
-      %{march=mips32|march=4kc|march=4km|march=4kp|march=4ksc:-mips32} \
-      %{march=mips32r2|march=m4k|march=4ke*|march=4ksd|march=24k* \
--       |march=34k*|march=74k*: -mips32r2} \
--     %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000: -mips64} \
-+       |march=34k*|march=74k*|march=1004k*: -mips32r2} \
-+     %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000 \
-+       |march=xlr: -mips64} \
-      %{march=mips64r2|march=octeon: -mips64r2} \
-      %{!march=*: -" MULTILIB_ISA_DEFAULT "}}"
-@@ -720,7 +724,8 @@
- #define MIPS_ARCH_FLOAT_SPEC \
-   "%{mhard-float|msoft-float|march=mips*:; \
-      march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
--     |march=34kc|march=74kc|march=5kc|march=octeon: -msoft-float; \
-+     |march=34kc|march=74kc|march=1004kc|march=5kc \
-+     |march=octeon|march=xlr: -msoft-float;             \
-      march=*: -mhard-float}"
- /* A spec condition that matches 32-bit options.  It only works if
-@@ -731,8 +736,9 @@
- /* Support for a compile-time default CPU, et cetera.  The rules are:
-    --with-arch is ignored if -march is specified or a -mips is specified
--     (other than -mips16).
--   --with-tune is ignored if -mtune is specified.
-+     (other than -mips16); likewise --with-arch-32 and --with-arch-64.
-+   --with-tune is ignored if -mtune is specified; likewise
-+     --with-tune-32 and --with-tune-64.
-    --with-abi is ignored if -mabi is specified.
-    --with-float is ignored if -mhard-float or -msoft-float are
-      specified.
-@@ -740,7 +746,11 @@
-      specified. */
- #define OPTION_DEFAULT_SPECS \
-   {"arch", "%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}" }, \
-+  {"arch_32", "%{!mabi=*|mabi=32:%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \
-+  {"arch_64", "%{mabi=n32|mabi=64:%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \
-   {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
-+  {"tune_32", "%{!mabi=*|mabi=32:%{!mtune=*:-mtune=%(VALUE)}}" }, \
-+  {"tune_64", "%{mabi=n32|mabi=64:%{!mtune=*:-mtune=%(VALUE)}}" }, \
-   {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \
-   {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }, \
-   {"divide", "%{!mdivide-traps:%{!mdivide-breaks:-mdivide-%(VALUE)}}" }, \
-@@ -750,7 +760,7 @@
- /* A spec that infers the -mdsp setting from an -march argument.  */
- #define BASE_DRIVER_SELF_SPECS \
--  "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*: -mdsp}}"
-+  "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*|march=1004k*: -mdsp}}"
- #define DRIVER_SELF_SPECS BASE_DRIVER_SELF_SPECS
-@@ -1038,6 +1048,11 @@
- /* ISA includes the bbit* instructions.  */
- #define ISA_HAS_BBIT          (TARGET_OCTEON && !TARGET_MIPS16)
-+/* ISA has single-instruction unaligned load/store support.  */
-+#define ISA_HAS_UL_US          (TARGET_OCTEON \
-+                                && TARGET_OCTEON_UNALIGNED \
-+                                && !TARGET_MIPS16)
-+ 
- /* ISA includes the cins instruction.  */
- #define ISA_HAS_CINS          (TARGET_OCTEON && !TARGET_MIPS16)
+ extern void irix_asm_output_align (FILE *, unsigned);
+ extern const char *current_section_name (void);
+@@ -332,4 +336,6 @@ extern void mips_expand_atomic_qihi (uni
  
-@@ -1055,6 +1070,7 @@
+ extern void mips_expand_vector_init (rtx, rtx);
  
- /* The CACHE instruction is available.  */
- #define ISA_HAS_CACHE (TARGET_CACHE_BUILTIN && !TARGET_MIPS16)
-+ 
\f
- /* Add -G xx support.  */
++extern bool mips_epilogue_uses (unsigned int);
++
+ #endif /* ! GCC_MIPS_PROTOS_H */
+--- a/gcc/config/mips/mips.c
++++ b/gcc/config/mips/mips.c
+@@ -261,18 +261,29 @@ struct mips_frame_info GTY(()) {
+   /* Likewise FPR X.  */
+   unsigned int fmask;
  
-@@ -1152,6 +1168,7 @@
- %{mshared} %{mno-shared} \
- %{msym32} %{mno-sym32} \
- %{mtune=*} %{v} \
-+%{mocteon-useun} %{mno-octeon-useun} \
- %(subtarget_asm_spec)"
+-  /* The number of GPRs and FPRs saved.  */
++  /* Likewise doubleword accumulator X ($acX).  */
++  unsigned int acc_mask;
++
++  /* The number of GPRs, FPRs, doubleword accumulators and COP0
++     registers saved.  */
+   unsigned int num_gp;
+   unsigned int num_fp;
++  unsigned int num_acc;
++  unsigned int num_cop0_regs;
  
- /* Extra switches sometimes passed to the linker.  */
-@@ -1622,6 +1639,9 @@
- #define GP_REG_LAST  31
- #define GP_REG_NUM   (GP_REG_LAST - GP_REG_FIRST + 1)
- #define GP_DBX_FIRST 0
-+#define K0_REG_NUM   (GP_REG_FIRST + 26)
-+#define K1_REG_NUM   (GP_REG_FIRST + 27)
-+#define KERNEL_REG_P(REGNO)   (IN_RANGE (REGNO, K0_REG_NUM, K1_REG_NUM))
+-  /* The offset of the topmost GPR and FPR save slots from the top of
+-     the frame, or zero if no such slots are needed.  */
++  /* The offset of the topmost GPR, FPR, accumulator and COP0-register
++     save slots from the top of the frame, or zero if no such slots are
++     needed.  */
+   HOST_WIDE_INT gp_save_offset;
+   HOST_WIDE_INT fp_save_offset;
++  HOST_WIDE_INT acc_save_offset;
++  HOST_WIDE_INT cop0_save_offset;
  
- #define FP_REG_FIRST 32
- #define FP_REG_LAST  63
-@@ -1649,6 +1669,10 @@
- #define COP0_REG_LAST 111
- #define COP0_REG_NUM (COP0_REG_LAST - COP0_REG_FIRST + 1)
+   /* Likewise, but giving offsets from the bottom of the frame.  */
+   HOST_WIDE_INT gp_sp_offset;
+   HOST_WIDE_INT fp_sp_offset;
++  HOST_WIDE_INT acc_sp_offset;
++  HOST_WIDE_INT cop0_sp_offset;
  
-+#define COP0_STATUS_REG_NUM   (COP0_REG_FIRST + 12)
-+#define COP0_CAUSE_REG_NUM    (COP0_REG_FIRST + 13)
-+#define COP0_EPC_REG_NUM      (COP0_REG_FIRST + 14)
+   /* The offset of arg_pointer_rtx from frame_pointer_rtx.  */
+   HOST_WIDE_INT arg_pointer_offset;
+@@ -310,6 +321,20 @@ struct machine_function GTY(()) {
+   /* True if we have emitted an instruction to initialize
+      mips16_gp_pseudo_rtx.  */
+   bool initialized_mips16_gp_pseudo_p;
 +
- #define COP2_REG_FIRST 112
- #define COP2_REG_LAST 143
- #define COP2_REG_NUM (COP2_REG_LAST - COP2_REG_FIRST + 1)
-@@ -1666,6 +1690,29 @@
- #define AT_REGNUM     (GP_REG_FIRST + 1)
- #define HI_REGNUM     (TARGET_BIG_ENDIAN ? MD_REG_FIRST : MD_REG_FIRST + 1)
- #define LO_REGNUM     (TARGET_BIG_ENDIAN ? MD_REG_FIRST + 1 : MD_REG_FIRST)
-+#define AC1HI_REGNUM  (TARGET_BIG_ENDIAN \
-+                       ? DSP_ACC_REG_FIRST : DSP_ACC_REG_FIRST + 1)
-+#define AC1LO_REGNUM  (TARGET_BIG_ENDIAN \
-+                       ? DSP_ACC_REG_FIRST + 1 : DSP_ACC_REG_FIRST)
-+#define AC2HI_REGNUM  (TARGET_BIG_ENDIAN \
-+                       ? DSP_ACC_REG_FIRST + 2 : DSP_ACC_REG_FIRST + 3)
-+#define AC2LO_REGNUM  (TARGET_BIG_ENDIAN \
-+                       ? DSP_ACC_REG_FIRST + 3 : DSP_ACC_REG_FIRST + 2)
-+#define AC3HI_REGNUM  (TARGET_BIG_ENDIAN \
-+                       ? DSP_ACC_REG_FIRST + 4 : DSP_ACC_REG_FIRST + 5)
-+#define AC3LO_REGNUM  (TARGET_BIG_ENDIAN \
-+                       ? DSP_ACC_REG_FIRST + 5 : DSP_ACC_REG_FIRST + 4)
++  /* True if this is an interrupt handler.  */
++  bool interrupt_handler_p;
 +
-+/* A few bitfield locations for the coprocessor registers.  */
-+/* Request Interrupt Priority Level is from bit 10 to bit 15 of
-+   the cause register for the EIC interrupt mode.  */
-+#define CAUSE_IPL     10
-+/* Interrupt Priority Level is from bit 10 to bit 15 of the status register.  */
-+#define SR_IPL                10
-+/* Exception Level is at bit 1 of the status register.  */
-+#define SR_EXL                1
-+/* Interrupt Enable is at bit 0 of the status register.  */
-+#define SR_IE         0
- /* FPSW_REGNUM is the single condition code used if !ISA_HAS_8CC.
-    If ISA_HAS_8CC, it should not be used, and an arbitrary ST_REG
-@@ -1754,11 +1801,18 @@
-    incoming arguments, the static chain pointer, or the frame pointer.
-    The epilogue temporary mustn't conflict with the return registers,
-    the PIC call register ($25), the frame pointer, the EH stack adjustment,
--   or the EH data registers.  */
-+   or the EH data registers.
++  /* True if this is an interrupt handler that uses shadow registers.  */
++  bool use_shadow_register_set_p;
 +
-+   If we're generating interrupt handlers, we use K0 as a temporary register
-+   in prologue/epilogue code.  */
- #define MIPS16_PIC_TEMP_REGNUM (GP_REG_FIRST + 2)
--#define MIPS_PROLOGUE_TEMP_REGNUM (GP_REG_FIRST + 3)
--#define MIPS_EPILOGUE_TEMP_REGNUM (GP_REG_FIRST + (TARGET_MIPS16 ? 6 : 8))
-+#define MIPS_PROLOGUE_TEMP_REGNUM \
-+  (cfun->machine->interrupt_handler_p ? K0_REG_NUM : GP_REG_FIRST + 3)
-+#define MIPS_EPILOGUE_TEMP_REGNUM             \
-+  (cfun->machine->interrupt_handler_p         \
-+   ? K0_REG_NUM                                       \
-+   : GP_REG_FIRST + (TARGET_MIPS16 ? 6 : 8))
++  /* True if this is an interrupt handler that should keep interrupts
++     masked.  */
++  bool keep_interrupts_masked_p;
++
++  /* True if this is an interrupt handler that should use DERET
++     instead of ERET.  */
++  bool use_debug_exception_return_p;
+ };
  
- #define MIPS16_PIC_TEMP gen_rtx_REG (Pmode, MIPS16_PIC_TEMP_REGNUM)
- #define MIPS_PROLOGUE_TEMP(MODE) gen_rtx_REG (MODE, MIPS_PROLOGUE_TEMP_REGNUM)
-@@ -2284,14 +2338,7 @@
-       (mips_abi == ABI_EABI && UNITS_PER_FPVALUE >= UNITS_PER_DOUBLE)
+ /* Information about a single argument.  */
+@@ -542,9 +567,16 @@ const enum reg_class mips_regno_to_class
+   ALL_REGS,   ALL_REGS,       ALL_REGS,       ALL_REGS
+ };
  
++#ifdef CVMX_SHARED_BSS_FLAGS
++static tree octeon_handle_cvmx_shared_attribute (tree *, tree, tree, int, bool *);
++#endif
++
+ /* The value of TARGET_ATTRIBUTE_TABLE.  */
+ const struct attribute_spec mips_attribute_table[] = {
+   /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler } */
++#ifdef CVMX_SHARED_BSS_FLAGS
++  { "cvmx_shared", 0, 0, true, false, false, octeon_handle_cvmx_shared_attribute },
++#endif
+   { "long_call",   0, 0, false, true,  true,  NULL },
+   { "far",               0, 0, false, true,  true,  NULL },
+   { "near",        0, 0, false, true,  true,  NULL },
+@@ -554,6 +586,11 @@ const struct attribute_spec mips_attribu
+      code generation but don't carry other semantics.  */
+   { "mips16",            0, 0, true,  false, false, NULL },
+   { "nomips16",    0, 0, true,  false, false, NULL },
++  /* Allow functions to be specified as interrupt handlers */
++  { "interrupt",   0, 0, false, true,  true, NULL },
++  { "use_shadow_register_set",        0, 0, false, true,  true, NULL },
++  { "keep_interrupts_masked", 0, 0, false, true,  true, NULL },
++  { "use_debug_exception_return", 0, 0, false, true,  true, NULL },
+   { NULL,        0, 0, false, false, false, NULL }
+ };
  \f
--/* Say that the epilogue uses the return address register.  Note that
--   in the case of sibcalls, the values "used by the epilogue" are
--   considered live at the start of the called function.
--
--   If using a GOT, say that the epilogue also uses GOT_VERSION_REGNUM.
--   See the comment above load_call<mode> for details.  */
--#define EPILOGUE_USES(REGNO) \
--  ((REGNO) == 31 || (TARGET_USE_GOT && (REGNO) == GOT_VERSION_REGNUM))
-+#define EPILOGUE_USES(REGNO)  mips_epilogue_uses (REGNO)
+@@ -659,6 +696,11 @@ static const struct mips_cpu_info mips_c
+   { "74kx", PROCESSOR_74KF1_1, 33, 0 },
+   { "74kf3_2", PROCESSOR_74KF3_2, 33, 0 },
  
- /* Treat LOC as a byte offset from the stack pointer and round it up
-    to the next fully-aligned offset.  */
-diff -Nur a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
---- a/gcc/config/mips/mips.md  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/mips.md  2010-01-25 09:50:29.035686224 +0100
-@@ -67,7 +67,16 @@
-    (UNSPEC_SET_GOT_VERSION    46)
-    (UNSPEC_UPDATE_GOT_VERSION 47)
-    (UNSPEC_COPYGP             48)
-+   (UNSPEC_ERET                       49)
-+   (UNSPEC_DERET              50)
-+   (UNSPEC_DI                 51)
-+   (UNSPEC_EHB                        52)
-+   (UNSPEC_RDPGPR             53)
-+   (UNSPEC_COP0                       54)
-    
-+   (UNSPEC_UNALIGNED_LOAD     60)
-+   (UNSPEC_UNALIGNED_STORE    61)
++  { "1004kc", PROCESSOR_24KC, 33, 0 }, /* 1004K with MT/DSP.  */
++  { "1004kf2_1", PROCESSOR_24KF2_1, 33, 0 },
++  { "1004kf", PROCESSOR_24KF2_1, 33, 0 },
++  { "1004kf1_1", PROCESSOR_24KF1_1, 33, 0 },
 +
-    (UNSPEC_ADDRESS_FIRST      100)
-    (TLS_GET_TP_REGNUM         3)
-@@ -372,6 +381,12 @@
- ;; frsqrt       floating point reciprocal square root
- ;; frsqrt1      floating point reciprocal square root step1
- ;; frsqrt2      floating point reciprocal square root step2
-+;; dspmac       DSP MAC instructions not saturating the accumulator
-+;; dspmacsat    DSP MAC instructions that saturate the accumulator
-+;; accext       DSP accumulator extract instructions
-+;; accmod       DSP accumulator modify instructions
-+;; dspalu       DSP ALU instructions not saturating the result
-+;; dspalusat    DSP ALU instructions that saturate the result
- ;; multi      multiword sequence (or user asm statements)
- ;; nop                no operation
- ;; ghost      an instruction that produces no real code
-@@ -380,7 +395,7 @@
-    prefetch,prefetchx,condmove,mtc,mfc,mthilo,mfhilo,const,arith,logical,
-    shift,slt,signext,clz,pop,trap,imul,imul3,imul3nc,imadd,idiv,idiv3,move,
-    fmove,fadd,fmul,fmadd,fdiv,frdiv,frdiv1,frdiv2,fabs,fneg,fcmp,fcvt,fsqrt,
--   frsqrt,frsqrt1,frsqrt2,multi,nop,ghost"
-+   frsqrt,frsqrt1,frsqrt2,dspmac,dspmacsat,accext,accmod,dspalu,dspalusat,multi,nop,ghost"
-   (cond [(eq_attr "jal" "!unset") (const_string "call")
-        (eq_attr "got" "load") (const_string "load")
-@@ -3565,7 +3580,9 @@
-       (unspec:GPR [(match_operand:BLK 1 "memory_operand" "m")
-                    (match_operand:QI 2 "memory_operand" "m")]
-                   UNSPEC_LOAD_LEFT))]
--  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
-+  "!TARGET_MIPS16
-+   && !ISA_HAS_UL_US
-+   && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
-   "<load>l\t%0,%2"
-   [(set_attr "move_type" "load")
-    (set_attr "mode" "<MODE>")])
-@@ -3576,7 +3593,9 @@
-                    (match_operand:QI 2 "memory_operand" "m")
-                    (match_operand:GPR 3 "register_operand" "0")]
-                   UNSPEC_LOAD_RIGHT))]
--  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
-+  "!TARGET_MIPS16
-+   && !ISA_HAS_UL_US
-+   && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
-   "<load>r\t%0,%2"
-   [(set_attr "move_type" "load")
-    (set_attr "mode" "<MODE>")])
-@@ -3586,7 +3605,9 @@
-       (unspec:BLK [(match_operand:GPR 1 "reg_or_0_operand" "dJ")
-                    (match_operand:QI 2 "memory_operand" "m")]
-                   UNSPEC_STORE_LEFT))]
--  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
-+  "!TARGET_MIPS16
-+   && !ISA_HAS_UL_US
-+   && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
-   "<store>l\t%z1,%2"
-   [(set_attr "move_type" "store")
-    (set_attr "mode" "<MODE>")])
-@@ -3602,6 +3623,28 @@
-   [(set_attr "move_type" "store")
-    (set_attr "mode" "<MODE>")])
+   /* MIPS64 processors.  */
+   { "5kc", PROCESSOR_5KC, 64, 0 },
+   { "5kf", PROCESSOR_5KF, 64, 0 },
+@@ -1064,13 +1106,7 @@ static const struct mips_rtx_cost_data m
+     DEFAULT_COSTS
+   },
+   { /* XLR */
+-    /* Need to replace first five with the costs of calling the appropriate 
+-       libgcc routine.  */
+-    COSTS_N_INSNS (256),          /* fp_add */
+-    COSTS_N_INSNS (256),          /* fp_mult_sf */
+-    COSTS_N_INSNS (256),          /* fp_mult_df */
+-    COSTS_N_INSNS (256),          /* fp_div_sf */
+-    COSTS_N_INSNS (256),          /* fp_div_df */
++    SOFT_FP_COSTS,
+     COSTS_N_INSNS (8),            /* int_mult_si */
+     COSTS_N_INSNS (8),            /* int_mult_di */
+     COSTS_N_INSNS (72),           /* int_div_si */
+@@ -1172,6 +1208,42 @@ mips_nomips16_decl_p (const_tree decl)
+   return lookup_attribute ("nomips16", DECL_ATTRIBUTES (decl)) != NULL;
+ }
  
-+;; Unaligned load and store patterns.
-+
-+(define_insn "mov_u<load>"
-+  [(set (match_operand:GPR 0 "register_operand" "=d")
-+      (unspec:GPR [(match_operand:BLK 1 "memory_operand" "m")
-+                   (match_operand:QI 2 "memory_operand" "m")]
-+                  UNSPEC_UNALIGNED_LOAD))]
-+  "ISA_HAS_UL_US && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
-+  "u<load>\t%0,%2"
-+  [(set_attr "type" "load")
-+   (set_attr "mode" "<MODE>")])
++/* Check if the interrupt attribute is set for a function.  */
 +
-+(define_insn "mov_u<store>"
-+  [(set (match_operand:BLK 0 "memory_operand" "=m")
-+      (unspec:BLK [(match_operand:GPR 1 "reg_or_0_operand" "dJ")
-+                   (match_operand:QI 2 "memory_operand" "m")]
-+                  UNSPEC_UNALIGNED_STORE))]
-+  "ISA_HAS_UL_US && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
-+  "u<store>\t%z1,%2"
-+  [(set_attr "type" "store")
-+   (set_attr "mode" "<MODE>")])
++static bool
++mips_interrupt_type_p (tree type)
++{
++  return lookup_attribute ("interrupt", TYPE_ATTRIBUTES (type)) != NULL;
++}
 +
- ;; An instruction to calculate the high part of a 64-bit SYMBOL_ABSOLUTE.
- ;; The required value is:
- ;;
-@@ -5472,6 +5515,26 @@
-       return "%*b\t%l0%/";
-       else
-       {
-+        if (final_sequence && (mips_abi == ABI_32 || mips_abi == ABI_O64))
-+          {
-+              /* If the delay slot contains a $gp restore, we need to
-+                 do that first, because we need it for the load
-+               label.  Other ABIs do not have caller-save $gp.  */
-+            rtx next = NEXT_INSN (insn);
-+            if (INSN_P (next) && !INSN_DELETED_P (next))
-+              {
-+                rtx pat = PATTERN (next);
-+                if (GET_CODE (pat) == SET
-+                    && REG_P (SET_DEST (pat))
-+                    && REGNO (SET_DEST (pat)) == PIC_OFFSET_TABLE_REGNUM)
-+                  {
-+                    rtx ops[2];
-+                    ops[0] = SET_DEST (pat);
-+                    ops[1] = SET_SRC (pat);
-+                    output_asm_insn (mips_output_move (ops[0], ops[1]), ops);
-+                  }
-+              }
-+          }
-         output_asm_insn (mips_output_load_label (), operands);
-         return "%*jr\t%@%/%]";
-       }
-@@ -5490,7 +5553,13 @@
-             (lt (abs (minus (match_dup 0)
-                             (plus (pc) (const_int 4))))
-                 (const_int 131072)))
--       (const_int 4) (const_int 16)))])
-+       (const_int 4)
-+         (if_then_else
-+          ;; for these two ABIs we may need to move a restore of $gp
-+          (ior (eq (symbol_ref "mips_abi") (symbol_ref "ABI_32"))
-+               (eq (symbol_ref "mips_abi") (symbol_ref "ABI_O64")))
-+          (const_int 20)
-+          (const_int 16))))])
- ;; We need a different insn for the mips16, because a mips16 branch
- ;; does not have a delay slot.
-@@ -5679,6 +5748,60 @@
-   [(set_attr "type"   "jump")
-    (set_attr "mode"   "none")])
-+;; Exception return.
-+(define_insn "mips_eret"
-+  [(return)
-+   (unspec_volatile [(const_int 0)] UNSPEC_ERET)]
-+  ""
-+  "eret"
-+  [(set_attr "type"   "trap")
-+   (set_attr "mode"   "none")])
++/* Check if the attribute to use shadow register set is set for a function.  */
 +
-+;; Debug exception return.
-+(define_insn "mips_deret"
-+  [(return)
-+   (unspec_volatile [(const_int 0)] UNSPEC_DERET)]
-+  ""
-+  "deret"
-+  [(set_attr "type"   "trap")
-+   (set_attr "mode"   "none")])
++static bool
++mips_use_shadow_register_set_p (tree type)
++{
++  return lookup_attribute ("use_shadow_register_set",
++                         TYPE_ATTRIBUTES (type)) != NULL;
++}
 +
-+;; Disable interrupts.
-+(define_insn "mips_di"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_DI)]
-+  ""
-+  "di"
-+  [(set_attr "type"   "trap")
-+   (set_attr "mode"   "none")])
++/* Check if the attribute to keep interrupts masked is set for a function.  */
 +
-+;; Execution hazard barrier.
-+(define_insn "mips_ehb"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_EHB)]
-+  ""
-+  "ehb"
-+  [(set_attr "type"   "trap")
-+   (set_attr "mode"   "none")])
++static bool
++mips_keep_interrupts_masked_p (tree type)
++{
++  return lookup_attribute ("keep_interrupts_masked",
++                         TYPE_ATTRIBUTES (type)) != NULL;
++}
 +
-+;; Read GPR from previous shadow register set.
-+(define_insn "mips_rdpgpr"
-+  [(set (match_operand:SI 0 "register_operand" "=d")
-+      (unspec_volatile:SI [(match_operand:SI 1 "register_operand" "d")]
-+                          UNSPEC_RDPGPR))]
-+  ""
-+  "rdpgpr\t%0,%1"
-+  [(set_attr "type"   "move")
-+   (set_attr "mode"   "SI")])
++/* Check if the attribute to use debug exception return is set for
++   a function.  */
 +
-+;; Move involving COP0 registers.
-+(define_insn "cop0_move"
-+  [(set (match_operand:SI 0 "register_operand" "=B,d")
-+      (unspec_volatile:SI [(match_operand:SI 1 "register_operand" "d,B")]
-+                          UNSPEC_COP0))]
-+  ""
-+{ return mips_output_move (operands[0], operands[1]); }
-+  [(set_attr "type"   "mtc,mfc")
-+   (set_attr "mode"   "SI")])
++static bool
++mips_use_debug_exception_return_p (tree type)
++{
++  return lookup_attribute ("use_debug_exception_return",
++                         TYPE_ATTRIBUTES (type)) != NULL;
++}
 +
- ;; This is used in compiling the unwind routines.
- (define_expand "eh_return"
-   [(use (match_operand 0 "general_operand"))]
-diff -Nur a/gcc/config/mips/mips.opt b/gcc/config/mips/mips.opt
---- a/gcc/config/mips/mips.opt 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/mips.opt 2010-01-25 09:50:29.035686224 +0100
-@@ -184,6 +184,10 @@
- Target Report RejectNegative Mask(MIPS16)
- Generate MIPS16 code
+ /* Return true if function DECL is a MIPS16 function.  Return the ambient
+    setting if DECL is null.  */
  
-+mips16e
-+Target Report RejectNegative Mask(MIPS16) MaskExists
-+Deprecated; alias for -mips16
-+
- mips3d
- Target Report RejectNegative Mask(MIPS3D)
- Use MIPS-3D instructions
-@@ -236,6 +240,10 @@
- Target Report RejectNegative InverseMask(MIPS3D)
- Do not use MIPS-3D instructions
+@@ -2817,7 +2889,7 @@ bool
+ mips_legitimize_address (rtx *xloc, enum machine_mode mode)
+ {
+   rtx base, addr;
+-  HOST_WIDE_INT offset;
++  HOST_WIDE_INT intval, high, offset;
  
-+mocteon-useun
-+Target Report Mask(OCTEON_UNALIGNED)
-+Use Octeon-specific unaligned loads/stores for 32/64-bit data
+   if (mips_tls_symbol_p (*xloc))
+     {
+@@ -2842,6 +2914,32 @@ mips_legitimize_address (rtx *xloc, enum
+       *xloc = mips_force_address (addr, mode);
+       return true;
+     }
 +
- mpaired-single
- Target Report Mask(PAIRED_SINGLE_FLOAT)
- Use paired-single floating-point instructions
-diff -Nur a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h
---- a/gcc/config/mips/mips-protos.h    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/mips-protos.h    2010-01-25 09:50:29.035686224 +0100
-@@ -261,6 +261,8 @@
- extern void mips_output_external (FILE *, tree, const char *);
- extern void mips_output_filename (FILE *, const char *);
- extern void mips_output_ascii (FILE *, const char *, size_t);
-+extern void octeon_output_shared_variable (FILE *, tree, const char *,
-+                                         unsigned HOST_WIDE_INT, int);
- extern void mips_output_aligned_decl_common (FILE *, tree, const char *,
-                                            unsigned HOST_WIDE_INT,
-                                            unsigned int);
-@@ -307,6 +309,8 @@
- extern bool mips_linked_madd_p (rtx, rtx);
- extern bool mips_store_data_bypass_p (rtx, rtx);
- extern rtx mips_prefetch_cookie (rtx, rtx);
-+extern int mips_mult_madd_chain_bypass_p (rtx, rtx);
-+extern int mips_dspalu_bypass_p (rtx, rtx);
- extern void irix_asm_output_align (FILE *, unsigned);
- extern const char *current_section_name (void);
-@@ -332,4 +336,6 @@
++ /* Handle references to constant addresses by loading the high part
++    into a register and using an offset for the low part.  */
++ if (GET_CODE (base) == CONST_INT)
++   {
++     intval = INTVAL (base);
++     high = trunc_int_for_mode (CONST_HIGH_PART (intval), Pmode);
++     offset = CONST_LOW_PART (intval);
++     /* Ignore cases in which a positive address would be accessed by a
++      negative offset from a negative address.  The required wraparound
++      does not occur for 32-bit addresses on 64-bit targets, and it is
++      very unlikely that such an access would occur in real code anyway.
++
++      If the low offset is not legitimate for MODE, prefer to load
++      the constant normally, instead of using mips_force_address on
++      the legitimized address.  The latter option would cause us to
++      use (D)ADDIU unconditionally, but LUI/ORI is more efficient
++      than LUI/ADDIU on some targets.  */
++     if ((intval < 0 || high > 0)
++        && mips_valid_offset_p (GEN_INT (offset), mode))
++      {
++        base = mips_force_temporary (NULL, GEN_INT (high));
++        *xloc = plus_constant (base, offset);
++        return true;
++      }
++   }
+   return false;
+ }
  
- extern void mips_expand_vector_init (rtx, rtx);
+@@ -6210,6 +6308,11 @@ mips_function_ok_for_sibcall (tree decl,
+   if (!TARGET_SIBCALLS)
+     return false;
  
-+extern bool mips_epilogue_uses (unsigned int);
-+
- #endif /* ! GCC_MIPS_PROTOS_H */
-diff -Nur a/gcc/config/mips/montavista-linux.h b/gcc/config/mips/montavista-linux.h
---- a/gcc/config/mips/montavista-linux.h       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/montavista-linux.h       2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,54 @@
-+/* MontaVista GNU/Linux Configuration.
-+   Copyright (C) 2009
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
-+
-+/* Override linux64.h to default to O32.  */
-+#undef SUBTARGET_SELF_SPECS
-+#define SUBTARGET_SELF_SPECS \
-+NO_SHARED_SPECS, \
-+"%{!EB:%{!EL:%(endian_spec)}}", \
-+"%{!mabi=*: -mabi=32}"
-+
-+/* We do not need to provide an explicit big-endian multilib.  */
-+#undef MULTILIB_DEFAULTS
-+#define MULTILIB_DEFAULTS \
-+  { "meb", "mabi=32" }
-+
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{mel:%{msoft-float:/mel/soft-float ;      \
-+           :/mel} ;                           \
-+     msoft-float:/soft-float}"
-+
-+/* MULTILIB_OSDIRNAMES provides directory names used in two ways:
-+   relative to $target/lib/ in the GCC installation, and relative to
-+   lib/ and usr/lib/ in a sysroot.  For the latter, we want names such
-+   as plain ../lib64, but these cannot be used outside the sysroot
-+   because different multilibs would be mapped to the same directory.
-+   Directories are searched both with and without the multilib suffix,
-+   so it suffices if the directory without the suffix is correct
-+   within the sysroot while the directory with the suffix doesn't
-+   exist.  We use STARTFILE_PREFIX_SPEC to achieve the desired
-+   effect.  */
-+#undef STARTFILE_PREFIX_SPEC
-+#define STARTFILE_PREFIX_SPEC                         \
-+  "%{mabi=32: /usr/local/lib/ /lib/ /usr/lib/}                \
-+   %{mabi=n32: /usr/local/lib32/ /lib32/ /usr/lib32/} \
-+   %{mabi=64: /usr/local/lib64/ /lib64/ /usr/lib64/}"
-diff -Nur a/gcc/config/mips/octeon-elf.h b/gcc/config/mips/octeon-elf.h
---- a/gcc/config/mips/octeon-elf.h     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/octeon-elf.h     2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,98 @@
-+/* Macros for mips*-octeon-elf target.
-+   Copyright (C) 2004, 2005, 2006 Cavium Networks.
-+
-+This file is part of GCC.
-+
-+GCC 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 2, or (at your option)
-+any later version.
-+
-+GCC 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 COPYING.  If not, write to
-+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-+Boston, MA 02110-1301, USA.  */
-+
-+/* Add MASK_SOFT_FLOAT and MASK_OCTEON_UNALIGNED.  */
-+
-+#undef TARGET_DEFAULT
-+#define TARGET_DEFAULT (MASK_SOFT_FLOAT_ABI | MASK_OCTEON_UNALIGNED)
++  /* Interrupt handlers need special epilogue code and therefore can't
++     use sibcalls.  */
++  if (mips_interrupt_type_p (TREE_TYPE (current_function_decl)))
++    return false;
 +
-+/* Forward -m*octeon-useun.  */
+   /* We can't do a sibcall if the called function is a MIPS16 function
+      because there is no direct "jx" instruction equivalent to "jalx" to
+      switch the ISA mode.  We only care about cases where the sibling
+@@ -6655,6 +6758,15 @@ mips_expand_ext_as_unaligned_load (rtx d
+   if (!mips_get_unaligned_mem (&src, width, bitpos, &left, &right))
+     return false;
++  if (ISA_HAS_UL_US)
++    {
++      if (GET_MODE (dest) == DImode)
++      emit_insn (gen_mov_uld (dest, src, left));
++      else
++      emit_insn (gen_mov_ulw (dest, src, left));
++      return true;
++    }
 +
-+#undef SUBTARGET_ASM_SPEC
-+#define SUBTARGET_ASM_SPEC "%{mno-octeon-useun} %{!mno-octeon-useun:-mocteon-useun}"
+   temp = gen_reg_rtx (GET_MODE (dest));
+   if (GET_MODE (dest) == DImode)
+     {
+@@ -6689,6 +6801,16 @@ mips_expand_ins_as_unaligned_store (rtx 
+   mode = mode_for_size (width, MODE_INT, 0);
+   src = gen_lowpart (mode, src);
 +
-+/* Enable backtrace including on machine exceptions by default.  */
++  if (ISA_HAS_UL_US)
++    {
++      if (GET_MODE (src) == DImode)
++        emit_insn (gen_mov_usd (dest, src, left));
++      else
++        emit_insn (gen_mov_usw (dest, src, left));
++      return true;
++    }
 +
-+#undef SUBTARGET_CC1_SPEC
-+#define SUBTARGET_CC1_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}"
+   if (mode == DImode)
+     {
+       emit_insn (gen_mov_sdl (dest, src, left));
+@@ -7276,7 +7398,11 @@ mips_print_operand (FILE *file, rtx op, 
+               || (letter == 'L' && TARGET_BIG_ENDIAN)
+               || letter == 'D')
+             regno++;
+-          fprintf (file, "%s", reg_names[regno]);
++          /* We need to print $0 .. $31 for COP0 registers.  */
++          if (COP0_REG_P (regno))
++            fprintf (file, "$%s", &reg_names[regno][4]);
++          else
++            fprintf (file, "%s", reg_names[regno]);
+         }
+         break;
+@@ -7416,6 +7542,12 @@ mips_in_small_data_p (const_tree decl)
+   if (TARGET_ABICALLS || TARGET_VXWORKS_RTP)
+     return false;
++#ifdef CVMX_SHARED_BSS_FLAGS
++  if (TARGET_OCTEON && TREE_CODE (decl) == VAR_DECL
++      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
++    return false;
++#endif
 +
-+/* Without ASM_PREFERRED_EH_DATA_FORMAT, output_call_frame_info emits
-+   pointer-sized addresses for FDE addresses.  For 64-bit targets, it does
-+   it without properly "switching over" to 64-bit as described in the DWARF3
-+   spec. GDB can fall back on .eh_frames and misinterpret FDE addresses.
-+   Instead let's be explicit and use augmentation to describe the encoding if
-+   pointer size is 64.  */
+   if (TREE_CODE (decl) == VAR_DECL && DECL_SECTION_NAME (decl) != 0)
+     {
+       const char *name;
+@@ -7642,6 +7774,37 @@ mips_dwarf_register_span (rtx reg)
+   return NULL_RTX;
+ }
++/* DSP ALU can bypass data with no delays for the following pairs. */
++enum insn_code dspalu_bypass_table[][2] =
++{
++  {CODE_FOR_mips_addsc, CODE_FOR_mips_addwc},
++  {CODE_FOR_mips_cmpu_eq_qb, CODE_FOR_mips_pick_qb},
++  {CODE_FOR_mips_cmpu_lt_qb, CODE_FOR_mips_pick_qb},
++  {CODE_FOR_mips_cmpu_le_qb, CODE_FOR_mips_pick_qb},
++  {CODE_FOR_mips_cmp_eq_ph, CODE_FOR_mips_pick_ph},
++  {CODE_FOR_mips_cmp_lt_ph, CODE_FOR_mips_pick_ph},
++  {CODE_FOR_mips_cmp_le_ph, CODE_FOR_mips_pick_ph},
++  {CODE_FOR_mips_wrdsp, CODE_FOR_mips_insv}
++};
 +
-+#undef ASM_PREFERRED_EH_DATA_FORMAT
-+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
-+  ((CODE) == 1 && POINTER_SIZE == 64                                    \
-+   ? (ABI_HAS_64BIT_SYMBOLS ? DW_EH_PE_udata8 : DW_EH_PE_udata4)        \
-+   : DW_EH_PE_absptr)
++int
++mips_dspalu_bypass_p (rtx out_insn, rtx in_insn)
++{
++  int i;
++  int num_bypass = (sizeof (dspalu_bypass_table)
++                  / (2 * sizeof (enum insn_code)));
++  enum insn_code out_icode = INSN_CODE (out_insn);
++  enum insn_code in_icode = INSN_CODE (in_insn);
 +
-+/* Link to libc library.  */
++  for (i = 0; i < num_bypass; i++)
++    {
++      if (out_icode == dspalu_bypass_table[i][0]
++        && in_icode == dspalu_bypass_table[i][1])
++       return true;
++    }
 +
-+#undef LIB_SPEC
-+#define LIB_SPEC "-lc"
++  return false;
++}
+ /* Implement ASM_OUTPUT_ASCII.  */
+ void
+@@ -7866,11 +8029,19 @@ mips_file_start (void)
+                "\t.previous\n", TARGET_LONG64 ? 64 : 32);
+ #ifdef HAVE_AS_GNU_ATTRIBUTE
++#ifdef TARGET_MIPS_SDEMTK
++     fprintf (asm_out_file, "\t.gnu_attribute 4, %d\n",
++             (!TARGET_NO_FLOAT
++              ? (TARGET_HARD_FLOAT
++                 ? (TARGET_DOUBLE_FLOAT
++                    ? ((!TARGET_64BIT && TARGET_FLOAT64) ? 4 : 1) : 2) : 3) : 0));
++#else
+       fprintf (asm_out_file, "\t.gnu_attribute 4, %d\n",
+              (TARGET_HARD_FLOAT_ABI
+               ? (TARGET_DOUBLE_FLOAT
+                  ? ((!TARGET_64BIT && TARGET_FLOAT64) ? 4 : 1) : 2) : 3));
+ #endif
++#endif
+     }
+   /* If TARGET_ABICALLS, tell GAS to generate -KPIC code.  */
+@@ -8483,12 +8654,53 @@ mips_global_pointer (void)
+   return GLOBAL_POINTER_REGNUM;
+ }
++/* Return true if REGNO is a register that is ordinarily call-clobbered
++   but must nevertheless be preserved by an interrupt handler.  */
 +
-+/* Link to startup file.  */
++static bool
++mips_interrupt_extra_call_saved_reg_p (unsigned int regno)
++{
++  if (MD_REG_P (regno))
++    return true;
 +
-+#undef STARTFILE_SPEC
-+#define STARTFILE_SPEC "crti%O%s crtbegin%O%s crt0%O%s"
++  if (TARGET_DSP && DSP_ACC_REG_P (regno))
++    return true;
 +
-+/* Default our test-only n64 configuration to -G0 since that is what
-+   the kernel uses.  */
++  if (GP_REG_P (regno) && !cfun->machine->use_shadow_register_set_p)
++    {
++      /* $0 is hard-wired.  */
++      if (regno == GP_REG_FIRST)
++      return false;
 +
-+#undef SUBTARGET_SELF_SPECS
-+#define SUBTARGET_SELF_SPECS \
-+"%{mabi=64:%{!G*: -G0}}"
++      /* The interrupt handler can treat kernel registers as
++       scratch registers.  */
++      if (KERNEL_REG_P (regno))
++      return false;
 +
-+/* Pass linker emulation mode for N32.  */
++      /* The function will return the stack pointer to its original value
++       anyway.  */
++      if (regno == STACK_POINTER_REGNUM)
++      return false;
 +
-+#undef LINK_SPEC
-+#define LINK_SPEC "\
-+%(endian_spec) \
-+%{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \
-+%{mips64r2} %{bestGnum} %{shared} %{non_shared} \
-+%{mabi=n32:-melf32e%{!EL:b}%{EL:l}octeonn32} \
-+%{mabi=64:-melf64e%{!EL:b}%{EL:l}octeon}"
++      /* Otherwise, return true for registers that aren't ordinarily
++       call-clobbered.  */
++      return call_really_used_regs[regno];
++    }
 +
-+/* Override because of N32.  */
++  return false;
++}
 +
-+#undef LOCAL_LABEL_PREFIX
-+#define LOCAL_LABEL_PREFIX ((mips_abi == ABI_N32) ? "." : "$")
+ /* Return true if the current function should treat register REGNO
+    as call-saved.  */
+ static bool
+ mips_cfun_call_saved_reg_p (unsigned int regno)
+ {
++  /* Interrupt handlers need to save extra registers.  */
++  if (cfun->machine->interrupt_handler_p
++      && mips_interrupt_extra_call_saved_reg_p (regno))
++    return true;
 +
-+/* Append the core number to the GCOV filename FN.  */
+   /* call_insns preserve $28 unless they explicitly say otherwise,
+      so call_really_used_regs[] treats $28 as call-saved.  However,
+      we want the ABI property rather than the default call_insn
+@@ -8537,6 +8749,13 @@ mips_cfun_might_clobber_call_saved_reg_p
+   if (regno == GP_REG_FIRST + 31 && mips16_cfun_returns_in_fpr_p ())
+     return true;
++  /* If REGNO is ordinarily call-clobbered, we must assume that any
++     called function could modify it.  */
++  if (cfun->machine->interrupt_handler_p
++      && !current_function_is_leaf
++      && mips_interrupt_extra_call_saved_reg_p (regno))
++    return true;
 +
-+#define GCOV_TARGET_SUFFIX_LENGTH 2
-+#define ADD_GCOV_TARGET_SUFFIX(FN)            \
-+do                                            \
-+  {                                           \
-+    char *fn = FN;                            \
-+    int core;                                 \
-+    char s[3];                                        \
-+                                              \
-+    asm ("rdhwr %0, $0" : "=r"(core));                \
-+    sprintf (s, "%d", core);                  \
-+    strcat (fn, s);                           \
-+  }                                           \
-+while (0)
+   return false;
+ }
+@@ -8592,6 +8811,14 @@ mips_save_reg_p (unsigned int regno)
+       C |  callee-allocated save area   |
+       |  for register varargs         |
+       |                               |
++      +-------------------------------+ <-- frame_pointer_rtx
++      |                               |       + cop0_sp_offset
++      |  COP0 reg save area           |       + UNITS_PER_WORD
++      |                               |
++      +-------------------------------+ <-- frame_pointer_rtx + acc_sp_offset
++      |                               |       + UNITS_PER_WORD
++      |  accumulator save area        |
++      |                               |
+       +-------------------------------+ <-- frame_pointer_rtx + fp_sp_offset
+       |                               |       + UNITS_PER_HWFPVALUE
+       |  FPR save area                |
+@@ -8635,6 +8862,28 @@ mips_compute_frame_info (void)
+   HOST_WIDE_INT offset, size;
+   unsigned int regno, i;
++  /* Set this function's interrupt properties.  */
++  if (mips_interrupt_type_p (TREE_TYPE (current_function_decl)))
++    {
++      if (!ISA_MIPS32R2)
++      error ("the %<interrupt%> attribute requires a MIPS32r2 processor");
++      else if (TARGET_HARD_FLOAT)
++      error ("the %<interrupt%> attribute requires %<-msoft-float%>");
++      else if (TARGET_MIPS16)
++      error ("interrupt handlers cannot be MIPS16 functions");
++      else
++      {
++        cfun->machine->interrupt_handler_p = true;
++        cfun->machine->use_shadow_register_set_p =
++          mips_use_shadow_register_set_p (TREE_TYPE (current_function_decl));
++        cfun->machine->keep_interrupts_masked_p =
++          mips_keep_interrupts_masked_p (TREE_TYPE (current_function_decl));
++        cfun->machine->use_debug_exception_return_p =
++          mips_use_debug_exception_return_p (TREE_TYPE
++                                             (current_function_decl));
++      }
++    }
 +
-+/* Code to unwind through the exception frame.  */
-+#define MD_UNWIND_SUPPORT "config/mips/octeon-elf-unwind.h"
-diff -Nur a/gcc/config/mips/octeon-elf-unwind.h b/gcc/config/mips/octeon-elf-unwind.h
---- a/gcc/config/mips/octeon-elf-unwind.h      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/octeon-elf-unwind.h      2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,57 @@
-+/* Stack unwinding support through the first exception frame.
-+   Copyright (C) 2007 Cavium Networks.
+   frame = &cfun->machine->frame;
+   memset (frame, 0, sizeof (*frame));
+   size = get_frame_size ();
+@@ -8704,7 +8953,7 @@ mips_compute_frame_info (void)
+     }
+   /* Find out which FPRs we need to save.  This loop must iterate over
+-     the same space as its companion in mips_for_each_saved_reg.  */
++     the same space as its companion in mips_for_each_saved_gpr_and_fpr.  */
+   if (TARGET_HARD_FLOAT)
+     for (regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno += MAX_FPRS_PER_FMT)
+       if (mips_save_reg_p (regno))
+@@ -8720,6 +8969,47 @@ mips_compute_frame_info (void)
+       frame->fp_sp_offset = offset - UNITS_PER_HWFPVALUE;
+     }
++  /* Add in space for the interrupt context information.  */
++  if (cfun->machine->interrupt_handler_p)
++    {
++      /* Check HI/LO.  */
++      if (mips_save_reg_p (LO_REGNUM) || mips_save_reg_p (HI_REGNUM))
++      {
++        frame->num_acc++;
++        frame->acc_mask |= (1 << 0);
++      }
 +
-+This file is part of GCC.
++      /* Check accumulators 1, 2, 3.  */
++      for (i = DSP_ACC_REG_FIRST; i <= DSP_ACC_REG_LAST; i += 2)
++      if (mips_save_reg_p (i) || mips_save_reg_p (i + 1))
++        {
++          frame->num_acc++;
++          frame->acc_mask |= 1 << (((i - DSP_ACC_REG_FIRST) / 2) + 1);
++        }
 +
-+GCC 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 2, or (at your option)
-+any later version.
++      /* All interrupt context functions need space to preserve STATUS.  */
++      frame->num_cop0_regs++;
 +
-+GCC 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.
++      /* If we don't keep interrupts masked, we need to save EPC.  */
++      if (!cfun->machine->keep_interrupts_masked_p)
++      frame->num_cop0_regs++;
++    }
 +
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-+Boston, MA 02110-1301, USA.  */
++  /* Move above the accumulator save area.  */
++  if (frame->num_acc > 0)
++    {
++      /* Each accumulator needs 2 words.  */
++      offset += frame->num_acc * 2 * UNITS_PER_WORD;
++      frame->acc_sp_offset = offset - UNITS_PER_WORD;
++    }
 +
-+#define MD_FALLBACK_FRAME_STATE_FOR octeon_elf_fallback_frame_state
++  /* Move above the COP0 register save area.  */
++  if (frame->num_cop0_regs > 0)
++    {
++      offset += frame->num_cop0_regs * UNITS_PER_WORD;
++      frame->cop0_sp_offset = offset - UNITS_PER_WORD;
++    }
 +
-+/* Check whether this is the cvmx_interrupt_stage2 frame.  If the
-+   function call was dispatched via k0 assume we are in
-+   cvmx_interrupt_stage2.  In this case the sp in point to the saved
-+   register array.  */
+   /* Move above the callee-allocated varargs save area.  */
+   offset += MIPS_STACK_ALIGN (cfun->machine->varargs_size);
+   frame->arg_pointer_offset = offset;
+@@ -8733,6 +9023,10 @@ mips_compute_frame_info (void)
+     frame->gp_save_offset = frame->gp_sp_offset - offset;
+   if (frame->fp_sp_offset > 0)
+     frame->fp_save_offset = frame->fp_sp_offset - offset;
++  if (frame->acc_sp_offset > 0)
++    frame->acc_save_offset = frame->acc_sp_offset - offset;
++  if (frame->num_cop0_regs > 0)
++    frame->cop0_save_offset = frame->cop0_sp_offset - offset;
+   /* MIPS16 code offsets the frame pointer by the size of the outgoing
+      arguments.  This tends to increase the chances of using unextended
+@@ -8929,12 +9223,41 @@ mips_save_restore_reg (enum machine_mode
+   fn (gen_rtx_REG (mode, regno), mem);
+ }
++/* Call FN for each accumlator that is saved by the current function.
++   SP_OFFSET is the offset of the current stack pointer from the start
++   of the frame.  */
 +
-+static _Unwind_Reason_Code
-+octeon_elf_fallback_frame_state (struct _Unwind_Context *context,
-+                               _Unwind_FrameState *fs)
++static void
++mips_for_each_saved_acc (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
 +{
-+  unsigned i;
-+  unsigned *pc = context->ra;
++  HOST_WIDE_INT offset;
++  int regno;
 +
-+  /* Look for "jalr k0".  */
-+  if (pc[-2] != 0x0340f809)
-+    return _URC_END_OF_STACK;
-+  
-+  for (i = 0; i < 32; i++)
++  offset = cfun->machine->frame.acc_sp_offset - sp_offset;
++  if (BITSET_P (cfun->machine->frame.acc_mask, 0))
 +    {
-+      fs->regs.reg[i].how = REG_SAVED_OFFSET;
-+      fs->regs.reg[i].loc.offset = 8 * i;
++      mips_save_restore_reg (word_mode, LO_REGNUM, offset, fn);
++      offset -= UNITS_PER_WORD;
++      mips_save_restore_reg (word_mode, HI_REGNUM, offset, fn);
++      offset -= UNITS_PER_WORD;
 +    }
 +
-+  /* Keep the next frame's sp.  This way we have a CFA that points
-+     exactly to the register array.  */
-+  fs->regs.cfa_how = CFA_REG_OFFSET;
-+  fs->regs.cfa_reg = STACK_POINTER_REGNUM;
-+  fs->regs.cfa_offset = 0;
-+
-+  /* DEPC is saved as the 35. register.  */
-+  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].how = REG_SAVED_OFFSET;
-+  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].loc.offset = 8 * 35;
-+  fs->retaddr_column = DWARF_ALT_FRAME_RETURN_COLUMN;
-+
-+  return _URC_NO_REASON;
++  for (regno = DSP_ACC_REG_FIRST; regno <= DSP_ACC_REG_LAST; regno++)
++    if (BITSET_P (cfun->machine->frame.acc_mask,
++                ((regno - DSP_ACC_REG_FIRST) / 2) + 1))
++      {
++      mips_save_restore_reg (word_mode, regno, offset, fn);
++      offset -= UNITS_PER_WORD;
++      }
 +}
-diff -Nur a/gcc/config/mips/octeon.h b/gcc/config/mips/octeon.h
---- a/gcc/config/mips/octeon.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/octeon.h 2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,68 @@
-+/* Macros for mips*-octeon-* target.
-+   Copyright (C) 2004, 2005, 2006 Cavium Networks.
-+
-+This file is part of GCC.
-+
-+GCC 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 2, or (at your option)
-+any later version.
-+
-+GCC 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 COPYING.  If not, write to
-+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
-+Boston, MA 02110-1301, USA.  */
-+
-+#define CVMX_SHARED_BSS_FLAGS (SECTION_WRITE | SECTION_BSS)
-+
-+#undef TARGET_ASM_SELECT_SECTION
-+#define TARGET_ASM_SELECT_SECTION octeon_select_section
-+
-+#undef TARGET_ASM_UNIQUE_SECTION
-+#define TARGET_ASM_UNIQUE_SECTION octeon_unique_section
 +
-+/* Implement ASM_OUTPUT_ALIGNED_DECL_LOCAL. This differs from the 
-+   generic version only in the use of cvmx_shared attribute.  */
-+ 
-+#undef ASM_OUTPUT_ALIGNED_DECL_LOCAL
-+#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(STREAM, DECL, NAME, SIZE, ALIGN) \
-+  do                                                                  \
-+    {                                                                 \
-+      if ((DECL) && TREE_CODE ((DECL)) == VAR_DECL                    \
-+        && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (DECL)))  \
-+      {                                                               \
-+           fprintf ((STREAM), "%s", LOCAL_ASM_OP);                    \
-+           assemble_name ((STREAM), (NAME));                          \
-+           fprintf ((STREAM), "\n");                                  \
-+         octeon_output_shared_variable ((STREAM), (DECL), (NAME),     \
-+                                        (SIZE), (ALIGN));             \
-+       }                                                              \
-+      else                                                            \
-+      ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGN);           \
-+    }                                                                 \
-+  while (0) 
-+
-+\f
-+/* Implement ASM_OUTPUT_ALIGNED_DECL_COMMON.  This differs from the mips 
-+   version only in the use of cvmx_shared attribute.  */
-+
-+#undef ASM_OUTPUT_ALIGNED_DECL_COMMON
-+#define ASM_OUTPUT_ALIGNED_DECL_COMMON(STREAM, DECL, NAME, SIZE, ALIGN)          \
-+  {                                                                      \
-+    if (TREE_CODE ((DECL)) == VAR_DECL                                           \
-+        && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES ((DECL))))           \
-+      {                                                                          \
-+      if (TREE_PUBLIC ((DECL)) && DECL_NAME ((DECL)))                    \
-+        targetm.asm_out.globalize_label (asm_out_file, (NAME));          \
-+      octeon_output_shared_variable ((STREAM), (DECL), (NAME),           \
-+                                     (SIZE), (ALIGN));                   \
-+      }                                                                          \
-+    else                                                                 \
-+      mips_output_aligned_decl_common ((STREAM), (DECL), (NAME), (SIZE),   \
-+                                     (ALIGN));                           \
-+   }
-diff -Nur a/gcc/config/mips/predicates.md b/gcc/config/mips/predicates.md
---- a/gcc/config/mips/predicates.md    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/predicates.md    2010-01-25 09:50:29.035686224 +0100
-@@ -211,6 +211,20 @@
+ /* Call FN for each register that is saved by the current function.
+    SP_OFFSET is the offset of the current stack pointer from the start
+    of the frame.  */
+ static void
+-mips_for_each_saved_reg (HOST_WIDE_INT sp_offset, mips_save_restore_fn fn)
++mips_for_each_saved_gpr_and_fpr (HOST_WIDE_INT sp_offset,
++                               mips_save_restore_fn fn)
+ {
+   enum machine_mode fpr_mode;
+   HOST_WIDE_INT offset;
+@@ -9122,13 +9445,24 @@ mips_save_reg (rtx reg, rtx mem)
      }
- })
+   else
+     {
+-      if (TARGET_MIPS16
+-        && REGNO (reg) != GP_REG_FIRST + 31
+-        && !M16_REG_P (REGNO (reg)))
+-      {
+-        /* Save a non-MIPS16 register by moving it through a temporary.
+-           We don't need to do this for $31 since there's a special
+-           instruction for it.  */
++      if (REGNO (reg) == HI_REGNUM)
++      {
++        if (TARGET_64BIT)
++          emit_insn (gen_mfhidi_ti (MIPS_PROLOGUE_TEMP (DImode),
++                                    gen_rtx_REG (TImode, MD_REG_FIRST)));
++        else
++          emit_insn (gen_mfhisi_di (MIPS_PROLOGUE_TEMP (SImode),
++                                    gen_rtx_REG (DImode, MD_REG_FIRST)));
++        mips_emit_move (mem, MIPS_PROLOGUE_TEMP (GET_MODE (reg)));
++      }
++      else if ((TARGET_MIPS16
++              && REGNO (reg) != GP_REG_FIRST + 31
++              && !M16_REG_P (REGNO (reg)))
++             || ACC_REG_P (REGNO (reg)))
++      {
++        /* If the register has no direct store instruction, move it
++           through a temporary.  Note that there's a special MIPS16
++           instruction to save $31.  */
+         mips_emit_move (MIPS_PROLOGUE_TEMP (GET_MODE (reg)), reg);
+         mips_emit_move (mem, MIPS_PROLOGUE_TEMP (GET_MODE (reg)));
+       }
+@@ -9200,6 +9534,14 @@ mips_emit_loadgp (void)
+     emit_insn (gen_loadgp_blockage ());
+ }
  
-+(define_predicate "mask_low_and_shift_operator"
-+  (and (match_code "and")
-+       (match_test "GET_CODE (XEXP (op, 0)) == ASHIFT
-+                  && GET_CODE (XEXP (op, 1)) == CONST_INT
-+                  && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT"))
-+{
-+  int len;
-+
-+  len = mask_low_and_shift_len (GET_MODE (op),
-+                              INTVAL (XEXP (XEXP (op, 0), 1)),
-+                              INTVAL (XEXP (op, 1)));
-+  return 0 < len && len <= 32;
-+})
++/* A for_each_rtx callback.  Stop the search if *X is a kernel register.  */
 +
- (define_predicate "consttable_operand"
-   (match_test "CONSTANT_P (op)"))
-diff -Nur a/gcc/config/mips/sde.h b/gcc/config/mips/sde.h
---- a/gcc/config/mips/sde.h    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/sde.h    2010-01-25 09:50:29.035686224 +0100
-@@ -19,6 +19,9 @@
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
-+#undef TARGET_MIPS_SDE
-+#define TARGET_MIPS_SDE 1
++static int
++mips_kernel_reg_p (rtx *x, void *data ATTRIBUTE_UNUSED)
++{
++  return GET_CODE (*x) == REG && KERNEL_REG_P (REGNO (*x));
++}
 +
- #undef DRIVER_SELF_SPECS
- #define DRIVER_SELF_SPECS                                             \
-   /* Make sure a -mips option is present.  This helps us to pick      \
-@@ -90,7 +93,8 @@
- /* Use $5 as a temporary for both MIPS16 and non-MIPS16.  */
- #undef MIPS_EPILOGUE_TEMP_REGNUM
--#define MIPS_EPILOGUE_TEMP_REGNUM (GP_REG_FIRST + 5)
-+#define MIPS_EPILOGUE_TEMP_REGNUM \
-+  (cfun->machine->interrupt_handler_p ? K0_REG_NUM : GP_REG_FIRST + 5)
+ /* Expand the "prologue" pattern.  */
  
- /* Using long will always be right for size_t and ptrdiff_t, since
-    sizeof(long) must equal sizeof(void *), following from the setting
-diff -Nur a/gcc/config/mips/sdemtk.h b/gcc/config/mips/sdemtk.h
---- a/gcc/config/mips/sdemtk.h 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/mips/sdemtk.h 2010-01-25 09:50:29.035686224 +0100
-@@ -19,6 +19,8 @@
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
+ void
+@@ -9219,7 +9561,8 @@ mips_expand_prologue (void)
+   /* Save the registers.  Allocate up to MIPS_MAX_FIRST_STACK_STEP
+      bytes beforehand; this is enough to cover the register save area
+      without going out of range.  */
+-  if ((frame->mask | frame->fmask) != 0)
++  if (((frame->mask | frame->fmask | frame->acc_mask) != 0)
++      || frame->num_cop0_regs > 0)
+     {
+       HOST_WIDE_INT step1;
  
-+#define TARGET_MIPS_SDEMTK    1
+@@ -9250,12 +9593,97 @@ mips_expand_prologue (void)
+       }
+       else
+       {
+-        insn = gen_add3_insn (stack_pointer_rtx,
+-                              stack_pointer_rtx,
+-                              GEN_INT (-step1));
+-        RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
+-        size -= step1;
+-        mips_for_each_saved_reg (size, mips_save_reg);
++        if (cfun->machine->interrupt_handler_p)
++          {
++            HOST_WIDE_INT offset;
++            rtx mem;
 +
- #define TARGET_OS_CPP_BUILTINS()                      \
-   do                                                  \
-     {                                                 \
-@@ -113,3 +115,12 @@
- /* ...nor does the call sequence preserve $31.  */
- #undef MIPS_SAVE_REG_FOR_PROFILING_P
- #define MIPS_SAVE_REG_FOR_PROFILING_P(REGNO) ((REGNO) == GP_REG_FIRST + 31)
++            /* If this interrupt is using a shadow register set, we need to
++               get the stack pointer from the previous register set.  */
++            if (cfun->machine->use_shadow_register_set_p)
++              emit_insn (gen_mips_rdpgpr (stack_pointer_rtx,
++                                          stack_pointer_rtx));
 +
-+/* From mips.h, with mno-float option added.  */
++            if (!cfun->machine->keep_interrupts_masked_p)
++              {
++                /* Move from COP0 Cause to K0.  */
++                emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K0_REG_NUM),
++                                          gen_rtx_REG (SImode,
++                                                       COP0_CAUSE_REG_NUM)));
++                /* Move from COP0 EPC to K1.  */
++                emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K1_REG_NUM),
++                                          gen_rtx_REG (SImode,
++                                                       COP0_EPC_REG_NUM)));
++              }
 +
-+#undef MIPS_ARCH_FLOAT_SPEC
-+#define MIPS_ARCH_FLOAT_SPEC \
-+  "%{mhard-float|msoft-float|mno-float|march=mips*:; \
-+     march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
-+     |march=34kc|march=74kc|march=1004kc|march=5kc|march=octeon|march=xlr: -msoft-float; \
-+     march=*: -mhard-float}"
-diff -Nur a/gcc/config/mips/t-crtfm b/gcc/config/mips/t-crtfm
---- a/gcc/config/mips/t-crtfm  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-crtfm  2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,9 @@
++            /* Allocate the first part of the frame.  */
++            insn = gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
++                                  GEN_INT (-step1));
++            RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
++            size -= step1;
 +
-+EXTRA_MULTILIB_PARTS += crtfastmath.o
++            /* Start at the uppermost location for saving.  */
++            offset = frame->cop0_sp_offset - size;
++            if (!cfun->machine->keep_interrupts_masked_p)
++              {
++                /* Push EPC into its stack slot.  */
++                mem = gen_frame_mem (word_mode,
++                                     plus_constant (stack_pointer_rtx,
++                                                    offset));
++                mips_emit_move (mem, gen_rtx_REG (word_mode, K1_REG_NUM));
++                offset -= UNITS_PER_WORD;
++              }
 +
-+EXTRA_PARTS += crtfastmath.o
++            /* Move from COP0 Status to K1.  */
++            emit_insn (gen_cop0_move (gen_rtx_REG (SImode, K1_REG_NUM),
++                                      gen_rtx_REG (SImode,
++                                                   COP0_STATUS_REG_NUM)));
 +
-+$(T)crtfastmath.o: $(srcdir)/config/mips/crtfastmath.c $(GCC_PASSES)
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+      -c -o $(T)crtfastmath.o $(srcdir)/config/mips/crtfastmath.c
++            /* Right justify the RIPL in k0.  */
++            if (!cfun->machine->keep_interrupts_masked_p)
++              emit_insn (gen_lshrsi3 (gen_rtx_REG (SImode, K0_REG_NUM),
++                                      gen_rtx_REG (SImode, K0_REG_NUM),
++                                      GEN_INT (CAUSE_IPL)));
 +
-diff -Nur a/gcc/config/mips/t-montavista-elf b/gcc/config/mips/t-montavista-elf
---- a/gcc/config/mips/t-montavista-elf 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-montavista-elf 2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,22 @@
-+# MontaVista ELF Configuration.
-+# Copyright (C) 2009
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
++            /* Push Status into its stack slot.  */
++            mem = gen_frame_mem (word_mode,
++                                 plus_constant (stack_pointer_rtx, offset));
++            mips_emit_move (mem, gen_rtx_REG (word_mode, K1_REG_NUM));
++            offset -= UNITS_PER_WORD;
 +
-+MULTILIB_OPTIONS =
-+MULTILIB_DIRNAMES =
-diff -Nur a/gcc/config/mips/t-montavista-linux b/gcc/config/mips/t-montavista-linux
---- a/gcc/config/mips/t-montavista-linux       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-montavista-linux       2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,43 @@
-+# MontaVista GNU/Linux Configuration.
-+# Copyright (C) 2009
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
++            /* Insert the RIPL into our copy of SR (k1) as the new IPL.  */
++            if (!cfun->machine->keep_interrupts_masked_p)
++              emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
++                                     GEN_INT (6),
++                                     GEN_INT (SR_IPL),
++                                     gen_rtx_REG (SImode, K0_REG_NUM)));
 +
-+# Build big-endian and little-endian support libraries.
-+MULTILIB_OPTIONS = mel msoft-float march=octeon mabi=n32/mabi=64
-+MULTILIB_DIRNAMES = mel soft-float octeon n32 64
-+MULTILIB_EXCEPTIONS = *mel*/*mabi=n32* *mel*/*mabi=64*
-+MULTILIB_EXCEPTIONS += *mel*/*march=octeon* march=octeon march=octeon/mabi=n32
-+MULTILIB_EXCEPTIONS += march=octeon/mabi=64 msoft-float/march=octeon
-+
-+# These files must be built for each multilib.
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-+
-+# See comment in montavista-linux.h on STARTFILE_PREFIX_SPEC for how the real
-+# directories used in the sysroots are determined.  These directories
-+# are specified so that (a) they are distinct and (b) removing the
-+# components that form part of the sysroot suffix leaves the real
-+# directory within the sysroot.
-+MULTILIB_OSDIRNAMES = msoft-float/mabi.n32=../lib32/soft-float
-+MULTILIB_OSDIRNAMES += msoft-float/mabi.64=../lib64/soft-float
-+MULTILIB_OSDIRNAMES += msoft-float/march.octeon/mabi.n32=../lib32/soft-float/octeon
-+MULTILIB_OSDIRNAMES += msoft-float/march.octeon/mabi.64=../lib64/soft-float/octeon
-+MULTILIB_OSDIRNAMES += mel/msoft-float=!mel/soft-float
-+MULTILIB_OSDIRNAMES += msoft-float=!soft-float
-+MULTILIB_OSDIRNAMES += mabi.64=../lib64
-+MULTILIB_OSDIRNAMES += mabi.n32=../lib32
-diff -Nur a/gcc/config/mips/t-octeon-elf b/gcc/config/mips/t-octeon-elf
---- a/gcc/config/mips/t-octeon-elf     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-octeon-elf     2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,41 @@
-+# Don't let CTOR_LIST end up in sdata section.
++            if (!cfun->machine->keep_interrupts_masked_p)
++              /* Enable interrupts by clearing the KSU ERL and EXL bits.
++                 IE is already the correct value, so we don't have to do
++                 anything explicit.  */
++              emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
++                                     GEN_INT (4),
++                                     GEN_INT (SR_EXL),
++                                     gen_rtx_REG (SImode, GP_REG_FIRST)));
++            else
++              /* Disable interrupts by clearing the KSU, ERL, EXL,
++                 and IE bits.  */
++              emit_insn (gen_insvsi (gen_rtx_REG (SImode, K1_REG_NUM),
++                                     GEN_INT (5),
++                                     GEN_INT (SR_IE),
++                                     gen_rtx_REG (SImode, GP_REG_FIRST)));
++          }
++        else
++          {
++            insn = gen_add3_insn (stack_pointer_rtx,
++                                  stack_pointer_rtx,
++                                  GEN_INT (-step1));
++            RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
++            size -= step1;
++          }
++        mips_for_each_saved_acc (size, mips_save_reg);
++        mips_for_each_saved_gpr_and_fpr (size, mips_save_reg);
+       }
+     }
+@@ -9340,6 +9768,20 @@ mips_expand_prologue (void)
+                       pic_offset_table_rtx);
+     }
++  /* We need to search back to the last use of K0 or K1.  */
++  if (cfun->machine->interrupt_handler_p)
++    {
++      for (insn = get_last_insn (); insn != NULL_RTX; insn = PREV_INSN (insn))
++      if (INSN_P (insn)
++          && for_each_rtx (&PATTERN (insn), mips_kernel_reg_p, NULL))
++        break;
++      /* Emit a move from K1 to COP0 Status after insn.  */
++      gcc_assert (insn != NULL_RTX);
++      emit_insn_after (gen_cop0_move (gen_rtx_REG (SImode, COP0_STATUS_REG_NUM),
++                                    gen_rtx_REG (SImode, K1_REG_NUM)),
++                     insn);
++    }
 +
-+CRTSTUFF_T_CFLAGS = -G 0 -fno-asynchronous-unwind-tables
+   /* If we are profiling, make sure no instructions are scheduled before
+      the call to mcount.  */
+   if (crtl->profile)
+@@ -9356,7 +9798,20 @@ mips_restore_reg (rtx reg, rtx mem)
+   if (TARGET_MIPS16 && REGNO (reg) == GP_REG_FIRST + 31)
+     reg = gen_rtx_REG (GET_MODE (reg), GP_REG_FIRST + 7);
+-  if (TARGET_MIPS16 && !M16_REG_P (REGNO (reg)))
++  if (REGNO (reg) == HI_REGNUM)
++    {
++      mips_emit_move (MIPS_EPILOGUE_TEMP (GET_MODE (reg)), mem);
++      if (TARGET_64BIT)
++      emit_insn (gen_mthisi_di (gen_rtx_REG (TImode, MD_REG_FIRST),
++                                MIPS_EPILOGUE_TEMP (DImode),
++                                gen_rtx_REG (DImode, LO_REGNUM)));
++      else
++      emit_insn (gen_mthisi_di (gen_rtx_REG (DImode, MD_REG_FIRST),
++                                MIPS_EPILOGUE_TEMP (SImode),
++                                gen_rtx_REG (SImode, LO_REGNUM)));
++    }
++  else if ((TARGET_MIPS16 && !M16_REG_P (REGNO (reg)))
++         || ACC_REG_P (REGNO (reg)))
+     {
+       /* Can't restore directly; move through a temporary.  */
+       mips_emit_move (MIPS_EPILOGUE_TEMP (GET_MODE (reg)), mem);
+@@ -9392,7 +9847,7 @@ mips_expand_epilogue (bool sibcall_p)
+ {
+   const struct mips_frame_info *frame;
+   HOST_WIDE_INT step1, step2;
+-  rtx base, target;
++  rtx base, target, insn;
+   if (!sibcall_p && mips_can_use_return_insn ())
+     {
+@@ -9425,7 +9880,8 @@ mips_expand_epilogue (bool sibcall_p)
+   /* If we need to restore registers, deallocate as much stack as
+      possible in the second step without going out of range.  */
+-  if ((frame->mask | frame->fmask) != 0)
++  if ((frame->mask | frame->fmask | frame->acc_mask) != 0
++      || frame->num_cop0_regs > 0)
+     {
+       step2 = MIN (step1, MIPS_MAX_FIRST_STACK_STEP);
+       step1 -= step2;
+@@ -9487,13 +9943,53 @@ mips_expand_epilogue (bool sibcall_p)
+   else
+     {
+       /* Restore the registers.  */
+-      mips_for_each_saved_reg (frame->total_size - step2, mips_restore_reg);
++      mips_for_each_saved_acc (frame->total_size - step2, mips_restore_reg);
++      mips_for_each_saved_gpr_and_fpr (frame->total_size - step2,
++                                     mips_restore_reg);
+-      /* Deallocate the final bit of the frame.  */
+-      if (step2 > 0)
+-      emit_insn (gen_add3_insn (stack_pointer_rtx,
+-                                stack_pointer_rtx,
+-                                GEN_INT (step2)));
++      if (cfun->machine->interrupt_handler_p)
++      {
++        HOST_WIDE_INT offset;
++        rtx mem;
 +
-+# Assemble startup files.
++        offset = frame->cop0_sp_offset - (frame->total_size - step2);
++        if (!cfun->machine->keep_interrupts_masked_p)
++          {
++            /* Restore the original EPC.  */
++            mem = gen_frame_mem (word_mode,
++                                 plus_constant (stack_pointer_rtx, offset));
++            mips_emit_move (gen_rtx_REG (word_mode, K0_REG_NUM), mem);
++            offset -= UNITS_PER_WORD;
 +
-+$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES)
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+      -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm
++            /* Move to COP0 EPC.  */
++            emit_insn (gen_cop0_move (gen_rtx_REG (SImode, COP0_EPC_REG_NUM),
++                                      gen_rtx_REG (SImode, K0_REG_NUM)));
++          }
 +
-+$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES)
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+      -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm
++        /* Restore the original Status.  */
++        mem = gen_frame_mem (word_mode,
++                             plus_constant (stack_pointer_rtx, offset));
++        mips_emit_move (gen_rtx_REG (word_mode, K0_REG_NUM), mem);
++        offset -= UNITS_PER_WORD;
 +
-+# N32 uses TFmode for long double.
++        /* If we don't use shoadow register set, we need to update SP.  */
++        if (!cfun->machine->use_shadow_register_set_p && step2 > 0)
++          emit_insn (gen_add3_insn (stack_pointer_rtx,
++                                    stack_pointer_rtx,
++                                    GEN_INT (step2)));
 +
-+TPBIT = tp-bit.c
++        /* Move to COP0 Status.  */
++        emit_insn (gen_cop0_move (gen_rtx_REG (SImode, COP0_STATUS_REG_NUM),
++                                  gen_rtx_REG (SImode, K0_REG_NUM)));
++      }
++      else
++      {
++        /* Deallocate the final bit of the frame.  */
++        if (step2 > 0)
++          emit_insn (gen_add3_insn (stack_pointer_rtx,
++                                    stack_pointer_rtx,
++                                    GEN_INT (step2)));
++      }
+     }
+   /* Add in the __builtin_eh_return stack adjustment.  We need to
+@@ -9516,18 +10012,44 @@ mips_expand_epilogue (bool sibcall_p)
+   if (!sibcall_p)
+     {
+-      unsigned int regno;
+-
+-      /* When generating MIPS16 code, the normal mips_for_each_saved_reg
+-       path will restore the return address into $7 rather than $31.  */
+-      if (TARGET_MIPS16
+-        && !GENERATE_MIPS16E_SAVE_RESTORE
+-        && BITSET_P (frame->mask, 31))
+-      regno = GP_REG_FIRST + 7;
+-      else
+-      regno = GP_REG_FIRST + 31;
+       mips_expand_before_return ();
+-      emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
++      if (cfun->machine->interrupt_handler_p)
++      {
++        /* Interrupt handlers generate eret or deret.  */
++        if (cfun->machine->use_debug_exception_return_p)
++          emit_jump_insn (gen_mips_deret ());
++        else
++          emit_jump_insn (gen_mips_eret ());
++      }
++      else
++      {
++        unsigned int regno;
 +
-+tp-bit.c: $(srcdir)/config/fp-bit.c
-+      echo '#ifdef __MIPSEL__' > tp-bit.c
-+      echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c
-+      echo '#endif' >> tp-bit.c
-+      echo '#if __LDBL_MANT_DIG__ == 113' >> tp-bit.c
-+      echo '#define QUIET_NAN_NEGATED' >> tp-bit.c
-+      echo '# define TFLOAT' >> tp-bit.c
-+      cat $(srcdir)/config/fp-bit.c >> tp-bit.c
-+      echo '#endif' >> tp-bit.c
++        /* When generating MIPS16 code, the normal
++           mips_for_each_saved_gpr_and_fpr path will restore the return
++           address into $7 rather than $31.  */
++        if (TARGET_MIPS16
++            && !GENERATE_MIPS16E_SAVE_RESTORE
++            && BITSET_P (frame->mask, 31))
++          regno = GP_REG_FIRST + 7;
++        else
++          regno = GP_REG_FIRST + 31;
++        emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
++      }
++    }
 +
-+# We must build libgcc2.a with -G 0, in case the user wants to link
-+# without the $gp register.
++  /* Search from the beginning to the first use of K0 or K1.  */
++  if (cfun->machine->interrupt_handler_p
++      && !cfun->machine->keep_interrupts_masked_p)
++    {
++      for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
++      if (INSN_P (insn)
++          && for_each_rtx (&PATTERN(insn), mips_kernel_reg_p, NULL))
++        break;
++      gcc_assert (insn != NULL_RTX);
++      /* Insert disable interrupts before the first use of K0 or K1.  */
++      emit_insn_before (gen_mips_di (), insn);
++      emit_insn_before (gen_mips_ehb (), insn);
+     }
+ }
\f
+@@ -9538,6 +10060,10 @@ mips_expand_epilogue (bool sibcall_p)
+ bool
+ mips_can_use_return_insn (void)
+ {
++  /* Interrupt handlers need to go through the epilogue.  */
++  if (cfun->machine->interrupt_handler_p)
++    return false;
 +
-+TARGET_LIBGCC2_CFLAGS = -G 0
-+ 
-+# Build both ABIs.
+   if (!reload_completed)
+     return false;
+@@ -10469,10 +10995,15 @@ mips_output_division (const char *divisi
+         s = "bnez\t%2,1f\n\tbreak\t7\n1:";
+       }
+       else if (GENERATE_DIVIDE_TRAPS)
+-        {
+-        output_asm_insn (s, operands);
+-        s = "teq\t%2,%.,7";
+-        }
++      {
++        if (TUNE_74K)
++          output_asm_insn ("teq\t%2,%.,7", operands);
++        else
++          {
++            output_asm_insn (s, operands);
++            s = "teq\t%2,%.,7";
++          }
++      }
+       else
+       {
+         output_asm_insn ("%(bne\t%2,%.,1f", operands);
+@@ -10784,7 +11315,17 @@ mips_maybe_swap_ready (rtx *ready, int p
+       ready[pos2] = temp;
+     }
+ }
+-\f
 +
-+MULTILIB_OPTIONS = mabi=n32/mabi=eabi/mabi=64
-+MULTILIB_DIRNAMES = n32 eabi n64
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
++int
++mips_mult_madd_chain_bypass_p (rtx out_insn ATTRIBUTE_UNUSED,
++                             rtx in_insn ATTRIBUTE_UNUSED)
++{
++  if (reload_completed)
++    return false;
++  else
++    return true;
++}
 +
-+LIBGCC = stmp-multilib
-+INSTALL_LIBGCC = install-multilib
-diff -Nur a/gcc/config/mips/t-sgxx-linux b/gcc/config/mips/t-sgxx-linux
---- a/gcc/config/mips/t-sgxx-linux     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-sgxx-linux     2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,13 @@
-+MULTILIB_OPTIONS = muclibc march=mips2/march=mips32 msoft-float EL/EB
-+MULTILIB_DIRNAMES = uclibc mips2 mips32 soft-float el eb
-+MULTILIB_MATCHES := EL=mel EB=meb \
-+  march?mips2=mips2 march?mips2=mips3 march?mips2=mips4 \
-+  $(foreach cpu,mips3 mips4 r6000 r4000 vr4100 vr4111 vr4120 vr4130 vr4300 \
-+                r4400 r4600 orion r4650 loongson2e loongson2f r8000 r10000 \
-+                r12000 r14000 r16000 vr5000 vr5400 vr5500 rm7000 \
-+                rm9000,march?mips2=march?$(cpu)) \
-+  march?mips32=mips32 march?mips32=mips64 \
-+  $(foreach cpu,4kc 4km 4kp 4ksc mips64 5kc 5kf 20kc sb1 sb1a sr71000 \
-+                xlr,march?mips32=march?$(cpu))
-+MULTILIB_EXCEPTIONS = *muclibc*/*march?mips2* *muclibc*/*march?mips32*
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o 
-diff -Nur a/gcc/config/mips/t-sgxxlite-linux b/gcc/config/mips/t-sgxxlite-linux
---- a/gcc/config/mips/t-sgxxlite-linux 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-sgxxlite-linux 2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,5 @@
-+MULTILIB_OPTIONS = muclibc msoft-float EL/EB
-+MULTILIB_DIRNAMES = uclibc soft-float el eb
-+MULTILIB_MATCHES := EL=mel EB=meb
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-+
-diff -Nur a/gcc/config/mips/t-sgxx-sde b/gcc/config/mips/t-sgxx-sde
---- a/gcc/config/mips/t-sgxx-sde       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-sgxx-sde       2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,15 @@
-+# SourceryG++ overrides for SDE builds
+ /* Used by TUNE_MACC_CHAINS to record the last scheduled instruction
+    that may clobber hi or lo.  */
+ static rtx mips_macc_chains_last_hilo;
+@@ -13957,6 +14498,14 @@ mips_override_options (void)
+        long as any indirect jumps use $25.  */
+     flag_pic = 1;
++  /* For SDE, switch on ABICALLS mode if -fpic or -fpie were used, and the
++     user hasn't explicitly disabled these modes.  */
++  if (TARGET_MIPS_SDE
++      && (flag_pic || flag_pie) && !TARGET_ABICALLS
++      && !((target_flags_explicit & MASK_ABICALLS))
++      && mips_abi != ABI_EABI)
++    target_flags |= MASK_ABICALLS;
 +
-+# We must build libgcc2.a with -G 0, in case the user wants to link
-+# without the $gp register. Use -fno-optimize-sibling-calls in case
-+# we have a mixed mips16/non-mips16 environment where a plain "jump"
-+# instuction won't work across the divide (no jx instruction).
-+# Compile libraries with -mcode-xonly, so that they are link-compatible
-+# with both -mcode-readable=pcrel and -mcode-readable=yes.
-+TARGET_LIBGCC2_CFLAGS = -G 0 -fno-optimize-sibling-calls -mcode-xonly
-+
-+MULTILIB_OPTIONS = EL/EB mips16 mfp64/msoft-float/mno-float mcode-readable=no
-+MULTILIB_DIRNAMES = el eb mips16 fp64 sof nof spram
-+MULTILIB_MATCHES = EL=mel EB=meb mips16=mips16e
-+MULTILIB_EXCLUSIONS = mcode-readable=no/!mips16
-+MULTILIB_EXCEPTIONS = 
-diff -Nur a/gcc/config/mips/t-wrs-linux b/gcc/config/mips/t-wrs-linux
---- a/gcc/config/mips/t-wrs-linux      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/t-wrs-linux      2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,55 @@
-+# Wind River GNU/Linux Configuration.
-+# Copyright (C) 2006, 2007
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+# Build big-endian and little-endian support libraries.
-+MULTILIB_OPTIONS = muclibc mel mhard-float march=octeon/march=vr5500 mabi=n32/mabi=64
-+MULTILIB_DIRNAMES = uclibc mel hard-float octeon vr5500 n32 64
-+MULTILIB_EXCEPTIONS = *muclibc*/*mhard-float*
-+MULTILIB_EXCEPTIONS += *muclibc*/*mabi=n32*
-+MULTILIB_EXCEPTIONS += *muclibc*/*mabi=64*
-+MULTILIB_EXCEPTIONS += *muclibc*/*march=vr5500*
-+MULTILIB_EXCEPTIONS += *mel*/*march=vr5500*
-+MULTILIB_EXCEPTIONS += march=vr5500*
-+MULTILIB_EXCEPTIONS += mhard-float/march=vr5500/*
-+MULTILIB_EXCEPTIONS += */march=octeon*
-+MULTILIB_EXCEPTIONS += march=octeon march=octeon/mabi=32
-+MULTILIB_EXCEPTIONS += mel/mabi=n32 mel/mabi=64
-+MULTILIB_EXCEPTIONS += mabi=n32
-+# These files must be built for each multilib.
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-+
-+# See comment in wrs-linux.h on STARTFILE_PREFIX_SPEC for how the real
-+# directories used in the sysroots are determined.  These directories
-+# are specified so that (a) they are distinct and (b) removing the
-+# components that form part of the sysroot suffix leaves the real
-+# directory within the sysroot.
-+MULTILIB_OSDIRNAMES = mel/mhard-float/mabi.n32=../lib32/mel/hard-float
-+MULTILIB_OSDIRNAMES += mel/mhard-float/mabi.64=../lib64/mel/hard-float
-+MULTILIB_OSDIRNAMES += mhard-float/mabi.n32=../lib32/hard-float
-+MULTILIB_OSDIRNAMES += mhard-float/mabi.64=../lib64/hard-float
-+MULTILIB_OSDIRNAMES += mel/mhard-float=!mel/hard-float
-+MULTILIB_OSDIRNAMES += mhard-float/march.vr5500=!hard-float/vr5500
-+MULTILIB_OSDIRNAMES += mhard-float=!hard-float
-+MULTILIB_OSDIRNAMES += mabi.64=../lib64
-+MULTILIB_OSDIRNAMES += march.octeon/mabi.n32=../lib32/octeon
-+MULTILIB_OSDIRNAMES += march.octeon/mabi.64=../lib64/octeon
-+MULTILIB_OSDIRNAMES += muclibc/mel=!uclibc/mel
-+MULTILIB_OSDIRNAMES += muclibc=!uclibc
-+
-diff -Nur a/gcc/config/mips/wrs-linux.h b/gcc/config/mips/wrs-linux.h
---- a/gcc/config/mips/wrs-linux.h      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/mips/wrs-linux.h      2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,65 @@
-+/* Wind River GNU/Linux Configuration.
-+   Copyright (C) 2006, 2007
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
+   /* -mvr4130-align is a "speed over size" optimization: it usually produces
+      faster code, but at the expense of more nops.  Enable it at -O3 and
+      above.  */
+@@ -14309,6 +14858,178 @@ mips_order_regs_for_local_alloc (void)
+       reg_alloc_order[24] = 0;
+     }
+ }
 +
-+/* Override linux64.h to default to O32.  */
-+#undef DRIVER_SELF_SPECS
-+#define DRIVER_SELF_SPECS \
-+  BASE_DRIVER_SELF_SPECS, \
-+  LINUX_DRIVER_SELF_SPECS \
-+  " %{!EB:%{!EL:%(endian_spec)}}" \
-+  " %{!mabi=*: -mabi=32}"
-+
-+/* We do not need to provide an explicit big-endian multilib.  */
-+#undef MULTILIB_DEFAULTS
-+#define MULTILIB_DEFAULTS \
-+  { "meb", "mabi=32" }
-+
-+/* The GLIBC headers are in /usr/include, relative to the sysroot; the
-+   uClibc headers are in /uclibc/usr/include.  */
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC           \
-+  "%{muclibc:/uclibc}" 
++/* Implement EPILOGUE_USES.  */
 +
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                           \
-+  "%{muclibc:%{mel:/uclibc/mel ;                      \
-+               :/uclibc} ;                            \
-+     mel:%{mhard-float:/mel/hard-float ;              \
-+           :/mel} ;                                   \
-+     march=octeon:/octeon ;                           \
-+     march=vr5500:%{mhard-float:/hard-float/vr5500} ; \
-+     mhard-float:/hard-float}"
-+
-+/* MULTILIB_OSDIRNAMES provides directory names used in two ways:
-+   relative to $target/lib/ in the GCC installation, and relative to
-+   lib/ and usr/lib/ in a sysroot.  For the latter, we want names such
-+   as plain ../lib64, but these cannot be used outside the sysroot
-+   because different multilibs would be mapped to the same directory.
-+   Directories are searched both with and without the multilib suffix,
-+   so it suffices if the directory without the suffix is correct
-+   within the sysroot while the directory with the suffix doesn't
-+   exist.  We use STARTFILE_PREFIX_SPEC to achieve the desired
-+   effect.  */
-+#undef STARTFILE_PREFIX_SPEC
-+#define STARTFILE_PREFIX_SPEC                         \
-+  "%{mabi=32: /usr/local/lib/ /lib/ /usr/lib/}                \
-+   %{mabi=n32: /usr/local/lib32/ /lib32/ /usr/lib32/} \
-+   %{mabi=64: /usr/local/lib64/ /lib64/ /usr/lib64/}"
-diff -Nur a/gcc/config/mips/xlr.md b/gcc/config/mips/xlr.md
---- a/gcc/config/mips/xlr.md   2008-06-06 16:24:57.000000000 +0200
-+++ b/gcc/config/mips/xlr.md   2010-01-25 09:50:29.035686224 +0100
-@@ -1,5 +1,5 @@
- ;; DFA-based pipeline description for the XLR.
--;;   Copyright (C) 2008 Free Software Foundation, Inc.
-+;;   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- ;;
- ;; xlr.md   Machine Description for the RMI XLR Microprocessor
- ;; This file is part of GCC.
-@@ -31,7 +31,7 @@
- ;; Integer arithmetic instructions.
- (define_insn_reservation "ir_xlr_alu" 1
-   (and (eq_attr "cpu" "xlr") 
--       (eq_attr "type" "arith,shift,clz,const,unknown,multi,nop,trap"))
-+       (eq_attr "type" "move,arith,shift,clz,logical,signext,const,unknown,multi,nop,trap"))
-   "xlr_main_pipe")
- ;; Integer arithmetic instructions.
-diff -Nur a/gcc/config/print-sysroot-suffix.sh b/gcc/config/print-sysroot-suffix.sh
---- a/gcc/config/print-sysroot-suffix.sh       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/print-sysroot-suffix.sh       2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,154 @@
-+#! /bin/sh
-+# Script to generate SYSROOT_SUFFIX_SPEC equivalent to MULTILIB_OSDIRNAMES
-+# Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS, MULTILIB_MATCHES
-+# and MULTILIB_ALIASES.
++bool
++mips_epilogue_uses (unsigned int regno)
++{
++  /* Say that the epilogue uses the return address register.  Note that
++     in the case of sibcalls, the values "used by the epilogue" are
++     considered live at the start of the called function.  */
++  if (regno == 31)
++    return true;
 +
-+# Copyright (C) 2009 Free Software Foundation, Inc.
++  /* If using a GOT, say that the epilogue also uses GOT_VERSION_REGNUM.
++     See the comment above load_call<mode> for details.  */
++  if (TARGET_USE_GOT && (regno) == GOT_VERSION_REGNUM)
++    return true;
 +
-+# This file is part of GCC.
++  /* An interrupt handler must preserve some registers that are
++     ordinarily call-clobbered.  */
++  if (cfun->machine->interrupt_handler_p
++      && mips_interrupt_extra_call_saved_reg_p (regno))
++    return true;
 +
-+# GCC 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.
++  return false;
++}
++\f
++#ifdef CVMX_SHARED_BSS_FLAGS
++/* Handle a "cvmx_shared" attribute; arguments as in 
++   struct attribute_spec.handler.  */
 +
-+# GCC 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.
++static tree
++octeon_handle_cvmx_shared_attribute (tree *node, tree name, 
++                                   tree args ATTRIBUTE_UNUSED, 
++                                   int flags ATTRIBUTE_UNUSED, 
++                                   bool *no_add_attrs)
++{
++  if (TREE_CODE (*node) != VAR_DECL)
++    {
++      warning (OPT_Wattributes, "%qs attribute only applies to variables",
++              IDENTIFIER_POINTER (name));
++      *no_add_attrs = true;
++    }
 +
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.  
-+
-+# This shell script produces a header file fragment that defines
-+# SYSROOT_SUFFIX_SPEC.  It assumes that the sysroots will have the same
-+# structure and names used by the multilibs.
-+
-+# Invocation:
-+#   print-sysroot-suffix.sh \
-+#          MULTILIB_OSDIRNAMES \
-+#          MULTILIB_OPTIONS \
-+#          MULTILIB_MATCHES \
-+#      > t-sysroot-suffix.h
-+
-+# The three options exactly correspond to the variables of the same
-+# names defined in the tmake_file fragments.
-+
-+# Example:
-+#   sh ./gcc/config/print-sysroot-suffix.sh "a=A" "a b/c/d" ""
-+# =>
-+#   #undef SYSROOT_SUFFIX_SPEC
-+#   #define SYSROOT_SUFFIX_SPEC "" \
-+#   "%{a:" \
-+#     "%{b:A/b/;" \
-+#     "c:A/c/;" \
-+#     "d:A/d/;" \
-+#     ":A/};" \
-+#   ":}"
-+
-+# The script uses temporary subscripts in order to permit a recursive
-+# algorithm without the use of functions.
-+
-+set -e
-+
-+dirnames="$1"
-+options="$2"
-+matches="$3"
-+aliases="$4"
-+
-+cat > print-sysroot-suffix3.sh <<\EOF
-+#! /bin/sh
-+# Print all the multilib matches for this option
-+result="$1"
-+EOF
-+for x in $matches; do
-+  l=`echo $x | sed -e 's/=.*$//' -e 's/?/=/g'`
-+  r=`echo $x | sed -e 's/^.*=//' -e 's/?/=/g'`
-+  echo "[ \"\$1\" = \"$l\" ] && result=\"\$result|$r\"" >> print-sysroot-suffix3.sh
-+done
-+echo 'echo $result' >> print-sysroot-suffix3.sh
-+chmod +x print-sysroot-suffix3.sh
-+
-+cat > print-sysroot-suffix2.sh <<\EOF
-+#! /bin/sh
-+# Recursive script to enumerate all multilib combinations, match against
-+# multilib directories and output a spec string of the result.
-+# Will fold identical trees.
-+
-+padding="$1"
-+optstring="$2"
-+shift 2
-+n="\" \\
-+$padding\""
-+if [ $# = 0 ]; then
-+  case $optstring in
-+EOF
-+for x in $aliases; do
-+  l=`echo $x | sed -e 's/=.*$//' -e 's/?/=/g'`
-+  r=`echo $x | sed -e 's/^.*=//' -e 's/?/=/g'`
-+  echo "/$r/) optstring=\"/$l/\" ;;" >> print-sysroot-suffix2.sh
-+done
-+echo "  esac" >> print-sysroot-suffix2.sh
++  return NULL_TREE;
++}
++\f
++/* Switch to the appropriate section for output of DECL.
++   DECL is either a `VAR_DECL' node or a constant of some sort.
++   RELOC indicates whether forming the initial value of DECL requires
++   link-time relocations.  */
 +
-+pat=
-+for x in $dirnames; do
-+  p=`echo $x | sed -e 's,=!,/$=/,'`
-+  pat="$pat -e 's=^//$p='"
-+done
-+echo '  optstring=`echo "/$optstring" | sed '"$pat\`" >> print-sysroot-suffix2.sh
-+cat >> print-sysroot-suffix2.sh <<\EOF
-+  case $optstring in
-+  //*)
-+    ;;
-+  *)
-+    echo "$optstring"
-+    ;;
-+  esac
-+else
-+  thisopt="$1"
-+  shift
-+  bit=
-+  lastcond=
-+  result=
-+  for x in `echo "$thisopt" | sed -e 's,/, ,g'`; do
-+    case $x in
-+EOF
-+for x in `echo "$options" | sed -e 's,/, ,g'`; do
-+  match=`./print-sysroot-suffix3.sh "$x"`
-+  echo "$x) optmatch=\"$match\" ;;" >> print-sysroot-suffix2.sh
-+done
-+cat >> print-sysroot-suffix2.sh <<\EOF
-+    esac
-+    bit=`"$0" "$padding  " "$optstring$x/" "$@"`
-+    if [ -z "$lastopt" ]; then
-+      lastopt="$optmatch"
-+    else
-+      if [ "$lastbit" = "$bit" ]; then
-+      lastopt="$lastopt|$optmatch"
-+      else
-+      result="$result$lastopt:$lastbit;$n"
-+      lastopt="$optmatch"
-+      fi
-+    fi
-+    lastbit="$bit"
-+  done
-+  bit=`"$0" "$padding  " "$optstring" "$@"`
-+  if [ "$bit" = "$lastbit" ]; then
-+    if [ -z "$result" ]; then
-+      echo "$bit"
-+    else
-+      echo "$n%{$result:$bit}"
-+    fi
-+  else
-+    echo "$n%{$result$lastopt:$lastbit;$n:$bit}"
-+  fi
-+fi
-+EOF
++static section *
++octeon_select_section (tree decl, int reloc, unsigned HOST_WIDE_INT align)
++{
++  if (decl && TREE_CODE (decl) == VAR_DECL 
++      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
++    {
++      const char *sname = NULL;
++      unsigned int flags = SECTION_WRITE;
 +
-+chmod +x ./print-sysroot-suffix2.sh
-+result=`./print-sysroot-suffix2.sh "" "/" $options`
-+echo "#undef SYSROOT_SUFFIX_SPEC"
-+echo "#define SYSROOT_SUFFIX_SPEC \"$result\""
-+rm print-sysroot-suffix2.sh
-+rm print-sysroot-suffix3.sh
-diff -Nur a/gcc/config/rs6000/e500mc.h b/gcc/config/rs6000/e500mc.h
---- a/gcc/config/rs6000/e500mc.h       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/e500mc.h       2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,46 @@
-+/* Core target definitions for GNU compiler
-+   for IBM RS/6000 PowerPC targeted to embedded ELF systems.
-+   Copyright (C) 1995, 1996, 2000, 2003, 2004, 2007 Free Software Foundation, Inc.
-+   Contributed by Cygnus Support.
++      switch (categorize_decl_for_section (decl, reloc))
++        {
++        case SECCAT_DATA:
++        case SECCAT_SDATA:
++        case SECCAT_RODATA:
++        case SECCAT_SRODATA:
++        case SECCAT_RODATA_MERGE_STR:
++        case SECCAT_RODATA_MERGE_STR_INIT:
++        case SECCAT_RODATA_MERGE_CONST:
++        case SECCAT_DATA_REL:
++        case SECCAT_DATA_REL_LOCAL:
++        case SECCAT_DATA_REL_RO:
++        case SECCAT_DATA_REL_RO_LOCAL:
++          sname = ".cvmx_shared";
++          break;
++        case SECCAT_BSS:
++        case SECCAT_SBSS:
++          sname = ".cvmx_shared_bss";
++          flags |= SECTION_BSS;
++          break;
++        case SECCAT_TEXT:
++        case SECCAT_TDATA:
++        case SECCAT_TBSS:
++            break;
++        }
++      if (sname)
++      {
++        return get_section (sname, flags, decl);
++      }
++    }
++  return default_elf_select_section (decl, reloc, align);
++}
++\f
++/* Build up a unique section name, expressed as a
++   STRING_CST node, and assign it to DECL_SECTION_NAME (decl).
++   RELOC indicates whether the initial value of EXP requires
++   link-time relocations.  */
 +
-+   This file is part of GCC.
++static void 
++octeon_unique_section (tree decl, int reloc)
++{
++  if (decl && TREE_CODE (decl) == VAR_DECL 
++      && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (decl)))
++    {
++      const char *sname = NULL;
 +
-+   GCC 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.
++      if (! DECL_ONE_ONLY (decl))
++      {
++        section *sect;
++        sect = octeon_select_section (decl, reloc, DECL_ALIGN (decl));
++        DECL_SECTION_NAME (decl) = build_string (strlen (sect->named.name),
++                                                 sect->named.name);
++        return;
++      }
 +
-+   GCC 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.
++      switch (categorize_decl_for_section (decl, reloc))
++        {
++        case SECCAT_BSS:
++        case SECCAT_SBSS:
++          sname = ".cvmx_shared_bss.linkonce."; 
++          break;
++        case SECCAT_SDATA:
++        case SECCAT_DATA:
++        case SECCAT_DATA_REL:
++        case SECCAT_DATA_REL_LOCAL:
++        case SECCAT_DATA_REL_RO:
++        case SECCAT_DATA_REL_RO_LOCAL:
++        case SECCAT_RODATA:
++        case SECCAT_SRODATA:
++        case SECCAT_RODATA_MERGE_STR:
++        case SECCAT_RODATA_MERGE_STR_INIT:
++        case SECCAT_RODATA_MERGE_CONST:
++          sname = ".cvmx_shared.linkonce.";
++          break;
++        case SECCAT_TEXT:
++        case SECCAT_TDATA:
++        case SECCAT_TBSS:
++          break; 
++      }
++      if (sname)
++        {
++        const char *name;
++        size_t plen, nlen;
++        char *string;
++        plen = strlen (sname);
 +
-+   You should have received a copy of the GNU General Public License
-+   along with GCC; see the file COPYING3.  If not see
-+   <http://www.gnu.org/licenses/>.  */
++        name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
++        name = targetm.strip_name_encoding (name);
++        nlen = strlen (name);
 +
-+/* Add -meabi to target flags.  */
-+#undef TARGET_DEFAULT
-+#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
++        string = alloca (plen + nlen + 1);
++        memcpy (string, sname, plen);
++        memcpy (string + plen, name, nlen + 1);
++        DECL_SECTION_NAME (decl) = build_string (nlen + plen, string);
++        return;
++        }
++    }
++  default_unique_section (decl, reloc);
++}
++\f
++/* Emit an uninitialized cvmx_shared variable.  */
++void
++octeon_output_shared_variable (FILE *stream, tree decl, const char *name,
++                               unsigned HOST_WIDE_INT size, int align)
++{
++  switch_to_section (get_section (".cvmx_shared_bss", CVMX_SHARED_BSS_FLAGS,
++                                NULL_TREE));
++  ASM_OUTPUT_ALIGN (stream, floor_log2 (align / BITS_PER_UNIT));
++  ASM_DECLARE_OBJECT_NAME (stream, name, decl);
++  ASM_OUTPUT_SKIP (stream, size != 0 ? size : 1);
++}
++#endif
\f
+ /* Initialize the GCC target structure.  */
+ #undef TARGET_ASM_ALIGNED_HI_OP
+--- a/gcc/config/mips/mips.h
++++ b/gcc/config/mips/mips.h
+@@ -342,6 +342,9 @@ enum mips_code_readable_setting {
+ #define TARGET_IRIX      0
+ #define TARGET_IRIX6     0
++/* SDE specific stuff.  */
++#define TARGET_MIPS_SDE    0
 +
-+#undef TARGET_VERSION
-+#define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
+ /* Define preprocessor macros for the -march and -mtune options.
+    PREFIX is either _MIPS_ARCH or _MIPS_TUNE, INFO is the selected
+    processor.  If INFO's canonical name is "foo", define PREFIX to
+@@ -708,8 +711,9 @@ enum mips_code_readable_setting {
+        |march=r10000|march=r12000|march=r14000|march=r16000:-mips4} \
+      %{march=mips32|march=4kc|march=4km|march=4kp|march=4ksc:-mips32} \
+      %{march=mips32r2|march=m4k|march=4ke*|march=4ksd|march=24k* \
+-       |march=34k*|march=74k*: -mips32r2} \
+-     %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000: -mips64} \
++       |march=34k*|march=74k*|march=1004k*: -mips32r2} \
++     %{march=mips64|march=5k*|march=20k*|march=sb1*|march=sr71000 \
++       |march=xlr: -mips64} \
+      %{march=mips64r2|march=octeon: -mips64r2} \
+      %{!march=*: -" MULTILIB_ISA_DEFAULT "}}"
+@@ -720,7 +724,8 @@ enum mips_code_readable_setting {
+ #define MIPS_ARCH_FLOAT_SPEC \
+   "%{mhard-float|msoft-float|march=mips*:; \
+      march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
+-     |march=34kc|march=74kc|march=5kc|march=octeon: -msoft-float; \
++     |march=34kc|march=74kc|march=1004kc|march=5kc \
++     |march=octeon|march=xlr: -msoft-float;             \
+      march=*: -mhard-float}"
+ /* A spec condition that matches 32-bit options.  It only works if
+@@ -731,8 +736,9 @@ enum mips_code_readable_setting {
+ /* Support for a compile-time default CPU, et cetera.  The rules are:
+    --with-arch is ignored if -march is specified or a -mips is specified
+-     (other than -mips16).
+-   --with-tune is ignored if -mtune is specified.
++     (other than -mips16); likewise --with-arch-32 and --with-arch-64.
++   --with-tune is ignored if -mtune is specified; likewise
++     --with-tune-32 and --with-tune-64.
+    --with-abi is ignored if -mabi is specified.
+    --with-float is ignored if -mhard-float or -msoft-float are
+      specified.
+@@ -740,7 +746,11 @@ enum mips_code_readable_setting {
+      specified. */
+ #define OPTION_DEFAULT_SPECS \
+   {"arch", "%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}" }, \
++  {"arch_32", "%{!mabi=*|mabi=32:%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \
++  {"arch_64", "%{mabi=n32|mabi=64:%{" MIPS_ARCH_OPTION_SPEC ":;: -march=%(VALUE)}}" }, \
+   {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
++  {"tune_32", "%{!mabi=*|mabi=32:%{!mtune=*:-mtune=%(VALUE)}}" }, \
++  {"tune_64", "%{mabi=n32|mabi=64:%{!mtune=*:-mtune=%(VALUE)}}" }, \
+   {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \
+   {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }, \
+   {"divide", "%{!mdivide-traps:%{!mdivide-breaks:-mdivide-%(VALUE)}}" }, \
+@@ -750,7 +760,7 @@ enum mips_code_readable_setting {
+ /* A spec that infers the -mdsp setting from an -march argument.  */
+ #define BASE_DRIVER_SELF_SPECS \
+-  "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*: -mdsp}}"
++  "%{!mno-dsp:%{march=24ke*|march=34k*|march=74k*|march=1004k*: -mdsp}}"
+ #define DRIVER_SELF_SPECS BASE_DRIVER_SELF_SPECS
+@@ -1038,6 +1048,11 @@ enum mips_code_readable_setting {
+ /* ISA includes the bbit* instructions.  */
+ #define ISA_HAS_BBIT          (TARGET_OCTEON && !TARGET_MIPS16)
++/* ISA has single-instruction unaligned load/store support.  */
++#define ISA_HAS_UL_US          (TARGET_OCTEON \
++                                && TARGET_OCTEON_UNALIGNED \
++                                && !TARGET_MIPS16)
++ 
+ /* ISA includes the cins instruction.  */
+ #define ISA_HAS_CINS          (TARGET_OCTEON && !TARGET_MIPS16)
+@@ -1055,6 +1070,7 @@ enum mips_code_readable_setting {
+ /* The CACHE instruction is available.  */
+ #define ISA_HAS_CACHE (TARGET_CACHE_BUILTIN && !TARGET_MIPS16)
++ 
\f
+ /* Add -G xx support.  */
+@@ -1152,6 +1168,7 @@ enum mips_code_readable_setting {
+ %{mshared} %{mno-shared} \
+ %{msym32} %{mno-sym32} \
+ %{mtune=*} %{v} \
++%{mocteon-useun} %{mno-octeon-useun} \
+ %(subtarget_asm_spec)"
+ /* Extra switches sometimes passed to the linker.  */
+@@ -1622,6 +1639,9 @@ enum mips_code_readable_setting {
+ #define GP_REG_LAST  31
+ #define GP_REG_NUM   (GP_REG_LAST - GP_REG_FIRST + 1)
+ #define GP_DBX_FIRST 0
++#define K0_REG_NUM   (GP_REG_FIRST + 26)
++#define K1_REG_NUM   (GP_REG_FIRST + 27)
++#define KERNEL_REG_P(REGNO)   (IN_RANGE (REGNO, K0_REG_NUM, K1_REG_NUM))
+ #define FP_REG_FIRST 32
+ #define FP_REG_LAST  63
+@@ -1649,6 +1669,10 @@ enum mips_code_readable_setting {
+ #define COP0_REG_LAST 111
+ #define COP0_REG_NUM (COP0_REG_LAST - COP0_REG_FIRST + 1)
++#define COP0_STATUS_REG_NUM   (COP0_REG_FIRST + 12)
++#define COP0_CAUSE_REG_NUM    (COP0_REG_FIRST + 13)
++#define COP0_EPC_REG_NUM      (COP0_REG_FIRST + 14)
 +
-+#undef TARGET_OS_CPP_BUILTINS
-+#define TARGET_OS_CPP_BUILTINS()          \
-+  do                                      \
-+    {                                     \
-+      builtin_define_std ("PPC");         \
-+      builtin_define ("__embedded__");    \
-+      builtin_assert ("system=embedded"); \
-+      builtin_assert ("cpu=powerpc");     \
-+      builtin_assert ("machine=powerpc"); \
-+      TARGET_OS_SYSV_CPP_BUILTINS ();     \
-+    }                                     \
-+  while (0)
+ #define COP2_REG_FIRST 112
+ #define COP2_REG_LAST 143
+ #define COP2_REG_NUM (COP2_REG_LAST - COP2_REG_FIRST + 1)
+@@ -1666,6 +1690,29 @@ enum mips_code_readable_setting {
+ #define AT_REGNUM     (GP_REG_FIRST + 1)
+ #define HI_REGNUM     (TARGET_BIG_ENDIAN ? MD_REG_FIRST : MD_REG_FIRST + 1)
+ #define LO_REGNUM     (TARGET_BIG_ENDIAN ? MD_REG_FIRST + 1 : MD_REG_FIRST)
++#define AC1HI_REGNUM  (TARGET_BIG_ENDIAN \
++                       ? DSP_ACC_REG_FIRST : DSP_ACC_REG_FIRST + 1)
++#define AC1LO_REGNUM  (TARGET_BIG_ENDIAN \
++                       ? DSP_ACC_REG_FIRST + 1 : DSP_ACC_REG_FIRST)
++#define AC2HI_REGNUM  (TARGET_BIG_ENDIAN \
++                       ? DSP_ACC_REG_FIRST + 2 : DSP_ACC_REG_FIRST + 3)
++#define AC2LO_REGNUM  (TARGET_BIG_ENDIAN \
++                       ? DSP_ACC_REG_FIRST + 3 : DSP_ACC_REG_FIRST + 2)
++#define AC3HI_REGNUM  (TARGET_BIG_ENDIAN \
++                       ? DSP_ACC_REG_FIRST + 4 : DSP_ACC_REG_FIRST + 5)
++#define AC3LO_REGNUM  (TARGET_BIG_ENDIAN \
++                       ? DSP_ACC_REG_FIRST + 5 : DSP_ACC_REG_FIRST + 4)
 +
-+#undef CC1_EXTRA_SPEC
-+#define CC1_EXTRA_SPEC "-maix-struct-return"
++/* A few bitfield locations for the coprocessor registers.  */
++/* Request Interrupt Priority Level is from bit 10 to bit 15 of
++   the cause register for the EIC interrupt mode.  */
++#define CAUSE_IPL     10
++/* Interrupt Priority Level is from bit 10 to bit 15 of the status register.  */
++#define SR_IPL                10
++/* Exception Level is at bit 1 of the status register.  */
++#define SR_EXL                1
++/* Interrupt Enable is at bit 0 of the status register.  */
++#define SR_IE         0
+ /* FPSW_REGNUM is the single condition code used if !ISA_HAS_8CC.
+    If ISA_HAS_8CC, it should not be used, and an arbitrary ST_REG
+@@ -1754,11 +1801,18 @@ enum mips_code_readable_setting {
+    incoming arguments, the static chain pointer, or the frame pointer.
+    The epilogue temporary mustn't conflict with the return registers,
+    the PIC call register ($25), the frame pointer, the EH stack adjustment,
+-   or the EH data registers.  */
++   or the EH data registers.
 +
-+#undef ASM_DEFAULT_SPEC
-+#define ASM_DEFAULT_SPEC "-mppc%{m64:64} -me500mc"
-diff -Nur a/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm
---- a/gcc/config/rs6000/eabi.asm       2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/rs6000/eabi.asm       2010-01-25 09:50:29.035686224 +0100
-@@ -230,7 +230,7 @@
-    r11                has the address of .LCTOC1 in it.
-    r12                has the value to add to each pointer
-    r13 .. r31 are unchanged */
--      
-+#ifdef _RELOCATABLE
- FUNC_START(__eabi_convert)
-         cmplw 1,3,4                           /* any pointers to convert? */
-         subf  5,3,4                           /* calculate number of words to convert */
-@@ -285,5 +285,5 @@
-         blr
++   If we're generating interrupt handlers, we use K0 as a temporary register
++   in prologue/epilogue code.  */
  
- FUNC_END(__eabi_uconvert)
--
-+#endif
- #endif
-diff -Nur a/gcc/config/rs6000/eabi-ci.asm b/gcc/config/rs6000/eabi-ci.asm
---- a/gcc/config/rs6000/eabi-ci.asm    2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/rs6000/eabi-ci.asm    2010-01-25 09:50:29.035686224 +0100
-@@ -98,6 +98,7 @@
- /* Head of __init function used for static constructors.  */
-       .section ".init","ax"
-       .align 2
-+FUNC_START(_init)
- FUNC_START(__init)
-       stwu 1,-16(1)
-       mflr 0
-@@ -106,6 +107,7 @@
- /* Head of __fini function used for static destructors.  */
-       .section ".fini","ax"
-       .align 2
-+FUNC_START(_fini)
- FUNC_START(__fini)
-       stwu 1,-16(1)
-       mflr 0
-diff -Nur a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h
---- a/gcc/config/rs6000/eabi.h 2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/rs6000/eabi.h 2010-01-25 09:50:29.035686224 +0100
-@@ -23,10 +23,6 @@
- #undef TARGET_DEFAULT
- #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
+ #define MIPS16_PIC_TEMP_REGNUM (GP_REG_FIRST + 2)
+-#define MIPS_PROLOGUE_TEMP_REGNUM (GP_REG_FIRST + 3)
+-#define MIPS_EPILOGUE_TEMP_REGNUM (GP_REG_FIRST + (TARGET_MIPS16 ? 6 : 8))
++#define MIPS_PROLOGUE_TEMP_REGNUM \
++  (cfun->machine->interrupt_handler_p ? K0_REG_NUM : GP_REG_FIRST + 3)
++#define MIPS_EPILOGUE_TEMP_REGNUM             \
++  (cfun->machine->interrupt_handler_p         \
++   ? K0_REG_NUM                                       \
++   : GP_REG_FIRST + (TARGET_MIPS16 ? 6 : 8))
  
--/* Invoke an initializer function to set up the GOT.  */
--#define NAME__MAIN "__eabi"
--#define INVOKE__main
+ #define MIPS16_PIC_TEMP gen_rtx_REG (Pmode, MIPS16_PIC_TEMP_REGNUM)
+ #define MIPS_PROLOGUE_TEMP(MODE) gen_rtx_REG (MODE, MIPS_PROLOGUE_TEMP_REGNUM)
+@@ -2284,14 +2338,7 @@ typedef struct mips_args {
+       (mips_abi == ABI_EABI && UNITS_PER_FPVALUE >= UNITS_PER_DOUBLE)
\f
+-/* Say that the epilogue uses the return address register.  Note that
+-   in the case of sibcalls, the values "used by the epilogue" are
+-   considered live at the start of the called function.
 -
- #undef TARGET_VERSION
- #define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
+-   If using a GOT, say that the epilogue also uses GOT_VERSION_REGNUM.
+-   See the comment above load_call<mode> for details.  */
+-#define EPILOGUE_USES(REGNO) \
+-  ((REGNO) == 31 || (TARGET_USE_GOT && (REGNO) == GOT_VERSION_REGNUM))
++#define EPILOGUE_USES(REGNO)  mips_epilogue_uses (REGNO)
  
-@@ -42,3 +38,20 @@
-       TARGET_OS_SYSV_CPP_BUILTINS ();     \
-     }                                     \
-   while (0)
-+
-+/* Add -te500v1 and -te500v2 options for convenience in generating
-+   multilibs.  */
-+#undef CC1_EXTRA_SPEC
-+#define CC1_EXTRA_SPEC \
-+  "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} " \
-+  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
-+  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}"                  \
-+  "%{te500mc: -mcpu=e500mc -maix-struct-return}"
-+
-+#undef ASM_DEFAULT_SPEC
-+#define ASM_DEFAULT_SPEC                      \
-+  "%{te500v1:-mppc -mspe -me500 ;             \
-+     te500v2:-mppc -mspe -me500 ;             \
-+     te600:-mppc -maltivec ;                  \
-+     te500mc:-mppc -me500mc ;                 \
-+     :-mppc%{m64:64}}"
-diff -Nur a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
---- a/gcc/config/rs6000/linux.h        2007-08-02 12:49:31.000000000 +0200
-+++ b/gcc/config/rs6000/linux.h        2010-01-25 09:50:29.035686224 +0100
-@@ -128,3 +128,29 @@
- #ifdef TARGET_DEFAULT_LONG_DOUBLE_128
- #define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
- #endif
+ /* Treat LOC as a byte offset from the stack pointer and round it up
+    to the next fully-aligned offset.  */
+--- a/gcc/config/mips/mips.md
++++ b/gcc/config/mips/mips.md
+@@ -67,7 +67,16 @@
+    (UNSPEC_SET_GOT_VERSION    46)
+    (UNSPEC_UPDATE_GOT_VERSION 47)
+    (UNSPEC_COPYGP             48)
++   (UNSPEC_ERET                       49)
++   (UNSPEC_DERET              50)
++   (UNSPEC_DI                 51)
++   (UNSPEC_EHB                        52)
++   (UNSPEC_RDPGPR             53)
++   (UNSPEC_COP0                       54)
+    
++   (UNSPEC_UNALIGNED_LOAD     60)
++   (UNSPEC_UNALIGNED_STORE    61)
 +
-+/* Add -te500v1 and -te500v2 options for convenience in generating
-+   multilibs.  */
-+#undef CC1_EXTRA_SPEC
-+#define CC1_EXTRA_SPEC \
-+  "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} " \
-+  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
-+  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}" \
-+  "%{te500mc: -mcpu=e500mc}"
+    (UNSPEC_ADDRESS_FIRST      100)
+    (TLS_GET_TP_REGNUM         3)
+@@ -372,6 +381,12 @@
+ ;; frsqrt       floating point reciprocal square root
+ ;; frsqrt1      floating point reciprocal square root step1
+ ;; frsqrt2      floating point reciprocal square root step2
++;; dspmac       DSP MAC instructions not saturating the accumulator
++;; dspmacsat    DSP MAC instructions that saturate the accumulator
++;; accext       DSP accumulator extract instructions
++;; accmod       DSP accumulator modify instructions
++;; dspalu       DSP ALU instructions not saturating the result
++;; dspalusat    DSP ALU instructions that saturate the result
+ ;; multi      multiword sequence (or user asm statements)
+ ;; nop                no operation
+ ;; ghost      an instruction that produces no real code
+@@ -380,7 +395,7 @@
+    prefetch,prefetchx,condmove,mtc,mfc,mthilo,mfhilo,const,arith,logical,
+    shift,slt,signext,clz,pop,trap,imul,imul3,imul3nc,imadd,idiv,idiv3,move,
+    fmove,fadd,fmul,fmadd,fdiv,frdiv,frdiv1,frdiv2,fabs,fneg,fcmp,fcvt,fsqrt,
+-   frsqrt,frsqrt1,frsqrt2,multi,nop,ghost"
++   frsqrt,frsqrt1,frsqrt2,dspmac,dspmacsat,accext,accmod,dspalu,dspalusat,multi,nop,ghost"
+   (cond [(eq_attr "jal" "!unset") (const_string "call")
+        (eq_attr "got" "load") (const_string "load")
+@@ -3565,7 +3580,9 @@
+       (unspec:GPR [(match_operand:BLK 1 "memory_operand" "m")
+                    (match_operand:QI 2 "memory_operand" "m")]
+                   UNSPEC_LOAD_LEFT))]
+-  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
++  "!TARGET_MIPS16
++   && !ISA_HAS_UL_US
++   && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
+   "<load>l\t%0,%2"
+   [(set_attr "move_type" "load")
+    (set_attr "mode" "<MODE>")])
+@@ -3576,7 +3593,9 @@
+                    (match_operand:QI 2 "memory_operand" "m")
+                    (match_operand:GPR 3 "register_operand" "0")]
+                   UNSPEC_LOAD_RIGHT))]
+-  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
++  "!TARGET_MIPS16
++   && !ISA_HAS_UL_US
++   && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
+   "<load>r\t%0,%2"
+   [(set_attr "move_type" "load")
+    (set_attr "mode" "<MODE>")])
+@@ -3586,7 +3605,9 @@
+       (unspec:BLK [(match_operand:GPR 1 "reg_or_0_operand" "dJ")
+                    (match_operand:QI 2 "memory_operand" "m")]
+                   UNSPEC_STORE_LEFT))]
+-  "!TARGET_MIPS16 && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
++  "!TARGET_MIPS16
++   && !ISA_HAS_UL_US
++   && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
+   "<store>l\t%z1,%2"
+   [(set_attr "move_type" "store")
+    (set_attr "mode" "<MODE>")])
+@@ -3602,6 +3623,28 @@
+   [(set_attr "move_type" "store")
+    (set_attr "mode" "<MODE>")])
++;; Unaligned load and store patterns.
 +
-+#undef ASM_DEFAULT_SPEC
-+#define ASM_DEFAULT_SPEC                      \
-+  "%{te500v1:-mppc -mspe -me500 ;             \
-+     te500v2:-mppc -mspe -me500 ;             \
-+     te600:-mppc -maltivec ;                  \
-+     te500mc:-me500mc ;                               \
-+     :-mppc%{m64:64}}"
++(define_insn "mov_u<load>"
++  [(set (match_operand:GPR 0 "register_operand" "=d")
++      (unspec:GPR [(match_operand:BLK 1 "memory_operand" "m")
++                   (match_operand:QI 2 "memory_operand" "m")]
++                  UNSPEC_UNALIGNED_LOAD))]
++  "ISA_HAS_UL_US && mips_mem_fits_mode_p (<MODE>mode, operands[1])"
++  "u<load>\t%0,%2"
++  [(set_attr "type" "load")
++   (set_attr "mode" "<MODE>")])
 +
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{msoft-float:/nof ;                               \
-+     te600:/te600 ;                           \
-+     te500v1:/te500v1 ;                               \
-+     te500v2:/te500v2 ;                               \
-+     te500mc:/te500mc}"
-diff -Nur a/gcc/config/rs6000/montavista-linux.h b/gcc/config/rs6000/montavista-linux.h
---- a/gcc/config/rs6000/montavista-linux.h     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/montavista-linux.h     2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,41 @@
-+/* MontaVista GNU/Linux Configuration.
-+   Copyright (C) 2009
-+   Free Software Foundation, Inc.
++(define_insn "mov_u<store>"
++  [(set (match_operand:BLK 0 "memory_operand" "=m")
++      (unspec:BLK [(match_operand:GPR 1 "reg_or_0_operand" "dJ")
++                   (match_operand:QI 2 "memory_operand" "m")]
++                  UNSPEC_UNALIGNED_STORE))]
++  "ISA_HAS_UL_US && mips_mem_fits_mode_p (<MODE>mode, operands[0])"
++  "u<store>\t%z1,%2"
++  [(set_attr "type" "store")
++   (set_attr "mode" "<MODE>")])
++
+ ;; An instruction to calculate the high part of a 64-bit SYMBOL_ABSOLUTE.
+ ;; The required value is:
+ ;;
+@@ -5472,6 +5515,26 @@
+       return "%*b\t%l0%/";
+       else
+       {
++        if (final_sequence && (mips_abi == ABI_32 || mips_abi == ABI_O64))
++          {
++              /* If the delay slot contains a $gp restore, we need to
++                 do that first, because we need it for the load
++               label.  Other ABIs do not have caller-save $gp.  */
++            rtx next = NEXT_INSN (insn);
++            if (INSN_P (next) && !INSN_DELETED_P (next))
++              {
++                rtx pat = PATTERN (next);
++                if (GET_CODE (pat) == SET
++                    && REG_P (SET_DEST (pat))
++                    && REGNO (SET_DEST (pat)) == PIC_OFFSET_TABLE_REGNUM)
++                  {
++                    rtx ops[2];
++                    ops[0] = SET_DEST (pat);
++                    ops[1] = SET_SRC (pat);
++                    output_asm_insn (mips_output_move (ops[0], ops[1]), ops);
++                  }
++              }
++          }
+         output_asm_insn (mips_output_load_label (), operands);
+         return "%*jr\t%@%/%]";
+       }
+@@ -5490,7 +5553,13 @@
+             (lt (abs (minus (match_dup 0)
+                             (plus (pc) (const_int 4))))
+                 (const_int 131072)))
+-       (const_int 4) (const_int 16)))])
++       (const_int 4)
++         (if_then_else
++          ;; for these two ABIs we may need to move a restore of $gp
++          (ior (eq (symbol_ref "mips_abi") (symbol_ref "ABI_32"))
++               (eq (symbol_ref "mips_abi") (symbol_ref "ABI_O64")))
++          (const_int 20)
++          (const_int 16))))])
+ ;; We need a different insn for the mips16, because a mips16 branch
+ ;; does not have a delay slot.
+@@ -5679,6 +5748,60 @@
+   [(set_attr "type"   "jump")
+    (set_attr "mode"   "none")])
++;; Exception return.
++(define_insn "mips_eret"
++  [(return)
++   (unspec_volatile [(const_int 0)] UNSPEC_ERET)]
++  ""
++  "eret"
++  [(set_attr "type"   "trap")
++   (set_attr "mode"   "none")])
++
++;; Debug exception return.
++(define_insn "mips_deret"
++  [(return)
++   (unspec_volatile [(const_int 0)] UNSPEC_DERET)]
++  ""
++  "deret"
++  [(set_attr "type"   "trap")
++   (set_attr "mode"   "none")])
++
++;; Disable interrupts.
++(define_insn "mips_di"
++  [(unspec_volatile [(const_int 0)] UNSPEC_DI)]
++  ""
++  "di"
++  [(set_attr "type"   "trap")
++   (set_attr "mode"   "none")])
++
++;; Execution hazard barrier.
++(define_insn "mips_ehb"
++  [(unspec_volatile [(const_int 0)] UNSPEC_EHB)]
++  ""
++  "ehb"
++  [(set_attr "type"   "trap")
++   (set_attr "mode"   "none")])
++
++;; Read GPR from previous shadow register set.
++(define_insn "mips_rdpgpr"
++  [(set (match_operand:SI 0 "register_operand" "=d")
++      (unspec_volatile:SI [(match_operand:SI 1 "register_operand" "d")]
++                          UNSPEC_RDPGPR))]
++  ""
++  "rdpgpr\t%0,%1"
++  [(set_attr "type"   "move")
++   (set_attr "mode"   "SI")])
++
++;; Move involving COP0 registers.
++(define_insn "cop0_move"
++  [(set (match_operand:SI 0 "register_operand" "=B,d")
++      (unspec_volatile:SI [(match_operand:SI 1 "register_operand" "d,B")]
++                          UNSPEC_COP0))]
++  ""
++{ return mips_output_move (operands[0], operands[1]); }
++  [(set_attr "type"   "mtc,mfc")
++   (set_attr "mode"   "SI")])
++
+ ;; This is used in compiling the unwind routines.
+ (define_expand "eh_return"
+   [(use (match_operand 0 "general_operand"))]
+--- a/gcc/config/mips/mips.opt
++++ b/gcc/config/mips/mips.opt
+@@ -184,6 +184,10 @@ mips16
+ Target Report RejectNegative Mask(MIPS16)
+ Generate MIPS16 code
++mips16e
++Target Report RejectNegative Mask(MIPS16) MaskExists
++Deprecated; alias for -mips16
++
+ mips3d
+ Target Report RejectNegative Mask(MIPS3D)
+ Use MIPS-3D instructions
+@@ -236,6 +240,10 @@ mno-mips3d
+ Target Report RejectNegative InverseMask(MIPS3D)
+ Do not use MIPS-3D instructions
++mocteon-useun
++Target Report Mask(OCTEON_UNALIGNED)
++Use Octeon-specific unaligned loads/stores for 32/64-bit data
++
+ mpaired-single
+ Target Report Mask(PAIRED_SINGLE_FLOAT)
+ Use paired-single floating-point instructions
+--- /dev/null
++++ b/gcc/config/mips/octeon-elf-unwind.h
+@@ -0,0 +1,57 @@
++/* Stack unwinding support through the first exception frame.
++   Copyright (C) 2007 Cavium Networks.
 +
 +This file is part of GCC.
 +
 +GCC 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)
++the Free Software Foundation; either version 2, or (at your option)
 +any later version.
 +
 +GCC is distributed in the hope that it will be useful,
@@ -19866,2417 +18153,2042 @@ diff -Nur a/gcc/config/rs6000/montavista-linux.h b/gcc/config/rs6000/montavista-
 +GNU General Public License for more details.
 +
 +You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
++along with GCC; see the file COPYING.  If not, write to
++the Free Software Foundation, 51 Franklin Street, Fifth Floor,
++Boston, MA 02110-1301, USA.  */
 +
-+/* Add -te500v2 option for convenience in generating multilibs.  */
-+#undef CC1_EXTRA_SPEC
-+#define CC1_EXTRA_SPEC \
-+  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
-+  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}" \
-+  "%{te500mc: -mcpu=e500mc}"
++#define MD_FALLBACK_FRAME_STATE_FOR octeon_elf_fallback_frame_state
 +
-+#undef ASM_DEFAULT_SPEC
-+#define ASM_DEFAULT_SPEC                        \
-+  "%{te500v2:-mppc -mspe -me500 ;               \
-+     te600:-mppc -maltivec ;                    \
-+     te500mc:-me500mc ;                         \
-+     :-mppc}"
++/* Check whether this is the cvmx_interrupt_stage2 frame.  If the
++   function call was dispatched via k0 assume we are in
++   cvmx_interrupt_stage2.  In this case the sp in point to the saved
++   register array.  */
 +
-+/* The various C libraries each have their own subdirectory.  */
-+#undef SYSROOT_SUFFIX_SPEC
-+#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{msoft-float:/soft-float ;                        \
-+     te600:/te600 ;                             \
-+     te500v2:/te500v2 ;                         \
-+     te500mc:/te500mc}"
-diff -Nur a/gcc/config/rs6000/option-defaults.h b/gcc/config/rs6000/option-defaults.h
---- a/gcc/config/rs6000/option-defaults.h      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/option-defaults.h      2010-01-25 09:50:29.035686224 +0100
-@@ -0,0 +1,64 @@
-+/* Definitions of default options for config/rs6000 configurations.
-+   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-+   Free Software Foundation, Inc.
++static _Unwind_Reason_Code
++octeon_elf_fallback_frame_state (struct _Unwind_Context *context,
++                               _Unwind_FrameState *fs)
++{
++  unsigned i;
++  unsigned *pc = context->ra;
 +
-+   This file is part of GCC.
++  /* Look for "jalr k0".  */
++  if (pc[-2] != 0x0340f809)
++    return _URC_END_OF_STACK;
++  
++  for (i = 0; i < 32; i++)
++    {
++      fs->regs.reg[i].how = REG_SAVED_OFFSET;
++      fs->regs.reg[i].loc.offset = 8 * i;
++    }
 +
-+   GCC 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.
++  /* Keep the next frame's sp.  This way we have a CFA that points
++     exactly to the register array.  */
++  fs->regs.cfa_how = CFA_REG_OFFSET;
++  fs->regs.cfa_reg = STACK_POINTER_REGNUM;
++  fs->regs.cfa_offset = 0;
 +
-+   GCC 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.
++  /* DEPC is saved as the 35. register.  */
++  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].how = REG_SAVED_OFFSET;
++  fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].loc.offset = 8 * 35;
++  fs->retaddr_column = DWARF_ALT_FRAME_RETURN_COLUMN;
 +
-+   Under Section 7 of GPL version 3, you are granted additional
-+   permissions described in the GCC Runtime Library Exception, version
-+   3.1, as published by the Free Software Foundation.
++  return _URC_NO_REASON;
++}
+--- /dev/null
++++ b/gcc/config/mips/octeon-elf.h
+@@ -0,0 +1,98 @@
++/* Macros for mips*-octeon-elf target.
++   Copyright (C) 2004, 2005, 2006 Cavium Networks.
 +
-+   You should have received a copy of the GNU General Public License and
-+   a copy of the GCC Runtime Library Exception along with this program;
-+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-+   <http://www.gnu.org/licenses/>.  */
++This file is part of GCC.
 +
-+/* This header needs to be included after any other headers affecting
-+   TARGET_DEFAULT.  */
++GCC 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 2, or (at your option)
++any later version.
 +
-+#if TARGET_AIX
-+#define OPT_64 "maix64"
-+#define OPT_32 "maix32"
-+#else
-+#define OPT_64 "m64"
-+#define OPT_32 "m32"
-+#endif
++GCC 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.
 +
-+#ifndef MASK_64BIT
-+#define MASK_64BIT 0
-+#endif
++You should have received a copy of the GNU General Public License
++along with GCC; see the file COPYING.  If not, write to
++the Free Software Foundation, 51 Franklin Street, Fifth Floor,
++Boston, MA 02110-1301, USA.  */
 +
-+#if TARGET_DEFAULT & MASK_64BIT
-+#define OPT_ARCH64 "!"OPT_32
-+#define OPT_ARCH32 OPT_32
-+#else
-+#define OPT_ARCH64 OPT_64
-+#define OPT_ARCH32 "!"OPT_64
-+#endif
++/* Add MASK_SOFT_FLOAT and MASK_OCTEON_UNALIGNED.  */
 +
-+/* Support for a compile-time default CPU, et cetera.  The rules are:
-+   --with-cpu is ignored if -mcpu is specified; likewise --with-cpu-32
-+     and --with-cpu-64.
-+   --with-tune is ignored if -mtune is specified; likewise --with-tune-32
-+     and --with-tune-64.
-+   --with-float is ignored if -mhard-float or -msoft-float are
-+    specified.  */
-+#define OPTION_DEFAULT_SPECS \
-+  {"cpu", "%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}" }, \
-+  {"cpu_32", "%{" OPT_ARCH32 ":%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}}" }, \
-+  {"cpu_64", "%{" OPT_ARCH64 ":%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}}" }, \
-+  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
-+  {"tune_32", "%{" OPT_ARCH32 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
-+  {"tune_64", "%{" OPT_ARCH64 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
-+  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
-diff -Nur a/gcc/config/rs6000/paired.md b/gcc/config/rs6000/paired.md
---- a/gcc/config/rs6000/paired.md      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/rs6000/paired.md      2010-01-25 09:50:29.035686224 +0100
-@@ -27,7 +27,7 @@
-  (UNSPEC_EXTODD_V2SF      333)
- ])
--(define_insn "negv2sf2"
-+(define_insn "paired_negv2sf2"
-   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-       (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")))]
-   "TARGET_PAIRED_FLOAT"
-@@ -41,7 +41,7 @@
-   "ps_rsqrte %0,%1"
-   [(set_attr "type" "fp")])
--(define_insn "absv2sf2"
-+(define_insn "paired_absv2sf2"
-   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-       (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")))]
-   "TARGET_PAIRED_FLOAT"
-@@ -55,7 +55,7 @@
-   "ps_nabs %0,%1"
-   [(set_attr "type" "fp")])
--(define_insn "addv2sf3"
-+(define_insn "paired_addv2sf3"
-   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-       (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "%f")
-                  (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
-@@ -63,7 +63,7 @@
-   "ps_add %0,%1,%2"
-   [(set_attr "type" "fp")])
--(define_insn "subv2sf3"
-+(define_insn "paired_subv2sf3"
-   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-         (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")
-                     (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
-@@ -71,7 +71,7 @@
-   "ps_sub %0,%1,%2"
-   [(set_attr "type" "fp")])
--(define_insn "mulv2sf3"
-+(define_insn "paired_mulv2sf3"
-   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-       (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "%f")
-                  (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
-@@ -86,7 +86,7 @@
-   "ps_res %0,%1"
-   [(set_attr "type" "fp")])
--(define_insn "divv2sf3"
-+(define_insn "paired_divv2sf3"
-   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
-       (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")
-                 (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
-diff -Nur a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
---- a/gcc/config/rs6000/rs6000.c       2009-03-17 21:18:21.000000000 +0100
-+++ b/gcc/config/rs6000/rs6000.c       2010-01-25 09:50:29.035686224 +0100
-@@ -919,6 +919,7 @@
- static bool rs6000_is_opaque_type (const_tree);
- static rtx rs6000_dwarf_register_span (rtx);
- static void rs6000_init_dwarf_reg_sizes_extra (tree);
-+static int rs6000_commutative_operand_precedence (const_rtx, int);
- static rtx rs6000_legitimize_tls_address (rtx, enum tls_model);
- static void rs6000_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
- static rtx rs6000_tls_get_addr (void);
-@@ -1194,6 +1195,10 @@
- #undef TARGET_VECTOR_OPAQUE_P
- #define TARGET_VECTOR_OPAQUE_P rs6000_is_opaque_type
-+#undef TARGET_COMMUTATIVE_OPERAND_PRECEDENCE
-+#define TARGET_COMMUTATIVE_OPERAND_PRECEDENCE \
-+  rs6000_commutative_operand_precedence
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT (MASK_SOFT_FLOAT_ABI | MASK_OCTEON_UNALIGNED)
 +
- #undef TARGET_DWARF_REGISTER_SPAN
- #define TARGET_DWARF_REGISTER_SPAN rs6000_dwarf_register_span
-@@ -4682,16 +4687,19 @@
-   if (TARGET_ALTIVEC)
-     global_regs[VSCR_REGNO] = 1;
--  if (TARGET_ALTIVEC_ABI)
--    {
--      for (i = FIRST_ALTIVEC_REGNO; i < FIRST_ALTIVEC_REGNO + 20; ++i)
--      call_used_regs[i] = call_really_used_regs[i] = 1;
-+  /* If we are not using the AltiVec ABI, pretend that the normally
-+     call-saved registers are also call-used.  We could use them
-+     normally if we saved and restored them in the prologue; that
-+     would require using the alignment padding around the register
-+     save area, and some care with unwinding information.  */
-+  if (! TARGET_ALTIVEC_ABI)
-+    for (i = FIRST_ALTIVEC_REGNO + 20; i <= LAST_ALTIVEC_REGNO; ++i)
-+      call_used_regs[i] = call_really_used_regs[i] = 1;
--      /* AIX reserves VR20:31 in non-extended ABI mode.  */
--      if (TARGET_XCOFF)
--      for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i)
--        fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;
--    }
-+  if (TARGET_ALTIVEC_ABI && TARGET_XCOFF)
-+    /* AIX reserves VR20:31 in non-extended ABI mode.  */
-+    for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i)
-+      fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;
- }
\f
- /* Try to output insns to set TARGET equal to the constant C if it can
-@@ -7507,10 +7515,10 @@
-   { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sums", ALTIVEC_BUILTIN_VEC_SUMS },
-   { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_xor", ALTIVEC_BUILTIN_VEC_XOR },
--  { 0, CODE_FOR_divv2sf3, "__builtin_paired_divv2sf3", PAIRED_BUILTIN_DIVV2SF3 },
--  { 0, CODE_FOR_addv2sf3, "__builtin_paired_addv2sf3", PAIRED_BUILTIN_ADDV2SF3 },
--  { 0, CODE_FOR_subv2sf3, "__builtin_paired_subv2sf3", PAIRED_BUILTIN_SUBV2SF3 },
--  { 0, CODE_FOR_mulv2sf3, "__builtin_paired_mulv2sf3", PAIRED_BUILTIN_MULV2SF3 },
-+  { 0, CODE_FOR_paired_divv2sf3, "__builtin_paired_divv2sf3", PAIRED_BUILTIN_DIVV2SF3 },
-+  { 0, CODE_FOR_paired_addv2sf3, "__builtin_paired_addv2sf3", PAIRED_BUILTIN_ADDV2SF3 },
-+  { 0, CODE_FOR_paired_subv2sf3, "__builtin_paired_subv2sf3", PAIRED_BUILTIN_SUBV2SF3 },
-+  { 0, CODE_FOR_paired_mulv2sf3, "__builtin_paired_mulv2sf3", PAIRED_BUILTIN_MULV2SF3 },
-   { 0, CODE_FOR_paired_muls0, "__builtin_paired_muls0", PAIRED_BUILTIN_MULS0 },
-   { 0, CODE_FOR_paired_muls1, "__builtin_paired_muls1", PAIRED_BUILTIN_MULS1 },
-   { 0, CODE_FOR_paired_merge00, "__builtin_paired_merge00", PAIRED_BUILTIN_MERGE00 },
-@@ -7519,10 +7527,10 @@
-   { 0, CODE_FOR_paired_merge11, "__builtin_paired_merge11", PAIRED_BUILTIN_MERGE11 },
-   /* Place holder, leave as first spe builtin.  */
--  { 0, CODE_FOR_spe_evaddw, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW },
--  { 0, CODE_FOR_spe_evand, "__builtin_spe_evand", SPE_BUILTIN_EVAND },
-+  { 0, CODE_FOR_addv2si3, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW },
-+  { 0, CODE_FOR_andv2si3, "__builtin_spe_evand", SPE_BUILTIN_EVAND },
-   { 0, CODE_FOR_spe_evandc, "__builtin_spe_evandc", SPE_BUILTIN_EVANDC },
--  { 0, CODE_FOR_spe_evdivws, "__builtin_spe_evdivws", SPE_BUILTIN_EVDIVWS },
-+  { 0, CODE_FOR_divv2si3, "__builtin_spe_evdivws", SPE_BUILTIN_EVDIVWS },
-   { 0, CODE_FOR_spe_evdivwu, "__builtin_spe_evdivwu", SPE_BUILTIN_EVDIVWU },
-   { 0, CODE_FOR_spe_eveqv, "__builtin_spe_eveqv", SPE_BUILTIN_EVEQV },
-   { 0, CODE_FOR_spe_evfsadd, "__builtin_spe_evfsadd", SPE_BUILTIN_EVFSADD },
-@@ -7798,7 +7806,7 @@
-   /* The SPE unary builtins must start with SPE_BUILTIN_EVABS and
-      end with SPE_BUILTIN_EVSUBFUSIAAW.  */
--  { 0, CODE_FOR_spe_evabs, "__builtin_spe_evabs", SPE_BUILTIN_EVABS },
-+  { 0, CODE_FOR_absv2si2, "__builtin_spe_evabs", SPE_BUILTIN_EVABS },
-   { 0, CODE_FOR_spe_evaddsmiaaw, "__builtin_spe_evaddsmiaaw", SPE_BUILTIN_EVADDSMIAAW },
-   { 0, CODE_FOR_spe_evaddssiaaw, "__builtin_spe_evaddssiaaw", SPE_BUILTIN_EVADDSSIAAW },
-   { 0, CODE_FOR_spe_evaddumiaaw, "__builtin_spe_evaddumiaaw", SPE_BUILTIN_EVADDUMIAAW },
-@@ -7830,9 +7838,9 @@
-   /* Place-holder.  Leave as last unary SPE builtin.  */
-   { 0, CODE_FOR_spe_evsubfusiaaw, "__builtin_spe_evsubfusiaaw", SPE_BUILTIN_EVSUBFUSIAAW },
--  { 0, CODE_FOR_absv2sf2, "__builtin_paired_absv2sf2", PAIRED_BUILTIN_ABSV2SF2 },
-+  { 0, CODE_FOR_paired_absv2sf2, "__builtin_paired_absv2sf2", PAIRED_BUILTIN_ABSV2SF2 },
-   { 0, CODE_FOR_nabsv2sf2, "__builtin_paired_nabsv2sf2", PAIRED_BUILTIN_NABSV2SF2 },
--  { 0, CODE_FOR_negv2sf2, "__builtin_paired_negv2sf2", PAIRED_BUILTIN_NEGV2SF2 },
-+  { 0, CODE_FOR_paired_negv2sf2, "__builtin_paired_negv2sf2", PAIRED_BUILTIN_NEGV2SF2 },
-   { 0, CODE_FOR_sqrtv2sf2, "__builtin_paired_sqrtv2sf2", PAIRED_BUILTIN_SQRTV2SF2 },
-   { 0, CODE_FOR_resv2sf2, "__builtin_paired_resv2sf2", PAIRED_BUILTIN_RESV2SF2 }
- };
-@@ -9370,6 +9378,8 @@
- static void
- rs6000_init_builtins (void)
- {
-+  tree tdecl;
-+  
-   V2SI_type_node = build_vector_type (intSI_type_node, 2);
-   V2SF_type_node = build_vector_type (float_type_node, 2);
-   V4HI_type_node = build_vector_type (intHI_type_node, 4);
-@@ -9407,60 +9417,75 @@
-   float_type_internal_node = float_type_node;
-   void_type_internal_node = void_type_node;
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__bool char"),
--                                          bool_char_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__bool short"),
--                                          bool_short_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__bool int"),
--                                          bool_int_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__pixel"),
--                                          pixel_type_node));
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool char"),
-+                    bool_char_type_node);
-+  TYPE_NAME (bool_char_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool short"),
-+                    bool_short_type_node);
-+  TYPE_NAME (bool_short_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool int"),
-+                    bool_int_type_node);
-+  TYPE_NAME (bool_int_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__pixel"),
-+                    pixel_type_node);
-+  TYPE_NAME (pixel_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-   bool_V16QI_type_node = build_vector_type (bool_char_type_node, 16);
-   bool_V8HI_type_node = build_vector_type (bool_short_type_node, 8);
-   bool_V4SI_type_node = build_vector_type (bool_int_type_node, 4);
-   pixel_V8HI_type_node = build_vector_type (pixel_type_node, 8);
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector unsigned char"),
--                                          unsigned_V16QI_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector signed char"),
--                                          V16QI_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector __bool char"),
--                                          bool_V16QI_type_node));
--
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector unsigned short"),
--                                          unsigned_V8HI_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector signed short"),
--                                          V8HI_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector __bool short"),
--                                          bool_V8HI_type_node));
--
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector unsigned int"),
--                                          unsigned_V4SI_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector signed int"),
--                                          V4SI_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector __bool int"),
--                                          bool_V4SI_type_node));
--
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector float"),
--                                          V4SF_type_node));
--  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
--                                          get_identifier ("__vector __pixel"),
--                                          pixel_V8HI_type_node));
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned char"),
-+                    unsigned_V16QI_type_node);
-+  TYPE_NAME (unsigned_V16QI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed char"),
-+                    V16QI_type_node);
-+  TYPE_NAME (V16QI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool char"),
-+                    bool_V16QI_type_node);
-+  TYPE_NAME ( bool_V16QI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
++/* Forward -m*octeon-useun.  */
 +
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned short"),
-+                    unsigned_V8HI_type_node);
-+  TYPE_NAME (unsigned_V8HI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed short"),
-+                    V8HI_type_node);
-+  TYPE_NAME (V8HI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool short"),
-+                    bool_V8HI_type_node);
-+  TYPE_NAME (bool_V8HI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
++#undef SUBTARGET_ASM_SPEC
++#define SUBTARGET_ASM_SPEC "%{mno-octeon-useun} %{!mno-octeon-useun:-mocteon-useun}"
 +
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned int"),
-+                    unsigned_V4SI_type_node);
-+  TYPE_NAME (unsigned_V4SI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed int"),
-+                    V4SI_type_node);
-+  TYPE_NAME (V4SI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool int"),
-+                    bool_V4SI_type_node);
-+  TYPE_NAME (bool_V4SI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
++/* Enable backtrace including on machine exceptions by default.  */
 +
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector float"),
-+                    V4SF_type_node);
-+  TYPE_NAME (V4SF_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-+  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __pixel"),
-+                    pixel_V8HI_type_node);
-+  TYPE_NAME (pixel_V8HI_type_node) = tdecl;
-+  (*lang_hooks.decls.pushdecl) (tdecl);
-   if (TARGET_PAIRED_FLOAT)
-     paired_init_builtins ();
-@@ -15843,7 +15868,7 @@
- no_global_regs_above (int first, bool gpr)
- {
-   int i;
--  for (i = first; i < gpr ? 32 : 64 ; i++)
-+  for (i = first; i < (gpr ? 32 : 64); i++)
-     if (global_regs[i])
-       return false;
-   return true;
-@@ -15869,11 +15894,11 @@
-   int regno = gpr ? info->first_gp_reg_save : (info->first_fp_reg_save - 32);
-   rtx sym;
-   int select = ((savep ? 1 : 0) << 2
--              | (gpr
-+              | (TARGET_SPE_ABI
-                  /* On the SPE, we never have any FPRs, but we do have
-                     32/64-bit versions of the routines.  */
--                 ? (TARGET_SPE_ABI && info->spe_64bit_regs_used ? 1 : 0)
--                 : 0) << 1
-+                 ? (info->spe_64bit_regs_used ? 1 : 0)
-+                 : (gpr ? 1 : 0)) << 1
-               | (exitp ? 1: 0));
-   /* Don't generate bogus routine names.  */
-@@ -15908,6 +15933,7 @@
-       sym = savres_routine_syms[regno-FIRST_SAVRES_REGISTER][select]
-       = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
-+      SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_FUNCTION;
-     }
-   return sym;
-@@ -16098,6 +16124,14 @@
-       savres_gprs_inline = savres_gprs_inline || using_multiple_p;
-     }
-+  /* Code intended for use in shared libraries cannot be reliably linked
-+     with out-of-line prologues and epilogues.  */
-+  if (flag_pic)
-+    {
-+      savres_gprs_inline = 1;
-+      savres_fprs_inline = 1;
-+    }
++#undef SUBTARGET_CC1_SPEC
++#define SUBTARGET_CC1_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}"
 +
-   return (using_multiple_p
-         | (savres_fprs_inline << 1)
-         | (savres_gprs_inline << 2));
-@@ -16122,7 +16156,7 @@
-   int using_store_multiple;
-   int using_static_chain_p = (cfun->static_chain_decl != NULL_TREE
-                               && df_regs_ever_live_p (STATIC_CHAIN_REGNUM)
--                              && !call_used_regs[STATIC_CHAIN_REGNUM]);
-+                              && call_used_regs[STATIC_CHAIN_REGNUM]);
-   HOST_WIDE_INT sp_offset = 0;
-   if (TARGET_FIX_AND_CONTINUE)
-@@ -16924,8 +16958,9 @@
-                                || (cfun->calls_alloca
-                                    && !frame_pointer_needed));
-   restore_lr = (info->lr_save_p
--              && restoring_GPRs_inline
--              && restoring_FPRs_inline);
-+              && (restoring_GPRs_inline
-+                  || (restoring_FPRs_inline
-+                      && info->first_fp_reg_save < 64)));
-   if (WORLD_SAVE_P (info))
-     {
-@@ -17197,7 +17232,7 @@
-   /* Get the old lr if we saved it.  If we are restoring registers
-      out-of-line, then the out-of-line routines can do this for us.  */
--  if (restore_lr)
-+  if (restore_lr && restoring_GPRs_inline)
-     {
-       rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
-                                     info->lr_save_offset + sp_offset);
-@@ -17216,7 +17251,7 @@
-     }
-   /* Set LR here to try to overlap restores below.  */
--  if (restore_lr)
-+  if (restore_lr && restoring_GPRs_inline)
-     emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
-                   gen_rtx_REG (Pmode, 0));
-@@ -17396,6 +17431,18 @@
-           }
-     }
-+  if (restore_lr && !restoring_GPRs_inline)
-+    {
-+      rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
-+                                    info->lr_save_offset + sp_offset);
++/* Without ASM_PREFERRED_EH_DATA_FORMAT, output_call_frame_info emits
++   pointer-sized addresses for FDE addresses.  For 64-bit targets, it does
++   it without properly "switching over" to 64-bit as described in the DWARF3
++   spec. GDB can fall back on .eh_frames and misinterpret FDE addresses.
++   Instead let's be explicit and use augmentation to describe the encoding if
++   pointer size is 64.  */
 +
-+      emit_move_insn (gen_rtx_REG (Pmode, 0), mem);
-+    }
++#undef ASM_PREFERRED_EH_DATA_FORMAT
++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
++  ((CODE) == 1 && POINTER_SIZE == 64                                    \
++   ? (ABI_HAS_64BIT_SYMBOLS ? DW_EH_PE_udata8 : DW_EH_PE_udata4)        \
++   : DW_EH_PE_absptr)
 +
-+  if (restore_lr && !restoring_GPRs_inline)
-+    emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
-+                  gen_rtx_REG (Pmode, 0));
++/* Link to libc library.  */
 +
-   /* Restore fpr's if we need to do it without calling a function.  */
-   if (restoring_FPRs_inline)
-     for (i = 0; i < 64 - info->first_fp_reg_save; i++)
-@@ -22163,6 +22210,30 @@
-     return 4 + rs6000_register_move_cost (mode, rclass, GENERAL_REGS);
- }
-+/* Return a value indicating whether OP, an operand of a commutative
-+   operation, is preferred as the first or second operand.  The higher
-+   the value, the stronger the preference for being the first operand.
-+   We use negative values to indicate a preference for the first operand
-+   and positive values for the second operand.
-+   VALUE is the default precedence for OP; see rtlanal.c:
-+   commutative_operand_precendece.  */
++#undef LIB_SPEC
++#define LIB_SPEC "-lc"
 +
-+static int
-+rs6000_commutative_operand_precedence (const_rtx op, int value)
-+{
-+  /* Prefer pointer objects over non pointer objects.
-+     For rationale see PR28690.  */
-+  if (GET_RTX_CLASS (GET_CODE (op)) == RTX_OBJ
-+      && ((REG_P (op) && REG_POINTER (op))
-+        || (MEM_P (op) && MEM_POINTER (op))))
-+    /* value = -1 */;
-+  else
-+    /* value = -2 */
-+    --value;
++/* Link to startup file.  */
 +
-+  return value;
-+}
++#undef STARTFILE_SPEC
++#define STARTFILE_SPEC "crti%O%s crtbegin%O%s crt0%O%s"
 +
- /* Returns a code for a target-specific builtin that implements
-    reciprocal of the function, or NULL_TREE if not available.  */
-@@ -22686,12 +22757,16 @@
- static rtx
- rs6000_dwarf_register_span (rtx reg)
- {
--  unsigned regno;
-+  rtx parts[8];
-+  int i, words;
-+  unsigned regno = REGNO (reg);
-+  enum machine_mode mode = GET_MODE (reg);
-   if (TARGET_SPE
-+      && regno < 32
-       && (SPE_VECTOR_MODE (GET_MODE (reg))
--        || (TARGET_E500_DOUBLE
--            && (GET_MODE (reg) == DFmode || GET_MODE (reg) == DDmode))))
-+        || (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode)
-+            && mode != SFmode && mode != SDmode && mode != SCmode)))
-     ;
-   else
-     return NULL_RTX;
-@@ -22701,15 +22776,23 @@
-   /* The duality of the SPE register size wreaks all kinds of havoc.
-      This is a way of distinguishing r0 in 32-bits from r0 in
-      64-bits.  */
--  return
--    gen_rtx_PARALLEL (VOIDmode,
--                    BYTES_BIG_ENDIAN
--                    ? gen_rtvec (2,
--                                 gen_rtx_REG (SImode, regno + 1200),
--                                 gen_rtx_REG (SImode, regno))
--                    : gen_rtvec (2,
--                                 gen_rtx_REG (SImode, regno),
--                                 gen_rtx_REG (SImode, regno + 1200)));
-+  words = (GET_MODE_SIZE (mode) + UNITS_PER_FP_WORD - 1) / UNITS_PER_FP_WORD;
-+  gcc_assert (words <= 4);
-+  for (i = 0; i < words; i++, regno++)
-+    {
-+      if (BYTES_BIG_ENDIAN)
-+      {
-+        parts[2 * i] = gen_rtx_REG (SImode, regno + 1200);
-+        parts[2 * i + 1] = gen_rtx_REG (SImode, regno);
-+      }
-+      else
-+      {
-+        parts[2 * i] = gen_rtx_REG (SImode, regno);
-+        parts[2 * i + 1] = gen_rtx_REG (SImode, regno + 1200);
-+      }
-+    }
++/* Default our test-only n64 configuration to -G0 since that is what
++   the kernel uses.  */
 +
-+  return gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (words * 2, parts));
- }
- /* Fill in sizes for SPE register high parts in table used by unwinder.  */
-diff -Nur a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
---- a/gcc/config/rs6000/rs6000.h       2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/rs6000/rs6000.h       2010-01-25 09:50:29.045688403 +0100
-@@ -368,16 +368,6 @@
-     previous_group
-   };
--/* Support for a compile-time default CPU, et cetera.  The rules are:
--   --with-cpu is ignored if -mcpu is specified.
--   --with-tune is ignored if -mtune is specified.
--   --with-float is ignored if -mhard-float or -msoft-float are
--    specified.  */
--#define OPTION_DEFAULT_SPECS \
--  {"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \
--  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
--  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
--
- /* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */
- struct rs6000_cpu_select
- {
-@@ -794,8 +784,8 @@
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-    1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,        \
-    /* AltiVec registers.  */                     \
--   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
--   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-+   1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-    1, 1                                                  \
-    , 1, 1, 1                                       \
- }
-@@ -813,8 +803,8 @@
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-    1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,        \
-    /* AltiVec registers.  */                     \
--   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
--   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-+   1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-    0, 0                                                  \
-    , 0, 0, 0                                       \
- }
-diff -Nur a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
---- a/gcc/config/rs6000/rs6000.md      2009-04-01 18:22:17.000000000 +0200
-+++ b/gcc/config/rs6000/rs6000.md      2010-01-25 09:50:29.045688403 +0100
-@@ -14703,9 +14703,9 @@
-   [(match_parallel 0 "any_parallel_operand"
-                  [(clobber (reg:P 65))
-                   (use (match_operand:P 1 "symbol_ref_operand" "s"))
--                    (use (match_operand:P 2 "gpc_reg_operand" "r"))
--                  (set (match_operand:P 3 "memory_operand" "=m")
--                       (match_operand:P 4 "gpc_reg_operand" "r"))])]
-+                    (use (reg:P 11))
-+                  (set (match_operand:P 2 "memory_operand" "=m")
-+                       (match_operand:P 3 "gpc_reg_operand" "r"))])]
-   ""
-   "bl %z1"
-   [(set_attr "type" "branch")
-@@ -14715,9 +14715,9 @@
-   [(match_parallel 0 "any_parallel_operand"
-                  [(clobber (reg:P 65))
-                   (use (match_operand:P 1 "symbol_ref_operand" "s"))
--                    (use (match_operand:P 2 "gpc_reg_operand" "r"))
--                  (set (match_operand:DF 3 "memory_operand" "=m")
--                       (match_operand:DF 4 "gpc_reg_operand" "f"))])]
-+                    (use (reg:P 11))
-+                  (set (match_operand:DF 2 "memory_operand" "=m")
-+                       (match_operand:DF 3 "gpc_reg_operand" "f"))])]
-   ""
-   "bl %z1"
-   [(set_attr "type" "branch")
-@@ -14810,9 +14810,9 @@
-  [(match_parallel 0 "any_parallel_operand"
-                   [(clobber (match_operand:P 1 "register_operand" "=l"))
-                    (use (match_operand:P 2 "symbol_ref_operand" "s"))
--                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
--                 (set (match_operand:P 4 "gpc_reg_operand" "=r")
--                      (match_operand:P 5 "memory_operand" "m"))])]
-+                   (use (reg:P 11))
-+                 (set (match_operand:P 3 "gpc_reg_operand" "=r")
-+                      (match_operand:P 4 "memory_operand" "m"))])]
-  ""
-  "bl %z2"
-  [(set_attr "type" "branch")
-@@ -14823,9 +14823,9 @@
-                   [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
--                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
--                 (set (match_operand:P 4 "gpc_reg_operand" "=r")
--                      (match_operand:P 5 "memory_operand" "m"))])]
-+                   (use (reg:P 11))
-+                 (set (match_operand:P 3 "gpc_reg_operand" "=r")
-+                      (match_operand:P 4 "memory_operand" "m"))])]
-  ""
-  "b %z2"
-  [(set_attr "type" "branch")
-@@ -14836,9 +14836,9 @@
-                   [(return)
-                  (clobber (match_operand:P 1 "register_operand" "=l"))
-                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
--                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
--                 (set (match_operand:DF 4 "gpc_reg_operand" "=f")
--                      (match_operand:DF 5 "memory_operand" "m"))])]
-+                   (use (reg:P 11))
-+                 (set (match_operand:DF 3 "gpc_reg_operand" "=f")
-+                      (match_operand:DF 4 "memory_operand" "m"))])]
-  ""
-  "b %z2"
-  [(set_attr "type" "branch")
-@@ -14889,6 +14889,120 @@
- }"
-   [(set_attr "type" "load")])
\f
-+;;; Expanders for vector insn patterns shared between the SPE and TARGET_PAIRED systems.
++#undef SUBTARGET_SELF_SPECS
++#define SUBTARGET_SELF_SPECS \
++"%{mabi=64:%{!G*: -G0}}"
 +
-+(define_expand "absv2sf2"
-+  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
-+      (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")))]
-+  "TARGET_PAIRED_FLOAT || TARGET_SPE"
-+  "
-+{
-+  if (TARGET_SPE)
-+    {
-+      /* We need to make a note that we clobber SPEFSCR.  */
-+      emit_insn (gen_rtx_SET (VOIDmode, operands[0],
-+                              gen_rtx_ABS (V2SFmode, operands[1])));
-+      emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO)));
-+      DONE;
-+    }
-+}")
++/* Pass linker emulation mode for N32.  */
 +
-+(define_expand "negv2sf2"
-+  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
-+      (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")))]
-+  "TARGET_PAIRED_FLOAT || TARGET_SPE"
-+  "
-+{
-+  if (TARGET_SPE)
-+    {
-+      /* We need to make a note that we clobber SPEFSCR.  */
-+      emit_insn (gen_rtx_SET (VOIDmode, operands[0],
-+                              gen_rtx_NEG (V2SFmode, operands[1])));
-+      emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO)));
-+      DONE;
-+    }
-+}")
++#undef LINK_SPEC
++#define LINK_SPEC "\
++%(endian_spec) \
++%{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \
++%{mips64r2} %{bestGnum} %{shared} %{non_shared} \
++%{mabi=n32:-melf32e%{!EL:b}%{EL:l}octeonn32} \
++%{mabi=64:-melf64e%{!EL:b}%{EL:l}octeon}"
 +
-+(define_expand "addv2sf3"
-+  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
-+      (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
-+                 (match_operand:V2SF 2 "gpc_reg_operand" "")))]
-+  "TARGET_PAIRED_FLOAT || TARGET_SPE"
-+  "
-+{
-+  if (TARGET_SPE)
-+    {
-+      /* We need to make a note that we clobber SPEFSCR.  */
-+      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
++/* Override because of N32.  */
 +
-+      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
-+                                         gen_rtx_PLUS (V2SFmode, operands[1], operands[2]));
-+      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
-+      emit_insn (par);
-+      DONE;
-+    }
-+}")
++#undef LOCAL_LABEL_PREFIX
++#define LOCAL_LABEL_PREFIX ((mips_abi == ABI_N32) ? "." : "$")
 +
-+(define_expand "subv2sf3"
-+  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
-+      (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
-+                  (match_operand:V2SF 2 "gpc_reg_operand" "")))]
-+  "TARGET_PAIRED_FLOAT || TARGET_SPE"
-+  "
-+{
-+  if (TARGET_SPE)
-+    {
-+      /* We need to make a note that we clobber SPEFSCR.  */
-+      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
++/* Append the core number to the GCOV filename FN.  */
 +
-+      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
-+                                         gen_rtx_MINUS (V2SFmode, operands[1], operands[2]));
-+      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
-+      emit_insn (par);
-+      DONE;
-+    }
-+}")
++#define GCOV_TARGET_SUFFIX_LENGTH 2
++#define ADD_GCOV_TARGET_SUFFIX(FN)            \
++do                                            \
++  {                                           \
++    char *fn = FN;                            \
++    int core;                                 \
++    char s[3];                                        \
++                                              \
++    asm ("rdhwr %0, $0" : "=r"(core));                \
++    sprintf (s, "%d", core);                  \
++    strcat (fn, s);                           \
++  }                                           \
++while (0)
 +
-+(define_expand "mulv2sf3"
-+  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
-+      (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
-+                 (match_operand:V2SF 2 "gpc_reg_operand" "")))]
-+  "TARGET_PAIRED_FLOAT || TARGET_SPE"
-+  "
-+{
-+  if (TARGET_SPE)
-+    {
-+      /* We need to make a note that we clobber SPEFSCR.  */
-+      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
-+
-+      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
-+                                         gen_rtx_MULT (V2SFmode, operands[1], operands[2]));
-+      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
-+      emit_insn (par);
-+      DONE;
-+    }
-+}")
-+
-+(define_expand "divv2sf3"
-+  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
-+      (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
-+                (match_operand:V2SF 2 "gpc_reg_operand" "")))]
-+  "TARGET_PAIRED_FLOAT || TARGET_SPE"
-+  "
-+{
-+  if (TARGET_SPE)
-+    {
-+      /* We need to make a note that we clobber SPEFSCR.  */
-+      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
++/* Code to unwind through the exception frame.  */
++#define MD_UNWIND_SUPPORT "config/mips/octeon-elf-unwind.h"
+--- /dev/null
++++ b/gcc/config/mips/octeon.h
+@@ -0,0 +1,68 @@
++/* Macros for mips*-octeon-* target.
++   Copyright (C) 2004, 2005, 2006 Cavium Networks.
 +
-+      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
-+                                         gen_rtx_DIV (V2SFmode, operands[1], operands[2]));
-+      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
-+      emit_insn (par);
-+      DONE;
-+    }
-+}")
-+\f
- (include "sync.md")
- (include "altivec.md")
-diff -Nur a/gcc/config/rs6000/spe.md b/gcc/config/rs6000/spe.md
---- a/gcc/config/rs6000/spe.md 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/rs6000/spe.md 2010-01-25 09:50:29.045688403 +0100
-@@ -164,7 +164,7 @@
- ;; SPE SIMD instructions
--(define_insn "spe_evabs"
-+(define_insn "absv2si2"
-   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
-       (abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
-   "TARGET_SPE"
-@@ -181,7 +181,7 @@
-   [(set_attr "type" "vecsimple")
-    (set_attr  "length" "4")])
--(define_insn "spe_evand"
-+(define_insn "andv2si3"
-   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
-         (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
-                 (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
-@@ -1898,7 +1898,7 @@
-   [(set_attr "type" "veccomplex")
-    (set_attr  "length" "4")])
--(define_insn "spe_evaddw"
-+(define_insn "addv2si3"
-   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
-         (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
-                  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
-@@ -2028,7 +2028,7 @@
-   [(set_attr "type" "veccomplex")
-    (set_attr  "length" "4")])
--(define_insn "spe_evdivws"
-+(define_insn "divv2si3"
-   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
-         (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
-                 (match_operand:V2SI 2 "gpc_reg_operand" "r")))
-@@ -3156,9 +3156,9 @@
-   [(match_parallel 0 "any_parallel_operand"
-                  [(clobber (reg:P 65))
-                   (use (match_operand:P 1 "symbol_ref_operand" "s"))
--                  (use (match_operand:P 2 "gpc_reg_operand" "r"))
--                  (set (match_operand:V2SI 3 "memory_operand" "=m")
--                       (match_operand:V2SI 4 "gpc_reg_operand" "r"))])]
-+                  (use (reg:P 11))
-+                  (set (match_operand:V2SI 2 "memory_operand" "=m")
-+                       (match_operand:V2SI 3 "gpc_reg_operand" "r"))])]
-   "TARGET_SPE_ABI"
-   "bl %z1"
-   [(set_attr "type" "branch")
-@@ -3168,9 +3168,9 @@
-  [(match_parallel 0 "any_parallel_operand"
-                 [(clobber (reg:P 65))
-                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
--                 (use (match_operand:P 2 "gpc_reg_operand" "r"))
--                 (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
--                      (match_operand:V2SI 4 "memory_operand" "m"))])]
-+                 (use (reg:P 11))
-+                 (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
-+                      (match_operand:V2SI 3 "memory_operand" "m"))])]
-  "TARGET_SPE_ABI"
-  "bl %z1"
-  [(set_attr "type" "branch")
-@@ -3181,9 +3181,9 @@
-                 [(return)
-                  (clobber (reg:P 65))
-                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
--                 (use (match_operand:P 2 "gpc_reg_operand" "r"))
--                 (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
--                      (match_operand:V2SI 4 "memory_operand" "m"))])]
-+                 (use (reg:P 11))
-+                 (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
-+                      (match_operand:V2SI 3 "memory_operand" "m"))])]
-  "TARGET_SPE_ABI"
-  "b %z1"
-  [(set_attr "type" "branch")
-diff -Nur a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
---- a/gcc/config/rs6000/sysv4.h        2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/rs6000/sysv4.h        2010-01-25 09:50:29.045688403 +0100
-@@ -619,6 +619,9 @@
- #define CC1_SECURE_PLT_DEFAULT_SPEC ""
- #endif
-+#undef CC1_EXTRA_SPEC
-+#define CC1_EXTRA_SPEC ""
++This file is part of GCC.
 +
- /* Pass -G xxx to the compiler and set correct endian mode.  */
- #define       CC1_SPEC "%{G*} %(cc1_cpu) \
- %{mlittle|mlittle-endian: %(cc1_endian_little);           \
-@@ -643,7 +646,7 @@
- %{msdata: -msdata=default} \
- %{mno-sdata: -msdata=none} \
- %{!mbss-plt: %{!msecure-plt: %(cc1_secure_plt_default)}} \
--%{profile: -p}"
-+%{profile: -p}" CC1_EXTRA_SPEC
- /* Don't put -Y P,<path> for cross compilers.  */
- #ifndef CROSS_DIRECTORY_STRUCTURE
-@@ -843,15 +846,15 @@
- #define CPP_OS_MVME_SPEC ""
- /* PowerPC simulator based on netbsd system calls support.  */
--#define LIB_SIM_SPEC "--start-group -lsim -lc --end-group"
-+#define LIB_SIM_SPEC LIB_DEFAULT_SPEC
--#define       STARTFILE_SIM_SPEC "ecrti.o%s sim-crt0.o%s crtbegin.o%s"
-+#define       STARTFILE_SIM_SPEC "ecrti.o%s crtbegin.o%s"
--#define       ENDFILE_SIM_SPEC "crtend.o%s ecrtn.o%s"
-+#define       ENDFILE_SIM_SPEC "crtend.o%s ecrtn.o%s -Tsim-hosted.ld"
- #define LINK_START_SIM_SPEC ""
--#define LINK_OS_SIM_SPEC "-m elf32ppcsim"
-+#define LINK_OS_SIM_SPEC ""
- #define CPP_OS_SIM_SPEC ""
-diff -Nur a/gcc/config/rs6000/t-cs-eabi b/gcc/config/rs6000/t-cs-eabi
---- a/gcc/config/rs6000/t-cs-eabi      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/t-cs-eabi      2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,17 @@
-+# Multilibs for powerpc embedded ELF targets.
++GCC 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 2, or (at your option)
++any later version.
 +
-+MULTILIB_OPTIONS      = te500v1/te500v2/te600/te500mc \
-+                        msoft-float
++GCC 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.
 +
-+MULTILIB_DIRNAMES     = te500v1 te500v2 te600 te500mc \
-+                        nof
++You should have received a copy of the GNU General Public License
++along with GCC; see the file COPYING.  If not, write to
++the Free Software Foundation, 51 Franklin Street, Fifth Floor,
++Boston, MA 02110-1301, USA.  */
 +
-+MULTILIB_EXCEPTIONS   = *te600*/*msoft-float* \
-+                        *te500v1*/*msoft-float* \
-+                        *te500v2*/*msoft-float* \
-+                        *te500mc*/*msoft-float*
++#define CVMX_SHARED_BSS_FLAGS (SECTION_WRITE | SECTION_BSS)
 +
-+MULTILIB_EXTRA_OPTS   = mno-eabi mstrict-align
++#undef TARGET_ASM_SELECT_SECTION
++#define TARGET_ASM_SELECT_SECTION octeon_select_section
 +
-+MULTILIB_MATCHES      = ${MULTILIB_MATCHES_FLOAT} \
-+                        ${MULTILIB_MATCHES_ENDIAN}
-diff -Nur a/gcc/config/rs6000/t-cs-eabi-lite b/gcc/config/rs6000/t-cs-eabi-lite
---- a/gcc/config/rs6000/t-cs-eabi-lite 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/t-cs-eabi-lite 2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,16 @@
-+# Multilibs for powerpc embedded ELF targets.
++#undef TARGET_ASM_UNIQUE_SECTION
++#define TARGET_ASM_UNIQUE_SECTION octeon_unique_section
 +
-+MULTILIB_OPTIONS      = te500v1/te500v2/te600 \
-+                        msoft-float
++/* Implement ASM_OUTPUT_ALIGNED_DECL_LOCAL. This differs from the 
++   generic version only in the use of cvmx_shared attribute.  */
++ 
++#undef ASM_OUTPUT_ALIGNED_DECL_LOCAL
++#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(STREAM, DECL, NAME, SIZE, ALIGN) \
++  do                                                                  \
++    {                                                                 \
++      if ((DECL) && TREE_CODE ((DECL)) == VAR_DECL                    \
++        && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES (DECL)))  \
++      {                                                               \
++           fprintf ((STREAM), "%s", LOCAL_ASM_OP);                    \
++           assemble_name ((STREAM), (NAME));                          \
++           fprintf ((STREAM), "\n");                                  \
++         octeon_output_shared_variable ((STREAM), (DECL), (NAME),     \
++                                        (SIZE), (ALIGN));             \
++       }                                                              \
++      else                                                            \
++      ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGN);           \
++    }                                                                 \
++  while (0) 
 +
-+MULTILIB_DIRNAMES     = te500v1 te500v2 te600 \
-+                        nof
++\f
++/* Implement ASM_OUTPUT_ALIGNED_DECL_COMMON.  This differs from the mips 
++   version only in the use of cvmx_shared attribute.  */
 +
-+MULTILIB_EXCEPTIONS   = *te600*/*msoft-float* \
-+                        *te500v1*/*msoft-float* \
-+                        *te500v2*/*msoft-float*
++#undef ASM_OUTPUT_ALIGNED_DECL_COMMON
++#define ASM_OUTPUT_ALIGNED_DECL_COMMON(STREAM, DECL, NAME, SIZE, ALIGN)          \
++  {                                                                      \
++    if (TREE_CODE ((DECL)) == VAR_DECL                                           \
++        && lookup_attribute ("cvmx_shared", DECL_ATTRIBUTES ((DECL))))           \
++      {                                                                          \
++      if (TREE_PUBLIC ((DECL)) && DECL_NAME ((DECL)))                    \
++        targetm.asm_out.globalize_label (asm_out_file, (NAME));          \
++      octeon_output_shared_variable ((STREAM), (DECL), (NAME),           \
++                                     (SIZE), (ALIGN));                   \
++      }                                                                          \
++    else                                                                 \
++      mips_output_aligned_decl_common ((STREAM), (DECL), (NAME), (SIZE),   \
++                                     (ALIGN));                           \
++   }
+--- a/gcc/config/mips/predicates.md
++++ b/gcc/config/mips/predicates.md
+@@ -211,6 +211,20 @@
+     }
+ })
++(define_predicate "mask_low_and_shift_operator"
++  (and (match_code "and")
++       (match_test "GET_CODE (XEXP (op, 0)) == ASHIFT
++                  && GET_CODE (XEXP (op, 1)) == CONST_INT
++                  && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT"))
++{
++  int len;
 +
-+MULTILIB_EXTRA_OPTS   = mno-eabi mstrict-align
++  len = mask_low_and_shift_len (GET_MODE (op),
++                              INTVAL (XEXP (XEXP (op, 0), 1)),
++                              INTVAL (XEXP (op, 1)));
++  return 0 < len && len <= 32;
++})
 +
-+MULTILIB_MATCHES      = ${MULTILIB_MATCHES_FLOAT} \
-+                        ${MULTILIB_MATCHES_ENDIAN}
-diff -Nur a/gcc/config/rs6000/t-cs-linux b/gcc/config/rs6000/t-cs-linux
---- a/gcc/config/rs6000/t-cs-linux     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/t-cs-linux     2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,12 @@
-+# Multilibs for powerpc-linux-gnu targets.
-+
-+MULTILIB_OPTIONS      = te500v1/te500v2/te600/te500mc \
-+                        msoft-float
-+
-+MULTILIB_DIRNAMES     = te500v1 te500v2 te600 te500mc \
-+                        nof
-+
-+MULTILIB_EXCEPTIONS   = *te600*/*msoft-float* \
-+                        *te500v1*/*msoft-float* \
-+                        *te500v2*/*msoft-float* \
-+                        *te500mc*/*msoft-float*
-diff -Nur a/gcc/config/rs6000/t-montavista-linux b/gcc/config/rs6000/t-montavista-linux
---- a/gcc/config/rs6000/t-montavista-linux     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/t-montavista-linux     2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,26 @@
-+# MontaVista GNU/Linux Configuration.
-+# Copyright (C) 2009
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
+ (define_predicate "consttable_operand"
+   (match_test "CONSTANT_P (op)"))
+--- a/gcc/config/mips/sde.h
++++ b/gcc/config/mips/sde.h
+@@ -19,6 +19,9 @@ You should have received a copy of the G
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
++#undef TARGET_MIPS_SDE
++#define TARGET_MIPS_SDE 1
 +
-+# Build hard-float, soft-float, E500mc, E500v2 and E600
-+# libraries.
-+MULTILIB_OPTIONS = msoft-float/te500mc/te500v2/te600
-+MULTILIB_DIRNAMES = soft-float te500mc te500v2 te600
-+MULTILIB_EXCEPTIONS =
-+MULTILIB_OSDIRNAMES = msoft-float=!soft-float
-diff -Nur a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm
---- a/gcc/config/rs6000/t-ppccomm      2008-06-26 22:12:41.000000000 +0200
-+++ b/gcc/config/rs6000/t-ppccomm      2010-01-25 09:50:29.045688403 +0100
-@@ -3,10 +3,23 @@
- LIB2FUNCS_EXTRA += tramp.S $(srcdir)/config/rs6000/darwin-ldouble.c
+ #undef DRIVER_SELF_SPECS
+ #define DRIVER_SELF_SPECS                                             \
+   /* Make sure a -mips option is present.  This helps us to pick      \
+@@ -90,7 +93,8 @@ along with GCC; see the file COPYING3.  
  
- # These can't end up in shared libgcc
--LIB2FUNCS_STATIC_EXTRA = eabi.S
--
--eabi.S: $(srcdir)/config/rs6000/eabi.asm
--      cat $(srcdir)/config/rs6000/eabi.asm > eabi.S
-+LIB2FUNCS_STATIC_EXTRA = \
-+  crtsavfpr.S crtresfpr.S \
-+  crtsavgpr.S crtresgpr.S \
-+  crtresxfpr.S crtresxgpr.S \
-+  e500crtres32gpr.S \
-+  e500crtres64gpr.S \
-+  e500crtres64gprctr.S \
-+  e500crtrest32gpr.S \
-+  e500crtrest64gpr.S \
-+  e500crtresx32gpr.S \
-+  e500crtresx64gpr.S \
-+  e500crtsav32gpr.S \
-+  e500crtsav64gpr.S \
-+  e500crtsav64gprctr.S \
-+  e500crtsavg32gpr.S \
-+  e500crtsavg64gpr.S \
-+  e500crtsavg64gprctr.S
+ /* Use $5 as a temporary for both MIPS16 and non-MIPS16.  */
+ #undef MIPS_EPILOGUE_TEMP_REGNUM
+-#define MIPS_EPILOGUE_TEMP_REGNUM (GP_REG_FIRST + 5)
++#define MIPS_EPILOGUE_TEMP_REGNUM \
++  (cfun->machine->interrupt_handler_p ? K0_REG_NUM : GP_REG_FIRST + 5)
  
- tramp.S: $(srcdir)/config/rs6000/tramp.asm
-       cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
-@@ -36,6 +49,63 @@
- ncrtn.S: $(srcdir)/config/rs6000/sol-cn.asm
-       cat $(srcdir)/config/rs6000/sol-cn.asm >ncrtn.S
+ /* Using long will always be right for size_t and ptrdiff_t, since
+    sizeof(long) must equal sizeof(void *), following from the setting
+--- a/gcc/config/mips/sdemtk.h
++++ b/gcc/config/mips/sdemtk.h
+@@ -19,6 +19,8 @@ You should have received a copy of the G
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
  
-+crtsavfpr.S: $(srcdir)/config/rs6000/crtsavfpr.asm
-+      cat $(srcdir)/config/rs6000/crtsavfpr.asm >crtsavfpr.S
-+
-+crtresfpr.S: $(srcdir)/config/rs6000/crtresfpr.asm
-+      cat $(srcdir)/config/rs6000/crtresfpr.asm >crtresfpr.S
++#define TARGET_MIPS_SDEMTK    1
 +
-+crtsavgpr.S: $(srcdir)/config/rs6000/crtsavgpr.asm
-+      cat $(srcdir)/config/rs6000/crtsavgpr.asm >crtsavgpr.S
+ #define TARGET_OS_CPP_BUILTINS()                      \
+   do                                                  \
+     {                                                 \
+@@ -113,3 +115,12 @@ extern void mips_sync_icache (void *beg,
+ /* ...nor does the call sequence preserve $31.  */
+ #undef MIPS_SAVE_REG_FOR_PROFILING_P
+ #define MIPS_SAVE_REG_FOR_PROFILING_P(REGNO) ((REGNO) == GP_REG_FIRST + 31)
 +
-+crtresgpr.S: $(srcdir)/config/rs6000/crtresgpr.asm
-+      cat $(srcdir)/config/rs6000/crtresgpr.asm >crtresgpr.S
++/* From mips.h, with mno-float option added.  */
 +
-+crtresxfpr.S: $(srcdir)/config/rs6000/crtresxfpr.asm
-+      cat $(srcdir)/config/rs6000/crtresxfpr.asm >crtresxfpr.S
++#undef MIPS_ARCH_FLOAT_SPEC
++#define MIPS_ARCH_FLOAT_SPEC \
++  "%{mhard-float|msoft-float|mno-float|march=mips*:; \
++     march=vr41*|march=m4k|march=4k*|march=24kc|march=24kec \
++     |march=34kc|march=74kc|march=1004kc|march=5kc|march=octeon|march=xlr: -msoft-float; \
++     march=*: -mhard-float}"
+--- /dev/null
++++ b/gcc/config/mips/t-crtfm
+@@ -0,0 +1,9 @@
 +
-+crtresxgpr.S: $(srcdir)/config/rs6000/crtresxgpr.asm
-+      cat $(srcdir)/config/rs6000/crtresxgpr.asm >crtresxgpr.S
++EXTRA_MULTILIB_PARTS += crtfastmath.o
 +
-+e500crtres32gpr.S: $(srcdir)/config/rs6000/e500crtres32gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtres32gpr.asm >e500crtres32gpr.S
++EXTRA_PARTS += crtfastmath.o
 +
-+e500crtres64gpr.S: $(srcdir)/config/rs6000/e500crtres64gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtres64gpr.asm >e500crtres64gpr.S
++$(T)crtfastmath.o: $(srcdir)/config/mips/crtfastmath.c $(GCC_PASSES)
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
++      -c -o $(T)crtfastmath.o $(srcdir)/config/mips/crtfastmath.c
 +
-+e500crtres64gprctr.S: $(srcdir)/config/rs6000/e500crtres64gprctr.asm
-+      cat $(srcdir)/config/rs6000/e500crtres64gprctr.asm >e500crtres64gprctr.S
+--- /dev/null
++++ b/gcc/config/mips/t-octeon-elf
+@@ -0,0 +1,41 @@
++# Don't let CTOR_LIST end up in sdata section.
 +
-+e500crtrest32gpr.S: $(srcdir)/config/rs6000/e500crtrest32gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtrest32gpr.asm >e500crtrest32gpr.S
++CRTSTUFF_T_CFLAGS = -G 0 -fno-asynchronous-unwind-tables
 +
-+e500crtrest64gpr.S: $(srcdir)/config/rs6000/e500crtrest64gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtrest64gpr.asm >e500crtrest64gpr.S
++# Assemble startup files.
 +
-+e500crtresx32gpr.S: $(srcdir)/config/rs6000/e500crtresx32gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtresx32gpr.asm >e500crtresx32gpr.S
++$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES)
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
++      -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm
 +
-+e500crtresx64gpr.S: $(srcdir)/config/rs6000/e500crtresx64gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtresx64gpr.asm >e500crtresx64gpr.S
++$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES)
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
++      -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm
 +
-+e500crtsav32gpr.S: $(srcdir)/config/rs6000/e500crtsav32gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtsav32gpr.asm >e500crtsav32gpr.S
++# N32 uses TFmode for long double.
 +
-+e500crtsav64gpr.S: $(srcdir)/config/rs6000/e500crtsav64gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtsav64gpr.asm >e500crtsav64gpr.S
++TPBIT = tp-bit.c
 +
-+e500crtsav64gprctr.S: $(srcdir)/config/rs6000/e500crtsav64gprctr.asm
-+      cat $(srcdir)/config/rs6000/e500crtsav64gprctr.asm >e500crtsav64gprctr.S
++tp-bit.c: $(srcdir)/config/fp-bit.c
++      echo '#ifdef __MIPSEL__' > tp-bit.c
++      echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c
++      echo '#endif' >> tp-bit.c
++      echo '#if __LDBL_MANT_DIG__ == 113' >> tp-bit.c
++      echo '#define QUIET_NAN_NEGATED' >> tp-bit.c
++      echo '# define TFLOAT' >> tp-bit.c
++      cat $(srcdir)/config/fp-bit.c >> tp-bit.c
++      echo '#endif' >> tp-bit.c
 +
-+e500crtsavg32gpr.S: $(srcdir)/config/rs6000/e500crtsavg32gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtsavg32gpr.asm >e500crtsavg32gpr.S
++# We must build libgcc2.a with -G 0, in case the user wants to link
++# without the $gp register.
 +
-+e500crtsavg64gpr.S: $(srcdir)/config/rs6000/e500crtsavg64gpr.asm
-+      cat $(srcdir)/config/rs6000/e500crtsavg64gpr.asm >e500crtsavg64gpr.S
++TARGET_LIBGCC2_CFLAGS = -G 0
++ 
++# Build both ABIs.
 +
-+e500crtsavg64gprctr.S: $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm
-+      cat $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm >e500crtsavg64gprctr.S
++MULTILIB_OPTIONS = mabi=n32/mabi=eabi/mabi=64
++MULTILIB_DIRNAMES = n32 eabi n64
++EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
 +
- # Build multiple copies of ?crt{i,n}.o, one for each target switch.
- $(T)ecrti$(objext): ecrti.S
-       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ecrti.S -o $(T)ecrti$(objext)
-@@ -49,6 +119,63 @@
- $(T)ncrtn$(objext): ncrtn.S
-       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrtn.S -o $(T)ncrtn$(objext)
++LIBGCC = stmp-multilib
++INSTALL_LIBGCC = install-multilib
+--- a/gcc/config/mips/xlr.md
++++ b/gcc/config/mips/xlr.md
+@@ -1,5 +1,5 @@
+ ;; DFA-based pipeline description for the XLR.
+-;;   Copyright (C) 2008 Free Software Foundation, Inc.
++;;   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+ ;;
+ ;; xlr.md   Machine Description for the RMI XLR Microprocessor
+ ;; This file is part of GCC.
+@@ -31,7 +31,7 @@
+ ;; Integer arithmetic instructions.
+ (define_insn_reservation "ir_xlr_alu" 1
+   (and (eq_attr "cpu" "xlr") 
+-       (eq_attr "type" "arith,shift,clz,const,unknown,multi,nop,trap"))
++       (eq_attr "type" "move,arith,shift,clz,logical,signext,const,unknown,multi,nop,trap"))
+   "xlr_main_pipe")
  
-+$(T)crtsavfpr$(objext): crtsavfpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavfpr.S -o $(T)crtsavfpr$(objext)
+ ;; Integer arithmetic instructions.
+--- /dev/null
++++ b/gcc/config/rs6000/e500mc.h
+@@ -0,0 +1,46 @@
++/* Core target definitions for GNU compiler
++   for IBM RS/6000 PowerPC targeted to embedded ELF systems.
++   Copyright (C) 1995, 1996, 2000, 2003, 2004, 2007 Free Software Foundation, Inc.
++   Contributed by Cygnus Support.
 +
-+$(T)crtresfpr$(objext): crtresfpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresfpr.S -o $(T)crtresfpr$(objext)
++   This file is part of GCC.
 +
-+$(T)crtsavgpr$(objext): crtsavgpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavgpr.S -o $(T)crtsavgpr$(objext)
++   GCC 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.
 +
-+$(T)crtresgpr$(objext): crtresgpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresgpr.S -o $(T)crtresgpr$(objext)
++   GCC 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.
 +
-+$(T)crtresxfpr$(objext): crtresxfpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxfpr.S -o $(T)crtresxfpr$(objext)
++   You should have received a copy of the GNU General Public License
++   along with GCC; see the file COPYING3.  If not see
++   <http://www.gnu.org/licenses/>.  */
 +
-+$(T)crtresxgpr$(objext): crtresxgpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxgpr.S -o $(T)crtresxgpr$(objext)
++/* Add -meabi to target flags.  */
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
 +
-+$(T)e500crtres32gpr$(objext): e500crtres32gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres32gpr.S -o $(T)e500crtres32gpr$(objext)
++#undef TARGET_VERSION
++#define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
 +
-+$(T)e500crtres64gpr$(objext): e500crtres64gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gpr.S -o $(T)e500crtres64gpr$(objext)
++#undef TARGET_OS_CPP_BUILTINS
++#define TARGET_OS_CPP_BUILTINS()          \
++  do                                      \
++    {                                     \
++      builtin_define_std ("PPC");         \
++      builtin_define ("__embedded__");    \
++      builtin_assert ("system=embedded"); \
++      builtin_assert ("cpu=powerpc");     \
++      builtin_assert ("machine=powerpc"); \
++      TARGET_OS_SYSV_CPP_BUILTINS ();     \
++    }                                     \
++  while (0)
 +
-+$(T)e500crtres64gprctr$(objext): e500crtres64gprctr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gprctr.S -o $(T)e500crtres64gprctr$(objext)
++#undef CC1_EXTRA_SPEC
++#define CC1_EXTRA_SPEC "-maix-struct-return"
 +
-+$(T)e500crtrest32gpr$(objext): e500crtrest32gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest32gpr.S -o $(T)e500crtrest32gpr$(objext)
++#undef ASM_DEFAULT_SPEC
++#define ASM_DEFAULT_SPEC "-mppc%{m64:64} -me500mc"
+--- a/gcc/config/rs6000/eabi-ci.asm
++++ b/gcc/config/rs6000/eabi-ci.asm
+@@ -98,6 +98,7 @@ __EH_FRAME_BEGIN__:
+ /* Head of __init function used for static constructors.  */
+       .section ".init","ax"
+       .align 2
++FUNC_START(_init)
+ FUNC_START(__init)
+       stwu 1,-16(1)
+       mflr 0
+@@ -106,6 +107,7 @@ FUNC_START(__init)
+ /* Head of __fini function used for static destructors.  */
+       .section ".fini","ax"
+       .align 2
++FUNC_START(_fini)
+ FUNC_START(__fini)
+       stwu 1,-16(1)
+       mflr 0
+--- a/gcc/config/rs6000/eabi.asm
++++ b/gcc/config/rs6000/eabi.asm
+@@ -230,7 +230,7 @@ FUNC_END(__eabi)
+    r11                has the address of .LCTOC1 in it.
+    r12                has the value to add to each pointer
+    r13 .. r31 are unchanged */
+-      
++#ifdef _RELOCATABLE
+ FUNC_START(__eabi_convert)
+         cmplw 1,3,4                           /* any pointers to convert? */
+         subf  5,3,4                           /* calculate number of words to convert */
+@@ -285,5 +285,5 @@ FUNC_START(__eabi_uconvert)
+         blr
+ FUNC_END(__eabi_uconvert)
+-
++#endif
+ #endif
+--- a/gcc/config/rs6000/eabi.h
++++ b/gcc/config/rs6000/eabi.h
+@@ -23,10 +23,6 @@
+ #undef TARGET_DEFAULT
+ #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_EABI)
+-/* Invoke an initializer function to set up the GOT.  */
+-#define NAME__MAIN "__eabi"
+-#define INVOKE__main
+-
+ #undef TARGET_VERSION
+ #define TARGET_VERSION fprintf (stderr, " (PowerPC Embedded)");
+@@ -42,3 +38,20 @@
+       TARGET_OS_SYSV_CPP_BUILTINS ();     \
+     }                                     \
+   while (0)
 +
-+$(T)e500crtrest64gpr$(objext): e500crtrest64gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest64gpr.S -o $(T)e500crtrest64gpr$(objext)
++/* Add -te500v1 and -te500v2 options for convenience in generating
++   multilibs.  */
++#undef CC1_EXTRA_SPEC
++#define CC1_EXTRA_SPEC \
++  "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} " \
++  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
++  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}"                  \
++  "%{te500mc: -mcpu=e500mc -maix-struct-return}"
 +
-+$(T)e500crtresx32gpr$(objext): e500crtresx32gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx32gpr.S -o $(T)e500crtresx32gpr$(objext)
-+
-+$(T)e500crtresx64gpr$(objext): e500crtresx64gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx64gpr.S -o $(T)e500crtresx64gpr$(objext)
-+
-+$(T)e500crtsav32gpr$(objext): e500crtsav32gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav32gpr.S -o $(T)e500crtsav32gpr$(objext)
-+
-+$(T)e500crtsav64gpr$(objext): e500crtsav64gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gpr.S -o $(T)e500crtsav64gpr$(objext)
-+
-+$(T)e500crtsav64gprctr$(objext): e500crtsav64gprctr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gprctr.S -o $(T)e500crtsav64gprctr$(objext)
-+
-+$(T)e500crtsavg32gpr$(objext): e500crtsavg32gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg32gpr.S -o $(T)e500crtsavg32gpr$(objext)
-+
-+$(T)e500crtsavg64gpr$(objext): e500crtsavg64gpr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gpr.S -o $(T)e500crtsavg64gpr$(objext)
-+
-+$(T)e500crtsavg64gprctr$(objext): e500crtsavg64gprctr.S
-+      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gprctr.S -o $(T)e500crtsavg64gprctr$(objext)
-+
- # It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata.
- CRTSTUFF_T_CFLAGS = -msdata=none
- # Make sure crt*.o are built with -fPIC even if configured with 
-diff -Nur a/gcc/config/rs6000/t-ppc-e500mc b/gcc/config/rs6000/t-ppc-e500mc
---- a/gcc/config/rs6000/t-ppc-e500mc   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/t-ppc-e500mc   2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,12 @@
-+# Multilibs for powerpc embedded ELF targets.
-+
-+MULTILIB_OPTIONS      = 
-+
-+MULTILIB_DIRNAMES     = 
-+
-+MULTILIB_EXCEPTIONS   = 
-+
-+MULTILIB_EXTRA_OPTS   = mno-eabi mstrict-align
-+
-+MULTILIB_MATCHES      = ${MULTILIB_MATCHES_FLOAT} \
-+                        ${MULTILIB_MATCHES_ENDIAN}
-diff -Nur a/gcc/config/rs6000/t-wrs-linux b/gcc/config/rs6000/t-wrs-linux
---- a/gcc/config/rs6000/t-wrs-linux    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/t-wrs-linux    2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,30 @@
-+# Wind River GNU/Linux Configuration.
-+# Copyright (C) 2006, 2007
-+# Free Software Foundation, Inc.
-+#
-+# This file is part of GCC.
-+#
-+# GCC 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.
-+# 
-+# GCC is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
-+
-+# Build hard-float (32-bit and 64-bit), soft-float, E500v1 and E500v2
-+# libraries.
-+MULTILIB_OPTIONS = muclibc m64 msoft-float te500v1 te500v2
-+MULTILIB_DIRNAMES = uclibc 64 soft-float te500v1 te500v2
-+MULTILIB_EXCEPTIONS = *muclibc*/*m64* *muclibc*/*msoft-float*
-+MULTILIB_EXCEPTIONS += *muclibc*/*te500v1* *muclibc*/*te500v2*
-+MULTILIB_EXCEPTIONS += *m64*/*msoft-float* *m64*/*te500v1* *m64*/*te500v2*
-+MULTILIB_EXCEPTIONS += *msoft-float*/*te500v1* *msoft-float*/*te500v2*
-+MULTILIB_EXCEPTIONS += *te500v1*/*te500v2*
-+MULTILIB_OSDIRNAMES = muclibc=!uclibc m64=../lib64 msoft-float=!soft-float
-diff -Nur a/gcc/config/rs6000/wrs-linux.h b/gcc/config/rs6000/wrs-linux.h
---- a/gcc/config/rs6000/wrs-linux.h    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/rs6000/wrs-linux.h    2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,44 @@
-+/* Wind River GNU/Linux Configuration.
-+   Copyright (C) 2006, 2007
-+   Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC 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.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
++#undef ASM_DEFAULT_SPEC
++#define ASM_DEFAULT_SPEC                      \
++  "%{te500v1:-mppc -mspe -me500 ;             \
++     te500v2:-mppc -mspe -me500 ;             \
++     te600:-mppc -maltivec ;                  \
++     te500mc:-mppc -me500mc ;                 \
++     :-mppc%{m64:64}}"
+--- a/gcc/config/rs6000/linux.h
++++ b/gcc/config/rs6000/linux.h
+@@ -128,3 +128,29 @@
+ #ifdef TARGET_DEFAULT_LONG_DOUBLE_128
+ #define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
+ #endif
 +
 +/* Add -te500v1 and -te500v2 options for convenience in generating
 +   multilibs.  */
 +#undef CC1_EXTRA_SPEC
-+#define CC1_EXTRA_SPEC "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} %{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe}"
++#define CC1_EXTRA_SPEC \
++  "%{te500v1: -mcpu=8540 -mfloat-gprs=single -mspe=yes -mabi=spe} " \
++  "%{te500v2: -mcpu=8548 -mfloat-gprs=double -mspe=yes -mabi=spe} " \
++  "%{te600: -mcpu=7400 -maltivec -mabi=altivec}" \
++  "%{te500mc: -mcpu=e500mc}"
 +
 +#undef ASM_DEFAULT_SPEC
 +#define ASM_DEFAULT_SPEC                      \
 +  "%{te500v1:-mppc -mspe -me500 ;             \
 +     te500v2:-mppc -mspe -me500 ;             \
++     te600:-mppc -maltivec ;                  \
++     te500mc:-me500mc ;                               \
 +     :-mppc%{m64:64}}"
 +
-+/* The GLIBC headers are in /usr/include, relative to the sysroot; the
-+   uClibc headers are in /uclibc/usr/include.  */
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC           \
-+  "%{muclibc:/uclibc}" 
-+
 +/* The various C libraries each have their own subdirectory.  */
 +#undef SYSROOT_SUFFIX_SPEC
 +#define SYSROOT_SUFFIX_SPEC                   \
-+  "%{muclibc:/uclibc ;                                \
-+     msoft-float:/soft-float ;                        \
++  "%{msoft-float:/nof ;                               \
++     te600:/te600 ;                           \
 +     te500v1:/te500v1 ;                               \
-+     te500v2:/te500v2}"
-diff -Nur a/gcc/config/sh/cs-sgxxlite-linux.h b/gcc/config/sh/cs-sgxxlite-linux.h
---- a/gcc/config/sh/cs-sgxxlite-linux.h        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/sh/cs-sgxxlite-linux.h        2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,31 @@
-+/* SH SourceryG++ GNU/Linux Configuration.
-+   Copyright (C) 2008
++     te500v2:/te500v2 ;                               \
++     te500mc:/te500mc}"
+--- /dev/null
++++ b/gcc/config/rs6000/option-defaults.h
+@@ -0,0 +1,64 @@
++/* Definitions of default options for config/rs6000 configurations.
++   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
++   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
 +   Free Software Foundation, Inc.
 +
-+This file is part of GCC.
++   This file is part of GCC.
 +
-+GCC 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.
++   GCC 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.
 +
-+GCC 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.
++   GCC is distributed in the hope that it will be useful, but WITHOUT
++   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
++   License for more details.
 +
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3.  If not see
-+<http://www.gnu.org/licenses/>.  */
++   Under Section 7 of GPL version 3, you are granted additional
++   permissions described in the GCC Runtime Library Exception, version
++   3.1, as published by the Free Software Foundation.
 +
-+#undef SYSROOT_HEADERS_SUFFIX_SPEC
-+#define SYSROOT_HEADERS_SUFFIX_SPEC \
-+  "%{muclibc:/uclibc}"
++   You should have received a copy of the GNU General Public License and
++   a copy of the GCC Runtime Library Exception along with this program;
++   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++   <http://www.gnu.org/licenses/>.  */
 +
-+#undef SUBTARGET_OVERRIDE_OPTIONS
-+#define SUBTARGET_OVERRIDE_OPTIONS                                    \
-+do {                                                                  \
-+  /* __thread_support is not supported by uClibc.  */                 \
-+  if (linux_uclibc)                                           \
-+    targetm.have_tls = 0;                                             \
-+} while (0)
-diff -Nur a/gcc/config/sh/cs-sgxxlite-linux.opt b/gcc/config/sh/cs-sgxxlite-linux.opt
---- a/gcc/config/sh/cs-sgxxlite-linux.opt      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/sh/cs-sgxxlite-linux.opt      2010-01-25 09:50:29.045688403 +0100
-@@ -0,0 +1,23 @@
-+; Options for SH SourceryG++ GNU/Linux
++/* This header needs to be included after any other headers affecting
++   TARGET_DEFAULT.  */
 +
-+; Copyright (C) 2009 Free Software Foundation, Inc.
-+;
-+; This file is part of GCC.
-+;
-+; GCC 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.
-+;
-+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+; for more details.
-+;
-+; You should have received a copy of the GNU General Public License
-+; along with GCC; see the file COPYING3.  If not see
-+; <http://www.gnu.org/licenses/>.
-+
-+muclibc
-+Target RejectNegative Var(building_for_uclibc)
-+Building with -muclibc
-diff -Nur a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm
---- a/gcc/config/sh/lib1funcs.asm      2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/sh/lib1funcs.asm      2010-01-25 09:50:29.045688403 +0100
-@@ -2080,8 +2080,9 @@
- GLOBAL(ic_invalidate):
-       ocbwb   @r4
-       synco
--      rts
-       icbi    @r4
-+      rts
-+        nop
-       ENDFUNC(GLOBAL(ic_invalidate))
- #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__))
-       /* For system code, we use ic_invalidate_line_i, but user code
-@@ -2147,8 +2148,10 @@
- GLOBAL(ic_invalidate_array):
-       add     r1,r4
-       synco
--      rts
-       icbi    @r4
-+      rts
-+        nop
-+      .align 2
-       .long   0
-       ENDFUNC(GLOBAL(ic_invalidate_array))
- #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__))
-diff -Nur a/gcc/config/sh/linux-unwind.h b/gcc/config/sh/linux-unwind.h
---- a/gcc/config/sh/linux-unwind.h     2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/config/sh/linux-unwind.h     2010-01-25 09:50:29.045688403 +0100
-@@ -24,7 +24,10 @@
- /* Do code reading to identify a signal frame, and set the frame
--   state data appropriately.  See unwind-dw2.c for the structs.  */
-+   state data appropriately.  See unwind-dw2.c for the structs.
-+   Don't use this at all if inhibit_libc is used.  */
++#if TARGET_AIX
++#define OPT_64 "maix64"
++#define OPT_32 "maix32"
++#else
++#define OPT_64 "m64"
++#define OPT_32 "m32"
++#endif
 +
-+#ifndef inhibit_libc
- #include <signal.h>
- #include <sys/ucontext.h>
-@@ -248,3 +251,5 @@
-   return _URC_NO_REASON;
- }
- #endif /* defined (__SH5__) */
++#ifndef MASK_64BIT
++#define MASK_64BIT 0
++#endif
 +
-+#endif /* inhibit_libc */
-diff -Nur a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
---- a/gcc/config/sh/sh.h       2008-11-14 12:46:55.000000000 +0100
-+++ b/gcc/config/sh/sh.h       2010-01-25 09:50:29.045688403 +0100
-@@ -712,8 +712,9 @@
-       /* Never run scheduling before reload, since that can           \
-        break global alloc, and generates slower code anyway due       \
-        to the pressure on R0.  */                                     \
--      /* Enable sched1 for SH4; ready queue will be reordered by      \
--       the target hooks when pressure is high. We can not do this for \
-+      /* Enable sched1 for SH4 if the user explicitly requests.               \
-+       When sched1 is enabled, the ready queue will be reordered by   \
-+       the target hooks if pressure is high.  We can not do this for  \
-        PIC, SH3 and lower as they give spill failures for R0.  */     \
-       if (!TARGET_HARD_SH4 || flag_pic)                                       \
-         flag_schedule_insns = 0;                                      \
-@@ -728,6 +729,8 @@
-           warning (0, "ignoring -fschedule-insns because of exception handling bug"); \
-         flag_schedule_insns = 0;                                      \
-       }                                                               \
-+      else if (flag_schedule_insns == 2)                              \
-+      flag_schedule_insns = 0;                                        \
-     }                                                                 \
-                                                                       \
-   if (align_loops == 0)                                                       \
-diff -Nur a/gcc/config/sh/t-1e b/gcc/config/sh/t-1e
---- a/gcc/config/sh/t-1e       2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-1e       1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--MULTILIB_ENDIAN =
-diff -Nur a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux
---- a/gcc/config/sh/t-linux    2007-01-09 11:50:23.000000000 +0100
-+++ b/gcc/config/sh/t-linux    2010-01-25 09:50:29.075687537 +0100
-@@ -4,6 +4,5 @@
++#if TARGET_DEFAULT & MASK_64BIT
++#define OPT_ARCH64 "!"OPT_32
++#define OPT_ARCH32 OPT_32
++#else
++#define OPT_ARCH64 OPT_64
++#define OPT_ARCH32 "!"OPT_64
++#endif
++
++/* Support for a compile-time default CPU, et cetera.  The rules are:
++   --with-cpu is ignored if -mcpu is specified; likewise --with-cpu-32
++     and --with-cpu-64.
++   --with-tune is ignored if -mtune is specified; likewise --with-tune-32
++     and --with-tune-64.
++   --with-float is ignored if -mhard-float or -msoft-float are
++    specified.  */
++#define OPTION_DEFAULT_SPECS \
++  {"cpu", "%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}" }, \
++  {"cpu_32", "%{" OPT_ARCH32 ":%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}}" }, \
++  {"cpu_64", "%{" OPT_ARCH64 ":%{mcpu=*|te500mc|te500v1|te500v2|te600:;:-mcpu=%(VALUE)}}" }, \
++  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
++  {"tune_32", "%{" OPT_ARCH32 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
++  {"tune_64", "%{" OPT_ARCH64 ":%{!mtune=*:-mtune=%(VALUE)}}" }, \
++  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
+--- a/gcc/config/rs6000/paired.md
++++ b/gcc/config/rs6000/paired.md
+@@ -27,7 +27,7 @@
+  (UNSPEC_EXTODD_V2SF      333)
+ ])
  
- MULTILIB_DIRNAMES= 
- MULTILIB_MATCHES = 
--MULTILIB_EXCEPTIONS=
+-(define_insn "negv2sf2"
++(define_insn "paired_negv2sf2"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+       (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")))]
+   "TARGET_PAIRED_FLOAT"
+@@ -41,7 +41,7 @@
+   "ps_rsqrte %0,%1"
+   [(set_attr "type" "fp")])
  
- EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-diff -Nur a/gcc/config/sh/t-mlib-sh1 b/gcc/config/sh/t-mlib-sh1
---- a/gcc/config/sh/t-mlib-sh1 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh1 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh1=m1/
-diff -Nur a/gcc/config/sh/t-mlib-sh2 b/gcc/config/sh/t-mlib-sh2
---- a/gcc/config/sh/t-mlib-sh2 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh2 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh2=m2/
-diff -Nur a/gcc/config/sh/t-mlib-sh2a b/gcc/config/sh/t-mlib-sh2a
---- a/gcc/config/sh/t-mlib-sh2a        2004-07-29 08:10:03.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh2a        1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh2a=m2a/
-diff -Nur a/gcc/config/sh/t-mlib-sh2a-nofpu b/gcc/config/sh/t-mlib-sh2a-nofpu
---- a/gcc/config/sh/t-mlib-sh2a-nofpu  2004-07-29 08:10:03.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh2a-nofpu  1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh2a_nofpu=m2a-nofpu/
-diff -Nur a/gcc/config/sh/t-mlib-sh2a-single b/gcc/config/sh/t-mlib-sh2a-single
---- a/gcc/config/sh/t-mlib-sh2a-single 2004-07-29 08:10:03.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh2a-single 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh2a_single=m2a-single/
-diff -Nur a/gcc/config/sh/t-mlib-sh2a-single-only b/gcc/config/sh/t-mlib-sh2a-single-only
---- a/gcc/config/sh/t-mlib-sh2a-single-only    2004-07-29 08:10:03.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh2a-single-only    1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh2a_single_only=m2a-single-only/
-diff -Nur a/gcc/config/sh/t-mlib-sh2e b/gcc/config/sh/t-mlib-sh2e
---- a/gcc/config/sh/t-mlib-sh2e        2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh2e        1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh2e=m2e/
-diff -Nur a/gcc/config/sh/t-mlib-sh3 b/gcc/config/sh/t-mlib-sh3
---- a/gcc/config/sh/t-mlib-sh3 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh3 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh3=m3/
-diff -Nur a/gcc/config/sh/t-mlib-sh3e b/gcc/config/sh/t-mlib-sh3e
---- a/gcc/config/sh/t-mlib-sh3e        2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh3e        1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh3e=m3e/
-diff -Nur a/gcc/config/sh/t-mlib-sh4 b/gcc/config/sh/t-mlib-sh4
---- a/gcc/config/sh/t-mlib-sh4 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4=m4/
-diff -Nur a/gcc/config/sh/t-mlib-sh4a b/gcc/config/sh/t-mlib-sh4a
---- a/gcc/config/sh/t-mlib-sh4a        2004-07-28 11:13:58.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4a        1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4a=m4a/
-diff -Nur a/gcc/config/sh/t-mlib-sh4al b/gcc/config/sh/t-mlib-sh4al
---- a/gcc/config/sh/t-mlib-sh4al       2004-07-28 11:13:58.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4al       1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4al=m4al/
-diff -Nur a/gcc/config/sh/t-mlib-sh4a-nofpu b/gcc/config/sh/t-mlib-sh4a-nofpu
---- a/gcc/config/sh/t-mlib-sh4a-nofpu  2004-07-28 11:13:58.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4a-nofpu  1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4a_nofpu=m4a-nofpu/
-diff -Nur a/gcc/config/sh/t-mlib-sh4a-single b/gcc/config/sh/t-mlib-sh4a-single
---- a/gcc/config/sh/t-mlib-sh4a-single 2004-07-28 11:13:58.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4a-single 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4a_single=m4a-single/
-diff -Nur a/gcc/config/sh/t-mlib-sh4a-single-only b/gcc/config/sh/t-mlib-sh4a-single-only
---- a/gcc/config/sh/t-mlib-sh4a-single-only    2004-07-28 11:13:58.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4a-single-only    1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4a_single_only=m4a-single-only/
-diff -Nur a/gcc/config/sh/t-mlib-sh4-nofpu b/gcc/config/sh/t-mlib-sh4-nofpu
---- a/gcc/config/sh/t-mlib-sh4-nofpu   2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4-nofpu   1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4_nofpu=m4-nofpu/
-diff -Nur a/gcc/config/sh/t-mlib-sh4-single b/gcc/config/sh/t-mlib-sh4-single
---- a/gcc/config/sh/t-mlib-sh4-single  2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4-single  1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4_single=m4-single/
-diff -Nur a/gcc/config/sh/t-mlib-sh4-single-only b/gcc/config/sh/t-mlib-sh4-single-only
---- a/gcc/config/sh/t-mlib-sh4-single-only     2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh4-single-only     1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh4_single_only=m4-single-only/
-diff -Nur a/gcc/config/sh/t-mlib-sh5-32media b/gcc/config/sh/t-mlib-sh5-32media
---- a/gcc/config/sh/t-mlib-sh5-32media 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh5-32media 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh5_32media=m5-32media/
-diff -Nur a/gcc/config/sh/t-mlib-sh5-32media-nofpu b/gcc/config/sh/t-mlib-sh5-32media-nofpu
---- a/gcc/config/sh/t-mlib-sh5-32media-nofpu   2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh5-32media-nofpu   1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh5_32media_nofpu=m5-32media-nofpu/
-diff -Nur a/gcc/config/sh/t-mlib-sh5-64media b/gcc/config/sh/t-mlib-sh5-64media
---- a/gcc/config/sh/t-mlib-sh5-64media 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh5-64media 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh5_64media=m5-64media/
-diff -Nur a/gcc/config/sh/t-mlib-sh5-64media-nofpu b/gcc/config/sh/t-mlib-sh5-64media-nofpu
---- a/gcc/config/sh/t-mlib-sh5-64media-nofpu   2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh5-64media-nofpu   1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh5_64media_nofpu=m5-64media-nofpu/
-diff -Nur a/gcc/config/sh/t-mlib-sh5-compact b/gcc/config/sh/t-mlib-sh5-compact
---- a/gcc/config/sh/t-mlib-sh5-compact 2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh5-compact 1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh5_compact=m5-compact/
-diff -Nur a/gcc/config/sh/t-mlib-sh5-compact-nofpu b/gcc/config/sh/t-mlib-sh5-compact-nofpu
---- a/gcc/config/sh/t-mlib-sh5-compact-nofpu   2004-06-21 20:18:40.000000000 +0200
-+++ b/gcc/config/sh/t-mlib-sh5-compact-nofpu   1970-01-01 01:00:00.000000000 +0100
-@@ -1 +0,0 @@
--ML_sh5_compact_nofpu=m5-compact-nofpu/
-diff -Nur a/gcc/config/sh/t-sgxxlite-linux b/gcc/config/sh/t-sgxxlite-linux
---- a/gcc/config/sh/t-sgxxlite-linux   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/sh/t-sgxxlite-linux   2010-01-25 09:50:29.075687537 +0100
-@@ -0,0 +1,3 @@
-+MULTILIB_OPTIONS += muclibc
-+MULTILIB_OSDIRNAMES += muclibc=!uclibc m4al/muclibc=!m4al/uclibc mb/muclibc=!mb/uclibc
-+MULTILIB_EXCEPTIONS += mb/m4al/muclibc
-diff -Nur a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh
---- a/gcc/config/sh/t-sh       2008-10-25 00:10:52.000000000 +0200
-+++ b/gcc/config/sh/t-sh       2010-01-25 09:50:29.075687537 +0100
-@@ -27,10 +27,10 @@
-       echo '#endif'           >> fp-bit.c
-       cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+-(define_insn "absv2sf2"
++(define_insn "paired_absv2sf2"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+       (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")))]
+   "TARGET_PAIRED_FLOAT"
+@@ -55,7 +55,7 @@
+   "ps_nabs %0,%1"
+   [(set_attr "type" "fp")])
  
--MULTILIB_ENDIAN = ml/mb
--MULTILIB_CPUS= $(ML_sh1)$(ML_sh2a)$(ML_sh2a_nofpu)$(ML_sh2a_single_only)$(ML_sh2a_single)$(ML_sh2e)$(ML_sh2)$(ML_sh3e)$(ML_sh3)$(ML_sh4_nofpu)$(ML_sh4_single_only)$(ML_sh4_single)$(ML_sh4)$(ML_sh4a_nofpu)$(ML_sh4a_single_only)$(ML_sh4a_single)$(ML_sh4a)$(ML_sh5_32media)$(ML_sh5_32media_nofpu)$(ML_sh5_compact)$(ML_sh5_compact_nofpu)$(ML_sh5_64media)$(ML_sh5_64media_nofpu)
-+DEFAULT_ENDIAN = $(word 1,$(TM_ENDIAN_CONFIG))
-+OTHER_ENDIAN = $(word 2,$(TM_ENDIAN_CONFIG))
+-(define_insn "addv2sf3"
++(define_insn "paired_addv2sf3"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+       (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "%f")
+                  (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
+@@ -63,7 +63,7 @@
+   "ps_add %0,%1,%2"
+   [(set_attr "type" "fp")])
  
--MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) $(MULTILIB_CPUS:/=)
-+MULTILIB_OPTIONS= $(OTHER_ENDIAN) $(TM_MULTILIB_CONFIG)
- MULTILIB_DIRNAMES= 
+-(define_insn "subv2sf3"
++(define_insn "paired_subv2sf3"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+         (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")
+                     (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
+@@ -71,7 +71,7 @@
+   "ps_sub %0,%1,%2"
+   [(set_attr "type" "fp")])
  
- # The separate entries for m2a-nofpu and m2a-single-only with
-@@ -58,7 +58,34 @@
-   done)
+-(define_insn "mulv2sf3"
++(define_insn "paired_mulv2sf3"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+       (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "%f")
+                  (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
+@@ -86,7 +86,7 @@
+   "ps_res %0,%1"
+   [(set_attr "type" "fp")])
  
- # SH1 only supports big endian.
--MULTILIB_EXCEPTIONS = ml/m1 ml/m2a*
-+MULTILIB_EXCEPTIONS = ml/m1 ml/m2a* $(TM_MULTILIB_EXCEPTIONS_CONFIG)
+-(define_insn "divv2sf3"
++(define_insn "paired_divv2sf3"
+   [(set (match_operand:V2SF 0 "gpc_reg_operand" "=f")
+       (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "f")
+                 (match_operand:V2SF 2 "gpc_reg_operand" "f")))]
+--- a/gcc/config/rs6000/rs6000.c
++++ b/gcc/config/rs6000/rs6000.c
+@@ -919,6 +919,7 @@ int easy_vector_constant (rtx, enum mach
+ static bool rs6000_is_opaque_type (const_tree);
+ static rtx rs6000_dwarf_register_span (rtx);
+ static void rs6000_init_dwarf_reg_sizes_extra (tree);
++static int rs6000_commutative_operand_precedence (const_rtx, int);
+ static rtx rs6000_legitimize_tls_address (rtx, enum tls_model);
+ static void rs6000_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
+ static rtx rs6000_tls_get_addr (void);
+@@ -1194,6 +1195,10 @@ static const char alt_reg_names[][8] =
+ #undef TARGET_VECTOR_OPAQUE_P
+ #define TARGET_VECTOR_OPAQUE_P rs6000_is_opaque_type
++#undef TARGET_COMMUTATIVE_OPERAND_PRECEDENCE
++#define TARGET_COMMUTATIVE_OPERAND_PRECEDENCE \
++  rs6000_commutative_operand_precedence
 +
-+MULTILIB_OSDIRNAMES = \
-+      $(OTHER_ENDIAN)=!$(OTHER_ENDIAN) \
-+      m1=!m1 $(OTHER_ENDIAN)/m1=!$(OTHER_ENDIAN)/m1 \
-+      m2a=!m2a $(OTHER_ENDIAN)/m2a=!$(OTHER_ENDIAN)/m2a \
-+      m2a-nofpu=!m2a-nofpu $(OTHER_ENDIAN)/m2a-nofpu=!$(OTHER_ENDIAN)/m2a-nofpu \
-+      m2a-single-only=!m2a-single-only $(OTHER_ENDIAN)/m2a-single-only=!$(OTHER_ENDIAN)/m2a-single-only \
-+      m2a-single=!m2a-single $(OTHER_ENDIAN)/m2a-single=!$(OTHER_ENDIAN)/m2a-single \
-+      m2e=!m2e $(OTHER_ENDIAN)/m2e=!$(OTHER_ENDIAN)/m2e \
-+      m2=!m2 $(OTHER_ENDIAN)/m2=!$(OTHER_ENDIAN)/m2 \
-+      m3e=!m3e $(OTHER_ENDIAN)/m3e=!$(OTHER_ENDIAN)/m3e \
-+      m3=!m3 $(OTHER_ENDIAN)/m3=!$(OTHER_ENDIAN)/m3 \
-+      m4-nofpu=!m4-nofpu $(OTHER_ENDIAN)/m4-nofpu=!$(OTHER_ENDIAN)/m4-nofpu \
-+      m4-single-only=!m4-single-only $(OTHER_ENDIAN)/m4-single-only=!$(OTHER_ENDIAN)/m4-single-only \
-+      m4-single=!m4-single $(OTHER_ENDIAN)/m4-single=!$(OTHER_ENDIAN)/m4-single \
-+      m4=!m4 $(OTHER_ENDIAN)/m4=!$(OTHER_ENDIAN)/m4 \
-+      m4a-nofpu=!m4a-nofpu $(OTHER_ENDIAN)/m4a-nofpu=!$(OTHER_ENDIAN)/m4a-nofpu \
-+      m4a-single-only=!m4a-single-only $(OTHER_ENDIAN)/m4a-single-only=!$(OTHER_ENDIAN)/m4a-single-only \
-+      m4a-single=!m4a-single $(OTHER_ENDIAN)/m4a-single=!$(OTHER_ENDIAN)/m4a-single \
-+      m4a=!m4a $(OTHER_ENDIAN)/m4a=!$(OTHER_ENDIAN)/m4a \
-+      m4al=!m4al $(OTHER_ENDIAN)/m4al=!$(OTHER_ENDIAN)/m4al \
-+      m5-32media=!m5-32media $(OTHER_ENDIAN)/m5-32media=!$(OTHER_ENDIAN)/m5-32media \
-+      m5-32media-nofpu=!m5-32media-nofpu $(OTHER_ENDIAN)/m5-32media-nofpu=!$(OTHER_ENDIAN)/m5-32media-nofpu \
-+      m5-compact=!m5-compact $(OTHER_ENDIAN)/m5-compact=!$(OTHER_ENDIAN)/m5-compact \
-+      m5-compact-nofpu=!m5-compact-nofpu $(OTHER_ENDIAN)/m5-compact-nofpu=!$(OTHER_ENDIAN)/m5-compact-nofpu \
-+      m5-64media=!m5-64media $(OTHER_ENDIAN)/m5-64media=!$(OTHER_ENDIAN)/m5-64media \
-+      m5-64media-nofpu=!m5-64media-nofpu $(OTHER_ENDIAN)/m5-64media-nofpu=!$(OTHER_ENDIAN)/m5-64media-nofpu
+ #undef TARGET_DWARF_REGISTER_SPAN
+ #define TARGET_DWARF_REGISTER_SPAN rs6000_dwarf_register_span
  
- LIBGCC = stmp-multilib
- INSTALL_LIBGCC = install-multilib
-diff -Nur a/gcc/config/sol2.h b/gcc/config/sol2.h
---- a/gcc/config/sol2.h        2008-09-09 18:17:37.000000000 +0200
-+++ b/gcc/config/sol2.h        2010-01-25 09:50:29.075687537 +0100
-@@ -123,12 +123,12 @@
-    %{YP,*} \
-    %{R*} \
-    %{compat-bsd: \
--     %{!YP,*:%{p|pg:-Y P,/usr/ucblib:/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
--             %{!p:%{!pg:-Y P,/usr/ucblib:/usr/ccs/lib:/usr/lib}}} \
--             -R /usr/ucblib} \
-+     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
-+             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib}}} \
-+             -R %R/usr/ucblib} \
-    %{!compat-bsd: \
--     %{!YP,*:%{p|pg:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
--             %{!p:%{!pg:-Y P,/usr/ccs/lib:/usr/lib}}}}"
-+     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
-+             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib}}}}"
+@@ -4708,16 +4713,19 @@ rs6000_conditional_register_usage (void)
+   if (TARGET_ALTIVEC)
+     global_regs[VSCR_REGNO] = 1;
  
- #undef LINK_ARCH32_SPEC
- #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
-diff -Nur a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
---- a/gcc/config/sparc/linux64.h       2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/sparc/linux64.h       2010-01-25 09:50:29.075687537 +0100
-@@ -40,10 +40,15 @@
-    in a Medium/Low code model environment.  */
+-  if (TARGET_ALTIVEC_ABI)
+-    {
+-      for (i = FIRST_ALTIVEC_REGNO; i < FIRST_ALTIVEC_REGNO + 20; ++i)
+-      call_used_regs[i] = call_really_used_regs[i] = 1;
++  /* If we are not using the AltiVec ABI, pretend that the normally
++     call-saved registers are also call-used.  We could use them
++     normally if we saved and restored them in the prologue; that
++     would require using the alignment padding around the register
++     save area, and some care with unwinding information.  */
++  if (! TARGET_ALTIVEC_ABI)
++    for (i = FIRST_ALTIVEC_REGNO + 20; i <= LAST_ALTIVEC_REGNO; ++i)
++      call_used_regs[i] = call_really_used_regs[i] = 1;
  
- #undef TARGET_DEFAULT
-+#ifdef BIARCH_32BIT_DEFAULT
-+#define TARGET_DEFAULT \
-+  (MASK_APP_REGS + MASK_FPU)
-+#else
- #define TARGET_DEFAULT \
-   (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ \
-    + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
- #endif
-+#endif
+-      /* AIX reserves VR20:31 in non-extended ABI mode.  */
+-      if (TARGET_XCOFF)
+-      for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i)
+-        fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;
+-    }
++  if (TARGET_ALTIVEC_ABI && TARGET_XCOFF)
++    /* AIX reserves VR20:31 in non-extended ABI mode.  */
++    for (i = FIRST_ALTIVEC_REGNO + 20; i < FIRST_ALTIVEC_REGNO + 32; ++i)
++      fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;
+ }
\f
+ /* Try to output insns to set TARGET equal to the constant C if it can
+@@ -7533,10 +7541,10 @@ static struct builtin_description bdesc_
+   { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_sums", ALTIVEC_BUILTIN_VEC_SUMS },
+   { MASK_ALTIVEC, CODE_FOR_nothing, "__builtin_vec_xor", ALTIVEC_BUILTIN_VEC_XOR },
  
- /* This must be v9a not just v9 because by default we enable
-    -mvis.  */
-diff -Nur a/gcc/config/sparc/sol2-bi.h b/gcc/config/sparc/sol2-bi.h
---- a/gcc/config/sparc/sol2-bi.h       2007-10-19 06:29:38.000000000 +0200
-+++ b/gcc/config/sparc/sol2-bi.h       2010-01-25 09:50:29.075687537 +0100
-@@ -172,12 +172,12 @@
-    %{YP,*} \
-    %{R*} \
-    %{compat-bsd: \
--     %{!YP,*:%{p|pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
--       %{!p:%{!pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/sparcv9}}} \
--     -R /usr/ucblib/sparcv9} \
-+     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
-+       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9}}} \
-+     -R %R/usr/ucblib/sparcv9} \
-    %{!compat-bsd: \
--     %{!YP,*:%{p|pg:-Y P,/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
--       %{!p:%{!pg:-Y P,/usr/lib/sparcv9}}}}"
-+     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
-+       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9}}}}"
+-  { 0, CODE_FOR_divv2sf3, "__builtin_paired_divv2sf3", PAIRED_BUILTIN_DIVV2SF3 },
+-  { 0, CODE_FOR_addv2sf3, "__builtin_paired_addv2sf3", PAIRED_BUILTIN_ADDV2SF3 },
+-  { 0, CODE_FOR_subv2sf3, "__builtin_paired_subv2sf3", PAIRED_BUILTIN_SUBV2SF3 },
+-  { 0, CODE_FOR_mulv2sf3, "__builtin_paired_mulv2sf3", PAIRED_BUILTIN_MULV2SF3 },
++  { 0, CODE_FOR_paired_divv2sf3, "__builtin_paired_divv2sf3", PAIRED_BUILTIN_DIVV2SF3 },
++  { 0, CODE_FOR_paired_addv2sf3, "__builtin_paired_addv2sf3", PAIRED_BUILTIN_ADDV2SF3 },
++  { 0, CODE_FOR_paired_subv2sf3, "__builtin_paired_subv2sf3", PAIRED_BUILTIN_SUBV2SF3 },
++  { 0, CODE_FOR_paired_mulv2sf3, "__builtin_paired_mulv2sf3", PAIRED_BUILTIN_MULV2SF3 },
+   { 0, CODE_FOR_paired_muls0, "__builtin_paired_muls0", PAIRED_BUILTIN_MULS0 },
+   { 0, CODE_FOR_paired_muls1, "__builtin_paired_muls1", PAIRED_BUILTIN_MULS1 },
+   { 0, CODE_FOR_paired_merge00, "__builtin_paired_merge00", PAIRED_BUILTIN_MERGE00 },
+@@ -7545,10 +7553,10 @@ static struct builtin_description bdesc_
+   { 0, CODE_FOR_paired_merge11, "__builtin_paired_merge11", PAIRED_BUILTIN_MERGE11 },
  
- #define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
+   /* Place holder, leave as first spe builtin.  */
+-  { 0, CODE_FOR_spe_evaddw, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW },
+-  { 0, CODE_FOR_spe_evand, "__builtin_spe_evand", SPE_BUILTIN_EVAND },
++  { 0, CODE_FOR_addv2si3, "__builtin_spe_evaddw", SPE_BUILTIN_EVADDW },
++  { 0, CODE_FOR_andv2si3, "__builtin_spe_evand", SPE_BUILTIN_EVAND },
+   { 0, CODE_FOR_spe_evandc, "__builtin_spe_evandc", SPE_BUILTIN_EVANDC },
+-  { 0, CODE_FOR_spe_evdivws, "__builtin_spe_evdivws", SPE_BUILTIN_EVDIVWS },
++  { 0, CODE_FOR_divv2si3, "__builtin_spe_evdivws", SPE_BUILTIN_EVDIVWS },
+   { 0, CODE_FOR_spe_evdivwu, "__builtin_spe_evdivwu", SPE_BUILTIN_EVDIVWU },
+   { 0, CODE_FOR_spe_eveqv, "__builtin_spe_eveqv", SPE_BUILTIN_EVEQV },
+   { 0, CODE_FOR_spe_evfsadd, "__builtin_spe_evfsadd", SPE_BUILTIN_EVFSADD },
+@@ -7824,7 +7832,7 @@ static struct builtin_description bdesc_
  
-diff -Nur a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
---- a/gcc/config/sparc/sparc.c 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/sparc/sparc.c 2010-01-25 09:50:29.075687537 +0100
-@@ -6120,7 +6120,7 @@
- sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
- {
-   const char *qpfunc;
--  rtx slot0, slot1, result, tem, tem2;
-+  rtx slot0, slot1, result, tem, tem2, libfunc;
-   enum machine_mode mode;
-   enum rtx_code new_comparison;
+   /* The SPE unary builtins must start with SPE_BUILTIN_EVABS and
+      end with SPE_BUILTIN_EVSUBFUSIAAW.  */
+-  { 0, CODE_FOR_spe_evabs, "__builtin_spe_evabs", SPE_BUILTIN_EVABS },
++  { 0, CODE_FOR_absv2si2, "__builtin_spe_evabs", SPE_BUILTIN_EVABS },
+   { 0, CODE_FOR_spe_evaddsmiaaw, "__builtin_spe_evaddsmiaaw", SPE_BUILTIN_EVADDSMIAAW },
+   { 0, CODE_FOR_spe_evaddssiaaw, "__builtin_spe_evaddssiaaw", SPE_BUILTIN_EVADDSSIAAW },
+   { 0, CODE_FOR_spe_evaddumiaaw, "__builtin_spe_evaddumiaaw", SPE_BUILTIN_EVADDUMIAAW },
+@@ -7856,9 +7864,9 @@ static struct builtin_description bdesc_
+   /* Place-holder.  Leave as last unary SPE builtin.  */
+   { 0, CODE_FOR_spe_evsubfusiaaw, "__builtin_spe_evsubfusiaaw", SPE_BUILTIN_EVSUBFUSIAAW },
  
-@@ -6183,7 +6183,8 @@
-         emit_move_insn (slot1, y);
-       }
+-  { 0, CODE_FOR_absv2sf2, "__builtin_paired_absv2sf2", PAIRED_BUILTIN_ABSV2SF2 },
++  { 0, CODE_FOR_paired_absv2sf2, "__builtin_paired_absv2sf2", PAIRED_BUILTIN_ABSV2SF2 },
+   { 0, CODE_FOR_nabsv2sf2, "__builtin_paired_nabsv2sf2", PAIRED_BUILTIN_NABSV2SF2 },
+-  { 0, CODE_FOR_negv2sf2, "__builtin_paired_negv2sf2", PAIRED_BUILTIN_NEGV2SF2 },
++  { 0, CODE_FOR_paired_negv2sf2, "__builtin_paired_negv2sf2", PAIRED_BUILTIN_NEGV2SF2 },
+   { 0, CODE_FOR_sqrtv2sf2, "__builtin_paired_sqrtv2sf2", PAIRED_BUILTIN_SQRTV2SF2 },
+   { 0, CODE_FOR_resv2sf2, "__builtin_paired_resv2sf2", PAIRED_BUILTIN_RESV2SF2 }
+ };
+@@ -9396,6 +9404,8 @@ build_opaque_vector_type (tree node, int
+ static void
+ rs6000_init_builtins (void)
+ {
++  tree tdecl;
++  
+   V2SI_type_node = build_vector_type (intSI_type_node, 2);
+   V2SF_type_node = build_vector_type (float_type_node, 2);
+   V4HI_type_node = build_vector_type (intHI_type_node, 4);
+@@ -9433,60 +9443,75 @@ rs6000_init_builtins (void)
+   float_type_internal_node = float_type_node;
+   void_type_internal_node = void_type_node;
  
--      emit_library_call (gen_rtx_SYMBOL_REF (Pmode, qpfunc), LCT_NORMAL,
-+      libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
-+      emit_library_call (libfunc, LCT_NORMAL,
-                        DImode, 2,
-                        XEXP (slot0, 0), Pmode,
-                        XEXP (slot1, 0), Pmode);
-@@ -6191,7 +6192,8 @@
-     }
-   else
-     {
--      emit_library_call (gen_rtx_SYMBOL_REF (Pmode, qpfunc), LCT_NORMAL,
-+      libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
-+      emit_library_call (libfunc, LCT_NORMAL,
-                        SImode, 2,
-                        x, TFmode, y, TFmode);
-       mode = SImode;
-@@ -6202,7 +6204,7 @@
-      register so reload doesn't clobber the value if it needs
-      the return register for a spill reg.  */
-   result = gen_reg_rtx (mode);
--  emit_move_insn (result, hard_libcall_value (mode));
-+  emit_move_insn (result, hard_libcall_value (mode, libfunc));
-   switch (comparison)
-     {
-diff -Nur a/gcc/config/spu/spu.h b/gcc/config/spu/spu.h
---- a/gcc/config/spu/spu.h     2009-04-24 00:50:16.000000000 +0200
-+++ b/gcc/config/spu/spu.h     2010-01-25 09:50:29.085687411 +0100
-@@ -270,7 +270,8 @@
- #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (LINK_REGISTER_REGNUM)
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__bool char"),
+-                                          bool_char_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__bool short"),
+-                                          bool_short_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__bool int"),
+-                                          bool_int_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__pixel"),
+-                                          pixel_type_node));
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool char"),
++                    bool_char_type_node);
++  TYPE_NAME (bool_char_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool short"),
++                    bool_short_type_node);
++  TYPE_NAME (bool_short_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__bool int"),
++                    bool_int_type_node);
++  TYPE_NAME (bool_int_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__pixel"),
++                    pixel_type_node);
++  TYPE_NAME (pixel_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
  
--#define ARG_POINTER_CFA_OFFSET(FNDECL) (-STACK_POINTER_OFFSET)
-+#define ARG_POINTER_CFA_OFFSET(FNDECL) \
-+  (crtl->args.pretend_args_size - STACK_POINTER_OFFSET)
+   bool_V16QI_type_node = build_vector_type (bool_char_type_node, 16);
+   bool_V8HI_type_node = build_vector_type (bool_short_type_node, 8);
+   bool_V4SI_type_node = build_vector_type (bool_int_type_node, 4);
+   pixel_V8HI_type_node = build_vector_type (pixel_type_node, 8);
  
\f
- /* Stack Checking */
-diff -Nur a/gcc/config/t-eglibc b/gcc/config/t-eglibc
---- a/gcc/config/t-eglibc      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/t-eglibc      2010-01-25 09:50:29.085687411 +0100
-@@ -0,0 +1,25 @@
-+# multilibs  -*- mode:Makefile -*-
-+
-+MULTILIB_EXCEPTIONS :=
-+MULTILIB_MATCHES    :=
-+MULTILIB_ALIASES    :=
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector unsigned char"),
+-                                          unsigned_V16QI_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector signed char"),
+-                                          V16QI_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector __bool char"),
+-                                          bool_V16QI_type_node));
+-
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector unsigned short"),
+-                                          unsigned_V8HI_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector signed short"),
+-                                          V8HI_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector __bool short"),
+-                                          bool_V8HI_type_node));
+-
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector unsigned int"),
+-                                          unsigned_V4SI_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector signed int"),
+-                                          V4SI_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector __bool int"),
+-                                          bool_V4SI_type_node));
+-
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector float"),
+-                                          V4SF_type_node));
+-  (*lang_hooks.decls.pushdecl) (build_decl (TYPE_DECL,
+-                                          get_identifier ("__vector __pixel"),
+-                                          pixel_V8HI_type_node));
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned char"),
++                    unsigned_V16QI_type_node);
++  TYPE_NAME (unsigned_V16QI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed char"),
++                    V16QI_type_node);
++  TYPE_NAME (V16QI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool char"),
++                    bool_V16QI_type_node);
++  TYPE_NAME ( bool_V16QI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
 +
-+# For all items in EGLIBC_CONFIGS except for the last one
-+# do $1.  For the last one do $2.  The items are separated with ",".
-+EGLIBC_AWK = $(shell echo $(EGLIBC_CONFIGS) | $(AWK) \
-+      '{ \
-+      N=split ($$0, configs, ","); \
-+      for (i = 1; i < N; ++i) $1; \
-+      $2; \
-+      }')
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned short"),
++                    unsigned_V8HI_type_node);
++  TYPE_NAME (unsigned_V8HI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed short"),
++                    V8HI_type_node);
++  TYPE_NAME (V8HI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool short"),
++                    bool_V8HI_type_node);
++  TYPE_NAME (bool_V8HI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
 +
-+MULTILIB_OPTIONS    := $(call EGLIBC_AWK, \
-+      printf ("feglibc=%s/", configs[i]), \
-+      printf ("feglibc=%s\n", configs[i]))
-+MULTILIB_DIRNAMES   := $(call EGLIBC_AWK, \
-+      printf ("%s ", configs[i]), \
-+      printf ("%s\n", configs[i]))
-+MULTILIB_OSDIRNAMES := $(call EGLIBC_AWK, \
-+      printf ("feglibc.%s=!%s ", configs[i], configs[i]), \
-+      printf ("feglibc.%s=!%s\n", configs[i], configs[i]))
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector unsigned int"),
++                    unsigned_V4SI_type_node);
++  TYPE_NAME (unsigned_V4SI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector signed int"),
++                    V4SI_type_node);
++  TYPE_NAME (V4SI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __bool int"),
++                    bool_V4SI_type_node);
++  TYPE_NAME (bool_V4SI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
 +
-diff -Nur a/gcc/config/t-sysroot-suffix b/gcc/config/t-sysroot-suffix
---- a/gcc/config/t-sysroot-suffix      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/config/t-sysroot-suffix      2010-01-25 09:50:29.085687411 +0100
-@@ -0,0 +1,7 @@
-+# Generate SYSROOT_SUFFIX_SPEC from MULTILIB_OSDIRNAMES
-+
-+sysroot-suffix.h: $(srcdir)/config/print-sysroot-suffix.sh
-+      $(SHELL) $(srcdir)/config/print-sysroot-suffix.sh \
-+        "$(MULTILIB_OSDIRNAMES)" "$(MULTILIB_OPTIONS)" \
-+        "$(MULTILIB_MATCHES)" "$(MULTILIB_ALIASES)" > tmp-sysroot-suffix.h
-+      mv tmp-sysroot-suffix.h $@
-diff -Nur a/gcc/config/vx-common.h b/gcc/config/vx-common.h
---- a/gcc/config/vx-common.h   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/config/vx-common.h   2010-01-25 09:50:29.085687411 +0100
-@@ -92,3 +92,6 @@
- /* We occasionally need to distinguish between the VxWorks variants.  */
- #define VXWORKS_KIND_NORMAL  1
- #define VXWORKS_KIND_AE      2
-+
-+/* Enable get_feature license checking.  */
-+#define TARGET_FLEXLM
-diff -Nur a/gcc/config.gcc b/gcc/config.gcc
---- a/gcc/config.gcc   2009-04-17 13:58:41.000000000 +0200
-+++ b/gcc/config.gcc   2010-01-25 09:50:29.085687411 +0100
-@@ -721,6 +721,28 @@
-           need_64bit_hwint=yes
-           # The EABI requires the use of __cxa_atexit.
-           default_use_cxa_atexit=yes
-+          case ${target} in
-+          arm-wrs-linux-gnueabi) 
-+              tm_file="$tm_file arm/wrs-linux.h"
-+              tmake_file="$tmake_file arm/t-wrs-linux"
-+              tm_defines="$tm_defines TARGET_FLEXLM"
-+              ;;
-+          arm-montavista*-linux-gnueabi)
-+              tm_file="$tm_file arm/montavista-linux.h"
-+              tmake_file="$tmake_file arm/t-montavista-linux"
-+              ;;
-+          *)
-+              if test x$enable_extra_asa_multilibs = xyes; then
-+                      tmake_file="${tmake_file} arm/t-asa"
-+              elif test x$enable_extra_sgxx_multilibs = xyes; then
-+                      tmake_file="${tmake_file} arm/t-cs-linux"
-+              elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+                      tmake_file="${tmake_file} arm/t-cs-linux-lite"
-+              fi
-+              tm_file="$tm_file ./sysroot-suffix.h"
-+              tmake_file="$tmake_file t-sysroot-suffix"
-+              ;;
-+          esac
-           ;;
-       *)
-           tmake_file="$tmake_file arm/t-linux"
-@@ -742,6 +764,13 @@
-           need_64bit_hwint=yes
-           # The EABI requires the use of __cxa_atexit.
-           default_use_cxa_atexit=yes
-+          if test x$enable_extra_sgxx_multilibs = xyes; then
-+                  tmake_file="${tmake_file} arm/t-cs-uclinux-eabi"
-+          elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+                  tmake_file="${tmake_file} arm/t-cs-uclinux-eabi"
-+          fi
-+          tm_file="$tm_file ./sysroot-suffix.h"
-+          tmake_file="$tmake_file t-sysroot-suffix"
-       esac
-       tm_file="$tm_file arm/aout.h arm/arm.h"
-       tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
-@@ -762,8 +791,14 @@
-       case ${target} in
-       arm*-*-eabi*)
-         tm_file="$tm_file arm/eabi.h"
-+        tm_file="${tm_file} arm/nocrt0.h"
-         tmake_file="${tmake_file} arm/t-bpabi"
-         extra_options="${extra_options} arm/eabi.opt"
-+        if test x$enable_extra_sgxx_multilibs = xyes; then
-+                tmake_file="${tmake_file} arm/t-cs-eabi"
-+        elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+                tmake_file="${tmake_file} arm/t-cs-eabi-lite"
-+        fi
-         ;;
-       arm*-*-symbianelf*)
-         tm_file="${tm_file} arm/symbian.h"
-@@ -1088,7 +1123,7 @@
-                       tmake_file="${tmake_file} i386/t-linux64"
-                       need_64bit_hwint=yes
-                       case X"${with_cpu}" in
--                      Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
-+                      Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
-                               ;;
-                       X)
-                               if test x$with_cpu_64 = x; then
-@@ -1097,13 +1132,29 @@
-                               ;;
-                       *)
-                               echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
--                              echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
-+                              echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
-                               exit 1
-                               ;;
-                       esac
-               else
-                       tm_file="${tm_file} i386/linux.h"
-               fi
-+              case ${target} in
-+              *-wrs-linux*)
-+                      tm_file="$tm_file i386/wrs-linux.h"
-+                      tmake_file="$tmake_file i386/t-wrs-linux"
-+                      extra_options="${extra_options} i386/wrs-linux.opt"
-+                      tm_defines="${tm_defines} TARGET_FLEXLM"
-+                      ;;
-+              esac
-+              if test x$enable_extra_sgxx_multilibs = xyes; then
-+                      tm_file="${tm_file} i386/cs-linux.h"
-+                      tmake_file="${tmake_file} i386/t-cs-linux"
-+                      extra_options="${extra_options} i386/cs-linux.opt"
-+              elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+                      tm_file="${tm_file} i386/cs-linux-lite.h"
-+                      tmake_file="${tmake_file} i386/t-cs-linux-lite"
-+              fi
-               ;;
-       i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
-       i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
-@@ -1202,7 +1253,7 @@
-               # libgcc/configure.ac instead.
-               need_64bit_hwint=yes
-               case X"${with_cpu}" in
--              Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
-+              Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
-                       ;;
-               X)
-                       if test x$with_cpu_64 = x; then
-@@ -1211,7 +1262,7 @@
-                       ;;
-               *)
-                       echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
--                      echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
-+                      echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
-                       exit 1
-                       ;;
-               esac
-@@ -1566,6 +1617,7 @@
-                       tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
-                       ;;
-       esac
-+      tmake_file="$tmake_file mips/t-crtfm"
-       gnu_ld=yes
-       gas=yes
-       test x$with_llsc != x || with_llsc=yes
-@@ -1579,8 +1631,28 @@
-                 ;;
-         mipsisa32*)
-               tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
-+              ;;
-+      mips-wrs-linux-gnu) 
-+              tmake_file="$tmake_file mips/t-linux64 mips/t-wrs-linux"
-+              tm_file="$tm_file mips/linux64.h mips/octeon.h mips/wrs-linux.h"
-+              tm_defines="$tm_defines TARGET_FLEXLM"
-+              ;;
-+      mips-montavista*-linux-gnu)
-+              tmake_file="$tmake_file mips/t-linux64 mips/t-montavista-linux"
-+              tm_file="$tm_file mips/linux64.h mips/octeon.h mips/montavista-linux.h"
-+              ;;
-+      *)
-+              if test x$enable_extra_sgxx_multilibs = xyes; then
-+                  tmake_file="$tmake_file mips/t-sgxx-linux"
-+                  tm_file="$tm_file mips/cs-sgxx-linux.h"
-+              elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+                  tmake_file="$tmake_file mips/t-sgxxlite-linux"
-+                  tm_file="$tm_file mips/cs-sgxxlite-linux.h"
-+              fi
-+              ;;
-         esac
-       test x$with_llsc != x || with_llsc=yes
-+      tmake_file="$tmake_file mips/t-crtfm"
-       ;;
- mips*-*-openbsd*)
-       tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_OBJECT OBSD_HAS_CORRECT_SPECS"
-@@ -1625,6 +1697,25 @@
-           tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_N32"
-           ;;
-       esac
-+      if [ "$enable_sgxx_sde_multilibs" = "yes" ]; then
-+        tm_file="$tm_file mips/sdemtk.h"
-+        extra_options="$extra_options mips/sdemtk.opt"
-+        tmake_file="$tmake_file mips/t-sgxx-sde"
-+          # SourceryG++ is configured --with-arch=mips32r2.
-+        tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
-+      fi
-+      ;;
-+mips64octeon*-wrs-elf*)
-+      tm_file="elfos.h ${tm_file} mips/elf.h mips/octeon.h mips/octeon-elf.h"
-+      tmake_file=mips/t-octeon-elf
-+      tm_defines="MIPS_ABI_DEFAULT=ABI_EABI MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\" TARGET_FLEXLM"
-+      default_use_cxa_atexit=no
-+      ;;
-+mips64octeon*-montavista-elf*)
-+      tm_file="elfos.h ${tm_file} mips/elf.h mips/octeon.h mips/octeon-elf.h"
-+      tmake_file="mips/t-octeon-elf mips/t-montavista-elf"
-+      tm_defines="MIPS_ABI_DEFAULT=ABI_EABI MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
-+      default_use_cxa_atexit=no
-       ;;
- mipsisa32-*-elf* | mipsisa32el-*-elf* | \
- mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
-@@ -1796,6 +1887,10 @@
-       tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h"
-       extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
-+      if test x$enable_powerpc_e500mc_elf = xyes; then
-+        tm_file="${tm_file} rs6000/e500mc.h"
-+        tmake_file="${tmake_file} rs6000/t-ppc-e500mc"
-+      fi
-       ;;
- powerpc-*-eabialtivec*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabialtivec.h"
-@@ -1811,6 +1906,11 @@
-       tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h"
-       extra_options="${extra_options} rs6000/sysv4.opt"
-       tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
-+      if test x$enable_extra_sgxx_multilibs = xyes; then
-+        tmake_file="${tmake_file} rs6000/t-cs-eabi"
-+      elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+        tmake_file="${tmake_file} rs6000/t-cs-eabi-lite"
-+      fi
-       ;;
- powerpc-*-rtems*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
-@@ -1853,6 +1953,26 @@
-       if test x${enable_secureplt} = xyes; then
-               tm_file="rs6000/secureplt.h ${tm_file}"
-       fi
-+      case ${target} in
-+      powerpc-wrs-linux-gnu)
-+              tm_file="$tm_file rs6000/wrs-linux.h rs6000/e500.h"
-+              tmake_file="$tmake_file rs6000/t-wrs-linux"
-+              tm_defines="$tm_defines TARGET_FLEXLM"
-+              ;;
-+        powerpc-montavista*-linux-gnu)
-+                tm_file="$tm_file rs6000/montavista-linux.h"
-+                tmake_file="$tmake_file rs6000/t-montavista-linux"
-+                ;;
-+      *)
-+              if test x$enable_extra_sgxx_multilibs = xyes; then
-+                tm_file="${tm_file} rs6000/e500.h"
-+                tmake_file="$tmake_file rs6000/t-cs-linux"
-+              elif test x$enable_extra_sgxxlite_multilibs = xyes; then
-+                tm_file="${tm_file} rs6000/e500.h"
-+                tmake_file="$tmake_file rs6000/t-cs-linux"
-+              fi
-+              ;;
-+      esac
-       ;;
- powerpc-*-gnu-gnualtivec*)
-       tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
-@@ -2009,9 +2129,14 @@
-               *)                                 with_endian=big,little ;;
-               esac
-       fi
-+      # TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
-+      #  First word : the default endian.
-+      #  Second word: the secondary endian (optional).
-       case ${with_endian} in
--      big|little)     tmake_file="${tmake_file} sh/t-1e" ;;
--      big,little|little,big) ;;
-+      big)            TM_ENDIAN_CONFIG=mb ;;
-+      little)         TM_ENDIAN_CONFIG=ml ;;
-+      big,little)     TM_ENDIAN_CONFIG="mb ml" ;;
-+      little,big)     TM_ENDIAN_CONFIG="ml mb" ;;
-       *)      echo "with_endian=${with_endian} not supported."; exit 1 ;;
-       esac
-       case ${with_endian} in
-@@ -2118,7 +2243,7 @@
-       *)      echo "with_cpu=$with_cpu not supported"; exit 1 ;;
-       esac
-       sh_multilibs=${with_multilib_list}
--      if test x${sh_multilibs} = x ; then
-+      if test "$sh_multilibs" = "default" ; then
-               case ${target} in
-               sh64-superh-linux* | \
-               sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
-@@ -2134,28 +2259,43 @@
-       fi
-       target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
-       tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
--      sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[  ,/][    ,]*/ /g' -e 's/ $//' -e 's/^m/sh/' -e 's/ m/ sh/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
-+      tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
-+      sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^sh/m/i' -e 's/ sh/ m/gi' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
-       for sh_multilib in ${sh_multilibs}; do
-               case ${sh_multilib} in
--              sh1 | sh2 | sh2e | sh3 | sh3e | \
--              sh4 | sh4-single | sh4-single-only | sh4-nofpu | sh4-300 |\
--              sh4a | sh4a-single | sh4a-single-only | sh4a-nofpu | sh4al | \
--              sh2a | sh2a-single | sh2a-single-only | sh2a-nofpu | \
--              sh5-64media | sh5-64media-nofpu | \
--              sh5-32media | sh5-32media-nofpu | \
--              sh5-compact | sh5-compact-nofpu)
--                      tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}"
--                      tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
--                      ;;
-+              m1 | m2 | m2e | m3 | m3e | \
-+              m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
-+              m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
-+              m2a | m2a-single | m2a-single-only | m2a-nofpu | \
-+              m5-64media | m5-64media-nofpu | \
-+              m5-32media | m5-32media-nofpu | \
-+              m5-compact | m5-compact-nofpu)
-+                      # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
-+                      # It is passed to MULTIILIB_OPTIONS verbatim.
-+                      TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
-+                      tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
-+                      ;;
-+              \!*)    # TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
-+                      # It is passed the MULTILIB_EXCEPTIONS verbatim.
-+                      TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
-               *)
-                       echo "with_multilib_list=${sh_multilib} not supported."
-                       exit 1
-                       ;;
-               esac
-       done
-+      TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
-       if test x${enable_incomplete_targets} = xyes ; then
-               tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1"
-       fi
-+      if test x$enable_extra_sgxxlite_multilibs = xyes \
-+         || test x$enable_extra_sgxx_multilibs = xyes; then
-+              # SG++ and Lite do not differ, as yet, so use the Lite files for both
-+              tm_file="$tm_file sh/cs-sgxxlite-linux.h"
-+              tmake_file="$tmake_file sh/t-sgxxlite-linux"
-+      fi
-+      tm_file="$tm_file ./sysroot-suffix.h"
-+      tmake_file="$tmake_file t-sysroot-suffix"
-       ;;
- sh-*-rtems*)
-       tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"
-@@ -2194,6 +2334,11 @@
-               tm_file="${tm_file} sparc/linux.h"
-       fi
-       tmake_file="${tmake_file} sparc/t-crtfm"
-+      case ${target} in
-+      sparc-wrs-linux-gnu)
-+              tm_defines="$tm_defines BIARCH_32BIT_DEFAULT TARGET_FLEXLM"
-+              ;;
-+      esac
-       ;;
- sparc-*-rtems*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
-@@ -2420,6 +2565,8 @@
- i[34567]86-*-* | x86_64-*-*)
-       tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
-       ;;
-+powerpc*-*-* | rs6000-*-*)
-+      tm_file="${tm_file} rs6000/option-defaults.h"
- esac
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector float"),
++                    V4SF_type_node);
++  TYPE_NAME (V4SF_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
++  tdecl = build_decl (TYPE_DECL, get_identifier ("__vector __pixel"),
++                    pixel_V8HI_type_node);
++  TYPE_NAME (pixel_V8HI_type_node) = tdecl;
++  (*lang_hooks.decls.pushdecl) (tdecl);
  
- # Support for --with-cpu and related options (and a few unrelated options,
-@@ -2646,8 +2793,8 @@
-               | armv[23456] | armv2a | armv3m | armv4t | armv5t \
-               | armv5te | armv6j |armv6k | armv6z | armv6zk | armv6-m \
-               | armv7 | armv7-a | armv7-r | armv7-m \
--              | iwmmxt | ep9312)
--                      # OK
-+              | iwmmxt | ep9312 | marvell-f )
-+                      # OK
-                       ;;
-               *)
-                       echo "Unknown arch used in --with-arch=$with_arch" 1>&2
-@@ -2668,7 +2815,10 @@
+   if (TARGET_PAIRED_FLOAT)
+     paired_init_builtins ();
+@@ -15869,7 +15894,7 @@ static bool
+ no_global_regs_above (int first, bool gpr)
+ {
+   int i;
+-  for (i = first; i < gpr ? 32 : 64 ; i++)
++  for (i = first; i < (gpr ? 32 : 64); i++)
+     if (global_regs[i])
+       return false;
+   return true;
+@@ -15895,11 +15920,11 @@ rs6000_savres_routine_sym (rs6000_stack_
+   int regno = gpr ? info->first_gp_reg_save : (info->first_fp_reg_save - 32);
+   rtx sym;
+   int select = ((savep ? 1 : 0) << 2
+-              | (gpr
++              | (TARGET_SPE_ABI
+                  /* On the SPE, we never have any FPRs, but we do have
+                     32/64-bit versions of the routines.  */
+-                 ? (TARGET_SPE_ABI && info->spe_64bit_regs_used ? 1 : 0)
+-                 : 0) << 1
++                 ? (info->spe_64bit_regs_used ? 1 : 0)
++                 : (gpr ? 1 : 0)) << 1
+               | (exitp ? 1: 0));
  
-               case "$with_fpu" in
-               "" \
--              | fpa | fpe2 | fpe3 | maverick | vfp | vfp3 | neon )
-+              | fpa | fpe2 | fpe3 | maverick \
-+              | vfp | vfp3 | vfpv3 | vfpv3-fp16 | vfpv3-d16 \
-+              | vfpv3-d16-fp16 | vfpv4 | vfpv4-d16 | fpv4-sp-d16 \
-+              | neon | neon-fp16 | neon-vfpv4 )
-                       # OK
-                       ;;
-               *)
-@@ -2805,7 +2955,7 @@
-                               esac
-                               # OK
-                               ;;
--                      "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic)
-+                      "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | atom | generic)
-                               # OK
-                               ;;
-                       *)
-@@ -2817,7 +2967,7 @@
-               ;;
+   /* Don't generate bogus routine names.  */
+@@ -15934,6 +15959,7 @@ rs6000_savres_routine_sym (rs6000_stack_
  
-       mips*-*-*)
--              supported_defaults="abi arch float tune divide llsc mips-plt"
-+              supported_defaults="abi arch arch_32 arch_64 float tune tune_32 tune_64 divide llsc mips-plt"
+       sym = savres_routine_syms[regno-FIRST_SAVRES_REGISTER][select]
+       = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
++      SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_FUNCTION;
+     }
  
-               case ${with_float} in
-               "" | soft | hard)
-@@ -2882,12 +3032,20 @@
-               ;;
+   return sym;
+@@ -16124,6 +16150,14 @@ rs6000_savres_strategy (rs6000_stack_t *
+       savres_gprs_inline = savres_gprs_inline || using_multiple_p;
+     }
  
-       powerpc*-*-* | rs6000-*-*)
--              supported_defaults="cpu float tune"
-+              supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"
++  /* Code intended for use in shared libraries cannot be reliably linked
++     with out-of-line prologues and epilogues.  */
++  if (flag_pic)
++    {
++      savres_gprs_inline = 1;
++      savres_fprs_inline = 1;
++    }
++
+   return (using_multiple_p
+         | (savres_fprs_inline << 1)
+         | (savres_gprs_inline << 2));
+@@ -16148,7 +16182,7 @@ rs6000_emit_prologue (void)
+   int using_store_multiple;
+   int using_static_chain_p = (cfun->static_chain_decl != NULL_TREE
+                               && df_regs_ever_live_p (STATIC_CHAIN_REGNUM)
+-                              && !call_used_regs[STATIC_CHAIN_REGNUM]);
++                              && call_used_regs[STATIC_CHAIN_REGNUM]);
+   HOST_WIDE_INT sp_offset = 0;
  
--              for which in cpu tune; do
-+              for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
-                       eval "val=\$with_$which"
-                       case ${val} in
-                       default32 | default64)
-+                              case $which in
-+                              cpu | tune)
-+                                      ;;
-+                              *)
-+                                      echo "$val only valid for --with-cpu and --with-tune." 1>&2
-+                                      exit 1
-+                                      ;;
-+                              esac
-                               with_which="with_$which"
-                               eval $with_which=
-                               ;;
-@@ -3133,6 +3291,22 @@
-               ;;
- esac
+   if (TARGET_FIX_AND_CONTINUE)
+@@ -16956,8 +16990,9 @@ rs6000_emit_epilogue (int sibcall)
+                                || (cfun->calls_alloca
+                                    && !frame_pointer_needed));
+   restore_lr = (info->lr_save_p
+-              && restoring_GPRs_inline
+-              && restoring_FPRs_inline);
++              && (restoring_GPRs_inline
++                  || (restoring_FPRs_inline
++                      && info->first_fp_reg_save < 64)));
  
-+case ${target} in
-+    *-eglibc-*-*)
-+      tmake_file="${tmake_file} t-eglibc"
-+
-+      case ${target} in
-+          arm-*)
-+           # ARM already includes below.
-+              ;;
-+          *)
-+              tmake_file="${tmake_file} t-sysroot-suffix"
-+              tm_file="${tm_file} ./sysroot-suffix.h"
-+              ;;
-+      esac
-+      ;;
-+esac
-+
- t=
- all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu divide llsc mips-plt"
- for option in $all_defaults
-diff -Nur a/gcc/config.in b/gcc/config.in
---- a/gcc/config.in    2009-07-22 09:43:59.000000000 +0200
-+++ b/gcc/config.in    2010-01-25 09:50:29.085687411 +0100
-@@ -12,6 +12,18 @@
- #endif
+   if (WORLD_SAVE_P (info))
+     {
+@@ -17229,7 +17264,7 @@ rs6000_emit_epilogue (int sibcall)
  
+   /* Get the old lr if we saved it.  If we are restoring registers
+      out-of-line, then the out-of-line routines can do this for us.  */
+-  if (restore_lr)
++  if (restore_lr && restoring_GPRs_inline)
+     {
+       rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
+                                     info->lr_save_offset + sp_offset);
+@@ -17248,7 +17283,7 @@ rs6000_emit_epilogue (int sibcall)
+     }
  
-+/* Required license feature */
-+#ifndef USED_FOR_TARGET
-+#undef CSL_LICENSE_FEATURE
-+#endif
-+
-+
-+/* Required license version */
-+#ifndef USED_FOR_TARGET
-+#undef CSL_LICENSE_VERSION
-+#endif
-+
-+
- /* Define to enable the use of a default assembler. */
- #ifndef USED_FOR_TARGET
- #undef DEFAULT_ASSEMBLER
-@@ -108,6 +120,12 @@
- #endif
+   /* Set LR here to try to overlap restores below.  */
+-  if (restore_lr)
++  if (restore_lr && restoring_GPRs_inline)
+     emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
+                   gen_rtx_REG (Pmode, 0));
  
+@@ -17428,6 +17463,18 @@ rs6000_emit_epilogue (int sibcall)
+           }
+     }
  
-+/* Define to warn for use of native system header directories */
-+#ifndef USED_FOR_TARGET
-+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
-+#endif
++  if (restore_lr && !restoring_GPRs_inline)
++    {
++      rtx mem = gen_frame_mem_offset (Pmode, frame_reg_rtx,
++                                    info->lr_save_offset + sp_offset);
 +
++      emit_move_insn (gen_rtx_REG (Pmode, 0), mem);
++    }
 +
- /* Define if you want all operations on RTL (the basic data structure of the
-    optimizer and back end) to be checked for dynamic type safety at runtime.
-    This is quite expensive. */
-@@ -821,6 +839,13 @@
- #endif
++  if (restore_lr && !restoring_GPRs_inline)
++    emit_move_insn (gen_rtx_REG (Pmode, LR_REGNO),
++                  gen_rtx_REG (Pmode, 0));
++
+   /* Restore fpr's if we need to do it without calling a function.  */
+   if (restoring_FPRs_inline)
+     for (i = 0; i < 64 - info->first_fp_reg_save; i++)
+@@ -22195,6 +22242,30 @@ rs6000_memory_move_cost (enum machine_mo
+     return 4 + rs6000_register_move_cost (mode, rclass, GENERAL_REGS);
+ }
  
-+/* Define if your assembler supports specifying the alignment of objects
-+   allocated using the GAS .comm command. */
-+#ifndef USED_FOR_TARGET
-+#undef HAVE_GAS_ALIGNED_COMM
-+#endif
++/* Return a value indicating whether OP, an operand of a commutative
++   operation, is preferred as the first or second operand.  The higher
++   the value, the stronger the preference for being the first operand.
++   We use negative values to indicate a preference for the first operand
++   and positive values for the second operand.
++   VALUE is the default precedence for OP; see rtlanal.c:
++   commutative_operand_precendece.  */
++
++static int
++rs6000_commutative_operand_precedence (const_rtx op, int value)
++{
++  /* Prefer pointer objects over non pointer objects.
++     For rationale see PR28690.  */
++  if (GET_RTX_CLASS (GET_CODE (op)) == RTX_OBJ
++      && ((REG_P (op) && REG_POINTER (op))
++        || (MEM_P (op) && MEM_POINTER (op))))
++    /* value = -1 */;
++  else
++    /* value = -2 */
++    --value;
 +
++  return value;
++}
 +
- /* Define if your assembler supports .balign and .p2align. */
- #ifndef USED_FOR_TARGET
- #undef HAVE_GAS_BALIGN_AND_P2ALIGN
-diff -Nur a/gcc/configure b/gcc/configure
---- a/gcc/configure    2009-03-24 18:46:03.000000000 +0100
-+++ b/gcc/configure    2010-01-25 09:50:29.085687411 +0100
-@@ -458,7 +458,7 @@
- # include <unistd.h>
- #endif"
+ /* Returns a code for a target-specific builtin that implements
+    reciprocal of the function, or NULL_TREE if not available.  */
  
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical licensedir build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR EGLIBC_CONFIGS CONFIGURE_SPECS onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file TM_ENDIAN_CONFIG TM_MULTILIB_CONFIG TM_MULTILIB_EXCEPTIONS_CONFIG extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
- ac_subst_files='language_hooks'
- ac_pwd=`pwd`
-@@ -1084,10 +1084,17 @@
-   --enable-version-specific-runtime-libs
-                           specify that runtime libraries should be
-                           installed in a compiler-specific directory
-+  --enable-poison-system-directories
-+                          warn for use of native system header directories
- Optional Packages:
-   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-+  --with-csl-license-version=VERSION
-+                          Use VERSION to communicate with the license manager
-+  --with-license          the path to the installed license component
-+  --with-csl-license-feature=FEATURE
-+                          Use FEATURE to communicate with the license manager
-   --with-build-libsubdir=DIR  Directory where to find libraries for build system
-   --with-local-prefix=DIR specifies directory to put local include
-   --with-gxx-include-dir=DIR
-@@ -1105,8 +1112,12 @@
-   --with-build-sysroot=sysroot
-                           use sysroot as the system root during the build
-   --with-sysroot=DIR Search for usr/lib, usr/include, et al, within DIR.
-+  --with-eglibc-configs=CONFIGS
-+                          build multilibs for these EGLIBC configurations
-+  --with-specs=SPECS      add SPECS to driver command-line processing
-   --with-pkgversion=PKG   Use PKG in the version string in place of "GCC"
-   --with-bugurl=URL       Direct users to URL to report a bug
-+  --with-multilib-list    Select multilibs (SH only)
-   --with-gnu-ld           assume the C compiler uses GNU ld default=no
-   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
-   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
-@@ -1724,6 +1735,73 @@
+@@ -22718,12 +22789,16 @@ rs6000_is_opaque_type (const_tree type)
+ static rtx
+ rs6000_dwarf_register_span (rtx reg)
+ {
+-  unsigned regno;
++  rtx parts[8];
++  int i, words;
++  unsigned regno = REGNO (reg);
++  enum machine_mode mode = GET_MODE (reg);
  
+   if (TARGET_SPE
++      && regno < 32
+       && (SPE_VECTOR_MODE (GET_MODE (reg))
+-        || (TARGET_E500_DOUBLE
+-            && (GET_MODE (reg) == DFmode || GET_MODE (reg) == DDmode))))
++        || (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode)
++            && mode != SFmode && mode != SDmode && mode != SCmode)))
+     ;
+   else
+     return NULL_RTX;
+@@ -22733,15 +22808,23 @@ rs6000_dwarf_register_span (rtx reg)
+   /* The duality of the SPE register size wreaks all kinds of havoc.
+      This is a way of distinguishing r0 in 32-bits from r0 in
+      64-bits.  */
+-  return
+-    gen_rtx_PARALLEL (VOIDmode,
+-                    BYTES_BIG_ENDIAN
+-                    ? gen_rtvec (2,
+-                                 gen_rtx_REG (SImode, regno + 1200),
+-                                 gen_rtx_REG (SImode, regno))
+-                    : gen_rtvec (2,
+-                                 gen_rtx_REG (SImode, regno),
+-                                 gen_rtx_REG (SImode, regno + 1200)));
++  words = (GET_MODE_SIZE (mode) + UNITS_PER_FP_WORD - 1) / UNITS_PER_FP_WORD;
++  gcc_assert (words <= 4);
++  for (i = 0; i < words; i++, regno++)
++    {
++      if (BYTES_BIG_ENDIAN)
++      {
++        parts[2 * i] = gen_rtx_REG (SImode, regno + 1200);
++        parts[2 * i + 1] = gen_rtx_REG (SImode, regno);
++      }
++      else
++      {
++        parts[2 * i] = gen_rtx_REG (SImode, regno);
++        parts[2 * i + 1] = gen_rtx_REG (SImode, regno + 1200);
++      }
++    }
++
++  return gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (words * 2, parts));
+ }
  
+ /* Fill in sizes for SPE register high parts in table used by unwinder.  */
+--- a/gcc/config/rs6000/rs6000.h
++++ b/gcc/config/rs6000/rs6000.h
+@@ -368,16 +368,6 @@ enum group_termination
+     previous_group
+   };
  
+-/* Support for a compile-time default CPU, et cetera.  The rules are:
+-   --with-cpu is ignored if -mcpu is specified.
+-   --with-tune is ignored if -mtune is specified.
+-   --with-float is ignored if -mhard-float or -msoft-float are
+-    specified.  */
+-#define OPTION_DEFAULT_SPECS \
+-  {"cpu", "%{!mcpu=*:-mcpu=%(VALUE)}" }, \
+-  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
+-  {"float", "%{!msoft-float:%{!mhard-float:-m%(VALUE)-float}}" }
+-
+ /* rs6000_select[0] is reserved for the default cpu defined via --with-cpu */
+ struct rs6000_cpu_select
+ {
+@@ -794,8 +784,8 @@ extern int rs6000_xilinx_fpu;
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+    1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,        \
+    /* AltiVec registers.  */                     \
+-   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+-   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
++   1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+    1, 1                                                  \
+    , 1, 1, 1                                       \
+ }
+@@ -813,8 +803,8 @@ extern int rs6000_xilinx_fpu;
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+    1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,        \
+    /* AltiVec registers.  */                     \
+-   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+-   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
++   1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+    0, 0                                                  \
+    , 0, 0, 0                                       \
+ }
+--- a/gcc/config/rs6000/rs6000.md
++++ b/gcc/config/rs6000/rs6000.md
+@@ -14703,9 +14703,9 @@
+   [(match_parallel 0 "any_parallel_operand"
+                  [(clobber (reg:P 65))
+                   (use (match_operand:P 1 "symbol_ref_operand" "s"))
+-                    (use (match_operand:P 2 "gpc_reg_operand" "r"))
+-                  (set (match_operand:P 3 "memory_operand" "=m")
+-                       (match_operand:P 4 "gpc_reg_operand" "r"))])]
++                    (use (reg:P 11))
++                  (set (match_operand:P 2 "memory_operand" "=m")
++                       (match_operand:P 3 "gpc_reg_operand" "r"))])]
+   ""
+   "bl %z1"
+   [(set_attr "type" "branch")
+@@ -14715,9 +14715,9 @@
+   [(match_parallel 0 "any_parallel_operand"
+                  [(clobber (reg:P 65))
+                   (use (match_operand:P 1 "symbol_ref_operand" "s"))
+-                    (use (match_operand:P 2 "gpc_reg_operand" "r"))
+-                  (set (match_operand:DF 3 "memory_operand" "=m")
+-                       (match_operand:DF 4 "gpc_reg_operand" "f"))])]
++                    (use (reg:P 11))
++                  (set (match_operand:DF 2 "memory_operand" "=m")
++                       (match_operand:DF 3 "gpc_reg_operand" "f"))])]
+   ""
+   "bl %z1"
+   [(set_attr "type" "branch")
+@@ -14810,9 +14810,9 @@
+  [(match_parallel 0 "any_parallel_operand"
+                   [(clobber (match_operand:P 1 "register_operand" "=l"))
+                    (use (match_operand:P 2 "symbol_ref_operand" "s"))
+-                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
+-                 (set (match_operand:P 4 "gpc_reg_operand" "=r")
+-                      (match_operand:P 5 "memory_operand" "m"))])]
++                   (use (reg:P 11))
++                 (set (match_operand:P 3 "gpc_reg_operand" "=r")
++                      (match_operand:P 4 "memory_operand" "m"))])]
+  ""
+  "bl %z2"
+  [(set_attr "type" "branch")
+@@ -14823,9 +14823,9 @@
+                   [(return)
+                  (clobber (match_operand:P 1 "register_operand" "=l"))
+                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
+-                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
+-                 (set (match_operand:P 4 "gpc_reg_operand" "=r")
+-                      (match_operand:P 5 "memory_operand" "m"))])]
++                   (use (reg:P 11))
++                 (set (match_operand:P 3 "gpc_reg_operand" "=r")
++                      (match_operand:P 4 "memory_operand" "m"))])]
+  ""
+  "b %z2"
+  [(set_attr "type" "branch")
+@@ -14836,9 +14836,9 @@
+                   [(return)
+                  (clobber (match_operand:P 1 "register_operand" "=l"))
+                  (use (match_operand:P 2 "symbol_ref_operand" "s"))
+-                   (use (match_operand:P 3 "gpc_reg_operand" "r"))
+-                 (set (match_operand:DF 4 "gpc_reg_operand" "=f")
+-                      (match_operand:DF 5 "memory_operand" "m"))])]
++                   (use (reg:P 11))
++                 (set (match_operand:DF 3 "gpc_reg_operand" "=f")
++                      (match_operand:DF 4 "memory_operand" "m"))])]
+  ""
+  "b %z2"
+  [(set_attr "type" "branch")
+@@ -14889,6 +14889,120 @@
+ }"
+   [(set_attr "type" "load")])
\f
++;;; Expanders for vector insn patterns shared between the SPE and TARGET_PAIRED systems.
 +
++(define_expand "absv2sf2"
++  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
++      (abs:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")))]
++  "TARGET_PAIRED_FLOAT || TARGET_SPE"
++  "
++{
++  if (TARGET_SPE)
++    {
++      /* We need to make a note that we clobber SPEFSCR.  */
++      emit_insn (gen_rtx_SET (VOIDmode, operands[0],
++                              gen_rtx_ABS (V2SFmode, operands[1])));
++      emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO)));
++      DONE;
++    }
++}")
 +
-+# Check whether --with-csl-license-version or --without-csl-license-version was given.
-+if test "${with_csl_license_version+set}" = set; then
-+  withval="$with_csl_license_version"
-+  case "$withval" in
-+      (yes) { { echo "$as_me:$LINENO: error: license version not specified" >&5
-+echo "$as_me: error: license version not specified" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+      (no)  CSL_LICENSE_VERSION="" ;;
-+      (*)   CSL_LICENSE_VERSION="$withval" ;;
-+     esac
-+else
-+  CSL_LICENSE_VERSION=""
-+
-+fi;
-+  if test x"$CSL_LICENSE_VERSION" != x; then
++(define_expand "negv2sf2"
++  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
++      (neg:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")))]
++  "TARGET_PAIRED_FLOAT || TARGET_SPE"
++  "
++{
++  if (TARGET_SPE)
++    {
++      /* We need to make a note that we clobber SPEFSCR.  */
++      emit_insn (gen_rtx_SET (VOIDmode, operands[0],
++                              gen_rtx_NEG (V2SFmode, operands[1])));
++      emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO)));
++      DONE;
++    }
++}")
 +
-+cat >>confdefs.h <<_ACEOF
-+#define CSL_LICENSE_VERSION "$CSL_LICENSE_VERSION"
-+_ACEOF
++(define_expand "addv2sf3"
++  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
++      (plus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
++                 (match_operand:V2SF 2 "gpc_reg_operand" "")))]
++  "TARGET_PAIRED_FLOAT || TARGET_SPE"
++  "
++{
++  if (TARGET_SPE)
++    {
++      /* We need to make a note that we clobber SPEFSCR.  */
++      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
 +
-+  fi
++      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
++                                         gen_rtx_PLUS (V2SFmode, operands[1], operands[2]));
++      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
++      emit_insn (par);
++      DONE;
++    }
++}")
 +
++(define_expand "subv2sf3"
++  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
++      (minus:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
++                  (match_operand:V2SF 2 "gpc_reg_operand" "")))]
++  "TARGET_PAIRED_FLOAT || TARGET_SPE"
++  "
++{
++  if (TARGET_SPE)
++    {
++      /* We need to make a note that we clobber SPEFSCR.  */
++      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
 +
++      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
++                                         gen_rtx_MINUS (V2SFmode, operands[1], operands[2]));
++      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
++      emit_insn (par);
++      DONE;
++    }
++}")
 +
-+# Check whether --with-license or --without-license was given.
-+if test "${with_license+set}" = set; then
-+  withval="$with_license"
-+  case "$withval" in
-+     (yes) { { echo "$as_me:$LINENO: error: license not specified" >&5
-+echo "$as_me: error: license not specified" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+     (no)  with_license= ;;
-+     (*) ;;
-+  esac
-+else
-+  with_license=
-+fi;
-+  licensedir=$with_license
++(define_expand "mulv2sf3"
++  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
++      (mult:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
++                 (match_operand:V2SF 2 "gpc_reg_operand" "")))]
++  "TARGET_PAIRED_FLOAT || TARGET_SPE"
++  "
++{
++  if (TARGET_SPE)
++    {
++      /* We need to make a note that we clobber SPEFSCR.  */
++      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
 +
++      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
++                                         gen_rtx_MULT (V2SFmode, operands[1], operands[2]));
++      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
++      emit_insn (par);
++      DONE;
++    }
++}")
 +
++(define_expand "divv2sf3"
++  [(set (match_operand:V2SF 0 "gpc_reg_operand" "")
++      (div:V2SF (match_operand:V2SF 1 "gpc_reg_operand" "")
++                (match_operand:V2SF 2 "gpc_reg_operand" "")))]
++  "TARGET_PAIRED_FLOAT || TARGET_SPE"
++  "
++{
++  if (TARGET_SPE)
++    {
++      /* We need to make a note that we clobber SPEFSCR.  */
++      rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
 +
++      XVECEXP (par, 0, 0) = gen_rtx_SET (VOIDmode, operands[0],
++                                         gen_rtx_DIV (V2SFmode, operands[1], operands[2]));
++      XVECEXP (par, 0, 1) = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, SPEFSCR_REGNO));
++      emit_insn (par);
++      DONE;
++    }
++}")
++\f
+ (include "sync.md")
+ (include "altivec.md")
+--- a/gcc/config/rs6000/spe.md
++++ b/gcc/config/rs6000/spe.md
+@@ -164,7 +164,7 @@
+ ;; SPE SIMD instructions
+-(define_insn "spe_evabs"
++(define_insn "absv2si2"
+   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
+       (abs:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")))]
+   "TARGET_SPE"
+@@ -181,7 +181,7 @@
+   [(set_attr "type" "vecsimple")
+    (set_attr  "length" "4")])
+-(define_insn "spe_evand"
++(define_insn "andv2si3"
+   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
+         (and:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
+                 (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
+@@ -1898,7 +1898,7 @@
+   [(set_attr "type" "veccomplex")
+    (set_attr  "length" "4")])
+-(define_insn "spe_evaddw"
++(define_insn "addv2si3"
+   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
+         (plus:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
+                  (match_operand:V2SI 2 "gpc_reg_operand" "r")))]
+@@ -2028,7 +2028,7 @@
+   [(set_attr "type" "veccomplex")
+    (set_attr  "length" "4")])
+-(define_insn "spe_evdivws"
++(define_insn "divv2si3"
+   [(set (match_operand:V2SI 0 "gpc_reg_operand" "=r")
+         (div:V2SI (match_operand:V2SI 1 "gpc_reg_operand" "r")
+                 (match_operand:V2SI 2 "gpc_reg_operand" "r")))
+@@ -3156,9 +3156,9 @@
+   [(match_parallel 0 "any_parallel_operand"
+                  [(clobber (reg:P 65))
+                   (use (match_operand:P 1 "symbol_ref_operand" "s"))
+-                  (use (match_operand:P 2 "gpc_reg_operand" "r"))
+-                  (set (match_operand:V2SI 3 "memory_operand" "=m")
+-                       (match_operand:V2SI 4 "gpc_reg_operand" "r"))])]
++                  (use (reg:P 11))
++                  (set (match_operand:V2SI 2 "memory_operand" "=m")
++                       (match_operand:V2SI 3 "gpc_reg_operand" "r"))])]
+   "TARGET_SPE_ABI"
+   "bl %z1"
+   [(set_attr "type" "branch")
+@@ -3168,9 +3168,9 @@
+  [(match_parallel 0 "any_parallel_operand"
+                 [(clobber (reg:P 65))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+-                 (use (match_operand:P 2 "gpc_reg_operand" "r"))
+-                 (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
+-                      (match_operand:V2SI 4 "memory_operand" "m"))])]
++                 (use (reg:P 11))
++                 (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
++                      (match_operand:V2SI 3 "memory_operand" "m"))])]
+  "TARGET_SPE_ABI"
+  "bl %z1"
+  [(set_attr "type" "branch")
+@@ -3181,9 +3181,9 @@
+                 [(return)
+                  (clobber (reg:P 65))
+                  (use (match_operand:P 1 "symbol_ref_operand" "s"))
+-                 (use (match_operand:P 2 "gpc_reg_operand" "r"))
+-                 (set (match_operand:V2SI 3 "gpc_reg_operand" "=r")
+-                      (match_operand:V2SI 4 "memory_operand" "m"))])]
++                 (use (reg:P 11))
++                 (set (match_operand:V2SI 2 "gpc_reg_operand" "=r")
++                      (match_operand:V2SI 3 "memory_operand" "m"))])]
+  "TARGET_SPE_ABI"
+  "b %z1"
+  [(set_attr "type" "branch")
+--- a/gcc/config/rs6000/sysv4.h
++++ b/gcc/config/rs6000/sysv4.h
+@@ -619,6 +619,9 @@ SVR4_ASM_SPEC \
+ #define CC1_SECURE_PLT_DEFAULT_SPEC ""
+ #endif
++#undef CC1_EXTRA_SPEC
++#define CC1_EXTRA_SPEC ""
 +
-+# Check whether --with-csl-license-feature or --without-csl-license-feature was given.
-+if test "${with_csl_license_feature+set}" = set; then
-+  withval="$with_csl_license_feature"
-+  case "$withval" in
-+      (yes) { { echo "$as_me:$LINENO: error: license feature not specified" >&5
-+echo "$as_me: error: license feature not specified" >&2;}
-+   { (exit 1); exit 1; }; } ;;
-+      (no)  CSL_LICENSE_FEATURE="" ;;
-+      (*)   CSL_LICENSE_FEATURE="$withval" ;;
-+     esac
-+else
-+  CSL_LICENSE_FEATURE=""
+ /* Pass -G xxx to the compiler and set correct endian mode.  */
+ #define       CC1_SPEC "%{G*} %(cc1_cpu) \
+ %{mlittle|mlittle-endian: %(cc1_endian_little);           \
+@@ -643,7 +646,7 @@ SVR4_ASM_SPEC \
+ %{msdata: -msdata=default} \
+ %{mno-sdata: -msdata=none} \
+ %{!mbss-plt: %{!msecure-plt: %(cc1_secure_plt_default)}} \
+-%{profile: -p}"
++%{profile: -p}" CC1_EXTRA_SPEC
+ /* Don't put -Y P,<path> for cross compilers.  */
+ #ifndef CROSS_DIRECTORY_STRUCTURE
+@@ -843,15 +846,15 @@ SVR4_ASM_SPEC \
+ #define CPP_OS_MVME_SPEC ""
+ /* PowerPC simulator based on netbsd system calls support.  */
+-#define LIB_SIM_SPEC "--start-group -lsim -lc --end-group"
++#define LIB_SIM_SPEC LIB_DEFAULT_SPEC
+-#define       STARTFILE_SIM_SPEC "ecrti.o%s sim-crt0.o%s crtbegin.o%s"
++#define       STARTFILE_SIM_SPEC "ecrti.o%s crtbegin.o%s"
+-#define       ENDFILE_SIM_SPEC "crtend.o%s ecrtn.o%s"
++#define       ENDFILE_SIM_SPEC "crtend.o%s ecrtn.o%s -Tsim-hosted.ld"
+ #define LINK_START_SIM_SPEC ""
+-#define LINK_OS_SIM_SPEC "-m elf32ppcsim"
++#define LINK_OS_SIM_SPEC ""
+ #define CPP_OS_SIM_SPEC ""
+--- /dev/null
++++ b/gcc/config/rs6000/t-ppc-e500mc
+@@ -0,0 +1,12 @@
++# Multilibs for powerpc embedded ELF targets.
 +
-+fi;
-+  if test x"$CSL_LICENSE_FEATURE" != x; then
++MULTILIB_OPTIONS      = 
 +
-+cat >>confdefs.h <<_ACEOF
-+#define CSL_LICENSE_FEATURE "$CSL_LICENSE_FEATURE"
-+_ACEOF
++MULTILIB_DIRNAMES     = 
 +
-+  fi
++MULTILIB_EXCEPTIONS   = 
 +
++MULTILIB_EXTRA_OPTS   = mno-eabi mstrict-align
 +
- # Determine the target- and build-specific subdirectories
- # post-stage1 host modules use a different CC_FOR_BUILD so, in order to
-@@ -8042,6 +8120,28 @@
++MULTILIB_MATCHES      = ${MULTILIB_MATCHES_FLOAT} \
++                        ${MULTILIB_MATCHES_ENDIAN}
+--- a/gcc/config/rs6000/t-ppccomm
++++ b/gcc/config/rs6000/t-ppccomm
+@@ -3,10 +3,23 @@
+ LIB2FUNCS_EXTRA += tramp.S $(srcdir)/config/rs6000/darwin-ldouble.c
  
+ # These can't end up in shared libgcc
+-LIB2FUNCS_STATIC_EXTRA = eabi.S
+-
+-eabi.S: $(srcdir)/config/rs6000/eabi.asm
+-      cat $(srcdir)/config/rs6000/eabi.asm > eabi.S
++LIB2FUNCS_STATIC_EXTRA = \
++  crtsavfpr.S crtresfpr.S \
++  crtsavgpr.S crtresgpr.S \
++  crtresxfpr.S crtresxgpr.S \
++  e500crtres32gpr.S \
++  e500crtres64gpr.S \
++  e500crtres64gprctr.S \
++  e500crtrest32gpr.S \
++  e500crtrest64gpr.S \
++  e500crtresx32gpr.S \
++  e500crtresx64gpr.S \
++  e500crtsav32gpr.S \
++  e500crtsav64gpr.S \
++  e500crtsav64gprctr.S \
++  e500crtsavg32gpr.S \
++  e500crtsavg64gpr.S \
++  e500crtsavg64gprctr.S
  
+ tramp.S: $(srcdir)/config/rs6000/tramp.asm
+       cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
+@@ -36,6 +49,63 @@ ncrti.S: $(srcdir)/config/rs6000/sol-ci.
+ ncrtn.S: $(srcdir)/config/rs6000/sol-cn.asm
+       cat $(srcdir)/config/rs6000/sol-cn.asm >ncrtn.S
  
++crtsavfpr.S: $(srcdir)/config/rs6000/crtsavfpr.asm
++      cat $(srcdir)/config/rs6000/crtsavfpr.asm >crtsavfpr.S
 +
-+# Check whether --with-eglibc-configs or --without-eglibc-configs was given.
-+if test "${with_eglibc_configs+set}" = set; then
-+  withval="$with_eglibc_configs"
-+  EGLIBC_CONFIGS=$withval
-+else
-+  EGLIBC_CONFIGS=
++crtresfpr.S: $(srcdir)/config/rs6000/crtresfpr.asm
++      cat $(srcdir)/config/rs6000/crtresfpr.asm >crtresfpr.S
 +
-+fi;
++crtsavgpr.S: $(srcdir)/config/rs6000/crtsavgpr.asm
++      cat $(srcdir)/config/rs6000/crtsavgpr.asm >crtsavgpr.S
 +
++crtresgpr.S: $(srcdir)/config/rs6000/crtresgpr.asm
++      cat $(srcdir)/config/rs6000/crtresgpr.asm >crtresgpr.S
 +
++crtresxfpr.S: $(srcdir)/config/rs6000/crtresxfpr.asm
++      cat $(srcdir)/config/rs6000/crtresxfpr.asm >crtresxfpr.S
 +
-+# Check whether --with-specs or --without-specs was given.
-+if test "${with_specs+set}" = set; then
-+  withval="$with_specs"
-+  CONFIGURE_SPECS=$withval
-+else
-+  CONFIGURE_SPECS=
++crtresxgpr.S: $(srcdir)/config/rs6000/crtresxgpr.asm
++      cat $(srcdir)/config/rs6000/crtresxgpr.asm >crtresxgpr.S
 +
-+fi;
++e500crtres32gpr.S: $(srcdir)/config/rs6000/e500crtres32gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtres32gpr.asm >e500crtres32gpr.S
 +
++e500crtres64gpr.S: $(srcdir)/config/rs6000/e500crtres64gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtres64gpr.asm >e500crtres64gpr.S
 +
- # Build with intermodule optimisations
- # Check whether --enable-intermodule or --disable-intermodule was given.
- if test "${enable_intermodule+set}" = set; then
-@@ -8137,6 +8237,15 @@
++e500crtres64gprctr.S: $(srcdir)/config/rs6000/e500crtres64gprctr.asm
++      cat $(srcdir)/config/rs6000/e500crtres64gprctr.asm >e500crtres64gprctr.S
 +
-+# Check whether --with-multilib-list or --without-multilib-list was given.
-+if test "${with_multilib_list+set}" = set; then
-+  withval="$with_multilib_list"
-+  :
-+else
-+  with_multilib_list=default
-+fi;
++e500crtrest32gpr.S: $(srcdir)/config/rs6000/e500crtrest32gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtrest32gpr.asm >e500crtrest32gpr.S
 +
- # -------------------------
- # Checks for other programs
- # -------------------------
-@@ -14509,13 +14618,13 @@
- else
-   lt_cv_nm_interface="BSD nm"
-   echo "int some_variable = 0;" > conftest.$ac_ext
--  (eval echo "\"\$as_me:14512: $ac_compile\"" >&5)
-+  (eval echo "\"\$as_me:14621: $ac_compile\"" >&5)
-   (eval "$ac_compile" 2>conftest.err)
-   cat conftest.err >&5
--  (eval echo "\"\$as_me:14515: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-+  (eval echo "\"\$as_me:14624: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-   cat conftest.err >&5
--  (eval echo "\"\$as_me:14518: output\"" >&5)
-+  (eval echo "\"\$as_me:14627: output\"" >&5)
-   cat conftest.out >&5
-   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-     lt_cv_nm_interface="MS dumpbin"
-@@ -15672,7 +15781,7 @@
-   ;;
++e500crtrest64gpr.S: $(srcdir)/config/rs6000/e500crtrest64gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtrest64gpr.asm >e500crtrest64gpr.S
++
++e500crtresx32gpr.S: $(srcdir)/config/rs6000/e500crtresx32gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtresx32gpr.asm >e500crtresx32gpr.S
++
++e500crtresx64gpr.S: $(srcdir)/config/rs6000/e500crtresx64gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtresx64gpr.asm >e500crtresx64gpr.S
++
++e500crtsav32gpr.S: $(srcdir)/config/rs6000/e500crtsav32gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtsav32gpr.asm >e500crtsav32gpr.S
++
++e500crtsav64gpr.S: $(srcdir)/config/rs6000/e500crtsav64gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtsav64gpr.asm >e500crtsav64gpr.S
++
++e500crtsav64gprctr.S: $(srcdir)/config/rs6000/e500crtsav64gprctr.asm
++      cat $(srcdir)/config/rs6000/e500crtsav64gprctr.asm >e500crtsav64gprctr.S
++
++e500crtsavg32gpr.S: $(srcdir)/config/rs6000/e500crtsavg32gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtsavg32gpr.asm >e500crtsavg32gpr.S
++
++e500crtsavg64gpr.S: $(srcdir)/config/rs6000/e500crtsavg64gpr.asm
++      cat $(srcdir)/config/rs6000/e500crtsavg64gpr.asm >e500crtsavg64gpr.S
++
++e500crtsavg64gprctr.S: $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm
++      cat $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm >e500crtsavg64gprctr.S
++
+ # Build multiple copies of ?crt{i,n}.o, one for each target switch.
+ $(T)ecrti$(objext): ecrti.S
+       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ecrti.S -o $(T)ecrti$(objext)
+@@ -49,6 +119,63 @@ $(T)ncrti$(objext): ncrti.S
+ $(T)ncrtn$(objext): ncrtn.S
+       $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrtn.S -o $(T)ncrtn$(objext)
++$(T)crtsavfpr$(objext): crtsavfpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavfpr.S -o $(T)crtsavfpr$(objext)
++
++$(T)crtresfpr$(objext): crtresfpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresfpr.S -o $(T)crtresfpr$(objext)
++
++$(T)crtsavgpr$(objext): crtsavgpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavgpr.S -o $(T)crtsavgpr$(objext)
++
++$(T)crtresgpr$(objext): crtresgpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresgpr.S -o $(T)crtresgpr$(objext)
++
++$(T)crtresxfpr$(objext): crtresxfpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxfpr.S -o $(T)crtresxfpr$(objext)
++
++$(T)crtresxgpr$(objext): crtresxgpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxgpr.S -o $(T)crtresxgpr$(objext)
++
++$(T)e500crtres32gpr$(objext): e500crtres32gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres32gpr.S -o $(T)e500crtres32gpr$(objext)
++
++$(T)e500crtres64gpr$(objext): e500crtres64gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gpr.S -o $(T)e500crtres64gpr$(objext)
++
++$(T)e500crtres64gprctr$(objext): e500crtres64gprctr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gprctr.S -o $(T)e500crtres64gprctr$(objext)
++
++$(T)e500crtrest32gpr$(objext): e500crtrest32gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest32gpr.S -o $(T)e500crtrest32gpr$(objext)
++
++$(T)e500crtrest64gpr$(objext): e500crtrest64gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest64gpr.S -o $(T)e500crtrest64gpr$(objext)
++
++$(T)e500crtresx32gpr$(objext): e500crtresx32gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx32gpr.S -o $(T)e500crtresx32gpr$(objext)
++
++$(T)e500crtresx64gpr$(objext): e500crtresx64gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx64gpr.S -o $(T)e500crtresx64gpr$(objext)
++
++$(T)e500crtsav32gpr$(objext): e500crtsav32gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav32gpr.S -o $(T)e500crtsav32gpr$(objext)
++
++$(T)e500crtsav64gpr$(objext): e500crtsav64gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gpr.S -o $(T)e500crtsav64gpr$(objext)
++
++$(T)e500crtsav64gprctr$(objext): e500crtsav64gprctr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gprctr.S -o $(T)e500crtsav64gprctr$(objext)
++
++$(T)e500crtsavg32gpr$(objext): e500crtsavg32gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg32gpr.S -o $(T)e500crtsavg32gpr$(objext)
++
++$(T)e500crtsavg64gpr$(objext): e500crtsavg64gpr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gpr.S -o $(T)e500crtsavg64gpr$(objext)
++
++$(T)e500crtsavg64gprctr$(objext): e500crtsavg64gprctr.S
++      $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gprctr.S -o $(T)e500crtsavg64gprctr$(objext)
++
+ # It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata.
+ CRTSTUFF_T_CFLAGS = -msdata=none
+ # Make sure crt*.o are built with -fPIC even if configured with 
+--- a/gcc/config/sh/lib1funcs.asm
++++ b/gcc/config/sh/lib1funcs.asm
+@@ -2080,8 +2080,9 @@ GLOBAL(ic_invalidate):
+ GLOBAL(ic_invalidate):
+       ocbwb   @r4
+       synco
+-      rts
+       icbi    @r4
++      rts
++        nop
+       ENDFUNC(GLOBAL(ic_invalidate))
+ #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__))
+       /* For system code, we use ic_invalidate_line_i, but user code
+@@ -2147,8 +2148,10 @@ GLOBAL(ic_invalidate):
+ GLOBAL(ic_invalidate_array):
+       add     r1,r4
+       synco
+-      rts
+       icbi    @r4
++      rts
++        nop
++      .align 2
+       .long   0
+       ENDFUNC(GLOBAL(ic_invalidate_array))
+ #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) || (defined(__SH4_NOFPU__) && !defined(__SH5__))
+--- a/gcc/config/sh/linux-unwind.h
++++ b/gcc/config/sh/linux-unwind.h
+@@ -24,7 +24,10 @@ see the files COPYING3 and COPYING.RUNTI
+ /* Do code reading to identify a signal frame, and set the frame
+-   state data appropriately.  See unwind-dw2.c for the structs.  */
++   state data appropriately.  See unwind-dw2.c for the structs.
++   Don't use this at all if inhibit_libc is used.  */
++
++#ifndef inhibit_libc
+ #include <signal.h>
+ #include <sys/ucontext.h>
+@@ -248,3 +251,5 @@ sh_fallback_frame_state (struct _Unwind_
+   return _URC_NO_REASON;
+ }
+ #endif /* defined (__SH5__) */
++
++#endif /* inhibit_libc */
+--- a/gcc/config/sh/sh.h
++++ b/gcc/config/sh/sh.h
+@@ -712,8 +712,9 @@ do {                                                                       \
+       /* Never run scheduling before reload, since that can           \
+        break global alloc, and generates slower code anyway due       \
+        to the pressure on R0.  */                                     \
+-      /* Enable sched1 for SH4; ready queue will be reordered by      \
+-       the target hooks when pressure is high. We can not do this for \
++      /* Enable sched1 for SH4 if the user explicitly requests.               \
++       When sched1 is enabled, the ready queue will be reordered by   \
++       the target hooks if pressure is high.  We can not do this for  \
+        PIC, SH3 and lower as they give spill failures for R0.  */     \
+       if (!TARGET_HARD_SH4 || flag_pic)                                       \
+         flag_schedule_insns = 0;                                      \
+@@ -728,6 +729,8 @@ do {                                                                       \
+           warning (0, "ignoring -fschedule-insns because of exception handling bug"); \
+         flag_schedule_insns = 0;                                      \
+       }                                                               \
++      else if (flag_schedule_insns == 2)                              \
++      flag_schedule_insns = 0;                                        \
+     }                                                                 \
+                                                                       \
+   if (align_loops == 0)                                                       \
+--- a/gcc/config/sh/t-1e
++++ /dev/null
+@@ -1 +0,0 @@
+-MULTILIB_ENDIAN =
+--- a/gcc/config/sh/t-linux
++++ b/gcc/config/sh/t-linux
+@@ -4,6 +4,5 @@ LIB2FUNCS_EXTRA= $(srcdir)/config/sh/lin
+ MULTILIB_DIRNAMES= 
+ MULTILIB_MATCHES = 
+-MULTILIB_EXCEPTIONS=
+ EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
+--- a/gcc/config/sh/t-mlib-sh1
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh1=m1/
+--- a/gcc/config/sh/t-mlib-sh2
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh2=m2/
+--- a/gcc/config/sh/t-mlib-sh2a
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh2a=m2a/
+--- a/gcc/config/sh/t-mlib-sh2a-nofpu
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh2a_nofpu=m2a-nofpu/
+--- a/gcc/config/sh/t-mlib-sh2a-single
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh2a_single=m2a-single/
+--- a/gcc/config/sh/t-mlib-sh2a-single-only
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh2a_single_only=m2a-single-only/
+--- a/gcc/config/sh/t-mlib-sh2e
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh2e=m2e/
+--- a/gcc/config/sh/t-mlib-sh3
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh3=m3/
+--- a/gcc/config/sh/t-mlib-sh3e
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh3e=m3e/
+--- a/gcc/config/sh/t-mlib-sh4
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4=m4/
+--- a/gcc/config/sh/t-mlib-sh4-nofpu
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4_nofpu=m4-nofpu/
+--- a/gcc/config/sh/t-mlib-sh4-single
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4_single=m4-single/
+--- a/gcc/config/sh/t-mlib-sh4-single-only
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4_single_only=m4-single-only/
+--- a/gcc/config/sh/t-mlib-sh4a
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4a=m4a/
+--- a/gcc/config/sh/t-mlib-sh4a-nofpu
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4a_nofpu=m4a-nofpu/
+--- a/gcc/config/sh/t-mlib-sh4a-single
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4a_single=m4a-single/
+--- a/gcc/config/sh/t-mlib-sh4a-single-only
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4a_single_only=m4a-single-only/
+--- a/gcc/config/sh/t-mlib-sh4al
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh4al=m4al/
+--- a/gcc/config/sh/t-mlib-sh5-32media
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh5_32media=m5-32media/
+--- a/gcc/config/sh/t-mlib-sh5-32media-nofpu
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh5_32media_nofpu=m5-32media-nofpu/
+--- a/gcc/config/sh/t-mlib-sh5-64media
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh5_64media=m5-64media/
+--- a/gcc/config/sh/t-mlib-sh5-64media-nofpu
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh5_64media_nofpu=m5-64media-nofpu/
+--- a/gcc/config/sh/t-mlib-sh5-compact
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh5_compact=m5-compact/
+--- a/gcc/config/sh/t-mlib-sh5-compact-nofpu
++++ /dev/null
+@@ -1 +0,0 @@
+-ML_sh5_compact_nofpu=m5-compact-nofpu/
+--- a/gcc/config/sh/t-sh
++++ b/gcc/config/sh/t-sh
+@@ -27,10 +27,10 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
+       echo '#endif'           >> fp-bit.c
+       cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+-MULTILIB_ENDIAN = ml/mb
+-MULTILIB_CPUS= $(ML_sh1)$(ML_sh2a)$(ML_sh2a_nofpu)$(ML_sh2a_single_only)$(ML_sh2a_single)$(ML_sh2e)$(ML_sh2)$(ML_sh3e)$(ML_sh3)$(ML_sh4_nofpu)$(ML_sh4_single_only)$(ML_sh4_single)$(ML_sh4)$(ML_sh4a_nofpu)$(ML_sh4a_single_only)$(ML_sh4a_single)$(ML_sh4a)$(ML_sh5_32media)$(ML_sh5_32media_nofpu)$(ML_sh5_compact)$(ML_sh5_compact_nofpu)$(ML_sh5_64media)$(ML_sh5_64media_nofpu)
++DEFAULT_ENDIAN = $(word 1,$(TM_ENDIAN_CONFIG))
++OTHER_ENDIAN = $(word 2,$(TM_ENDIAN_CONFIG))
+-MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) $(MULTILIB_CPUS:/=)
++MULTILIB_OPTIONS= $(OTHER_ENDIAN) $(TM_MULTILIB_CONFIG)
+ MULTILIB_DIRNAMES= 
+ # The separate entries for m2a-nofpu and m2a-single-only with
+@@ -58,7 +58,34 @@ MULTILIB_MATCHES = $(shell \
+   done)
+ # SH1 only supports big endian.
+-MULTILIB_EXCEPTIONS = ml/m1 ml/m2a*
++MULTILIB_EXCEPTIONS = ml/m1 ml/m2a* $(TM_MULTILIB_EXCEPTIONS_CONFIG)
++
++MULTILIB_OSDIRNAMES = \
++      $(OTHER_ENDIAN)=!$(OTHER_ENDIAN) \
++      m1=!m1 $(OTHER_ENDIAN)/m1=!$(OTHER_ENDIAN)/m1 \
++      m2a=!m2a $(OTHER_ENDIAN)/m2a=!$(OTHER_ENDIAN)/m2a \
++      m2a-nofpu=!m2a-nofpu $(OTHER_ENDIAN)/m2a-nofpu=!$(OTHER_ENDIAN)/m2a-nofpu \
++      m2a-single-only=!m2a-single-only $(OTHER_ENDIAN)/m2a-single-only=!$(OTHER_ENDIAN)/m2a-single-only \
++      m2a-single=!m2a-single $(OTHER_ENDIAN)/m2a-single=!$(OTHER_ENDIAN)/m2a-single \
++      m2e=!m2e $(OTHER_ENDIAN)/m2e=!$(OTHER_ENDIAN)/m2e \
++      m2=!m2 $(OTHER_ENDIAN)/m2=!$(OTHER_ENDIAN)/m2 \
++      m3e=!m3e $(OTHER_ENDIAN)/m3e=!$(OTHER_ENDIAN)/m3e \
++      m3=!m3 $(OTHER_ENDIAN)/m3=!$(OTHER_ENDIAN)/m3 \
++      m4-nofpu=!m4-nofpu $(OTHER_ENDIAN)/m4-nofpu=!$(OTHER_ENDIAN)/m4-nofpu \
++      m4-single-only=!m4-single-only $(OTHER_ENDIAN)/m4-single-only=!$(OTHER_ENDIAN)/m4-single-only \
++      m4-single=!m4-single $(OTHER_ENDIAN)/m4-single=!$(OTHER_ENDIAN)/m4-single \
++      m4=!m4 $(OTHER_ENDIAN)/m4=!$(OTHER_ENDIAN)/m4 \
++      m4a-nofpu=!m4a-nofpu $(OTHER_ENDIAN)/m4a-nofpu=!$(OTHER_ENDIAN)/m4a-nofpu \
++      m4a-single-only=!m4a-single-only $(OTHER_ENDIAN)/m4a-single-only=!$(OTHER_ENDIAN)/m4a-single-only \
++      m4a-single=!m4a-single $(OTHER_ENDIAN)/m4a-single=!$(OTHER_ENDIAN)/m4a-single \
++      m4a=!m4a $(OTHER_ENDIAN)/m4a=!$(OTHER_ENDIAN)/m4a \
++      m4al=!m4al $(OTHER_ENDIAN)/m4al=!$(OTHER_ENDIAN)/m4al \
++      m5-32media=!m5-32media $(OTHER_ENDIAN)/m5-32media=!$(OTHER_ENDIAN)/m5-32media \
++      m5-32media-nofpu=!m5-32media-nofpu $(OTHER_ENDIAN)/m5-32media-nofpu=!$(OTHER_ENDIAN)/m5-32media-nofpu \
++      m5-compact=!m5-compact $(OTHER_ENDIAN)/m5-compact=!$(OTHER_ENDIAN)/m5-compact \
++      m5-compact-nofpu=!m5-compact-nofpu $(OTHER_ENDIAN)/m5-compact-nofpu=!$(OTHER_ENDIAN)/m5-compact-nofpu \
++      m5-64media=!m5-64media $(OTHER_ENDIAN)/m5-64media=!$(OTHER_ENDIAN)/m5-64media \
++      m5-64media-nofpu=!m5-64media-nofpu $(OTHER_ENDIAN)/m5-64media-nofpu=!$(OTHER_ENDIAN)/m5-64media-nofpu
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
+--- a/gcc/config/sol2.h
++++ b/gcc/config/sol2.h
+@@ -123,12 +123,12 @@ along with GCC; see the file COPYING3.  
+    %{YP,*} \
+    %{R*} \
+    %{compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,/usr/ucblib:/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
+-             %{!p:%{!pg:-Y P,/usr/ucblib:/usr/ccs/lib:/usr/lib}}} \
+-             -R /usr/ucblib} \
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
++             %{!p:%{!pg:-Y P,%R/usr/ucblib:%R/usr/ccs/lib:%R/usr/lib}}} \
++             -R %R/usr/ucblib} \
+    %{!compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
+-             %{!p:%{!pg:-Y P,/usr/ccs/lib:/usr/lib}}}}"
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/usr/lib} \
++             %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/usr/lib}}}}"
+ #undef LINK_ARCH32_SPEC
+ #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
+--- a/gcc/config/sparc/linux64.h
++++ b/gcc/config/sparc/linux64.h
+@@ -40,10 +40,15 @@ along with GCC; see the file COPYING3.  
+    in a Medium/Low code model environment.  */
+ #undef TARGET_DEFAULT
++#ifdef BIARCH_32BIT_DEFAULT
++#define TARGET_DEFAULT \
++  (MASK_APP_REGS + MASK_FPU)
++#else
+ #define TARGET_DEFAULT \
+   (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ \
+    + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
+ #endif
++#endif
+ /* This must be v9a not just v9 because by default we enable
+    -mvis.  */
+--- a/gcc/config/sparc/sol2-bi.h
++++ b/gcc/config/sparc/sol2-bi.h
+@@ -172,12 +172,12 @@
+    %{YP,*} \
+    %{R*} \
+    %{compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
+-       %{!p:%{!pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/sparcv9}}} \
+-     -R /usr/ucblib/sparcv9} \
++     %{!YP,*:%{p|pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
++       %{!p:%{!pg:-Y P,%R/usr/ucblib/sparcv9:%R/usr/lib/sparcv9}}} \
++     -R %R/usr/ucblib/sparcv9} \
+    %{!compat-bsd: \
+-     %{!YP,*:%{p|pg:-Y P,/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
+-       %{!p:%{!pg:-Y P,/usr/lib/sparcv9}}}}"
++     %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/sparcv9:%R/usr/lib/sparcv9} \
++       %{!p:%{!pg:-Y P,%R/usr/lib/sparcv9}}}}"
+ #define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
+--- a/gcc/config/sparc/sparc.c
++++ b/gcc/config/sparc/sparc.c
+@@ -6104,7 +6104,7 @@ enum rtx_code
+ sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
+ {
+   const char *qpfunc;
+-  rtx slot0, slot1, result, tem, tem2;
++  rtx slot0, slot1, result, tem, tem2, libfunc;
+   enum machine_mode mode;
+   enum rtx_code new_comparison;
+@@ -6167,7 +6167,8 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, 
+         emit_move_insn (slot1, y);
+       }
+-      emit_library_call (gen_rtx_SYMBOL_REF (Pmode, qpfunc), LCT_NORMAL,
++      libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
++      emit_library_call (libfunc, LCT_NORMAL,
+                        DImode, 2,
+                        XEXP (slot0, 0), Pmode,
+                        XEXP (slot1, 0), Pmode);
+@@ -6175,7 +6176,8 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, 
+     }
+   else
+     {
+-      emit_library_call (gen_rtx_SYMBOL_REF (Pmode, qpfunc), LCT_NORMAL,
++      libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
++      emit_library_call (libfunc, LCT_NORMAL,
+                        SImode, 2,
+                        x, TFmode, y, TFmode);
+       mode = SImode;
+@@ -6186,7 +6188,7 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, 
+      register so reload doesn't clobber the value if it needs
+      the return register for a spill reg.  */
+   result = gen_reg_rtx (mode);
+-  emit_move_insn (result, hard_libcall_value (mode));
++  emit_move_insn (result, hard_libcall_value (mode, libfunc));
+   switch (comparison)
+     {
+--- a/gcc/config/spu/spu.h
++++ b/gcc/config/spu/spu.h
+@@ -270,7 +270,8 @@ targetm.resolve_overloaded_builtin = spu
+ #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (LINK_REGISTER_REGNUM)
+-#define ARG_POINTER_CFA_OFFSET(FNDECL) (-STACK_POINTER_OFFSET)
++#define ARG_POINTER_CFA_OFFSET(FNDECL) \
++  (crtl->args.pretend_args_size - STACK_POINTER_OFFSET)
\f
+ /* Stack Checking */
+--- /dev/null
++++ b/gcc/config/t-eglibc
+@@ -0,0 +1,25 @@
++# multilibs  -*- mode:Makefile -*-
++
++MULTILIB_EXCEPTIONS :=
++MULTILIB_MATCHES    :=
++MULTILIB_ALIASES    :=
++
++# For all items in EGLIBC_CONFIGS except for the last one
++# do $1.  For the last one do $2.  The items are separated with ",".
++EGLIBC_AWK = $(shell echo $(EGLIBC_CONFIGS) | $(AWK) \
++      '{ \
++      N=split ($$0, configs, ","); \
++      for (i = 1; i < N; ++i) $1; \
++      $2; \
++      }')
++
++MULTILIB_OPTIONS    := $(call EGLIBC_AWK, \
++      printf ("feglibc=%s/", configs[i]), \
++      printf ("feglibc=%s\n", configs[i]))
++MULTILIB_DIRNAMES   := $(call EGLIBC_AWK, \
++      printf ("%s ", configs[i]), \
++      printf ("%s\n", configs[i]))
++MULTILIB_OSDIRNAMES := $(call EGLIBC_AWK, \
++      printf ("feglibc.%s=!%s ", configs[i], configs[i]), \
++      printf ("feglibc.%s=!%s\n", configs[i], configs[i]))
++
+--- a/gcc/configure
++++ b/gcc/configure
+@@ -458,7 +458,7 @@ ac_includes_default="\
+ # include <unistd.h>
+ #endif"
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR EGLIBC_CONFIGS CONFIGURE_SPECS onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump gcc_cv_readelf libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file TM_ENDIAN_CONFIG TM_MULTILIB_CONFIG TM_MULTILIB_EXCEPTIONS_CONFIG extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS'
+ ac_subst_files='language_hooks'
+ ac_pwd=`pwd`
+@@ -1084,6 +1084,8 @@ Optional Features:
+   --enable-version-specific-runtime-libs
+                           specify that runtime libraries should be
+                           installed in a compiler-specific directory
++  --enable-poison-system-directories
++                          warn for use of native system header directories
+ Optional Packages:
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+@@ -1105,8 +1107,12 @@ Optional Packages:
+   --with-build-sysroot=sysroot
+                           use sysroot as the system root during the build
+   --with-sysroot=DIR Search for usr/lib, usr/include, et al, within DIR.
++  --with-eglibc-configs=CONFIGS
++                          build multilibs for these EGLIBC configurations
++  --with-specs=SPECS      add SPECS to driver command-line processing
+   --with-pkgversion=PKG   Use PKG in the version string in place of "GCC"
+   --with-bugurl=URL       Direct users to URL to report a bug
++  --with-multilib-list    Select multilibs (SH only)
+   --with-gnu-ld           assume the C compiler uses GNU ld default=no
+   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+@@ -8042,6 +8048,28 @@ fi;
++
++# Check whether --with-eglibc-configs or --without-eglibc-configs was given.
++if test "${with_eglibc_configs+set}" = set; then
++  withval="$with_eglibc_configs"
++  EGLIBC_CONFIGS=$withval
++else
++  EGLIBC_CONFIGS=
++
++fi;
++
++
++
++# Check whether --with-specs or --without-specs was given.
++if test "${with_specs+set}" = set; then
++  withval="$with_specs"
++  CONFIGURE_SPECS=$withval
++else
++  CONFIGURE_SPECS=
++
++fi;
++
++
+ # Build with intermodule optimisations
+ # Check whether --enable-intermodule or --disable-intermodule was given.
+ if test "${enable_intermodule+set}" = set; then
+@@ -8137,6 +8165,15 @@ fi;
++
++# Check whether --with-multilib-list or --without-multilib-list was given.
++if test "${with_multilib_list+set}" = set; then
++  withval="$with_multilib_list"
++  :
++else
++  with_multilib_list=default
++fi;
++
+ # -------------------------
+ # Checks for other programs
+ # -------------------------
+@@ -14509,13 +14546,13 @@ if test "${lt_cv_nm_interface+set}" = se
+ else
+   lt_cv_nm_interface="BSD nm"
+   echo "int some_variable = 0;" > conftest.$ac_ext
+-  (eval echo "\"\$as_me:14512: $ac_compile\"" >&5)
++  (eval echo "\"\$as_me:14621: $ac_compile\"" >&5)
+   (eval "$ac_compile" 2>conftest.err)
+   cat conftest.err >&5
+-  (eval echo "\"\$as_me:14515: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
++  (eval echo "\"\$as_me:14624: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+   cat conftest.err >&5
+-  (eval echo "\"\$as_me:14518: output\"" >&5)
++  (eval echo "\"\$as_me:14627: output\"" >&5)
+   cat conftest.out >&5
+   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+     lt_cv_nm_interface="MS dumpbin"
+@@ -15672,7 +15709,7 @@ ia64-*-hpux*)
+   ;;
  *-*-irix6*)
    # Find out which ABI we are using.
 -  echo '#line 15675 "configure"' > conftest.$ac_ext
@@ -22284,7 +20196,7 @@ diff -Nur a/gcc/configure b/gcc/configure
    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
-@@ -16971,11 +17080,11 @@
+@@ -16971,11 +17008,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -22298,7 +20210,7 @@ diff -Nur a/gcc/configure b/gcc/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -17310,11 +17419,11 @@
+@@ -17310,11 +17347,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -22312,7 +20224,7 @@ diff -Nur a/gcc/configure b/gcc/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -17415,11 +17524,11 @@
+@@ -17415,11 +17452,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -22326,7 +20238,7 @@ diff -Nur a/gcc/configure b/gcc/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -17470,11 +17579,11 @@
+@@ -17470,11 +17507,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -22340,7 +20252,7 @@ diff -Nur a/gcc/configure b/gcc/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -20282,7 +20391,7 @@
+@@ -20282,7 +20319,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
@@ -22349,7 +20261,7 @@ diff -Nur a/gcc/configure b/gcc/configure
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -20378,7 +20487,7 @@
+@@ -20378,7 +20415,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
@@ -22358,7 +20270,7 @@ diff -Nur a/gcc/configure b/gcc/configure
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -22108,6 +22217,22 @@
+@@ -22144,6 +22181,22 @@ x:
        tls_first_minor=16
        tls_as_opt='-32 --fatal-warnings'
        ;;
@@ -22381,7 +20293,7 @@ diff -Nur a/gcc/configure b/gcc/configure
    powerpc-*-*)
      conftest_s='
        .section ".tdata","awT",@progbits
-@@ -22739,6 +22864,44 @@
+@@ -22775,6 +22828,44 @@ fi
    i[34567]86-*-* | x86_64-*-*)
      case $target_os in
        cygwin* | pe | mingw32*)
@@ -22426,7 +20338,7 @@ diff -Nur a/gcc/configure b/gcc/configure
        # Used for DWARF 2 in PE
        echo "$as_me:$LINENO: checking assembler for .secrel32 relocs" >&5
  echo $ECHO_N "checking assembler for .secrel32 relocs... $ECHO_C" >&6
-@@ -24711,6 +24874,21 @@
+@@ -24747,6 +24838,21 @@ else
  fi;
  
  
@@ -22448,15 +20360,7 @@ diff -Nur a/gcc/configure b/gcc/configure
  # Substitute configuration variables
  
  
-@@ -25451,6 +25629,7 @@
- s,@target_vendor@,$target_vendor,;t t
- s,@target_os@,$target_os,;t t
- s,@target_noncanonical@,$target_noncanonical,;t t
-+s,@licensedir@,$licensedir,;t t
- s,@build_libsubdir@,$build_libsubdir,;t t
- s,@build_subdir@,$build_subdir,;t t
- s,@host_subdir@,$host_subdir,;t t
-@@ -25487,6 +25666,8 @@
+@@ -25523,6 +25629,8 @@ s,@enable_shared@,$enable_shared,;t t
  s,@TARGET_SYSTEM_ROOT@,$TARGET_SYSTEM_ROOT,;t t
  s,@TARGET_SYSTEM_ROOT_DEFINE@,$TARGET_SYSTEM_ROOT_DEFINE,;t t
  s,@CROSS_SYSTEM_HEADER_DIR@,$CROSS_SYSTEM_HEADER_DIR,;t t
@@ -22465,7 +20369,7 @@ diff -Nur a/gcc/configure b/gcc/configure
  s,@onestep@,$onestep,;t t
  s,@PKGVERSION@,$PKGVERSION,;t t
  s,@REPORT_BUGS_TO@,$REPORT_BUGS_TO,;t t
-@@ -25606,6 +25787,9 @@
+@@ -25642,6 +25750,9 @@ s,@check_languages@,$check_languages,;t 
  s,@cpp_install_dir@,$cpp_install_dir,;t t
  s,@xmake_file@,$xmake_file,;t t
  s,@tmake_file@,$tmake_file,;t t
@@ -22475,21 +20379,9 @@ diff -Nur a/gcc/configure b/gcc/configure
  s,@extra_gcc_objs@,$extra_gcc_objs,;t t
  s,@extra_headers_list@,$extra_headers_list,;t t
  s,@extra_objs@,$extra_objs,;t t
-diff -Nur a/gcc/configure.ac b/gcc/configure.ac
---- a/gcc/configure.ac 2009-03-24 18:46:03.000000000 +0100
-+++ b/gcc/configure.ac 2010-01-25 09:50:29.085687411 +0100
-@@ -39,6 +39,10 @@
- # Determine the noncanonical target name, for directory use.
- ACX_NONCANONICAL_TARGET
-+CSL_AC_LICENSE_VERSION
-+CSL_AC_LICENSE
-+CSL_AC_LICENSE_FEATURE
-+
- # Determine the target- and build-specific subdirectories
- GCC_TOPLEV_SUBDIRS
-@@ -770,6 +774,22 @@
+--- a/gcc/configure.ac
++++ b/gcc/configure.ac
+@@ -770,6 +770,22 @@ AC_SUBST(TARGET_SYSTEM_ROOT)
  AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
  AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
  
@@ -22512,7 +20404,7 @@ diff -Nur a/gcc/configure.ac b/gcc/configure.ac
  # Build with intermodule optimisations
  AC_ARG_ENABLE(intermodule,
  [  --enable-intermodule    build the compiler in one step],
-@@ -810,6 +830,11 @@
+@@ -810,6 +826,11 @@ AC_SUBST(datarootdir)
  AC_SUBST(docdir)
  AC_SUBST(htmldir)
  
@@ -22524,7 +20416,7 @@ diff -Nur a/gcc/configure.ac b/gcc/configure.ac
  # -------------------------
  # Checks for other programs
  # -------------------------
-@@ -2576,6 +2601,22 @@
+@@ -2587,6 +2608,22 @@ x:
        tls_first_minor=16
        tls_as_opt='-32 --fatal-warnings'
        ;;
@@ -22547,7 +20439,7 @@ diff -Nur a/gcc/configure.ac b/gcc/configure.ac
    powerpc-*-*)
      conftest_s='
        .section ".tdata","awT",@progbits
-@@ -2944,6 +2985,15 @@
+@@ -2955,6 +2992,15 @@ changequote(,)dnl
  changequote([,])dnl
      case $target_os in
        cygwin* | pe | mingw32*)
@@ -22563,7 +20455,7 @@ diff -Nur a/gcc/configure.ac b/gcc/configure.ac
        # Used for DWARF 2 in PE
        gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
          gcc_cv_as_ix86_pe_secrel32,
-@@ -3891,6 +3941,16 @@
+@@ -3902,6 +3948,16 @@ htmldir="\${prefix}/$with_htmldir",
  htmldir='$(docdir)')
  AC_SUBST(htmldir)
  
@@ -22580,7 +20472,7 @@ diff -Nur a/gcc/configure.ac b/gcc/configure.ac
  # Substitute configuration variables
  AC_SUBST(subdirs)
  AC_SUBST(srcdir)
-@@ -3910,6 +3970,9 @@
+@@ -3921,6 +3977,9 @@ AC_SUBST(check_languages)
  AC_SUBST(cpp_install_dir)
  AC_SUBST(xmake_file)
  AC_SUBST(tmake_file)
@@ -22590,162 +20482,36 @@ diff -Nur a/gcc/configure.ac b/gcc/configure.ac
  AC_SUBST(extra_gcc_objs)
  AC_SUBST(extra_headers_list)
  AC_SUBST(extra_objs)
-diff -Nur a/gcc/c.opt b/gcc/c.opt
---- a/gcc/c.opt        2009-03-18 22:14:53.000000000 +0100
-+++ b/gcc/c.opt        2010-01-25 09:50:29.085687411 +0100
-@@ -716,6 +716,10 @@
- C ObjC C++ ObjC++
- Treat the input file as already preprocessed
-+fremove-local-statics
-+C C++ Var(flag_remove_local_statics) Optimization
-+Convert function-local static variables to automatic variables when it is safe to do so
-+
- freplace-objc-classes
- ObjC ObjC++
- Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
-diff -Nur a/gcc/c-opts.c b/gcc/c-opts.c
---- a/gcc/c-opts.c     2009-02-18 03:16:03.000000000 +0100
-+++ b/gcc/c-opts.c     2010-01-25 09:50:29.095687705 +0100
-@@ -40,6 +40,7 @@
- #include "mkdeps.h"
- #include "target.h"
- #include "tm_p.h"
-+#include "c-tree.h"           /* For c_cpp_error.  */
- #ifndef DOLLARS_IN_IDENTIFIERS
- # define DOLLARS_IN_IDENTIFIERS true
-@@ -201,6 +202,7 @@
- {
-   static const unsigned int lang_flags[] = {CL_C, CL_ObjC, CL_CXX, CL_ObjCXX};
-   unsigned int i, result;
-+  struct cpp_callbacks *cb;
+--- a/gcc/cp/class.c
++++ b/gcc/cp/class.c
+@@ -6136,7 +6136,7 @@ resolve_address_of_overloaded_function (
+       if (flags & tf_error)
+       {
+         error ("no matches converting function %qD to type %q#T",
+-               DECL_NAME (OVL_FUNCTION (overload)),
++               DECL_NAME (OVL_CURRENT (overload)),
+                target_type);
  
-   /* This is conditionalized only because that is the way the front
-      ends used to do it.  Maybe this should be unconditional?  */
-@@ -216,6 +218,8 @@
+         /* print_candidates expects a chain with the functions in
+@@ -6299,13 +6299,8 @@ instantiate_type (tree lhstype, tree rhs
+      dependent on overload resolution.  */
+   gcc_assert (TREE_CODE (rhs) == ADDR_EXPR
+             || TREE_CODE (rhs) == COMPONENT_REF
+-            || TREE_CODE (rhs) == COMPOUND_EXPR
+-            || really_overloaded_fn (rhs));
+-
+-  /* We don't overwrite rhs if it is an overloaded function.
+-     Copying it would destroy the tree link.  */
+-  if (TREE_CODE (rhs) != OVERLOAD)
+-    rhs = copy_node (rhs);
++            || really_overloaded_fn (rhs)
++            || (flag_ms_extensions && TREE_CODE (rhs) == FUNCTION_DECL));
  
-   parse_in = cpp_create_reader (c_dialect_cxx () ? CLK_GNUCXX: CLK_GNUC89,
-                               ident_hash, line_table);
-+  cb = cpp_get_callbacks (parse_in);
-+  cb->error = c_cpp_error;
-   cpp_opts = cpp_get_options (parse_in);
-   cpp_opts->dollars_in_ident = DOLLARS_IN_IDENTIFIERS;
-@@ -333,12 +337,12 @@
-        or environment var dependency generation is used.  */
-       cpp_opts->deps.style = (code == OPT_M ? DEPS_SYSTEM: DEPS_USER);
-       flag_no_output = 1;
--      cpp_opts->inhibit_warnings = 1;
-       break;
-     case OPT_MD:
-     case OPT_MMD:
-       cpp_opts->deps.style = (code == OPT_MD ? DEPS_SYSTEM: DEPS_USER);
-+      cpp_opts->deps.need_preprocessor_output = true;
-       deps_file = arg;
-       break;
-@@ -444,7 +448,6 @@
-       break;
-     case OPT_Werror:
--      cpp_opts->warnings_are_errors = value;
-       global_dc->warning_as_error_requested = value;
-       break;
-@@ -503,10 +506,6 @@
-       warn_strict_null_sentinel = value;
-       break;
--    case OPT_Wsystem_headers:
--      cpp_opts->warn_system_headers = value;
--      break;
--
-     case OPT_Wtraditional:
-       cpp_opts->warn_traditional = value;
-       break;
-@@ -895,8 +894,6 @@
-        c_common_post_options, so that a subsequent -Wno-endif-labels
-        is not overridden.  */
-     case OPT_pedantic_errors:
--      cpp_opts->pedantic_errors = 1;
--      /* Fall through.  */
-     case OPT_pedantic:
-       cpp_opts->pedantic = 1;
-       cpp_opts->warn_endif_labels = 1;
-@@ -971,10 +968,6 @@
-       flag_undef = 1;
-       break;
--    case OPT_w:
--      cpp_opts->inhibit_warnings = 1;
--      break;
--
-     case OPT_v:
-       verbose = true;
-       break;
-@@ -1159,10 +1152,6 @@
-   input_location = UNKNOWN_LOCATION;
--  /* If an error has occurred in cpplib, note it so we fail
--     immediately.  */
--  errorcount += cpp_errors (parse_in);
--
-   *pfilename = this_input_filename
-     = cpp_read_main_file (parse_in, in_fnames[0]);
-   /* Don't do any compilation or preprocessing if there is no input file.  */
-@@ -1274,7 +1263,8 @@
- {
-   FILE *deps_stream = NULL;
--  if (cpp_opts->deps.style != DEPS_NONE)
-+  /* Don't write the deps file if there are errors.  */
-+  if (cpp_opts->deps.style != DEPS_NONE && errorcount == 0)
-     {
-       /* If -M or -MM was seen without -MF, default output to the
-        output stream.  */
-@@ -1290,7 +1280,7 @@
-   /* For performance, avoid tearing down cpplib's internal structures
-      with cpp_destroy ().  */
--  errorcount += cpp_finish (parse_in, deps_stream);
-+  cpp_finish (parse_in, deps_stream);
-   if (deps_stream && deps_stream != out_stream
-       && (ferror (deps_stream) || fclose (deps_stream)))
-diff -Nur a/gcc/cp/class.c b/gcc/cp/class.c
---- a/gcc/cp/class.c   2009-06-24 19:02:03.000000000 +0200
-+++ b/gcc/cp/class.c   2010-01-25 09:50:29.095687705 +0100
-@@ -6136,7 +6136,7 @@
-       if (flags & tf_error)
-       {
-         error ("no matches converting function %qD to type %q#T",
--               DECL_NAME (OVL_FUNCTION (overload)),
-+               DECL_NAME (OVL_CURRENT (overload)),
-                target_type);
-         /* print_candidates expects a chain with the functions in
-@@ -6299,13 +6299,8 @@
-      dependent on overload resolution.  */
-   gcc_assert (TREE_CODE (rhs) == ADDR_EXPR
-             || TREE_CODE (rhs) == COMPONENT_REF
--            || TREE_CODE (rhs) == COMPOUND_EXPR
--            || really_overloaded_fn (rhs));
--
--  /* We don't overwrite rhs if it is an overloaded function.
--     Copying it would destroy the tree link.  */
--  if (TREE_CODE (rhs) != OVERLOAD)
--    rhs = copy_node (rhs);
-+            || really_overloaded_fn (rhs)
-+            || (flag_ms_extensions && TREE_CODE (rhs) == FUNCTION_DECL));
-   /* This should really only be used when attempting to distinguish
-      what sort of a pointer to function we have.  For now, any
-@@ -6357,19 +6352,6 @@
-                                               /*explicit_targs=*/NULL_TREE,
-                                               access_path);
+   /* This should really only be used when attempting to distinguish
+      what sort of a pointer to function we have.  For now, any
+@@ -6357,19 +6352,6 @@ instantiate_type (tree lhstype, tree rhs
+                                               /*explicit_targs=*/NULL_TREE,
+                                               access_path);
  
 -    case COMPOUND_EXPR:
 -      TREE_OPERAND (rhs, 0)
@@ -22763,10 +20529,9 @@ diff -Nur a/gcc/cp/class.c b/gcc/cp/class.c
      case ADDR_EXPR:
      {
        if (PTRMEM_OK_P (rhs))
-diff -Nur a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
---- a/gcc/cp/cp-tree.h 2009-07-13 08:06:27.000000000 +0200
-+++ b/gcc/cp/cp-tree.h 2010-01-25 09:50:29.095687705 +0100
-@@ -43,9 +43,6 @@
+--- a/gcc/cp/cp-tree.h
++++ b/gcc/cp/cp-tree.h
+@@ -43,9 +43,6 @@ along with GCC; see the file COPYING3.  
  #else
  #define ATTRIBUTE_GCC_CXXDIAG(m, n) ATTRIBUTE_NONNULL(m)
  #endif
@@ -22776,10 +20541,9 @@ diff -Nur a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
  #ifdef GCC_TOPLEV_H
  #error \
  In order for the format checking to accept the C++ front end diagnostic \
-diff -Nur a/gcc/cp/cvt.c b/gcc/cp/cvt.c
---- a/gcc/cp/cvt.c     2009-04-23 13:13:57.000000000 +0200
-+++ b/gcc/cp/cvt.c     2010-01-25 09:50:29.095687705 +0100
-@@ -581,6 +581,7 @@
+--- a/gcc/cp/cvt.c
++++ b/gcc/cp/cvt.c
+@@ -581,6 +581,7 @@ ocp_convert (tree type, tree expr, int c
    tree e = expr;
    enum tree_code code = TREE_CODE (type);
    const char *invalid_conv_diag;
@@ -22787,7 +20551,7 @@ diff -Nur a/gcc/cp/cvt.c b/gcc/cp/cvt.c
  
    if (error_operand_p (e) || type == error_mark_node)
      return error_mark_node;
-@@ -629,6 +630,10 @@
+@@ -629,6 +630,10 @@ ocp_convert (tree type, tree expr, int c
        }
      }
  
@@ -22798,7 +20562,7 @@ diff -Nur a/gcc/cp/cvt.c b/gcc/cp/cvt.c
    if (code == VOID_TYPE && (convtype & CONV_STATIC))
      {
        e = convert_to_void (e, /*implicit=*/NULL, tf_warning_or_error);
-@@ -1231,11 +1236,18 @@
+@@ -1231,11 +1236,18 @@ build_expr_type_conversion (int desires,
  tree
  type_promotes_to (tree type)
  {
@@ -22817,40 +20581,9 @@ diff -Nur a/gcc/cp/cvt.c b/gcc/cp/cvt.c
    /* bool always promotes to int (not unsigned), even if it's the same
       size.  */
    if (type == boolean_type_node)
-diff -Nur a/gcc/cp/decl2.c b/gcc/cp/decl2.c
---- a/gcc/cp/decl2.c   2009-06-09 20:20:29.000000000 +0200
-+++ b/gcc/cp/decl2.c   2010-01-25 09:50:29.095687705 +0100
-@@ -1717,6 +1717,10 @@
-       || (DECL_ASSEMBLER_NAME_SET_P (decl)
-         && TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))))
-       return true;
-+  /* Functions marked "dllexport" must be emitted so that they are
-+     visible to other DLLs.  */
-+  if (lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)))
-+    return true;
-   /* Otherwise, DECL does not need to be emitted -- yet.  A subsequent
-      reference to DECL might cause it to be emitted later.  */
-   return false;
-@@ -3802,6 +3806,15 @@
-     }
-   TREE_USED (decl) = 1;
-+  if (current_function_decl != NULL_TREE
-+      && (TREE_CODE (decl) == VAR_DECL
-+        || TREE_CODE (decl) == PARM_DECL
-+        || TREE_CODE (decl) == FUNCTION_DECL))
-+    {
-+      tree context = decl_function_context (decl);
-+      if (context != NULL_TREE && context != current_function_decl)
-+      DECL_NONLOCAL (decl) = 1;
-+    }
-   if (DECL_CLONED_FUNCTION_P (decl))
-     TREE_USED (DECL_CLONED_FUNCTION (decl)) = 1;
-   if (TREE_CODE (decl) == FUNCTION_DECL
-diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
---- a/gcc/cp/decl.c    2009-07-08 00:08:01.000000000 +0200
-+++ b/gcc/cp/decl.c    2010-01-25 09:50:29.095687705 +0100
-@@ -4515,7 +4515,7 @@
+--- a/gcc/cp/decl.c
++++ b/gcc/cp/decl.c
+@@ -4508,7 +4508,7 @@ maybe_deduce_size_from_array_init (tree 
  
        cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl);
  
@@ -22859,17 +20592,17 @@ diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
      }
  }
  
-@@ -7620,6 +7620,7 @@
+@@ -7622,6 +7622,7 @@ grokdeclarator (const cp_declarator *dec
+   bool type_was_error_mark_node = false;
    bool parameter_pack_p = declarator? declarator->parameter_pack_p : false;
-   bool set_no_warning = false;
    bool template_type_arg = false;
 +  const char *errmsg;
  
    signed_p = declspecs->specs[(int)ds_signed];
    unsigned_p = declspecs->specs[(int)ds_unsigned];
-@@ -8299,6 +8300,12 @@
+@@ -8300,6 +8301,12 @@ grokdeclarator (const cp_declarator *dec
+                  decl, but to its return type.  */
                type_quals = TYPE_UNQUALIFIED;
-               set_no_warning = true;
              }
 +          errmsg = targetm.invalid_return_type (type);
 +          if (errmsg)
@@ -22880,7 +20613,7 @@ diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
  
            /* Error about some types functions can't return.  */
  
-@@ -8841,8 +8848,13 @@
+@@ -8842,8 +8849,13 @@ grokdeclarator (const cp_declarator *dec
  
          /* Replace the anonymous name with the real name everywhere.  */
          for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
@@ -22896,7 +20629,7 @@ diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
  
          if (TYPE_LANG_SPECIFIC (type))
            TYPE_WAS_ANONYMOUS (type) = 1;
-@@ -9679,6 +9691,7 @@
+@@ -9679,6 +9691,7 @@ grokparms (tree parmlist, tree *parms)
        tree type = NULL_TREE;
        tree init = TREE_PURPOSE (parm);
        tree decl = TREE_VALUE (parm);
@@ -22904,7 +20637,7 @@ diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
  
        if (parm == void_list_node)
        break;
-@@ -9712,6 +9725,14 @@
+@@ -9712,6 +9725,14 @@ grokparms (tree parmlist, tree *parms)
          init = NULL_TREE;
        }
  
@@ -22919,10 +20652,38 @@ diff -Nur a/gcc/cp/decl.c b/gcc/cp/decl.c
        if (type != error_mark_node)
        {
          if (deprecated_state != DEPRECATED_SUPPRESS)
-diff -Nur a/gcc/cp/error.c b/gcc/cp/error.c
---- a/gcc/cp/error.c   2009-07-11 00:31:34.000000000 +0200
-+++ b/gcc/cp/error.c   2010-01-25 09:50:29.095687705 +0100
-@@ -2667,39 +2667,6 @@
+--- a/gcc/cp/decl2.c
++++ b/gcc/cp/decl2.c
+@@ -1724,6 +1724,10 @@ decl_needed_p (tree decl)
+       || (DECL_ASSEMBLER_NAME_SET_P (decl)
+         && TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))))
+       return true;
++  /* Functions marked "dllexport" must be emitted so that they are
++     visible to other DLLs.  */
++  if (lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl)))
++    return true;
+   /* Otherwise, DECL does not need to be emitted -- yet.  A subsequent
+      reference to DECL might cause it to be emitted later.  */
+   return false;
+@@ -3810,6 +3814,15 @@ mark_used (tree decl)
+     }
+   TREE_USED (decl) = 1;
++  if (current_function_decl != NULL_TREE
++      && (TREE_CODE (decl) == VAR_DECL
++        || TREE_CODE (decl) == PARM_DECL
++        || TREE_CODE (decl) == FUNCTION_DECL))
++    {
++      tree context = decl_function_context (decl);
++      if (context != NULL_TREE && context != current_function_decl)
++      DECL_NONLOCAL (decl) = 1;
++    }
+   if (DECL_CLONED_FUNCTION_P (decl))
+     TREE_USED (DECL_CLONED_FUNCTION (decl)) = 1;
+   if (TREE_CODE (decl) == FUNCTION_DECL
+--- a/gcc/cp/error.c
++++ b/gcc/cp/error.c
+@@ -2670,39 +2670,6 @@ cp_printer (pretty_printer *pp, text_inf
  #undef next_int
  }
  \f
@@ -22962,10 +20723,9 @@ diff -Nur a/gcc/cp/error.c b/gcc/cp/error.c
  /* Warn about the use of C++0x features when appropriate.  */
  void
  maybe_warn_cpp0x (const char* str)
-diff -Nur a/gcc/cp/except.c b/gcc/cp/except.c
---- a/gcc/cp/except.c  2008-08-18 13:17:52.000000000 +0200
-+++ b/gcc/cp/except.c  2010-01-25 09:50:29.095687705 +0100
-@@ -146,14 +146,26 @@
+--- a/gcc/cp/except.c
++++ b/gcc/cp/except.c
+@@ -146,14 +146,26 @@ eh_type_info (tree type)
  static tree
  build_eh_type_type (tree type)
  {
@@ -22994,7 +20754,7 @@ diff -Nur a/gcc/cp/except.c b/gcc/cp/except.c
  }
  
  tree
-@@ -495,6 +507,16 @@
+@@ -495,6 +507,16 @@ expand_start_catch_block (tree decl)
        initialize_handler_parm (decl, exp);
      }
  
@@ -23011,7 +20771,7 @@ diff -Nur a/gcc/cp/except.c b/gcc/cp/except.c
    return type;
  }
  
-@@ -538,10 +560,20 @@
+@@ -538,10 +560,20 @@ finish_eh_spec_block (tree raw_raises, t
         raw_raises && TREE_VALUE (raw_raises);
         raw_raises = TREE_CHAIN (raw_raises))
      {
@@ -23033,7 +20793,7 @@ diff -Nur a/gcc/cp/except.c b/gcc/cp/except.c
        raises = tree_cons (NULL_TREE, type, raises);
      }
  
-@@ -956,24 +988,40 @@
+@@ -956,24 +988,40 @@ nothrow_libfn_p (const_tree fn)
  static int
  can_convert_eh (tree to, tree from)
  {
@@ -23084,10 +20844,9 @@ diff -Nur a/gcc/cp/except.c b/gcc/cp/except.c
        && PUBLICLY_UNIQUELY_DERIVED_P (to, from))
      return 1;
  
-diff -Nur a/gcc/cp/parser.c b/gcc/cp/parser.c
---- a/gcc/cp/parser.c  2009-06-09 06:23:00.000000000 +0200
-+++ b/gcc/cp/parser.c  2010-01-25 09:50:29.105687718 +0100
-@@ -309,8 +309,7 @@
+--- a/gcc/cp/parser.c
++++ b/gcc/cp/parser.c
+@@ -309,8 +309,7 @@ cp_lexer_new_main (void)
  
    /* Subsequent preprocessor diagnostics should use compiler
       diagnostic functions to get the compiler source location.  */
@@ -23097,10 +20856,9 @@ diff -Nur a/gcc/cp/parser.c b/gcc/cp/parser.c
  
    gcc_assert (lexer->next_token->type != CPP_PURGED);
    return lexer;
-diff -Nur a/gcc/cp/rtti.c b/gcc/cp/rtti.c
---- a/gcc/cp/rtti.c    2008-09-23 16:55:14.000000000 +0200
-+++ b/gcc/cp/rtti.c    2010-01-25 09:50:29.105687718 +0100
-@@ -393,6 +393,7 @@
+--- a/gcc/cp/rtti.c
++++ b/gcc/cp/rtti.c
+@@ -393,6 +393,7 @@ get_tinfo_decl (tree type)
        return d;
      }
  
@@ -23108,10 +20866,9 @@ diff -Nur a/gcc/cp/rtti.c b/gcc/cp/rtti.c
    name = mangle_typeinfo_for_type (type);
  
    d = IDENTIFIER_GLOBAL_VALUE (name);
-diff -Nur a/gcc/cp/semantics.c b/gcc/cp/semantics.c
---- a/gcc/cp/semantics.c       2009-07-14 20:35:13.000000000 +0200
-+++ b/gcc/cp/semantics.c       2010-01-25 09:50:29.105687718 +0100
-@@ -1120,7 +1120,11 @@
+--- a/gcc/cp/semantics.c
++++ b/gcc/cp/semantics.c
+@@ -1120,7 +1120,11 @@ finish_handler_parms (tree decl, tree ha
      type = expand_start_catch_block (decl);
    HANDLER_TYPE (handler) = type;
    if (!processing_template_decl && type)
@@ -23124,7 +20881,7 @@ diff -Nur a/gcc/cp/semantics.c b/gcc/cp/semantics.c
  }
  
  /* Finish a handler, which may be given by HANDLER.  The BLOCKs are
-@@ -3243,8 +3247,10 @@
+@@ -3242,8 +3246,10 @@ expand_or_defer_fn (tree fn)
  
        /* If the user wants us to keep all inline functions, then mark
         this function as needed so that finish_file will make sure to
@@ -23137,10 +20894,9 @@ diff -Nur a/gcc/cp/semantics.c b/gcc/cp/semantics.c
        mark_needed (fn);
      }
  
-diff -Nur a/gcc/cp/typeck.c b/gcc/cp/typeck.c
---- a/gcc/cp/typeck.c  2009-07-13 08:06:27.000000000 +0200
-+++ b/gcc/cp/typeck.c  2010-01-25 09:50:29.105687718 +0100
-@@ -1707,10 +1707,14 @@
+--- a/gcc/cp/typeck.c
++++ b/gcc/cp/typeck.c
+@@ -1707,10 +1707,14 @@ decay_conversion (tree exp)
  tree
  default_conversion (tree exp)
  {
@@ -23156,7 +20912,7 @@ diff -Nur a/gcc/cp/typeck.c b/gcc/cp/typeck.c
      exp = perform_integral_promotions (exp);
    /* Perform the other conversions.  */
    exp = decay_conversion (exp);
-@@ -3389,6 +3393,25 @@
+@@ -3389,6 +3393,25 @@ cp_build_binary_op (location_t location,
        return error_mark_node;
      }
  
@@ -23182,7 +20938,7 @@ diff -Nur a/gcc/cp/typeck.c b/gcc/cp/typeck.c
    switch (code)
      {
      case MINUS_EXPR:
-@@ -3979,25 +4002,6 @@
+@@ -3979,25 +4002,6 @@ cp_build_binary_op (location_t location,
        }
      }
  
@@ -23208,7 +20964,7 @@ diff -Nur a/gcc/cp/typeck.c b/gcc/cp/typeck.c
    /* If CONVERTED is zero, both args will be converted to type RESULT_TYPE.
       Then the expression will be built.
       It will be given type FINAL_TYPE if that is nonzero;
-@@ -5024,6 +5028,12 @@
+@@ -5024,6 +5028,12 @@ cp_build_compound_expr (tree lhs, tree r
        return rhs;
      }
  
@@ -23221,21 +20977,9 @@ diff -Nur a/gcc/cp/typeck.c b/gcc/cp/typeck.c
    return build2 (COMPOUND_EXPR, TREE_TYPE (rhs), lhs, rhs);
  }
  
-diff -Nur a/gcc/c-ppoutput.c b/gcc/c-ppoutput.c
---- a/gcc/c-ppoutput.c 2008-09-23 19:47:32.000000000 +0200
-+++ b/gcc/c-ppoutput.c 2010-01-25 09:50:29.105687718 +0100
-@@ -521,6 +521,7 @@
-   if (map != NULL)
-     {
-+      input_location = map->start_location;
-       if (print.first_time)
-       {
-         /* Avoid printing foo.i when the main file is foo.c.  */
-diff -Nur a/gcc/cse.c b/gcc/cse.c
---- a/gcc/cse.c        2009-04-27 13:55:13.000000000 +0200
-+++ b/gcc/cse.c        2010-01-25 09:50:29.105687718 +0100
-@@ -5754,6 +5754,11 @@
+--- a/gcc/cse.c
++++ b/gcc/cse.c
+@@ -5754,6 +5754,11 @@ cse_process_notes_1 (rtx x, rtx object, 
        validate_change (object, &XEXP (x, i),
                       cse_process_notes (XEXP (x, i), object, changed), 0);
  
@@ -23247,44 +20991,9 @@ diff -Nur a/gcc/cse.c b/gcc/cse.c
    return x;
  }
  
-diff -Nur a/gcc/c-tree.h b/gcc/c-tree.h
---- a/gcc/c-tree.h     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/c-tree.h     2010-01-25 09:50:29.105687718 +0100
-@@ -647,4 +647,8 @@
- extern void pedwarn_c90 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4);
- extern void pedwarn_c99 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4);
-+extern bool c_cpp_error (cpp_reader *, int, location_t, unsigned int,
-+                       const char *, va_list *)
-+     ATTRIBUTE_GCC_CDIAG(5,0);
-+
- #endif /* ! GCC_C_TREE_H */
-diff -Nur a/gcc/c-typeck.c b/gcc/c-typeck.c
---- a/gcc/c-typeck.c   2009-04-08 13:59:36.000000000 +0200
-+++ b/gcc/c-typeck.c   2010-01-25 09:50:29.105687718 +0100
-@@ -1765,6 +1765,7 @@
-   tree orig_exp;
-   tree type = TREE_TYPE (exp);
-   enum tree_code code = TREE_CODE (type);
-+  tree promoted_type;
-   /* Functions and arrays have been converted during parsing.  */
-   gcc_assert (code != FUNCTION_TYPE);
-@@ -1801,6 +1802,10 @@
-   if (exp == error_mark_node)
-     return error_mark_node;
-+  promoted_type = targetm.promoted_type (type);
-+  if (promoted_type)
-+    return convert (promoted_type, exp);
-+
-   if (INTEGRAL_TYPE_P (type))
-     return perform_integral_promotions (exp);
-diff -Nur a/gcc/dbxout.c b/gcc/dbxout.c
---- a/gcc/dbxout.c     2009-07-07 22:46:41.000000000 +0200
-+++ b/gcc/dbxout.c     2010-01-25 09:50:29.115687383 +0100
-@@ -376,6 +376,7 @@
+--- a/gcc/dbxout.c
++++ b/gcc/dbxout.c
+@@ -377,6 +377,7 @@ const struct gcc_debug_hooks dbx_debug_h
    dbxout_handle_pch,                   /* handle_pch */
    debug_nothing_rtx,                   /* var_location */
    debug_nothing_void,                    /* switch_text_section */
@@ -23292,7 +21001,7 @@ diff -Nur a/gcc/dbxout.c b/gcc/dbxout.c
    0                                      /* start_end_main_source_file */
  };
  #endif /* DBX_DEBUGGING_INFO  */
-@@ -408,6 +409,7 @@
+@@ -410,6 +411,7 @@ const struct gcc_debug_hooks xcoff_debug
    dbxout_handle_pch,                   /* handle_pch */
    debug_nothing_rtx,                   /* var_location */
    debug_nothing_void,                    /* switch_text_section */
@@ -23300,10 +21009,9 @@ diff -Nur a/gcc/dbxout.c b/gcc/dbxout.c
    0                                      /* start_end_main_source_file */
  };
  #endif /* XCOFF_DEBUGGING_INFO  */
-diff -Nur a/gcc/debug.c b/gcc/debug.c
---- a/gcc/debug.c      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/debug.c      2010-01-25 09:50:29.115687383 +0100
-@@ -50,6 +50,7 @@
+--- a/gcc/debug.c
++++ b/gcc/debug.c
+@@ -51,6 +51,7 @@ const struct gcc_debug_hooks do_nothing_
    debug_nothing_int,                   /* handle_pch */
    debug_nothing_rtx,                   /* var_location */
    debug_nothing_void,                    /* switch_text_section */
@@ -23311,7 +21019,7 @@ diff -Nur a/gcc/debug.c b/gcc/debug.c
    0                                      /* start_end_main_source_file */
  };
  
-@@ -67,6 +68,12 @@
+@@ -68,6 +69,12 @@ debug_nothing_tree (tree decl ATTRIBUTE_
  }
  
  void
@@ -23324,10 +21032,9 @@ diff -Nur a/gcc/debug.c b/gcc/debug.c
  debug_nothing_tree_tree_tree_bool (tree t1 ATTRIBUTE_UNUSED,
                                   tree t2 ATTRIBUTE_UNUSED,
                                   tree t3 ATTRIBUTE_UNUSED,
-diff -Nur a/gcc/debug.h b/gcc/debug.h
---- a/gcc/debug.h      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/debug.h      2010-01-25 09:50:29.115687383 +0100
-@@ -126,6 +126,10 @@
+--- a/gcc/debug.h
++++ b/gcc/debug.h
+@@ -130,6 +130,10 @@ struct gcc_debug_hooks
       text sections.  */
    void (* switch_text_section) (void);
  
@@ -23338,7 +21045,7 @@ diff -Nur a/gcc/debug.h b/gcc/debug.h
    /* This is 1 if the debug writer wants to see start and end commands for the
       main source files, and 0 otherwise.  */
    int start_end_main_source_file;
-@@ -140,6 +144,7 @@
+@@ -144,6 +148,7 @@ extern void debug_nothing_int_charstar (
  extern void debug_nothing_int (unsigned int);
  extern void debug_nothing_int_int (unsigned int, unsigned int);
  extern void debug_nothing_tree (tree);
@@ -23346,10 +21053,9 @@ diff -Nur a/gcc/debug.h b/gcc/debug.h
  extern void debug_nothing_tree_int (tree, int);
  extern void debug_nothing_tree_tree_tree_bool (tree, tree, tree, bool);
  extern bool debug_true_const_tree (const_tree);
-diff -Nur a/gcc/defaults.h b/gcc/defaults.h
---- a/gcc/defaults.h   2009-07-11 21:06:26.000000000 +0200
-+++ b/gcc/defaults.h   2010-01-25 09:50:29.115687383 +0100
-@@ -902,7 +902,8 @@
+--- a/gcc/defaults.h
++++ b/gcc/defaults.h
+@@ -902,7 +902,8 @@ see the files COPYING3 and COPYING.RUNTI
  
  /* On most machines, the CFA coincides with the first incoming parm.  */
  #ifndef ARG_POINTER_CFA_OFFSET
@@ -23359,10 +21065,9 @@ diff -Nur a/gcc/defaults.h b/gcc/defaults.h
  #endif
  
  /* On most machines, we use the CFA as DW_AT_frame_base.  */
-diff -Nur a/gcc/diagnostic.c b/gcc/diagnostic.c
---- a/gcc/diagnostic.c 2008-09-03 03:00:04.000000000 +0200
-+++ b/gcc/diagnostic.c 2010-01-25 09:50:29.115687383 +0100
-@@ -126,6 +126,7 @@
+--- a/gcc/diagnostic.c
++++ b/gcc/diagnostic.c
+@@ -126,6 +126,7 @@ diagnostic_set_info_translated (diagnost
    diagnostic->message.args_ptr = args;
    diagnostic->message.format_spec = msg;
    diagnostic->location = location;
@@ -23370,7 +21075,7 @@ diff -Nur a/gcc/diagnostic.c b/gcc/diagnostic.c
    diagnostic->kind = kind;
    diagnostic->option_index = 0;
  }
-@@ -153,6 +154,8 @@
+@@ -153,6 +154,8 @@ diagnostic_build_prefix (diagnostic_info
    };
    const char *text = _(diagnostic_kind_text[diagnostic->kind]);
    expanded_location s = expand_location (diagnostic->location);
@@ -23379,10 +21084,9 @@ diff -Nur a/gcc/diagnostic.c b/gcc/diagnostic.c
    gcc_assert (diagnostic->kind < DK_LAST_DIAGNOSTIC_KIND);
  
    return
-diff -Nur a/gcc/diagnostic.h b/gcc/diagnostic.h
---- a/gcc/diagnostic.h 2008-08-09 01:57:19.000000000 +0200
-+++ b/gcc/diagnostic.h 2010-01-25 09:50:29.115687383 +0100
-@@ -41,6 +41,7 @@
+--- a/gcc/diagnostic.h
++++ b/gcc/diagnostic.h
+@@ -41,6 +41,7 @@ typedef struct diagnostic_info
  {
    text_info message;
    location_t location;
@@ -23390,7 +21094,7 @@ diff -Nur a/gcc/diagnostic.h b/gcc/diagnostic.h
    /* TREE_BLOCK if the diagnostic is to be reported in some inline
       function inlined into other function, otherwise NULL.  */
    tree abstract_origin;
-@@ -185,6 +186,10 @@
+@@ -185,6 +186,10 @@ extern diagnostic_context *global_dc;
  
  #define report_diagnostic(D) diagnostic_report_diagnostic (global_dc, D)
  
@@ -23401,10 +21105,9 @@ diff -Nur a/gcc/diagnostic.h b/gcc/diagnostic.h
  /* Diagnostic related functions.  */
  extern void diagnostic_initialize (diagnostic_context *);
  extern void diagnostic_report_current_module (diagnostic_context *);
-diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
---- a/gcc/dwarf2out.c  2009-06-03 19:32:45.000000000 +0200
-+++ b/gcc/dwarf2out.c  2010-01-25 09:50:29.115687383 +0100
-@@ -2474,6 +2474,12 @@
+--- a/gcc/dwarf2out.c
++++ b/gcc/dwarf2out.c
+@@ -2486,6 +2486,12 @@ dwarf2out_frame_debug (rtx insn, bool af
      insn = PATTERN (insn);
  
    dwarf2out_frame_debug_expr (insn, label);
@@ -23417,7 +21120,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
  }
  
  #endif
-@@ -4598,6 +4604,7 @@
+@@ -4611,6 +4617,7 @@ static void dwarf2out_imported_module_or
  static void dwarf2out_abstract_function (tree);
  static void dwarf2out_var_location (rtx);
  static void dwarf2out_begin_function (tree);
@@ -23425,7 +21128,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
  
  /* The debug hooks structure.  */
  
-@@ -4631,6 +4638,7 @@
+@@ -4645,6 +4652,7 @@ const struct gcc_debug_hooks dwarf2_debu
    debug_nothing_int,          /* handle_pch */
    dwarf2out_var_location,
    dwarf2out_switch_text_section,
@@ -23433,7 +21136,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
    1                             /* start_end_main_source_file */
  };
  #endif
-@@ -5975,12 +5983,9 @@
+@@ -5989,12 +5997,9 @@ debug_str_eq (const void *x1, const void
                 (const char *)x2) == 0;
  }
  
@@ -23448,7 +21151,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
    struct indirect_string_node *node;
    void **slot;
  
-@@ -6001,6 +6006,18 @@
+@@ -6015,6 +6020,18 @@ add_AT_string (dw_die_ref die, enum dwar
      node = (struct indirect_string_node *) *slot;
  
    node->refcount++;
@@ -23467,7 +21170,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
  
    attr.dw_attr = attr_kind;
    attr.dw_attr_val.val_class = dw_val_class_str;
-@@ -6637,6 +6654,8 @@
+@@ -6651,6 +6668,8 @@ decl_loc_table_eq (const void *x, const 
  static inline var_loc_list *
  lookup_decl_loc (const_tree decl)
  {
@@ -23476,7 +21179,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
    return (var_loc_list *)
      htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));
  }
-@@ -13471,6 +13490,7 @@
+@@ -13502,6 +13521,7 @@ dwarf2out_abstract_function (tree decl)
    tree save_fn;
    tree context;
    int was_abstract = DECL_ABSTRACT (decl);
@@ -23484,7 +21187,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
  
    /* Make sure we have the actual abstract inline, not a clone.  */
    decl = DECL_ORIGIN (decl);
-@@ -13480,6 +13500,12 @@
+@@ -13511,6 +13531,12 @@ dwarf2out_abstract_function (tree decl)
      /* We've already generated the abstract instance.  */
      return;
  
@@ -23497,7 +21200,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
    /* Be sure we've emitted the in-class declaration DIE (if any) first, so
       we don't get confused by DECL_ABSTRACT.  */
    if (debug_info_level > DINFO_LEVEL_TERSE)
-@@ -13501,6 +13527,7 @@
+@@ -13532,6 +13558,7 @@ dwarf2out_abstract_function (tree decl)
      set_decl_abstract_flags (decl, 0);
  
    current_function_decl = save_fn;
@@ -23505,7 +21208,7 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
    pop_cfun ();
  }
  
-@@ -15796,6 +15823,31 @@
+@@ -15881,6 +15908,31 @@ maybe_emit_file (struct dwarf_file_data 
    return fd->emitted_number;
  }
  
@@ -23537,10 +21240,9 @@ diff -Nur a/gcc/dwarf2out.c b/gcc/dwarf2out.c
  /* Called by the final INSN scan whenever we see a var location.  We
     use it to drop labels in the right places, and throw the location in
     our lookup table.  */
-diff -Nur a/gcc/except.c b/gcc/except.c
---- a/gcc/except.c     2009-03-07 17:02:30.000000000 +0100
-+++ b/gcc/except.c     2010-01-25 09:50:29.115687383 +0100
-@@ -3567,6 +3567,12 @@
+--- a/gcc/except.c
++++ b/gcc/except.c
+@@ -3567,6 +3567,12 @@ output_ttype (tree type, int tt_format, 
         paths below go through assemble_integer, which would take
         care of this for us.  */
        STRIP_NOPS (type);
@@ -23553,10 +21255,9 @@ diff -Nur a/gcc/except.c b/gcc/except.c
        if (TREE_CODE (type) == ADDR_EXPR)
        {
          type = TREE_OPERAND (type, 0);
-diff -Nur a/gcc/explow.c b/gcc/explow.c
---- a/gcc/explow.c     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/explow.c     2010-01-25 09:50:29.115687383 +0100
-@@ -1491,9 +1491,9 @@
+--- a/gcc/explow.c
++++ b/gcc/explow.c
+@@ -1491,9 +1491,9 @@ hard_function_value (const_tree valtype,
     in which a scalar value of mode MODE was returned by a library call.  */
  
  rtx
@@ -23568,10 +21269,9 @@ diff -Nur a/gcc/explow.c b/gcc/explow.c
  }
  
  /* Look up the tree code for a given rtx code
-diff -Nur a/gcc/expmed.c b/gcc/expmed.c
---- a/gcc/expmed.c     2009-01-16 19:56:47.000000000 +0100
-+++ b/gcc/expmed.c     2010-01-25 09:50:29.115687383 +0100
-@@ -103,7 +103,8 @@
+--- a/gcc/expmed.c
++++ b/gcc/expmed.c
+@@ -103,7 +103,8 @@ static int add_cost[2][NUM_MACHINE_MODES
  static int neg_cost[2][NUM_MACHINE_MODES];
  static int shift_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
  static int shiftadd_cost[2][NUM_MACHINE_MODES][MAX_BITS_PER_WORD];
@@ -23581,7 +21281,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
  static int mul_cost[2][NUM_MACHINE_MODES];
  static int sdiv_cost[2][NUM_MACHINE_MODES];
  static int udiv_cost[2][NUM_MACHINE_MODES];
-@@ -130,7 +131,8 @@
+@@ -130,7 +131,8 @@ init_expmed (void)
      struct rtx_def shift;     rtunion shift_fld1;
      struct rtx_def shift_mult;        rtunion shift_mult_fld1;
      struct rtx_def shift_add; rtunion shift_add_fld1;
@@ -23591,7 +21291,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
    } all;
  
    rtx pow2[MAX_BITS_PER_WORD];
-@@ -201,9 +203,13 @@
+@@ -201,9 +203,13 @@ init_expmed (void)
    XEXP (&all.shift_add, 0) = &all.shift_mult;
    XEXP (&all.shift_add, 1) = &all.reg;
  
@@ -23608,7 +21308,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
  
    for (speed = 0; speed < 2; speed++)
      {
-@@ -226,7 +232,8 @@
+@@ -226,7 +232,8 @@ init_expmed (void)
          PUT_MODE (&all.shift, mode);
          PUT_MODE (&all.shift_mult, mode);
          PUT_MODE (&all.shift_add, mode);
@@ -23618,7 +21318,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
  
          add_cost[speed][mode] = rtx_cost (&all.plus, SET, speed);
          neg_cost[speed][mode] = rtx_cost (&all.neg, SET, speed);
-@@ -254,8 +261,8 @@
+@@ -254,8 +261,8 @@ init_expmed (void)
            }
  
          shift_cost[speed][mode][0] = 0;
@@ -23629,7 +21329,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
  
          n = MIN (MAX_BITS_PER_WORD, GET_MODE_BITSIZE (mode));
          for (m = 1; m < n; m++)
-@@ -265,7 +272,8 @@
+@@ -265,7 +272,8 @@ init_expmed (void)
  
              shift_cost[speed][mode][m] = rtx_cost (&all.shift, SET, speed);
              shiftadd_cost[speed][mode][m] = rtx_cost (&all.shift_add, SET, speed);
@@ -23639,7 +21339,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
            }
        }
      }
-@@ -2397,6 +2405,7 @@
+@@ -2397,6 +2405,7 @@ synth_mult (struct algorithm *alg_out, u
    struct mult_cost best_cost;
    struct mult_cost new_limit;
    int op_cost, op_latency;
@@ -23647,7 +21347,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
    unsigned HOST_WIDE_INT q;
    int maxm = MIN (BITS_PER_WORD, GET_MODE_BITSIZE (mode));
    int hash_index;
-@@ -2542,6 +2551,38 @@
+@@ -2542,6 +2551,38 @@ synth_mult (struct algorithm *alg_out, u
              best_alg->log[best_alg->ops] = m;
              best_alg->op[best_alg->ops] = alg_shift;
            }
@@ -23686,7 +21386,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
        }
        if (cache_hit)
        goto done;
-@@ -2604,6 +2645,29 @@
+@@ -2604,6 +2645,29 @@ synth_mult (struct algorithm *alg_out, u
              best_alg->op[best_alg->ops] = alg_add_t_m2;
            }
        }
@@ -23716,7 +21416,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
        if (cache_hit)
        goto done;
      }
-@@ -2673,9 +2737,9 @@
+@@ -2673,9 +2737,9 @@ synth_mult (struct algorithm *alg_out, u
             hardware the shift may be executed concurrently with the
             earlier steps in the algorithm.  */
          op_cost = add_cost[speed][mode] + shift_cost[speed][mode][m];
@@ -23728,7 +21428,7 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
              op_latency = op_cost;
            }
          else
-@@ -2738,7 +2802,7 @@
+@@ -2738,7 +2802,7 @@ synth_mult (struct algorithm *alg_out, u
        m = exact_log2 (q);
        if (m >= 0 && m < maxm)
        {
@@ -23737,10 +21437,9 @@ diff -Nur a/gcc/expmed.c b/gcc/expmed.c
          new_limit.cost = best_cost.cost - op_cost;
          new_limit.latency = best_cost.latency - op_cost;
          synth_mult (alg_in, (t + 1) >> m, &new_limit, mode);
-diff -Nur a/gcc/expr.c b/gcc/expr.c
---- a/gcc/expr.c       2009-06-16 16:28:47.000000000 +0200
-+++ b/gcc/expr.c       2010-01-25 09:50:29.115687383 +0100
-@@ -4391,6 +4391,29 @@
+--- a/gcc/expr.c
++++ b/gcc/expr.c
+@@ -4391,6 +4391,29 @@ expand_assignment (tree to, tree from, b
  
    /* Compute FROM and store the value in the rtx we got.  */
  
@@ -23770,7 +21469,7 @@ diff -Nur a/gcc/expr.c b/gcc/expr.c
    push_temp_slots ();
    result = store_expr (from, to_rtx, 0, nontemporal);
    preserve_temp_slots (result);
-@@ -7291,6 +7314,19 @@
+@@ -7291,6 +7314,19 @@ expand_expr_real_1 (tree exp, rtx target
        decl_rtl = DECL_RTL (exp);
        gcc_assert (decl_rtl);
        decl_rtl = copy_rtx (decl_rtl);
@@ -23790,7 +21489,7 @@ diff -Nur a/gcc/expr.c b/gcc/expr.c
  
        /* Ensure variable marked as used even if it doesn't go through
         a parser.  If it hasn't be used yet, write out an external
-@@ -7538,14 +7574,15 @@
+@@ -7538,14 +7574,15 @@ expand_expr_real_1 (tree exp, rtx target
  
        /* Resolve the misalignment now, so that we don't have to remember
           to resolve it later.  Of course, this only works for reads.  */
@@ -23809,10 +21508,9 @@ diff -Nur a/gcc/expr.c b/gcc/expr.c
            gcc_assert (modifier == EXPAND_NORMAL
                        || modifier == EXPAND_STACK_PARM);
  
-diff -Nur a/gcc/expr.h b/gcc/expr.h
---- a/gcc/expr.h       2009-03-17 18:46:23.000000000 +0100
-+++ b/gcc/expr.h       2010-01-25 09:50:29.125687117 +0100
-@@ -757,7 +757,7 @@
+--- a/gcc/expr.h
++++ b/gcc/expr.h
+@@ -757,7 +757,7 @@ extern void probe_stack_range (HOST_WIDE
  
  /* Return an rtx that refers to the value returned by a library call
     in its original home.  This becomes invalid if any more code is emitted.  */
@@ -23821,10 +21519,9 @@ diff -Nur a/gcc/expr.h b/gcc/expr.h
  
  /* Return the mode desired by operand N of a particular bitfield
     insert/extract insn, or MAX_MACHINE_MODE if no such insn is
-diff -Nur a/gcc/final.c b/gcc/final.c
---- a/gcc/final.c      2008-12-10 09:46:40.000000000 +0100
-+++ b/gcc/final.c      2010-01-25 09:50:29.125687117 +0100
-@@ -891,6 +891,7 @@
+--- a/gcc/final.c
++++ b/gcc/final.c
+@@ -891,6 +891,7 @@ shorten_branches (rtx first ATTRIBUTE_UN
        if (LABEL_P (insn))
        {
          rtx next;
@@ -23832,7 +21529,7 @@ diff -Nur a/gcc/final.c b/gcc/final.c
  
          /* Merge in alignments computed by compute_alignments.  */
          log = LABEL_TO_ALIGNMENT (insn);
-@@ -900,31 +901,30 @@
+@@ -900,31 +901,30 @@ shorten_branches (rtx first ATTRIBUTE_UN
              max_skip = LABEL_TO_MAX_SKIP (insn);
            }
  
@@ -23884,7 +21581,7 @@ diff -Nur a/gcc/final.c b/gcc/final.c
          LABEL_TO_ALIGNMENT (insn) = max_log;
          LABEL_TO_MAX_SKIP (insn) = max_skip;
          max_log = 0;
-@@ -2013,48 +2013,41 @@
+@@ -2013,48 +2013,41 @@ final_scan_insn (rtx insn, FILE *file, i
        app_disable ();
  
        next = next_nonnote_insn (insn);
@@ -23955,10 +21652,9 @@ diff -Nur a/gcc/final.c b/gcc/final.c
        }
        if (LABEL_ALT_ENTRY_P (insn))
        output_alternate_entry_point (file, insn);
-diff -Nur a/gcc/fold-const.c b/gcc/fold-const.c
---- a/gcc/fold-const.c 2009-07-15 13:23:22.000000000 +0200
-+++ b/gcc/fold-const.c 2010-01-25 09:50:29.125687117 +0100
-@@ -2289,7 +2289,24 @@
+--- a/gcc/fold-const.c
++++ b/gcc/fold-const.c
+@@ -2293,7 +2293,24 @@ fold_convert_const_real_from_real (tree 
    real_convert (&value, TYPE_MODE (type), &TREE_REAL_CST (arg1));
    t = build_real (type, value);
  
@@ -23984,10 +21680,9 @@ diff -Nur a/gcc/fold-const.c b/gcc/fold-const.c
    return t;
  }
  
-diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
---- a/gcc/fortran/cpp.c        2008-12-09 20:25:55.000000000 +0100
-+++ b/gcc/fortran/cpp.c        2010-01-25 09:50:29.125687117 +0100
-@@ -137,6 +137,9 @@
+--- a/gcc/fortran/cpp.c
++++ b/gcc/fortran/cpp.c
+@@ -137,6 +137,9 @@ static void cb_include (cpp_reader *, so
  static void cb_ident (cpp_reader *, source_location, const cpp_string *);
  static void cb_used_define (cpp_reader *, source_location, cpp_hashnode *);
  static void cb_used_undef (cpp_reader *, source_location, cpp_hashnode *);
@@ -23997,7 +21692,7 @@ diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
  void pp_dir_change (cpp_reader *, const char *);
  
  static int dump_macro (cpp_reader *, cpp_hashnode *, void *);
-@@ -452,7 +455,6 @@
+@@ -452,7 +455,6 @@ gfc_cpp_post_options (void)
    cpp_option->cplusplus_comments = 0;
  
    cpp_option->pedantic = pedantic;
@@ -24005,7 +21700,7 @@ diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
  
    cpp_option->dollars_in_ident = gfc_option.flag_dollar_ok;
    cpp_option->discard_comments = gfc_cpp_option.discard_comments;
-@@ -465,9 +467,6 @@
+@@ -465,9 +467,6 @@ gfc_cpp_post_options (void)
  
    cpp_post_options (cpp_in);
  
@@ -24015,7 +21710,7 @@ diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
    gfc_cpp_register_include_paths ();
  }
  
-@@ -482,6 +481,7 @@
+@@ -482,6 +481,7 @@ gfc_cpp_init_0 (void)
    cb->line_change = cb_line_change;
    cb->ident = cb_ident;
    cb->def_pragma = cb_def_pragma;
@@ -24023,7 +21718,7 @@ diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
  
    if (gfc_cpp_option.dump_includes)
      cb->include = cb_include;
-@@ -961,6 +961,57 @@
+@@ -961,6 +961,57 @@ cb_used_define (cpp_reader *pfile, sourc
    cpp_define_queue = q;
  }
  
@@ -24081,10 +21776,9 @@ diff -Nur a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c
  
  /* Callback called when -fworking-director and -E to emit working
     directory in cpp output file.  */
-diff -Nur a/gcc/function.c b/gcc/function.c
---- a/gcc/function.c   2009-07-11 21:06:26.000000000 +0200
-+++ b/gcc/function.c   2010-01-25 09:50:29.135686643 +0100
-@@ -272,7 +272,10 @@
+--- a/gcc/function.c
++++ b/gcc/function.c
+@@ -276,7 +276,10 @@ get_stack_local_alignment (tree type, en
    if (! type)
      type = lang_hooks.types.type_for_mode (mode, 0);
  
@@ -24096,7 +21790,7 @@ diff -Nur a/gcc/function.c b/gcc/function.c
  }
  
  /* Allocate a stack slot of SIZE bytes and return a MEM rtx for it
-@@ -5359,6 +5362,57 @@
+@@ -5355,6 +5358,57 @@ current_function_assembler_name (void)
  {
    return IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (cfun->decl));
  }
@@ -24154,10 +21848,9 @@ diff -Nur a/gcc/function.c b/gcc/function.c
  \f
  
  static unsigned int
-diff -Nur a/gcc/function.h b/gcc/function.h
---- a/gcc/function.h   2009-03-23 17:29:33.000000000 +0100
-+++ b/gcc/function.h   2010-01-25 09:50:29.135686643 +0100
-@@ -25,6 +25,7 @@
+--- a/gcc/function.h
++++ b/gcc/function.h
+@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  
  #include "tree.h"
  #include "hashtab.h"
  #include "varray.h"
@@ -24165,7 +21858,7 @@ diff -Nur a/gcc/function.h b/gcc/function.h
  
  /* Stack of pending (incomplete) sequences saved by `start_sequence'.
     Each element describes one pending sequence.
-@@ -441,6 +442,8 @@
+@@ -441,6 +442,8 @@ struct rtl_data GTY(())
  
    /* True if dbr_schedule has already been called for this function.  */
    bool dbr_scheduled_p;
@@ -24174,7 +21867,7 @@ diff -Nur a/gcc/function.h b/gcc/function.h
  };
  
  #define return_label (crtl->x_return_label)
-@@ -687,4 +690,7 @@
+@@ -709,4 +712,7 @@ extern bool reference_callee_copied (CUM
  extern void used_types_insert (tree);
  
  extern int get_next_funcdef_no (void);
@@ -24182,24 +21875,9 @@ diff -Nur a/gcc/function.h b/gcc/function.h
 +extern unsigned int alignment_for_aligned_arrays (tree, unsigned int);
 +
  #endif  /* GCC_FUNCTION_H */
-diff -Nur a/gcc/gcc.c b/gcc/gcc.c
---- a/gcc/gcc.c        2009-03-17 22:25:59.000000000 +0100
-+++ b/gcc/gcc.c        2010-01-25 09:50:29.135686643 +0100
-@@ -83,6 +83,13 @@
- #include "gcc.h"
- #include "flags.h"
- #include "opts.h"
-+#ifdef CSL_LICENSE_FEATURE
-+#  include <csl/license.h>
-+#else
-+   /* TARGET_FLEXLM requires the CodeSourcery license library be
-+      present.  */
-+#  undef TARGET_FLEXLM
-+#endif
- /* By default there is no special suffix for target executables.  */
- /* FIXME: when autoconf is fixed, remove the host check - dj */
-@@ -229,6 +236,37 @@
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -229,6 +229,16 @@ static int combine_flag = 0;
  
  static int use_pipes;
  
@@ -24212,32 +21890,11 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
 +/* Nonzero means that the current spec is executing the linker.  */
 +
 +static int executing_linker = 0;
-+
-+#ifdef CSL_LICENSE_FEATURE
-+/* 0 if we have not checked for a license, 1 if a license was
-+   obtained, -1 if license checkout failed.  */
-+   
-+static int license_checked;
-+
-+# ifdef TARGET_FLEXLM
-+/* WRS LOCAL
-+   Nonzero means to pay attention to the result of the license manager.  */
-+
-+static int license_me_flag;
-+
-+/* WRS LOCAL
-+   True if the -p option should be passed to the get_feature command.  */
-+
-+static int feature_proxy_flag = 1;
-+# else
-+#  define license_me_flag 1
-+# endif /* defined (TARGET_FLELM) */
-+#endif /* defined (CSL_LICENSE_FEATURE) */
 +
  /* The compiler version.  */
  
  static const char *compiler_version;
-@@ -651,8 +689,32 @@
+@@ -651,8 +661,32 @@ proper position among the other output f
  
  /* config.h can define SWITCHES_NEED_SPACES to control which options
     require spaces between the option and the argument.  */
@@ -24271,7 +21928,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
  #endif
  
  /* config.h can define ENDFILE_SPEC to override the default crtn files.  */
-@@ -728,6 +790,8 @@
+@@ -728,6 +762,8 @@ proper position among the other output f
  %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
      %(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
      %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
@@ -24280,7 +21937,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
      %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
      %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)\
      %{fprofile-arcs|fprofile-generate|coverage:-lgcov}\
-@@ -882,7 +946,7 @@
+@@ -882,7 +918,7 @@ static const char *const multilib_defaul
  #endif
  
  static const char *const driver_self_specs[] = {
@@ -24289,7 +21946,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
  };
  
  #ifndef OPTION_DEFAULT_SPECS
-@@ -2853,6 +2917,29 @@
+@@ -2853,6 +2889,29 @@ execute (void)
  
    gcc_assert (!processing_spec_function);
  
@@ -24319,7 +21976,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
    if (wrapper_string)
      {
        string = find_a_file (&exec_prefixes, argbuf[0], X_OK, false);
-@@ -3688,6 +3775,16 @@
+@@ -3688,6 +3747,16 @@ warranty; not even for MERCHANTABILITY o
          add_assembler_option ("--target-help", 13);
          add_linker_option ("--target-help", 13);
        }
@@ -24336,22 +21993,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
        else if (! strcmp (argv[i], "-pass-exit-codes"))
        {
          pass_exit_codes = 1;
-@@ -3852,6 +3949,14 @@
-         verbose_only_flag++;
-         verbose_flag++;
-       }
-+#ifdef TARGET_FLEXLM
-+      else if (strcmp (argv[i], "-flicense-me") == 0)
-+      license_me_flag = 1;  /* WRS LOCAL */
-+      else if (strcmp (argv[i], "-ffeature-proxy") == 0)
-+      feature_proxy_flag = 1;  /* WRS LOCAL */
-+      else if (strcmp (argv[i], "-fno-feature-proxy") == 0)
-+      feature_proxy_flag = 0;  /* WRS LOCAL */
-+#endif
-       else if (argv[i][0] == '-' && argv[i][1] != 0)
-       {
-         const char *p = &argv[i][1];
-@@ -3905,6 +4010,7 @@
+@@ -3905,6 +3974,7 @@ warranty; not even for MERCHANTABILITY o
                            PREFIX_PRIORITY_B_OPT, 0, 0);
                add_prefix (&include_prefixes, value, NULL,
                            PREFIX_PRIORITY_B_OPT, 0, 0);
@@ -24359,44 +22001,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
                n_switches++;
              }
              break;
-@@ -3967,6 +4073,21 @@
- #endif
-             goto normal_switch;
-+            /* WRS LOCAL only invoke get_feature if we are running
-+               the compiler proper.  */
-+#ifdef TARGET_FLEXLM
-+          case 'E':
-+            if (argv[i][2] == '\0')
-+              license_checked = 1;
-+            goto normal_switch;
-+
-+          case 'M':
-+            if (argv[i][2] == '\0'
-+                || (argv[i][2] == 'M' && argv[i][3] == '\0'))
-+              license_checked = 1;
-+            goto normal_switch;
-+#endif
-+
-           default:
-           normal_switch:
-@@ -4153,6 +4274,14 @@
-       ;
-       else if (! strcmp (argv[i], "-print-sysroot-headers-suffix"))
-       ;
-+#ifdef TARGET_FLEXLM
-+      else if (! strcmp (argv[i], "-flicense-me"))
-+      ;
-+      else if (! strcmp (argv[i], "-ffeature-proxy"))
-+      ;
-+      else if (! strcmp (argv[i], "-fno-feature-proxy"))
-+      ;
-+#endif
-       else if (! strncmp (argv[i], "--sysroot=", strlen ("--sysroot=")))
-       {
-         target_system_root = argv[i] + strlen ("--sysroot=");
-@@ -4616,27 +4745,53 @@
+@@ -4616,27 +4686,53 @@ do_self_spec (const char *spec)
  
    if (argbuf_index > 0)
      {
@@ -24454,104 +22059,7 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
        }
      }
  }
-@@ -6225,6 +6380,10 @@
-   const char *p;
-   struct user_specs *uptr;
-   char **old_argv = argv;
-+#ifdef CSL_LICENSE_FEATURE
-+  csl_license_impl *license_impl = csl_license_subproc;
-+  csl_license *license = NULL;
-+#endif
-   /* Initialize here, not in definition.  The IRIX 6 O32 cc sometimes chokes
-      on ?: in file-scope variable initializations.  */
-@@ -6792,10 +6951,84 @@
-           }
-         else
-           {
--            value = do_spec (input_file_compiler->spec);
-+            value = 0;
-+
-+#ifdef CSL_LICENSE_FEATURE
-+            if (!license_checked)
-+              {
-+                const char *subproc, *found_subproc;
-+# ifdef TARGET_FLEXLM
-+                const char *subproc_argv[10];
-+                const char **p;
-+                subproc = "get_feature";
-+                p = subproc_argv;
-+                *p++ = subproc;
-+                if (feature_proxy_flag)
-+                  *p++ = "-p";
-+                *p++ = "-co";
-+                *p++ = xstrdup (DEFAULT_TARGET_MACHINE);
-+                *p++ = "-v";
-+                *p++ = "3.3";
-+                *p++ = "gnu";
-+                *p++ = infiles[i].language;
-+                *p++ = (license_me_flag ? "-flicense-me" : "");
-+                *p++ = 0;
-+# else /* !defined (TARGET_FLEXLM) */
-+                const char **subproc_argv = NULL;
-+                subproc = CSL_LICENSE_PROG;
-+# endif /* !defined (TARGET_FLEXLM) */
-+                /* Find the licensing program.  */
-+                found_subproc = find_a_file (&exec_prefixes, 
-+                                             subproc,
-+                                             X_OK,
-+                                             /*multilib=*/false);
-+                if (found_subproc)
-+                  subproc = found_subproc;
-+                /* Begin checking out the license.  */
-+                license 
-+                  = csl_subproc_license_new (CSL_LICENSE_FEATURE,
-+                                             CSL_LICENSE_VERSION,
-+                                             /*argcp=*/NULL,
-+                                             /*argvp=*/NULL,
-+                                             subproc,
-+                                             subproc_argv);
-+                if (!license)
-+                  {
-+                    error ("could not invoke license program");
-+                    license_checked = -1;
-+                  }
-+              }
-+            if (license_checked == -1 && license_me_flag)
-+              value = -1;
-+#endif /* defined (CSL_LICENSE_FEATURE) */ 
-+            /* Now do the compile.  */
-+            if (!value)
-+              value = do_spec (input_file_compiler->spec);
-             infiles[i].compiled = true;
-             if (value < 0)
-               this_file_error = 1;
-+#ifdef CSL_LICENSE_FEATURE
-+            if (!license_checked && license)
-+              {
-+                /* Finish checking out the license.  */
-+                const csl_license_status *license_status;
-+                if  (!license_impl->license_check (license,
-+                                                   &license_status))
-+                  {
-+                    if (license_me_flag) /* WRS LOCAL */
-+                      error ("%s", license_status->msg);
-+                    /* Remember that the license check failed so
-+                       that we (a) do not check again, and (b) issue
-+                       errors about other files as well.  */
-+                    license_checked = -1;
-+                    if (license_me_flag) /* WRS LOCAL */
-+                      /* Remove this file.  */
-+                      this_file_error = 1;
-+                  }
-+                else
-+                  license_checked = 1;
-+              }
-+#endif /* defined (CSL_LICENSE_FEATURE) */ 
-           }
-       }
-@@ -6873,7 +7106,9 @@
+@@ -6873,7 +6969,9 @@ main (int argc, char **argv)
                    " to the linker.\n\n"));
          fflush (stdout);
        }
@@ -24561,23 +22069,9 @@ diff -Nur a/gcc/gcc.c b/gcc/gcc.c
        if (value < 0)
        error_count = 1;
        linker_was_run = (tmp != execution_count);
-@@ -6901,6 +7136,12 @@
-       printf ("%s\n", bug_report_url);
-     }
-+#ifdef CSL_LICENSE_FEATURE
-+  /* Relinquish the license.  */
-+  if (license)
-+    license_impl->license_delete (license);
-+#endif
-+    
-   return (signal_count != 0 ? 2
-         : error_count > 0 ? (pass_exit_codes ? greatest_status : 1)
-         : 0);
-diff -Nur a/gcc/gcse.c b/gcc/gcse.c
---- a/gcc/gcse.c       2009-04-27 13:55:13.000000000 +0200
-+++ b/gcc/gcse.c       2010-01-25 09:50:29.145688053 +0100
-@@ -172,6 +172,7 @@
+--- a/gcc/gcse.c
++++ b/gcc/gcse.c
+@@ -172,6 +172,7 @@ along with GCC; see the file COPYING3.  
  #include "hashtab.h"
  #include "df.h"
  #include "dbgcnt.h"
@@ -24585,7 +22079,7 @@ diff -Nur a/gcc/gcse.c b/gcc/gcse.c
  
  /* Propagate flow information through back edges and thus enable PRE's
     moving loop invariant calculations out of loops.
-@@ -1744,7 +1745,9 @@
+@@ -1744,7 +1745,9 @@ hash_scan_set (rtx pat, rtx insn, struct
             REG_EQUIV notes and if the argument slot is used somewhere
             explicitly, it means address of parameter has been taken,
             so we should not extend the lifetime of the pseudo.  */
@@ -24596,9 +22090,8 @@ diff -Nur a/gcc/gcse.c b/gcc/gcse.c
        {
          /* An expression is not anticipatable if its operands are
             modified before this insn or if this is not the only SET in
-diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
---- a/gcc/genautomata.c        2008-09-01 10:57:00.000000000 +0200
-+++ b/gcc/genautomata.c        2010-01-25 09:50:29.145688053 +0100
+--- a/gcc/genautomata.c
++++ b/gcc/genautomata.c
 @@ -1,5 +1,5 @@
  /* Pipeline hazard description translator.
 -   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
@@ -24606,7 +22099,7 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
     Free Software Foundation, Inc.
  
     Written by Vladimir Makarov <vmakarov@redhat.com>
-@@ -22,21 +22,25 @@
+@@ -22,21 +22,25 @@ along with GCC; see the file COPYING3.  
  
  /* References:
  
@@ -24637,7 +22130,7 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
  
     1. New operator `|' (alternative) is permitted in functional unit
        reservation which can be treated deterministically and
-@@ -463,7 +467,10 @@
+@@ -463,7 +467,10 @@ struct insn_reserv_decl
       insn.  */
    int insn_num;
    /* The following field value is list of bypasses in which given insn
@@ -24649,7 +22142,7 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
    struct bypass_decl *bypass_list;
  
    /* The following fields are defined by automaton generator.  */
-@@ -2367,18 +2374,67 @@
+@@ -2367,18 +2374,67 @@ add_presence_absence (unit_set_el_t dest
  }
  
  
@@ -24729,7 +22222,7 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
  }
  
  /* The function processes pipeline description declarations, checks
-@@ -2391,7 +2447,6 @@
+@@ -2391,7 +2447,6 @@ process_decls (void)
    decl_t decl_in_table;
    decl_t out_insn_reserv;
    decl_t in_insn_reserv;
@@ -24737,7 +22230,7 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
    int automaton_presence;
    int i;
  
-@@ -2514,36 +2569,7 @@
+@@ -2514,36 +2569,7 @@ process_decls (void)
                = DECL_INSN_RESERV (out_insn_reserv);
              DECL_BYPASS (decl)->in_insn_reserv
                = DECL_INSN_RESERV (in_insn_reserv);
@@ -24775,7 +22268,7 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
            }
        }
      }
-@@ -8159,19 +8185,32 @@
+@@ -8159,19 +8185,32 @@ output_internal_insn_latency_func (void)
                            (advance_cycle_insn_decl)->insn_num));
            fprintf (output_file, "        case %d:\n",
                     bypass->in_insn_reserv->insn_num);
@@ -24819,2652 +22312,9 @@ diff -Nur a/gcc/genautomata.c b/gcc/genautomata.c
          }
        fputs ("        }\n      break;\n", output_file);
        }
-diff -Nur a/gcc/gengtype-lex.c b/gcc/gengtype-lex.c
---- a/gcc/gengtype-lex.c       2009-07-22 09:46:07.000000000 +0200
-+++ b/gcc/gengtype-lex.c       1970-01-01 01:00:00.000000000 +0100
-@@ -1,2638 +0,0 @@
--#line 2 "gengtype-lex.c"
--
--#line 4 "gengtype-lex.c"
--
--#define  YY_INT_ALIGNED short int
--
--/* A lexical scanner generated by flex */
--
--#define FLEX_SCANNER
--#define YY_FLEX_MAJOR_VERSION 2
--#define YY_FLEX_MINOR_VERSION 5
--#define YY_FLEX_SUBMINOR_VERSION 35
--#if YY_FLEX_SUBMINOR_VERSION > 0
--#define FLEX_BETA
--#endif
--
--/* First, we deal with  platform-specific or compiler-specific issues. */
--
--/* begin standard C headers. */
--#include <stdio.h>
--#include <string.h>
--#include <errno.h>
--#include <stdlib.h>
--
--/* end standard C headers. */
--
--/* flex integer type definitions */
--
--#ifndef FLEXINT_H
--#define FLEXINT_H
--
--/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
--
--#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
--
--/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
-- * if you want the limit (max/min) macros for int types. 
-- */
--#ifndef __STDC_LIMIT_MACROS
--#define __STDC_LIMIT_MACROS 1
--#endif
--
--#include <inttypes.h>
--typedef int8_t flex_int8_t;
--typedef uint8_t flex_uint8_t;
--typedef int16_t flex_int16_t;
--typedef uint16_t flex_uint16_t;
--typedef int32_t flex_int32_t;
--typedef uint32_t flex_uint32_t;
--#else
--typedef signed char flex_int8_t;
--typedef short int flex_int16_t;
--typedef int flex_int32_t;
--typedef unsigned char flex_uint8_t; 
--typedef unsigned short int flex_uint16_t;
--typedef unsigned int flex_uint32_t;
--#endif /* ! C99 */
--
--/* Limits of integral types. */
--#ifndef INT8_MIN
--#define INT8_MIN               (-128)
--#endif
--#ifndef INT16_MIN
--#define INT16_MIN              (-32767-1)
--#endif
--#ifndef INT32_MIN
--#define INT32_MIN              (-2147483647-1)
--#endif
--#ifndef INT8_MAX
--#define INT8_MAX               (127)
--#endif
--#ifndef INT16_MAX
--#define INT16_MAX              (32767)
--#endif
--#ifndef INT32_MAX
--#define INT32_MAX              (2147483647)
--#endif
--#ifndef UINT8_MAX
--#define UINT8_MAX              (255U)
--#endif
--#ifndef UINT16_MAX
--#define UINT16_MAX             (65535U)
--#endif
--#ifndef UINT32_MAX
--#define UINT32_MAX             (4294967295U)
--#endif
--
--#endif /* ! FLEXINT_H */
--
--#ifdef __cplusplus
--
--/* The "const" storage-class-modifier is valid. */
--#define YY_USE_CONST
--
--#else /* ! __cplusplus */
--
--/* C99 requires __STDC__ to be defined as 1. */
--#if defined (__STDC__)
--
--#define YY_USE_CONST
--
--#endif        /* defined (__STDC__) */
--#endif        /* ! __cplusplus */
--
--#ifdef YY_USE_CONST
--#define yyconst const
--#else
--#define yyconst
--#endif
--
--/* Returned upon end-of-file. */
--#define YY_NULL 0
--
--/* Promotes a possibly negative, possibly signed char to an unsigned
-- * integer for use as an array index.  If the signed char is negative,
-- * we want to instead treat it as an 8-bit unsigned char, hence the
-- * double cast.
-- */
--#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
--
--/* Enter a start condition.  This macro really ought to take a parameter,
-- * but we do it the disgusting crufty way forced on us by the ()-less
-- * definition of BEGIN.
-- */
--#define BEGIN (yy_start) = 1 + 2 *
--
--/* Translate the current start state into a value that can be later handed
-- * to BEGIN to return to the state.  The YYSTATE alias is for lex
-- * compatibility.
-- */
--#define YY_START (((yy_start) - 1) / 2)
--#define YYSTATE YY_START
--
--/* Action number for EOF rule of a given start state. */
--#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
--
--/* Special action meaning "start processing a new file". */
--#define YY_NEW_FILE yyrestart(yyin  )
--
--#define YY_END_OF_BUFFER_CHAR 0
--
--/* Size of default input buffer. */
--#ifndef YY_BUF_SIZE
--#define YY_BUF_SIZE 16384
--#endif
--
--/* The state buf must be large enough to hold one state per character in the main buffer.
-- */
--#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
--
--#ifndef YY_TYPEDEF_YY_BUFFER_STATE
--#define YY_TYPEDEF_YY_BUFFER_STATE
--typedef struct yy_buffer_state *YY_BUFFER_STATE;
--#endif
--
--extern int yyleng;
--
--extern FILE *yyin, *yyout;
--
--#define EOB_ACT_CONTINUE_SCAN 0
--#define EOB_ACT_END_OF_FILE 1
--#define EOB_ACT_LAST_MATCH 2
--
--    #define YY_LESS_LINENO(n)
--    
--/* Return all but the first "n" matched characters back to the input stream. */
--#define yyless(n) \
--      do \
--              { \
--              /* Undo effects of setting up yytext. */ \
--        int yyless_macro_arg = (n); \
--        YY_LESS_LINENO(yyless_macro_arg);\
--              *yy_cp = (yy_hold_char); \
--              YY_RESTORE_YY_MORE_OFFSET \
--              (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
--              YY_DO_BEFORE_ACTION; /* set up yytext again */ \
--              } \
--      while ( 0 )
--
--#define unput(c) yyunput( c, (yytext_ptr)  )
--
--#ifndef YY_TYPEDEF_YY_SIZE_T
--#define YY_TYPEDEF_YY_SIZE_T
--typedef size_t yy_size_t;
--#endif
--
--#ifndef YY_STRUCT_YY_BUFFER_STATE
--#define YY_STRUCT_YY_BUFFER_STATE
--struct yy_buffer_state
--      {
--      FILE *yy_input_file;
--
--      char *yy_ch_buf;                /* input buffer */
--      char *yy_buf_pos;               /* current position in input buffer */
--
--      /* Size of input buffer in bytes, not including room for EOB
--       * characters.
--       */
--      yy_size_t yy_buf_size;
--
--      /* Number of characters read into yy_ch_buf, not including EOB
--       * characters.
--       */
--      int yy_n_chars;
--
--      /* Whether we "own" the buffer - i.e., we know we created it,
--       * and can realloc() it to grow it, and should free() it to
--       * delete it.
--       */
--      int yy_is_our_buffer;
--
--      /* Whether this is an "interactive" input source; if so, and
--       * if we're using stdio for input, then we want to use getc()
--       * instead of fread(), to make sure we stop fetching input after
--       * each newline.
--       */
--      int yy_is_interactive;
--
--      /* Whether we're considered to be at the beginning of a line.
--       * If so, '^' rules will be active on the next match, otherwise
--       * not.
--       */
--      int yy_at_bol;
--
--    int yy_bs_lineno; /**< The line count. */
--    int yy_bs_column; /**< The column count. */
--    
--      /* Whether to try to fill the input buffer when we reach the
--       * end of it.
--       */
--      int yy_fill_buffer;
--
--      int yy_buffer_status;
--
--#define YY_BUFFER_NEW 0
--#define YY_BUFFER_NORMAL 1
--      /* When an EOF's been seen but there's still some text to process
--       * then we mark the buffer as YY_EOF_PENDING, to indicate that we
--       * shouldn't try reading from the input source any more.  We might
--       * still have a bunch of tokens to match, though, because of
--       * possible backing-up.
--       *
--       * When we actually see the EOF, we change the status to "new"
--       * (via yyrestart()), so that the user can continue scanning by
--       * just pointing yyin at a new input file.
--       */
--#define YY_BUFFER_EOF_PENDING 2
--
--      };
--#endif /* !YY_STRUCT_YY_BUFFER_STATE */
--
--/* Stack of input buffers. */
--static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
--static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
--static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
--
--/* We provide macros for accessing buffer states in case in the
-- * future we want to put the buffer states in a more general
-- * "scanner state".
-- *
-- * Returns the top of the stack, or NULL.
-- */
--#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
--                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
--                          : NULL)
--
--/* Same as previous macro, but useful when we know that the buffer stack is not
-- * NULL or when we need an lvalue. For internal use only.
-- */
--#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
--
--/* yy_hold_char holds the character lost when yytext is formed. */
--static char yy_hold_char;
--static int yy_n_chars;                /* number of characters read into yy_ch_buf */
--int yyleng;
--
--/* Points to current character in buffer. */
--static char *yy_c_buf_p = (char *) 0;
--static int yy_init = 0;               /* whether we need to initialize */
--static int yy_start = 0;      /* start state number */
--
--/* Flag which is used to allow yywrap()'s to do buffer switches
-- * instead of setting up a fresh yyin.  A bit of a hack ...
-- */
--static int yy_did_buffer_switch_on_eof;
--
--void yyrestart (FILE *input_file  );
--void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
--YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
--void yy_delete_buffer (YY_BUFFER_STATE b  );
--void yy_flush_buffer (YY_BUFFER_STATE b  );
--void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
--void yypop_buffer_state (void );
--
--static void yyensure_buffer_stack (void );
--static void yy_load_buffer_state (void );
--static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
--
--#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
--
--YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
--YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
--YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
--
--void *yyalloc (yy_size_t  );
--void *yyrealloc (void *,yy_size_t  );
--void yyfree (void *  );
--
--#define yy_new_buffer yy_create_buffer
--
--#define yy_set_interactive(is_interactive) \
--      { \
--      if ( ! YY_CURRENT_BUFFER ){ \
--        yyensure_buffer_stack (); \
--              YY_CURRENT_BUFFER_LVALUE =    \
--            yy_create_buffer(yyin,YY_BUF_SIZE ); \
--      } \
--      YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
--      }
--
--#define yy_set_bol(at_bol) \
--      { \
--      if ( ! YY_CURRENT_BUFFER ){\
--        yyensure_buffer_stack (); \
--              YY_CURRENT_BUFFER_LVALUE =    \
--            yy_create_buffer(yyin,YY_BUF_SIZE ); \
--      } \
--      YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
--      }
--
--#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
--
--/* Begin user sect3 */
--
--#define yywrap(n) 1
--#define YY_SKIP_YYWRAP
--
--typedef unsigned char YY_CHAR;
--
--FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
--
--typedef int yy_state_type;
--
--extern int yylineno;
--
--int yylineno = 1;
--
--extern char *yytext;
--#define yytext_ptr yytext
--
--static yy_state_type yy_get_previous_state (void );
--static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
--static int yy_get_next_buffer (void );
--static void yy_fatal_error (yyconst char msg[]  );
--
--/* Done after the current pattern has been matched and before the
-- * corresponding action - sets up yytext.
-- */
--#define YY_DO_BEFORE_ACTION \
--      (yytext_ptr) = yy_bp; \
--      yyleng = (size_t) (yy_cp - yy_bp); \
--      (yy_hold_char) = *yy_cp; \
--      *yy_cp = '\0'; \
--      (yy_c_buf_p) = yy_cp;
--
--#define YY_NUM_RULES 49
--#define YY_END_OF_BUFFER 50
--/* This struct is not used in this scanner,
--   but its presence is necessary. */
--struct yy_trans_info
--      {
--      flex_int32_t yy_verify;
--      flex_int32_t yy_nxt;
--      };
--static yyconst flex_int16_t yy_accept[445] =
--    {   0,
--        0,    0,    0,    0,    0,    0,    0,    0,   50,   36,
--       36,   33,   45,   36,   45,   34,   36,   36,   34,   34,
--       34,   34,   34,   31,   10,   10,   31,   29,   31,   31,
--       31,   20,   31,   31,   31,   31,   31,   31,   31,   31,
--       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
--       31,   10,   31,   41,   39,   46,   46,    0,    0,    0,
--       37,    0,    0,    0,   38,   32,   34,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,   34,   34,   34,   34,
--       34,   10,    0,   25,    0,    0,    0,    0,    9,   20,
--       24,    0,    0,    0,    0,    0,    0,    0,    0,   26,
--
--       11,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,   10,    0,    0,    0,    0,
--       42,   44,   43,    0,   35,    0,    0,    0,    0,    0,
--        0,   34,   34,   34,   34,   34,   34,   27,   28,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,   30,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,   34,   34,   34,   34,   34,   34,
--        0,    0,    0,   13,    0,   14,    0,    0,    0,    0,
--       22,   22,    0,    0,    0,    0,    0,    0,    0,    0,
--
--        0,    0,    0,   48,    0,    0,    0,    0,    0,    0,
--        0,   34,   34,   34,   34,   34,   34,    0,    0,    0,
--        0,    0,   17,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
--       34,   34,   34,   34,    3,    0,    0,    0,    0,   12,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,   15,    0,    0,    0,
--        0,    0,    0,    0,   34,    4,    5,    2,   34,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--
--        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
--        0,    0,    0,    0,   34,    1,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,   22,   22,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,   34,   34,   34,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--       21,    0,    0,    0,    0,    0,    0,   34,    7,    6,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,   18,
--        0,    0,    0,   34,    0,    0,    0,    0,    0,    0,
--        0,    0,   19,    0,    0,   47,   34,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
--
--        0,    0,    0,    0,    0,    0,   34,    0,   24,   24,
--        0,    0,    0,    0,    0,    0,    0,   34,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
--        0,   23,    0,    0,    0,    0,    0,   40,    0,    0,
--        0,    0,    0,    0
--    } ;
--
--static yyconst flex_int32_t yy_ec[256] =
--    {   0,
--        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
--        2,    2,    2,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    2,    1,    4,    5,    1,    6,    1,    7,    8,
--        9,   10,    1,    6,    6,   11,   12,   13,   13,   13,
--       13,   13,   13,   13,   13,   13,   13,    6,    6,    6,
--        6,    6,    1,    1,   14,   15,   16,   17,   18,   19,
--       20,   21,   22,   23,   23,   24,   25,   26,   27,   28,
--       23,   29,   30,   31,   32,   33,   34,   23,   35,   23,
--       36,   37,   38,    1,   39,    1,   40,   41,   42,   43,
--
--       44,   45,   46,   47,   48,   49,   49,   50,   51,   52,
--       53,   54,   49,   55,   56,   57,   58,   59,   49,   60,
--       61,   62,    6,    6,    6,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    1,    1
--    } ;
--
--static yyconst flex_int32_t yy_meta[63] =
--    {   0,
--        1,    2,    3,    1,    1,    1,    1,    1,    4,    5,
--        1,    1,    6,    7,    7,    7,    7,    7,    7,    7,
--        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
--        7,    7,    7,    7,    7,    8,    1,    1,    9,    9,
--        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
--        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
--        9,    9
--    } ;
--
--static yyconst flex_int16_t yy_base[483] =
--    {   0,
--        0,   38,   96,   12,   12,   13,   15,   16, 1028, 1444,
--       32,   51,   20,  990, 1016,    0,  157,   18, 1007,  964,
--      966,  961,  969, 1444,   25,   27,   27, 1444,  983, 1008,
--     1008, 1004,  215,  253,    5,   32,   29,  974,   45,  962,
--      996,   35,   38,   39,   40,   41,  134,   42,  136,  137,
--      138,   75,  996,    0, 1444,  985,  984,  166,  964,  162,
--     1444,    0,  987,  990, 1444, 1444,    0,  186,  165,  974,
--      931,  933,  928,  936,  168,  943,  967,  928,  140,  930,
--      935,   87,  167, 1444,  979,  974,  977,  968, 1444,  950,
--     1444,  935,  934,  145,   52,   46,  148,  165,  922, 1444,
--
--     1444,  152,  156,  155,  170,  173,  175,  182,  183,  185,
--      211,  214,  222,  218,  221,  269,  957,  956,  291,    0,
--     1444, 1444, 1444,  922, 1444,  937,  898,  195,  900,  905,
--      907,  912,  906,  892,  890,  903,  893, 1444, 1444,  209,
--      254,  251,  353,  248,  391,  354,  350,  351,  340,  355,
--      341,  429,  339,  356,  344,  347,  360,  390,   43,  361,
--      391,  395,  429, 1444,    0,    0,  280,  906,  900,  886,
--      884,  897,  872,  876,  890,  867,  873,  878,  876,  866,
--      381,  348,  382, 1444,  384, 1444,  389,  397,  491,  398,
--     1444,  528,  418,  399,  420,  477,  478,  422,  421,  480,
--
--      479,    0,  449, 1444,  884,  861,  867,  872,  870,  860,
--      859,  892,  857,  866,  850,  862,  586,  493,  496,  494,
--      484,  624, 1444,    0,  878,  876,  876,  834,  839,  841,
--      832,  830,  199,  830,  490,  499,  486,  492,  488,  489,
--      662,    0,  863,  828,  837,  821,  833,    0,  832,  859,
--      700,  738,  776,  829, 1444,  431,  258,  437,  515, 1444,
--      846,  844,  841,  817,  829,  809,  319,  815,  813,  478,
--      809,  512,  528,  520,  525,  814, 1444,    0,  833,    0,
--        0,    0,  803,  551,  808, 1444, 1444, 1444,  852,  383,
--      521,  530,  539,  822,  829,  813,  793,  787,  802,  801,
--
--      556,  793,  783,  785,  792,  787,  523,  545,  535, 1444,
--        0,  795,    0,  561,  585, 1444,  555,  343,  581,  584,
--      794,  811,  792,  773,  772, 1444,    0,  771,  783,  772,
--      764,  552,  890,  558,    0,  623,  778,  784,  928,  966,
--      583,  593,  594,  613,  792,  792,  771,  761,  746,  591,
--     1444, 1004,    0,  778,    0,    0,  766,  776, 1444, 1444,
--      620,  621,  626,  627,  653,  777,  769,  775, 1042, 1444,
--        0,  772,  787,  767,  556,  577,  615,  649,  629,  762,
--      753,  774, 1444,    0,  763, 1444,  773,  632,  659,  662,
--      656,  654,  754,  742,  753,    0,  754,  729,  665,  688,
--
--      667,  744,  742,  683,    0,  695,  692,  689,  715,  722,
--      699,  711,  701,  666,  673,    0,  705, 1080,  704,  749,
--      751,  753,  756,  663,  658,  618,  593,    0,    0, 1444,
--      758, 1444,  760,  600,  588,  543,  483, 1444,  439,  386,
--      247,  206,  167, 1444, 1118, 1127, 1136, 1145, 1154, 1158,
--     1167, 1176, 1185, 1194, 1202, 1211, 1220, 1229, 1238, 1247,
--     1256, 1265, 1273, 1282, 1290, 1298, 1306, 1314, 1323, 1331,
--     1340, 1349, 1357, 1365, 1374, 1383, 1392, 1400, 1409, 1417,
--     1426, 1435
--    } ;
--
--static yyconst flex_int16_t yy_def[483] =
--    {   0,
--      445,  445,  444,    3,  446,  446,  446,  446,  444,  444,
--      444,  444,  447,  448,  449,  450,  444,  444,  450,  450,
--      450,  450,  450,  444,  444,  444,  451,  444,  452,  444,
--      444,  444,  453,  453,   34,   34,   34,   34,   34,  454,
--      444,   34,   34,   34,   34,   34,   34,   34,   34,   34,
--       34,  444,  455,  456,  444,  457,  457,  444,  444,  447,
--      444,  447,  444,  448,  444,  444,  450,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  450,  450,  450,  450,
--      450,  444,  451,  444,  451,  444,  452,  444,  444,  444,
--      444,   34,   34,   34,   34,   34,   34,   34,  454,  444,
--
--      444,   34,   34,   34,   34,   34,   34,   34,   34,   34,
--       34,   34,   34,   34,   34,  444,  455,  455,  444,  458,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  450,  450,  450,  450,  450,  450,  444,  444,   34,
--       34,   34,  453,   34,  453,   34,   34,   34,   34,   34,
--       34,  453,   34,   34,   34,   34,   34,   34,   34,   34,
--       34,   34,  119,  444,  119,  459,  444,  444,  444,  444,
--      444,  444,  444,  444,  450,  450,  450,  450,  450,  450,
--       34,   34,   34,  444,   34,  444,   34,   34,  453,   34,
--      444,  444,   34,   34,   34,   34,   34,   34,   34,   34,
--
--       34,  460,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  450,  450,  450,  450,  450,  450,   34,   34,   34,
--       34,  453,  444,  192,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,   34,   34,   34,   34,   34,   34,
--      453,  461,  444,  444,  444,  444,  444,  462,  444,  450,
--      450,  450,  450,  450,  444,   34,   34,   34,   34,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,   34,   34,   34,   34,  453,  444,  463,  444,  464,
--      465,  466,  444,  444,  450,  444,  444,  444,  450,   34,
--       34,   34,   34,  444,  444,  444,  444,  444,  444,  444,
--
--      467,  444,  444,  444,  444,  444,   34,   34,   34,  444,
--      468,  444,  469,  444,  450,  444,   34,   34,   34,   34,
--      444,  444,  444,  444,  444,  444,  192,  444,  444,  444,
--      444,   34,  453,   34,  470,  444,  444,  450,  450,  450,
--       34,   34,   34,   34,  444,  444,  444,  444,  444,   34,
--      444,  453,  471,  444,  472,  473,  444,  450,  444,  444,
--       34,   34,   34,   34,   34,  444,  444,  444,  453,  444,
--      474,  444,  444,  450,   34,   34,   34,   34,   34,  444,
--      444,  444,  444,  475,  444,  444,  450,   34,   34,   34,
--       34,   34,  444,  444,  444,  476,  444,  450,   34,   34,
--
--       34,  444,  444,  444,  477,  444,  450,   34,  444,  478,
--       34,  444,  444,  444,  444,  479,  444,  450,   34,  444,
--      478,  478,  480,  444,  444,  444,  444,  481,  482,  444,
--      444,  444,  480,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,    0,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444
--    } ;
--
--static yyconst flex_int16_t yy_nxt[1507] =
--    {   0,
--       10,   11,   12,   13,   10,   10,   14,   10,   10,   10,
--       10,   15,   10,   52,   55,   55,   53,   55,   55,   75,
--      444,   56,   56,   61,   57,   57,   82,   82,   82,   82,
--       84,   92,   94,   58,   58,   10,   10,   10,   10,   17,
--       12,   13,   18,   10,   14,   10,   10,   10,   10,   15,
--       10,   59,   58,   58,   19,   92,   62,   95,   92,   96,
--       76,   92,   98,   85,   92,   92,   92,   92,   92,   92,
--       59,   92,   92,   10,   10,   10,  116,   82,   92,  117,
--      143,   20,  105,  142,  103,  109,  198,  102,   82,   82,
--      104,  106,  107,   21,   22,   23,   24,   25,   26,   27,
--
--       24,   28,   29,   28,   28,   28,   30,   31,   32,   33,
--       34,   35,   33,   36,   33,   37,   38,   33,   33,   33,
--       33,   33,   33,   33,   33,   33,   33,   33,   39,   33,
--       33,   40,   41,   24,   33,   33,   42,   43,   44,   45,
--       33,   33,   33,   46,   33,   47,   33,   48,   33,   49,
--       33,   50,   33,   51,   33,   33,   33,   33,   68,   58,
--       92,   69,   92,   92,   92,   61,   75,   58,   58,   75,
--       84,   92,  141,   70,   92,  110,   59,  144,   92,  134,
--      145,   92,   92,  112,  113,   59,  108,   68,   58,  115,
--       69,   92,  111,  114,  135,  147,   92,  301,   62,   92,
--
--       71,   92,   70,   85,  146,   59,  148,   76,   92,   92,
--       76,   92,   72,   73,   74,   91,   91,   91,   91,   91,
--       91,   91,   91,   91,   91,   91,   91,  151,  149,   71,
--      150,  152,  181,  153,  170,   92,  301,   92,  154,  155,
--       92,   72,   73,   74,   92,  269,  270,   92,   92,  171,
--       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
--       91,   91,   91,   91,   91,  156,  157,  158,  161,  182,
--      116,   82,  160,  117,   92,  183,  162,   92,  185,   93,
--       92,  203,  203,  159,   92,  443,  291,  204,   91,   91,
--       91,  163,  163,  164,  163,  163,  163,  163,  163,  163,
--
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  165,
--      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
--      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
--      165,  165,  165,  184,  184,  184,  184,  184,  184,  184,
--      184,  184,  184,  184,  184,   92,   92,   92,  219,   92,
--       92,  300,  342,   92,   92,  301,   92,   92,  188,  190,
--       92,   92,   92,  194,  152,  195,   92,   92,  184,  184,
--      184,  186,  186,  186,  186,  186,  186,  186,  186,  186,
--
--      186,  186,  186,  152,  152,  189,  187,   92,   92,   92,
--       92,  442,  193,  317,  196,   92,   92,   92,  199,  218,
--      220,   92,  221,   92,   92,   92,  186,  186,  186,  191,
--      192,  192,  191,  191,  191,  191,  191,  191,  191,  191,
--      191,  197,  201,  200,   92,  222,   92,   92,   92,  236,
--      203,  203,  290,  152,  152,  441,  204,   92,  292,  237,
--      239,  235,  240,   92,  191,  191,  191,  163,  163,  163,
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
--      163,  223,  223,  223,  223,  223,  223,  223,  223,  223,
--
--      223,  223,  223,   92,   92,   92,   92,  256,  258,  257,
--       92,  273,   92,  301,   92,   92,   92,  259,   92,   92,
--       92,  238,   92,  304,  158,   92,  223,  223,  223,  224,
--      224,  241,  272,  152,  152,  275,  293,  274,   92,  305,
--      273,   92,  225,  226,  152,  276,   92,   92,  227,   92,
--      307,   92,  314,  314,   92,  320,   92,  327,  327,  318,
--      319,   92,  314,  314,  440,   92,  274,  308,  228,  229,
--      230,   92,  309,  341,  334,  231,  332,  232,   92,  388,
--      337,   92,   92,  233,   92,  234,  255,  255,  255,  255,
--      255,  255,  255,  255,  255,  255,  255,  255,  338,  343,
--
--      333,  344,  389,   92,  361,  439,  339,   92,  350,   92,
--       92,  340,  340,  352,  362,  363,  301,   92,  437,   92,
--       92,  255,  255,  255,  260,  260,  260,  260,  260,  260,
--      260,  260,  260,  260,  260,  260,  354,  375,  390,   92,
--      376,   92,  364,  377,  355,  369,   92,   92,  152,  356,
--      356,  365,   92,   92,  392,   92,  436,  378,   92,  260,
--      260,  260,  277,  277,  277,  277,  277,  277,  277,  277,
--      277,  277,  277,  277,  379,   92,  399,  401,  400,   92,
--       92,  408,   92,  435,  152,   92,  434,  391,   92,  409,
--      409,   92,  411,   92,  427,  410,  426,  277,  277,  277,
--
--      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
--      286,  286,  414,  418,   92,   92,  420,  420,  418,  418,
--      425,  415,  421,  422,  422,   92,  429,  419,  424,  152,
--       92,  429,  429,  417,  152,  286,  286,  286,  287,  287,
--      287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
--      420,  420,  422,  422,  422,  422,  421,  431,  431,  431,
--      431,  431,  431,  413,  432,  412,  432,  407,  432,  406,
--      404,  403,  402,  287,  287,  287,  288,  288,  288,  288,
--      288,  288,  288,  288,  288,  288,  288,  288,  398,  397,
--      395,  394,  393,  387,  386,  385,  382,  381,  380,  374,
--
--      373,  372,  301,  301,  368,  367,  366,  358,  357,  304,
--      349,  288,  288,  288,  310,  310,  310,  310,  310,  310,
--      310,  310,  310,  310,  310,  310,  348,  301,  301,  301,
--      347,  346,  345,  336,  331,  330,  329,  328,  301,  325,
--      324,  301,  301,  323,  322,  321,  315,  313,  312,  310,
--      310,  310,  316,  316,  316,  316,  316,  316,  316,  316,
--      316,  316,  316,  316,  306,  303,  302,  299,  298,  297,
--      296,  295,  294,  289,  285,  284,  283,  282,  281,  280,
--      279,  271,  268,  267,  266,  265,  264,  316,  316,  316,
--      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
--
--      351,  351,  263,  262,  261,  254,  253,  252,  251,  250,
--      249,  248,  247,  246,  245,  244,  243,  217,  216,  215,
--      214,  213,  212,  211,  210,  351,  351,  351,  359,  359,
--      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
--      209,  208,  207,  206,  205,  180,  179,  178,  177,  176,
--      175,  174,  173,  172,  169,  168,  167,  118,  118,  100,
--      140,   92,   90,  359,  359,  359,  360,  360,  360,  360,
--      360,  360,  360,  360,  360,  360,  360,  360,  139,  444,
--      138,  444,  137,  136,  133,  132,  131,  130,  129,  128,
--      127,  126,  444,  125,  124,  123,  122,  118,  101,  100,
--
--       97,  360,  360,  360,  370,  370,  370,  370,  370,  370,
--      370,  370,  370,  370,  370,  370,   90,   89,   88,   87,
--       81,   80,   79,   78,   77,   66,   64,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  370,
--      370,  370,  383,  383,  383,  383,  383,  383,  383,  383,
--      383,  383,  383,  383,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  383,  383,  383,
--      430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
--      430,  430,  444,  444,  444,  444,  444,  444,  444,  444,
--
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  430,  430,  430,   16,   16,
--       16,   16,   16,   16,   16,   16,   16,   54,   54,   54,
--       54,   54,   54,   54,   54,   54,   60,   60,   60,   60,
--       60,   60,   60,   60,   60,   63,   63,   63,   63,   63,
--       63,   63,   63,   63,   65,   65,   65,   65,   65,   65,
--       65,   65,   65,   67,   67,  444,   67,   83,   83,   83,
--       83,   83,   83,   83,   83,   83,   86,   86,   86,   86,
--       86,   86,   86,   86,   86,   92,   92,   92,   92,   92,
--       92,   92,   92,   92,   99,   99,   99,   99,   99,   99,
--
--       99,  444,   99,  119,  444,  444,  444,  444,  444,  444,
--      119,  120,  120,  444,  120,  444,  120,  120,  120,  120,
--      121,  121,  121,  121,  121,  121,  121,  121,  121,  166,
--      166,  444,  166,  444,  166,  166,  166,  166,  202,  202,
--      444,  202,  444,  202,  202,  202,  202,  242,  242,  444,
--      242,  444,  242,  242,  242,  242,  278,  278,  444,  278,
--      444,  278,  278,  278,  278,  255,  255,  255,  255,  255,
--      444,  444,  255,  311,  311,  444,  311,  444,  311,  311,
--      311,  311,  286,  286,  286,  286,  286,  444,  444,  286,
--      287,  287,  287,  287,  287,  444,  444,  287,  288,  288,
--
--      288,  288,  288,  444,  444,  288,  326,  326,  326,  326,
--      326,  444,  444,  326,  335,  335,  444,  335,  444,  335,
--      335,  335,  335,  316,  316,  316,  316,  316,  444,  444,
--      316,  353,  353,  444,  353,  444,  353,  353,  353,  353,
--      371,  371,  444,  371,  444,  371,  371,  371,  371,  359,
--      359,  359,  359,  359,  444,  444,  359,  360,  360,  360,
--      360,  360,  444,  444,  360,  384,  384,  444,  384,  444,
--      384,  384,  384,  384,  396,  396,  444,  396,  444,  396,
--      396,  396,  396,  405,  405,  444,  405,  444,  405,  405,
--      405,  405,  416,  416,  444,  416,  444,  416,  416,  416,
--
--      416,  423,  423,  444,  444,  444,  423,  444,  423,  428,
--      428,  444,  428,  444,  428,  428,  428,  428,  433,  433,
--      433,  444,  433,  433,  444,  433,  438,  438,  444,  438,
--      444,  438,  438,  438,  438,  430,  430,  430,  430,  430,
--      444,  444,  430,    9,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--
--      444,  444,  444,  444,  444,  444
--    } ;
--
--static yyconst flex_int16_t yy_chk[1507] =
--    {   0,
--        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
--        1,    1,    1,    4,    5,    6,    4,    7,    8,   18,
--        0,    5,    6,   13,    7,    8,   25,   25,   26,   26,
--       27,   35,   35,   11,   11,    1,    1,    1,    2,    2,
--        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
--        2,   11,   12,   12,    2,   37,   13,   36,   36,   37,
--       18,   42,   39,   27,   43,   44,   45,   46,   48,  159,
--       12,   39,   96,    2,    2,    2,   52,   52,   95,   52,
--       96,    2,   44,   95,   43,   48,  159,   42,   82,   82,
--       43,   45,   46,    2,    2,    2,    3,    3,    3,    3,
--
--        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
--        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
--        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
--        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
--        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
--        3,    3,    3,    3,    3,    3,    3,    3,   17,   17,
--       47,   17,   49,   50,   51,   60,   69,   58,   58,   75,
--       83,   94,   94,   17,   97,   49,   17,   97,  102,   79,
--       98,  104,  103,   50,   50,   58,   47,   68,   68,   51,
--       68,   98,   49,   50,   79,  103,  105,  443,   60,  106,
--
--       17,  107,   68,   83,  102,   68,  104,   69,  108,  109,
--       75,  110,   17,   17,   17,   33,   33,   33,   33,   33,
--       33,   33,   33,   33,   33,   33,   33,  107,  105,   68,
--      106,  107,  140,  108,  128,  140,  442,  111,  109,  110,
--      112,   68,   68,   68,  114,  233,  233,  115,  113,  128,
--       33,   33,   33,   34,   34,   34,   34,   34,   34,   34,
--       34,   34,   34,   34,   34,  111,  112,  113,  115,  141,
--      116,  116,  114,  116,  144,  142,  115,  142,  144,   34,
--      141,  167,  167,  113,  257,  441,  257,  167,   34,   34,
--       34,  119,  119,  119,  119,  119,  119,  119,  119,  119,
--
--      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
--      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
--      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
--      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
--      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
--      119,  119,  119,  143,  143,  143,  143,  143,  143,  143,
--      143,  143,  143,  143,  143,  153,  149,  151,  182,  318,
--      155,  267,  318,  156,  182,  267,  147,  148,  149,  151,
--      146,  150,  154,  155,  153,  156,  157,  160,  143,  143,
--      143,  145,  145,  145,  145,  145,  145,  145,  145,  145,
--
--      145,  145,  145,  146,  147,  150,  148,  181,  183,  290,
--      185,  440,  154,  290,  157,  187,  158,  161,  160,  181,
--      183,  162,  185,  188,  190,  194,  145,  145,  145,  152,
--      152,  152,  152,  152,  152,  152,  152,  152,  152,  152,
--      152,  158,  162,  161,  193,  187,  195,  199,  198,  194,
--      203,  203,  256,  188,  190,  439,  203,  256,  258,  195,
--      198,  193,  199,  258,  152,  152,  152,  163,  163,  163,
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
--      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
--      163,  189,  189,  189,  189,  189,  189,  189,  189,  189,
--
--      189,  189,  189,  196,  197,  201,  200,  218,  220,  219,
--      221,  236,  237,  437,  239,  240,  235,  221,  238,  218,
--      220,  197,  219,  270,  201,  236,  189,  189,  189,  192,
--      192,  200,  235,  196,  238,  237,  259,  236,  272,  270,
--      273,  259,  192,  192,  239,  240,  274,  291,  192,  307,
--      272,  275,  284,  284,  273,  293,  292,  301,  301,  291,
--      292,  309,  314,  314,  436,  293,  273,  274,  192,  192,
--      192,  308,  275,  317,  309,  192,  307,  192,  332,  375,
--      314,  317,  375,  192,  334,  192,  217,  217,  217,  217,
--      217,  217,  217,  217,  217,  217,  217,  217,  315,  319,
--
--      308,  320,  376,  376,  341,  435,  315,  319,  332,  341,
--      320,  315,  315,  334,  342,  343,  434,  350,  427,  342,
--      343,  217,  217,  217,  222,  222,  222,  222,  222,  222,
--      222,  222,  222,  222,  222,  222,  336,  361,  377,  344,
--      362,  377,  344,  363,  336,  350,  361,  362,  388,  336,
--      336,  344,  363,  364,  379,  379,  426,  364,  388,  222,
--      222,  222,  241,  241,  241,  241,  241,  241,  241,  241,
--      241,  241,  241,  241,  365,  378,  389,  391,  390,  365,
--      392,  399,  391,  425,  392,  389,  424,  378,  390,  400,
--      400,  399,  401,  401,  415,  400,  414,  241,  241,  241,
--
--      251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
--      251,  251,  404,  407,  400,  408,  409,  409,  407,  407,
--      413,  404,  409,  410,  410,  411,  417,  408,  412,  411,
--      419,  417,  417,  406,  419,  251,  251,  251,  252,  252,
--      252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
--      420,  420,  421,  421,  422,  422,  420,  423,  423,  431,
--      431,  433,  433,  403,  423,  402,  431,  398,  433,  397,
--      395,  394,  393,  252,  252,  252,  253,  253,  253,  253,
--      253,  253,  253,  253,  253,  253,  253,  253,  387,  385,
--      382,  381,  380,  374,  373,  372,  368,  367,  366,  358,
--
--      357,  354,  349,  348,  347,  346,  345,  338,  337,  331,
--      330,  253,  253,  253,  276,  276,  276,  276,  276,  276,
--      276,  276,  276,  276,  276,  276,  329,  328,  325,  324,
--      323,  322,  321,  312,  306,  305,  304,  303,  302,  300,
--      299,  298,  297,  296,  295,  294,  285,  283,  279,  276,
--      276,  276,  289,  289,  289,  289,  289,  289,  289,  289,
--      289,  289,  289,  289,  271,  269,  268,  266,  265,  264,
--      263,  262,  261,  254,  250,  249,  247,  246,  245,  244,
--      243,  234,  232,  231,  230,  229,  228,  289,  289,  289,
--      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
--
--      333,  333,  227,  226,  225,  216,  215,  214,  213,  212,
--      211,  210,  209,  208,  207,  206,  205,  180,  179,  178,
--      177,  176,  175,  174,  173,  333,  333,  333,  339,  339,
--      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
--      172,  171,  170,  169,  168,  137,  136,  135,  134,  133,
--      132,  131,  130,  129,  127,  126,  124,  118,  117,   99,
--       93,   92,   90,  339,  339,  339,  340,  340,  340,  340,
--      340,  340,  340,  340,  340,  340,  340,  340,   88,   87,
--       86,   85,   81,   80,   78,   77,   76,   74,   73,   72,
--       71,   70,   64,   63,   59,   57,   56,   53,   41,   40,
--
--       38,  340,  340,  340,  352,  352,  352,  352,  352,  352,
--      352,  352,  352,  352,  352,  352,   32,   31,   30,   29,
--       23,   22,   21,   20,   19,   15,   14,    9,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,  352,
--      352,  352,  369,  369,  369,  369,  369,  369,  369,  369,
--      369,  369,  369,  369,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,    0,    0,  369,  369,  369,
--      418,  418,  418,  418,  418,  418,  418,  418,  418,  418,
--      418,  418,    0,    0,    0,    0,    0,    0,    0,    0,
--
--        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
--        0,    0,    0,    0,    0,  418,  418,  418,  445,  445,
--      445,  445,  445,  445,  445,  445,  445,  446,  446,  446,
--      446,  446,  446,  446,  446,  446,  447,  447,  447,  447,
--      447,  447,  447,  447,  447,  448,  448,  448,  448,  448,
--      448,  448,  448,  448,  449,  449,  449,  449,  449,  449,
--      449,  449,  449,  450,  450,    0,  450,  451,  451,  451,
--      451,  451,  451,  451,  451,  451,  452,  452,  452,  452,
--      452,  452,  452,  452,  452,  453,  453,  453,  453,  453,
--      453,  453,  453,  453,  454,  454,  454,  454,  454,  454,
--
--      454,    0,  454,  455,    0,    0,    0,    0,    0,    0,
--      455,  456,  456,    0,  456,    0,  456,  456,  456,  456,
--      457,  457,  457,  457,  457,  457,  457,  457,  457,  458,
--      458,    0,  458,    0,  458,  458,  458,  458,  459,  459,
--        0,  459,    0,  459,  459,  459,  459,  460,  460,    0,
--      460,    0,  460,  460,  460,  460,  461,  461,    0,  461,
--        0,  461,  461,  461,  461,  462,  462,  462,  462,  462,
--        0,    0,  462,  463,  463,    0,  463,    0,  463,  463,
--      463,  463,  464,  464,  464,  464,  464,    0,    0,  464,
--      465,  465,  465,  465,  465,    0,    0,  465,  466,  466,
--
--      466,  466,  466,    0,    0,  466,  467,  467,  467,  467,
--      467,    0,    0,  467,  468,  468,    0,  468,    0,  468,
--      468,  468,  468,  469,  469,  469,  469,  469,    0,    0,
--      469,  470,  470,    0,  470,    0,  470,  470,  470,  470,
--      471,  471,    0,  471,    0,  471,  471,  471,  471,  472,
--      472,  472,  472,  472,    0,    0,  472,  473,  473,  473,
--      473,  473,    0,    0,  473,  474,  474,    0,  474,    0,
--      474,  474,  474,  474,  475,  475,    0,  475,    0,  475,
--      475,  475,  475,  476,  476,    0,  476,    0,  476,  476,
--      476,  476,  477,  477,    0,  477,    0,  477,  477,  477,
--
--      477,  478,  478,    0,    0,    0,  478,    0,  478,  479,
--      479,    0,  479,    0,  479,  479,  479,  479,  480,  480,
--      480,    0,  480,  480,    0,  480,  481,  481,    0,  481,
--        0,  481,  481,  481,  481,  482,  482,  482,  482,  482,
--        0,    0,  482,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--      444,  444,  444,  444,  444,  444,  444,  444,  444,  444,
--
--      444,  444,  444,  444,  444,  444
--    } ;
--
--static yy_state_type yy_last_accepting_state;
--static char *yy_last_accepting_cpos;
--
--extern int yy_flex_debug;
--int yy_flex_debug = 0;
--
--/* The intent behind this definition is that it'll catch
-- * any uses of REJECT which flex missed.
-- */
--#define REJECT reject_used_but_not_detected
--#define yymore() yymore_used_but_not_detected
--#define YY_MORE_ADJ 0
--#define YY_RESTORE_YY_MORE_OFFSET
--char *yytext;
--#line 1 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* -*- indented-text -*- */
--/* Process source files and output type information.
--   Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009
--   Free Software Foundation, Inc.
--
--This file is part of GCC.
--
--GCC 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.
--
--GCC is distributed in the hope that it will be useful, but WITHOUT ANY
--WARRANTY; without even the implied warranty of MERCHANTABILITY or
--FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
--for more details.
--
--You should have received a copy of the GNU General Public License
--along with GCC; see the file COPYING3.  If not see
--<http://www.gnu.org/licenses/>.  */
--#line 23 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--#include "bconfig.h"
--#include "system.h"
--
--#define malloc xmalloc
--#define realloc xrealloc
--
--#include "gengtype.h"
--
--#define YY_NO_INPUT
--#define YY_DECL int yylex (const char **yylval)
--#define yyterminate() return EOF_TOKEN
--
--struct fileloc lexer_line;
--int lexer_toplevel_done;
--
--static void 
--update_lineno (const char *l, size_t len)
--{
--  while (len-- > 0)
--    if (*l++ == '\n')
--      lexer_line.line++;
--}
--
--
--#line 986 "gengtype-lex.c"
--
--#define INITIAL 0
--#define in_struct 1
--#define in_struct_comment 2
--#define in_comment 3
--
--#ifndef YY_NO_UNISTD_H
--/* Special case for "unistd.h", since it is non-ANSI. We include it way
-- * down here because we want the user's section 1 to have been scanned first.
-- * The user has a chance to override it with an option.
-- */
--#include <unistd.h>
--#endif
--
--#ifndef YY_EXTRA_TYPE
--#define YY_EXTRA_TYPE void *
--#endif
--
--static int yy_init_globals (void );
--
--/* Accessor methods to globals.
--   These are made visible to non-reentrant scanners for convenience. */
--
--int yylex_destroy (void );
--
--int yyget_debug (void );
--
--void yyset_debug (int debug_flag  );
--
--YY_EXTRA_TYPE yyget_extra (void );
--
--void yyset_extra (YY_EXTRA_TYPE user_defined  );
--
--FILE *yyget_in (void );
--
--void yyset_in  (FILE * in_str  );
--
--FILE *yyget_out (void );
--
--void yyset_out  (FILE * out_str  );
--
--int yyget_leng (void );
--
--char *yyget_text (void );
--
--int yyget_lineno (void );
--
--void yyset_lineno (int line_number  );
--
--/* Macros after this point can all be overridden by user definitions in
-- * section 1.
-- */
--
--#ifndef YY_SKIP_YYWRAP
--#ifdef __cplusplus
--extern "C" int yywrap (void );
--#else
--extern int yywrap (void );
--#endif
--#endif
--
--#ifndef yytext_ptr
--static void yy_flex_strncpy (char *,yyconst char *,int );
--#endif
--
--#ifdef YY_NEED_STRLEN
--static int yy_flex_strlen (yyconst char * );
--#endif
--
--#ifndef YY_NO_INPUT
--
--#ifdef __cplusplus
--static int yyinput (void );
--#else
--static int input (void );
--#endif
--
--#endif
--
--/* Amount of stuff to slurp up with each read. */
--#ifndef YY_READ_BUF_SIZE
--#define YY_READ_BUF_SIZE 8192
--#endif
--
--/* Copy whatever the last rule matched to the standard output. */
--#ifndef ECHO
--/* This used to be an fputs(), but since the string might contain NUL's,
-- * we now use fwrite().
-- */
--#define ECHO fwrite( yytext, yyleng, 1, yyout )
--#endif
--
--/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
-- * is returned in "result".
-- */
--#ifndef YY_INPUT
--#define YY_INPUT(buf,result,max_size) \
--      if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
--              { \
--              int c = '*'; \
--              unsigned n; \
--              for ( n = 0; n < max_size && \
--                           (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
--                      buf[n] = (char) c; \
--              if ( c == '\n' ) \
--                      buf[n++] = (char) c; \
--              if ( c == EOF && ferror( yyin ) ) \
--                      YY_FATAL_ERROR( "input in flex scanner failed" ); \
--              result = n; \
--              } \
--      else \
--              { \
--              errno=0; \
--              while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
--                      { \
--                      if( errno != EINTR) \
--                              { \
--                              YY_FATAL_ERROR( "input in flex scanner failed" ); \
--                              break; \
--                              } \
--                      errno=0; \
--                      clearerr(yyin); \
--                      } \
--              }\
--\
--
--#endif
--
--/* No semi-colon after return; correct usage is to write "yyterminate();" -
-- * we don't want an extra ';' after the "return" because that will cause
-- * some compilers to complain about unreachable statements.
-- */
--#ifndef yyterminate
--#define yyterminate() return YY_NULL
--#endif
--
--/* Number of entries by which start-condition stack grows. */
--#ifndef YY_START_STACK_INCR
--#define YY_START_STACK_INCR 25
--#endif
--
--/* Report a fatal error. */
--#ifndef YY_FATAL_ERROR
--#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
--#endif
--
--/* end tables serialization structures and prototypes */
--
--/* Default declaration of generated scanner - a define so the user can
-- * easily add parameters.
-- */
--#ifndef YY_DECL
--#define YY_DECL_IS_OURS 1
--
--extern int yylex (void);
--
--#define YY_DECL int yylex (void)
--#endif /* !YY_DECL */
--
--/* Code executed at the beginning of each rule, after yytext and yyleng
-- * have been set up.
-- */
--#ifndef YY_USER_ACTION
--#define YY_USER_ACTION
--#endif
--
--/* Code executed at the end of each rule. */
--#ifndef YY_BREAK
--#define YY_BREAK break;
--#endif
--
--#define YY_RULE_SETUP \
--      if ( yyleng > 0 ) \
--              YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
--                              (yytext[yyleng - 1] == '\n'); \
--      YY_USER_ACTION
--
--/** The main scanner function which does all the work.
-- */
--YY_DECL
--{
--      register yy_state_type yy_current_state;
--      register char *yy_cp, *yy_bp;
--      register int yy_act;
--    
--#line 58 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--
--  /* Do this on entry to yylex():  */
--  *yylval = 0;
--  if (lexer_toplevel_done)
--    {
--      BEGIN(INITIAL);
--      lexer_toplevel_done = 0;
--    }
--
--  /* Things we look for in skipping mode: */
--#line 1183 "gengtype-lex.c"
--
--      if ( !(yy_init) )
--              {
--              (yy_init) = 1;
--
--#ifdef YY_USER_INIT
--              YY_USER_INIT;
--#endif
--
--              if ( ! (yy_start) )
--                      (yy_start) = 1; /* first start state */
--
--              if ( ! yyin )
--                      yyin = stdin;
--
--              if ( ! yyout )
--                      yyout = stdout;
--
--              if ( ! YY_CURRENT_BUFFER ) {
--                      yyensure_buffer_stack ();
--                      YY_CURRENT_BUFFER_LVALUE =
--                              yy_create_buffer(yyin,YY_BUF_SIZE );
--              }
--
--              yy_load_buffer_state( );
--              }
--
--      while ( 1 )             /* loops until end-of-file is reached */
--              {
--              yy_cp = (yy_c_buf_p);
--
--              /* Support of yytext. */
--              *yy_cp = (yy_hold_char);
--
--              /* yy_bp points to the position in yy_ch_buf of the start of
--               * the current run.
--               */
--              yy_bp = yy_cp;
--
--              yy_current_state = (yy_start);
--              yy_current_state += YY_AT_BOL();
--yy_match:
--              do
--                      {
--                      register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
--                      if ( yy_accept[yy_current_state] )
--                              {
--                              (yy_last_accepting_state) = yy_current_state;
--                              (yy_last_accepting_cpos) = yy_cp;
--                              }
--                      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
--                              {
--                              yy_current_state = (int) yy_def[yy_current_state];
--                              if ( yy_current_state >= 445 )
--                                      yy_c = yy_meta[(unsigned int) yy_c];
--                              }
--                      yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
--                      ++yy_cp;
--                      }
--              while ( yy_current_state != 444 );
--              yy_cp = (yy_last_accepting_cpos);
--              yy_current_state = (yy_last_accepting_state);
--
--yy_find_action:
--              yy_act = yy_accept[yy_current_state];
--
--              YY_DO_BEFORE_ACTION;
--
--do_action:    /* This label is used only to access EOF actions. */
--
--              switch ( yy_act )
--      { /* beginning of action switch */
--                      case 0: /* must back up */
--                      /* undo the effects of YY_DO_BEFORE_ACTION */
--                      *yy_cp = (yy_hold_char);
--                      yy_cp = (yy_last_accepting_cpos);
--                      yy_current_state = (yy_last_accepting_state);
--                      goto yy_find_action;
--
--case 1:
--/* rule 1 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 69 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return TYPEDEF;
--}
--      YY_BREAK
--case 2:
--/* rule 2 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 73 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return STRUCT;
--}
--      YY_BREAK
--case 3:
--/* rule 3 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 77 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return UNION;
--}
--      YY_BREAK
--case 4:
--/* rule 4 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 81 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return EXTERN;
--}
--      YY_BREAK
--case 5:
--/* rule 5 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 85 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return STATIC;
--}
--      YY_BREAK
--case 6:
--/* rule 6 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 90 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return DEFVEC_OP;
--}
--      YY_BREAK
--case 7:
--/* rule 7 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 94 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return DEFVEC_I;
--}
--      YY_BREAK
--case 8:
--/* rule 8 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 98 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  BEGIN(in_struct);
--  return DEFVEC_ALLOC;
--}
--      YY_BREAK
--
--
--case 9:
--YY_RULE_SETUP
--#line 106 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ BEGIN(in_struct_comment); }
--      YY_BREAK
--case 10:
--/* rule 10 can match eol */
--YY_RULE_SETUP
--#line 108 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ update_lineno (yytext, yyleng); }
--      YY_BREAK
--case 11:
--/* rule 11 can match eol */
--YY_RULE_SETUP
--#line 109 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ lexer_line.line++; }
--      YY_BREAK
--case 12:
--/* rule 12 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 5;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 111 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* don't care */
--      YY_BREAK
--case 13:
--/* rule 13 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 3;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 112 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return GTY_TOKEN; }
--      YY_BREAK
--case 14:
--/* rule 14 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 3;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 113 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return VEC_TOKEN; }
--      YY_BREAK
--case 15:
--/* rule 15 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 5;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 114 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return UNION; }
--      YY_BREAK
--case 16:
--/* rule 16 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 6;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 115 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return STRUCT; }
--      YY_BREAK
--case 17:
--/* rule 17 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 4;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 116 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return ENUM; }
--      YY_BREAK
--case 18:
--/* rule 18 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 9;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 117 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return PTR_ALIAS; }
--      YY_BREAK
--case 19:
--/* rule 19 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 10;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 118 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return NESTED_PTR; }
--      YY_BREAK
--case 20:
--YY_RULE_SETUP
--#line 119 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return NUM; }
--      YY_BREAK
--case 21:
--/* rule 21 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 120 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
--  return PARAM_IS;
--}
--      YY_BREAK
--case 22:
--/* rule 22 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--#line 126 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--case 23:
--/* rule 23 can match eol */
--YY_RULE_SETUP
--#line 126 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  size_t len;
--
--  for (len = yyleng; ISSPACE (yytext[len-1]); len--)
--    ;
--
--  *yylval = XDUPVAR (const char, yytext, len, len+1);
--  update_lineno (yytext, yyleng);
--  return SCALAR;
--}
--      YY_BREAK
--case 24:
--/* rule 24 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp -= 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 138 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
--  return ID;
--}
--      YY_BREAK
--case 25:
--/* rule 25 can match eol */
--YY_RULE_SETUP
--#line 143 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
--  return STRING;
--}
--      YY_BREAK
--/* This "terminal" avoids having to parse integer constant expressions.  */
--case 26:
--/* rule 26 can match eol */
--YY_RULE_SETUP
--#line 148 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
--  return ARRAY;
--}
--      YY_BREAK
--case 27:
--/* rule 27 can match eol */
--YY_RULE_SETUP
--#line 152 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
--  return CHAR;
--}
--      YY_BREAK
--case 28:
--YY_RULE_SETUP
--#line 157 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return ELLIPSIS; }
--      YY_BREAK
--case 29:
--YY_RULE_SETUP
--#line 158 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ return yytext[0]; }
--      YY_BREAK
--/* ignore pp-directives */
--case 30:
--/* rule 30 can match eol */
--YY_RULE_SETUP
--#line 161 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{lexer_line.line++;}
--      YY_BREAK
--case 31:
--YY_RULE_SETUP
--#line 163 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  error_at_line (&lexer_line, "unexpected character `%s'", yytext);
--}
--      YY_BREAK
--
--case 32:
--YY_RULE_SETUP
--#line 168 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ BEGIN(in_comment); }
--      YY_BREAK
--case 33:
--/* rule 33 can match eol */
--YY_RULE_SETUP
--#line 169 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ lexer_line.line++; }
--      YY_BREAK
--case 34:
--#line 171 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--case 35:
--/* rule 35 can match eol */
--#line 172 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--case 36:
--/* rule 36 can match eol */
--YY_RULE_SETUP
--#line 172 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* do nothing */
--      YY_BREAK
--case 37:
--/* rule 37 can match eol */
--YY_RULE_SETUP
--#line 173 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ update_lineno (yytext, yyleng); }
--      YY_BREAK
--case 38:
--/* rule 38 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 174 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* do nothing */
--      YY_BREAK
--
--case 39:
--/* rule 39 can match eol */
--YY_RULE_SETUP
--#line 177 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ lexer_line.line++; }
--      YY_BREAK
--case 40:
--#line 179 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--case 41:
--YY_RULE_SETUP
--#line 179 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* do nothing */
--      YY_BREAK
--case 42:
--/* rule 42 can match eol */
--*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
--(yy_c_buf_p) = yy_cp = yy_bp + 1;
--YY_DO_BEFORE_ACTION; /* set up yytext again */
--YY_RULE_SETUP
--#line 180 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* do nothing */
--      YY_BREAK
--
--case 43:
--YY_RULE_SETUP
--#line 182 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ BEGIN(INITIAL); } 
--      YY_BREAK
--case 44:
--YY_RULE_SETUP
--#line 183 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{ BEGIN(in_struct); }
--      YY_BREAK
--case 45:
--#line 186 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--case 46:
--YY_RULE_SETUP
--#line 186 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  error_at_line (&lexer_line, 
--               "unterminated comment or string; unexpected EOF");
--}
--      YY_BREAK
--case 47:
--/* rule 47 can match eol */
--YY_RULE_SETUP
--#line 191 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--/* do nothing */
--      YY_BREAK
--case 48:
--/* rule 48 can match eol */
--YY_RULE_SETUP
--#line 192 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--{
--  error_at_line (&lexer_line, "stray GTY marker");
--}
--      YY_BREAK
--case 49:
--YY_RULE_SETUP
--#line 196 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--YY_FATAL_ERROR( "flex scanner jammed" );
--      YY_BREAK
--#line 1653 "gengtype-lex.c"
--case YY_STATE_EOF(INITIAL):
--case YY_STATE_EOF(in_struct):
--case YY_STATE_EOF(in_struct_comment):
--case YY_STATE_EOF(in_comment):
--      yyterminate();
--
--      case YY_END_OF_BUFFER:
--              {
--              /* Amount of text matched not including the EOB char. */
--              int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
--
--              /* Undo the effects of YY_DO_BEFORE_ACTION. */
--              *yy_cp = (yy_hold_char);
--              YY_RESTORE_YY_MORE_OFFSET
--
--              if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
--                      {
--                      /* We're scanning a new file or input source.  It's
--                       * possible that this happened because the user
--                       * just pointed yyin at a new source and called
--                       * yylex().  If so, then we have to assure
--                       * consistency between YY_CURRENT_BUFFER and our
--                       * globals.  Here is the right place to do so, because
--                       * this is the first action (other than possibly a
--                       * back-up) that will match for the new input source.
--                       */
--                      (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
--                      YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
--                      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
--                      }
--
--              /* Note that here we test for yy_c_buf_p "<=" to the position
--               * of the first EOB in the buffer, since yy_c_buf_p will
--               * already have been incremented past the NUL character
--               * (since all states make transitions on EOB to the
--               * end-of-buffer state).  Contrast this with the test
--               * in input().
--               */
--              if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
--                      { /* This was really a NUL. */
--                      yy_state_type yy_next_state;
--
--                      (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
--
--                      yy_current_state = yy_get_previous_state(  );
--
--                      /* Okay, we're now positioned to make the NUL
--                       * transition.  We couldn't have
--                       * yy_get_previous_state() go ahead and do it
--                       * for us because it doesn't know how to deal
--                       * with the possibility of jamming (and we don't
--                       * want to build jamming into it because then it
--                       * will run more slowly).
--                       */
--
--                      yy_next_state = yy_try_NUL_trans( yy_current_state );
--
--                      yy_bp = (yytext_ptr) + YY_MORE_ADJ;
--
--                      if ( yy_next_state )
--                              {
--                              /* Consume the NUL. */
--                              yy_cp = ++(yy_c_buf_p);
--                              yy_current_state = yy_next_state;
--                              goto yy_match;
--                              }
--
--                      else
--                              {
--                              yy_cp = (yy_last_accepting_cpos);
--                              yy_current_state = (yy_last_accepting_state);
--                              goto yy_find_action;
--                              }
--                      }
--
--              else switch ( yy_get_next_buffer(  ) )
--                      {
--                      case EOB_ACT_END_OF_FILE:
--                              {
--                              (yy_did_buffer_switch_on_eof) = 0;
--
--                              if ( yywrap( ) )
--                                      {
--                                      /* Note: because we've taken care in
--                                       * yy_get_next_buffer() to have set up
--                                       * yytext, we can now set up
--                                       * yy_c_buf_p so that if some total
--                                       * hoser (like flex itself) wants to
--                                       * call the scanner after we return the
--                                       * YY_NULL, it'll still work - another
--                                       * YY_NULL will get returned.
--                                       */
--                                      (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
--
--                                      yy_act = YY_STATE_EOF(YY_START);
--                                      goto do_action;
--                                      }
--
--                              else
--                                      {
--                                      if ( ! (yy_did_buffer_switch_on_eof) )
--                                              YY_NEW_FILE;
--                                      }
--                              break;
--                              }
--
--                      case EOB_ACT_CONTINUE_SCAN:
--                              (yy_c_buf_p) =
--                                      (yytext_ptr) + yy_amount_of_matched_text;
--
--                              yy_current_state = yy_get_previous_state(  );
--
--                              yy_cp = (yy_c_buf_p);
--                              yy_bp = (yytext_ptr) + YY_MORE_ADJ;
--                              goto yy_match;
--
--                      case EOB_ACT_LAST_MATCH:
--                              (yy_c_buf_p) =
--                              &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
--
--                              yy_current_state = yy_get_previous_state(  );
--
--                              yy_cp = (yy_c_buf_p);
--                              yy_bp = (yytext_ptr) + YY_MORE_ADJ;
--                              goto yy_find_action;
--                      }
--              break;
--              }
--
--      default:
--              YY_FATAL_ERROR(
--                      "fatal flex scanner internal error--no action found" );
--      } /* end of action switch */
--              } /* end of scanning one token */
--} /* end of yylex */
--
--/* yy_get_next_buffer - try to read in a new buffer
-- *
-- * Returns a code representing an action:
-- *    EOB_ACT_LAST_MATCH -
-- *    EOB_ACT_CONTINUE_SCAN - continue scanning from current position
-- *    EOB_ACT_END_OF_FILE - end of file
-- */
--static int yy_get_next_buffer (void)
--{
--      register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
--      register char *source = (yytext_ptr);
--      register int number_to_move, i;
--      int ret_val;
--
--      if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
--              YY_FATAL_ERROR(
--              "fatal flex scanner internal error--end of buffer missed" );
--
--      if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
--              { /* Don't try to fill the buffer, so this is an EOF. */
--              if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
--                      {
--                      /* We matched a single character, the EOB, so
--                       * treat this as a final EOF.
--                       */
--                      return EOB_ACT_END_OF_FILE;
--                      }
--
--              else
--                      {
--                      /* We matched some text prior to the EOB, first
--                       * process it.
--                       */
--                      return EOB_ACT_LAST_MATCH;
--                      }
--              }
--
--      /* Try to read more data. */
--
--      /* First move last chars to start of buffer. */
--      number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
--
--      for ( i = 0; i < number_to_move; ++i )
--              *(dest++) = *(source++);
--
--      if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
--              /* don't do the read, it's not guaranteed to return an EOF,
--               * just force an EOF
--               */
--              YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
--
--      else
--              {
--                      int num_to_read =
--                      YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
--
--              while ( num_to_read <= 0 )
--                      { /* Not enough room in the buffer - grow it. */
--
--                      /* just a shorter name for the current buffer */
--                      YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
--
--                      int yy_c_buf_p_offset =
--                              (int) ((yy_c_buf_p) - b->yy_ch_buf);
--
--                      if ( b->yy_is_our_buffer )
--                              {
--                              int new_size = b->yy_buf_size * 2;
--
--                              if ( new_size <= 0 )
--                                      b->yy_buf_size += b->yy_buf_size / 8;
--                              else
--                                      b->yy_buf_size *= 2;
--
--                              b->yy_ch_buf = (char *)
--                                      /* Include room in for 2 EOB chars. */
--                                      yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
--                              }
--                      else
--                              /* Can't grow it, we don't own it. */
--                              b->yy_ch_buf = 0;
--
--                      if ( ! b->yy_ch_buf )
--                              YY_FATAL_ERROR(
--                              "fatal error - scanner input buffer overflow" );
--
--                      (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
--
--                      num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
--                                              number_to_move - 1;
--
--                      }
--
--              if ( num_to_read > YY_READ_BUF_SIZE )
--                      num_to_read = YY_READ_BUF_SIZE;
--
--              /* Read in more data. */
--              YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
--                      (yy_n_chars), (size_t) num_to_read );
--
--              YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
--              }
--
--      if ( (yy_n_chars) == 0 )
--              {
--              if ( number_to_move == YY_MORE_ADJ )
--                      {
--                      ret_val = EOB_ACT_END_OF_FILE;
--                      yyrestart(yyin  );
--                      }
--
--              else
--                      {
--                      ret_val = EOB_ACT_LAST_MATCH;
--                      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
--                              YY_BUFFER_EOF_PENDING;
--                      }
--              }
--
--      else
--              ret_val = EOB_ACT_CONTINUE_SCAN;
--
--      if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
--              /* Extend the array by 50%, plus the number we really need. */
--              yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
--              YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
--              if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
--                      YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
--      }
--
--      (yy_n_chars) += number_to_move;
--      YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
--      YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
--
--      (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
--
--      return ret_val;
--}
--
--/* yy_get_previous_state - get the state just before the EOB char was reached */
--
--    static yy_state_type yy_get_previous_state (void)
--{
--      register yy_state_type yy_current_state;
--      register char *yy_cp;
--    
--      yy_current_state = (yy_start);
--      yy_current_state += YY_AT_BOL();
--
--      for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
--              {
--              register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
--              if ( yy_accept[yy_current_state] )
--                      {
--                      (yy_last_accepting_state) = yy_current_state;
--                      (yy_last_accepting_cpos) = yy_cp;
--                      }
--              while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
--                      {
--                      yy_current_state = (int) yy_def[yy_current_state];
--                      if ( yy_current_state >= 445 )
--                              yy_c = yy_meta[(unsigned int) yy_c];
--                      }
--              yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
--              }
--
--      return yy_current_state;
--}
--
--/* yy_try_NUL_trans - try to make a transition on the NUL character
-- *
-- * synopsis
-- *    next_state = yy_try_NUL_trans( current_state );
-- */
--    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
--{
--      register int yy_is_jam;
--      register char *yy_cp = (yy_c_buf_p);
--
--      register YY_CHAR yy_c = 1;
--      if ( yy_accept[yy_current_state] )
--              {
--              (yy_last_accepting_state) = yy_current_state;
--              (yy_last_accepting_cpos) = yy_cp;
--              }
--      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
--              {
--              yy_current_state = (int) yy_def[yy_current_state];
--              if ( yy_current_state >= 445 )
--                      yy_c = yy_meta[(unsigned int) yy_c];
--              }
--      yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
--      yy_is_jam = (yy_current_state == 444);
--
--      return yy_is_jam ? 0 : yy_current_state;
--}
--
--#ifndef YY_NO_INPUT
--#ifdef __cplusplus
--    static int yyinput (void)
--#else
--    static int input  (void)
--#endif
--
--{
--      int c;
--    
--      *(yy_c_buf_p) = (yy_hold_char);
--
--      if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
--              {
--              /* yy_c_buf_p now points to the character we want to return.
--               * If this occurs *before* the EOB characters, then it's a
--               * valid NUL; if not, then we've hit the end of the buffer.
--               */
--              if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
--                      /* This was really a NUL. */
--                      *(yy_c_buf_p) = '\0';
--
--              else
--                      { /* need more input */
--                      int offset = (yy_c_buf_p) - (yytext_ptr);
--                      ++(yy_c_buf_p);
--
--                      switch ( yy_get_next_buffer(  ) )
--                              {
--                              case EOB_ACT_LAST_MATCH:
--                                      /* This happens because yy_g_n_b()
--                                       * sees that we've accumulated a
--                                       * token and flags that we need to
--                                       * try matching the token before
--                                       * proceeding.  But for input(),
--                                       * there's no matching to consider.
--                                       * So convert the EOB_ACT_LAST_MATCH
--                                       * to EOB_ACT_END_OF_FILE.
--                                       */
--
--                                      /* Reset buffer status. */
--                                      yyrestart(yyin );
--
--                                      /*FALLTHROUGH*/
--
--                              case EOB_ACT_END_OF_FILE:
--                                      {
--                                      if ( yywrap( ) )
--                                              return EOF;
--
--                                      if ( ! (yy_did_buffer_switch_on_eof) )
--                                              YY_NEW_FILE;
--#ifdef __cplusplus
--                                      return yyinput();
--#else
--                                      return input();
--#endif
--                                      }
--
--                              case EOB_ACT_CONTINUE_SCAN:
--                                      (yy_c_buf_p) = (yytext_ptr) + offset;
--                                      break;
--                              }
--                      }
--              }
--
--      c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
--      *(yy_c_buf_p) = '\0';   /* preserve yytext */
--      (yy_hold_char) = *++(yy_c_buf_p);
--
--      YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
--
--      return c;
--}
--#endif        /* ifndef YY_NO_INPUT */
--
--/** Immediately switch to a different input stream.
-- * @param input_file A readable stream.
-- * 
-- * @note This function does not reset the start condition to @c INITIAL .
-- */
--    void yyrestart  (FILE * input_file )
--{
--    
--      if ( ! YY_CURRENT_BUFFER ){
--        yyensure_buffer_stack ();
--              YY_CURRENT_BUFFER_LVALUE =
--            yy_create_buffer(yyin,YY_BUF_SIZE );
--      }
--
--      yy_init_buffer(YY_CURRENT_BUFFER,input_file );
--      yy_load_buffer_state( );
--}
--
--/** Switch to a different input buffer.
-- * @param new_buffer The new input buffer.
-- * 
-- */
--    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
--{
--    
--      /* TODO. We should be able to replace this entire function body
--       * with
--       *              yypop_buffer_state();
--       *              yypush_buffer_state(new_buffer);
--     */
--      yyensure_buffer_stack ();
--      if ( YY_CURRENT_BUFFER == new_buffer )
--              return;
--
--      if ( YY_CURRENT_BUFFER )
--              {
--              /* Flush out information for old buffer. */
--              *(yy_c_buf_p) = (yy_hold_char);
--              YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
--              YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
--              }
--
--      YY_CURRENT_BUFFER_LVALUE = new_buffer;
--      yy_load_buffer_state( );
--
--      /* We don't actually know whether we did this switch during
--       * EOF (yywrap()) processing, but the only time this flag
--       * is looked at is after yywrap() is called, so it's safe
--       * to go ahead and always set it.
--       */
--      (yy_did_buffer_switch_on_eof) = 1;
--}
--
--static void yy_load_buffer_state  (void)
--{
--      (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
--      (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
--      yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
--      (yy_hold_char) = *(yy_c_buf_p);
--}
--
--/** Allocate and initialize an input buffer state.
-- * @param file A readable stream.
-- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
-- * 
-- * @return the allocated buffer state.
-- */
--    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
--{
--      YY_BUFFER_STATE b;
--    
--      b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
--      if ( ! b )
--              YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
--
--      b->yy_buf_size = size;
--
--      /* yy_ch_buf has to be 2 characters longer than the size given because
--       * we need to put in 2 end-of-buffer characters.
--       */
--      b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
--      if ( ! b->yy_ch_buf )
--              YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
--
--      b->yy_is_our_buffer = 1;
--
--      yy_init_buffer(b,file );
--
--      return b;
--}
--
--/** Destroy the buffer.
-- * @param b a buffer created with yy_create_buffer()
-- * 
-- */
--    void yy_delete_buffer (YY_BUFFER_STATE  b )
--{
--    
--      if ( ! b )
--              return;
--
--      if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
--              YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
--
--      if ( b->yy_is_our_buffer )
--              yyfree((void *) b->yy_ch_buf  );
--
--      yyfree((void *) b  );
--}
--
--/* Initializes or reinitializes a buffer.
-- * This function is sometimes called more than once on the same buffer,
-- * such as during a yyrestart() or at EOF.
-- */
--    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
--
--{
--      int oerrno = errno;
--    
--      yy_flush_buffer(b );
--
--      b->yy_input_file = file;
--      b->yy_fill_buffer = 1;
--
--    /* If b is the current buffer, then yy_init_buffer was _probably_
--     * called from yyrestart() or through yy_get_next_buffer.
--     * In that case, we don't want to reset the lineno or column.
--     */
--    if (b != YY_CURRENT_BUFFER){
--        b->yy_bs_lineno = 1;
--        b->yy_bs_column = 0;
--    }
--
--        b->yy_is_interactive = 0;
--    
--      errno = oerrno;
--}
--
--/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
-- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
-- * 
-- */
--    void yy_flush_buffer (YY_BUFFER_STATE  b )
--{
--      if ( ! b )
--              return;
--
--      b->yy_n_chars = 0;
--
--      /* We always need two end-of-buffer characters.  The first causes
--       * a transition to the end-of-buffer state.  The second causes
--       * a jam in that state.
--       */
--      b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
--      b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
--
--      b->yy_buf_pos = &b->yy_ch_buf[0];
--
--      b->yy_at_bol = 1;
--      b->yy_buffer_status = YY_BUFFER_NEW;
--
--      if ( b == YY_CURRENT_BUFFER )
--              yy_load_buffer_state( );
--}
--
--/** Pushes the new state onto the stack. The new state becomes
-- *  the current state. This function will allocate the stack
-- *  if necessary.
-- *  @param new_buffer The new state.
-- *  
-- */
--void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
--{
--      if (new_buffer == NULL)
--              return;
--
--      yyensure_buffer_stack();
--
--      /* This block is copied from yy_switch_to_buffer. */
--      if ( YY_CURRENT_BUFFER )
--              {
--              /* Flush out information for old buffer. */
--              *(yy_c_buf_p) = (yy_hold_char);
--              YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
--              YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
--              }
--
--      /* Only push if top exists. Otherwise, replace top. */
--      if (YY_CURRENT_BUFFER)
--              (yy_buffer_stack_top)++;
--      YY_CURRENT_BUFFER_LVALUE = new_buffer;
--
--      /* copied from yy_switch_to_buffer. */
--      yy_load_buffer_state( );
--      (yy_did_buffer_switch_on_eof) = 1;
--}
--
--/** Removes and deletes the top of the stack, if present.
-- *  The next element becomes the new top.
-- *  
-- */
--void yypop_buffer_state (void)
--{
--      if (!YY_CURRENT_BUFFER)
--              return;
--
--      yy_delete_buffer(YY_CURRENT_BUFFER );
--      YY_CURRENT_BUFFER_LVALUE = NULL;
--      if ((yy_buffer_stack_top) > 0)
--              --(yy_buffer_stack_top);
--
--      if (YY_CURRENT_BUFFER) {
--              yy_load_buffer_state( );
--              (yy_did_buffer_switch_on_eof) = 1;
--      }
--}
--
--/* Allocates the stack if it does not exist.
-- *  Guarantees space for at least one push.
-- */
--static void yyensure_buffer_stack (void)
--{
--      int num_to_alloc;
--    
--      if (!(yy_buffer_stack)) {
--
--              /* First allocation is just for 2 elements, since we don't know if this
--               * scanner will even need a stack. We use 2 instead of 1 to avoid an
--               * immediate realloc on the next call.
--         */
--              num_to_alloc = 1;
--              (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
--                                                              (num_to_alloc * sizeof(struct yy_buffer_state*)
--                                                              );
--              if ( ! (yy_buffer_stack) )
--                      YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
--                                                                
--              memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
--                              
--              (yy_buffer_stack_max) = num_to_alloc;
--              (yy_buffer_stack_top) = 0;
--              return;
--      }
--
--      if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
--
--              /* Increase the buffer to prepare for a possible push. */
--              int grow_size = 8 /* arbitrary grow size */;
--
--              num_to_alloc = (yy_buffer_stack_max) + grow_size;
--              (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
--                                                              ((yy_buffer_stack),
--                                                              num_to_alloc * sizeof(struct yy_buffer_state*)
--                                                              );
--              if ( ! (yy_buffer_stack) )
--                      YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
--
--              /* zero only the new slots.*/
--              memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
--              (yy_buffer_stack_max) = num_to_alloc;
--      }
--}
--
--/** Setup the input buffer state to scan directly from a user-specified character buffer.
-- * @param base the character buffer
-- * @param size the size in bytes of the character buffer
-- * 
-- * @return the newly allocated buffer state object. 
-- */
--YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
--{
--      YY_BUFFER_STATE b;
--    
--      if ( size < 2 ||
--           base[size-2] != YY_END_OF_BUFFER_CHAR ||
--           base[size-1] != YY_END_OF_BUFFER_CHAR )
--              /* They forgot to leave room for the EOB's. */
--              return 0;
--
--      b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
--      if ( ! b )
--              YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
--
--      b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
--      b->yy_buf_pos = b->yy_ch_buf = base;
--      b->yy_is_our_buffer = 0;
--      b->yy_input_file = 0;
--      b->yy_n_chars = b->yy_buf_size;
--      b->yy_is_interactive = 0;
--      b->yy_at_bol = 1;
--      b->yy_fill_buffer = 0;
--      b->yy_buffer_status = YY_BUFFER_NEW;
--
--      yy_switch_to_buffer(b  );
--
--      return b;
--}
--
--/** Setup the input buffer state to scan a string. The next call to yylex() will
-- * scan from a @e copy of @a str.
-- * @param yystr a NUL-terminated string to scan
-- * 
-- * @return the newly allocated buffer state object.
-- * @note If you want to scan bytes that may contain NUL values, then use
-- *       yy_scan_bytes() instead.
-- */
--YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
--{
--    
--      return yy_scan_bytes(yystr,strlen(yystr) );
--}
--
--/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
-- * scan from a @e copy of @a bytes.
-- * @param bytes the byte buffer to scan
-- * @param len the number of bytes in the buffer pointed to by @a bytes.
-- * 
-- * @return the newly allocated buffer state object.
-- */
--YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
--{
--      YY_BUFFER_STATE b;
--      char *buf;
--      yy_size_t n;
--      int i;
--    
--      /* Get memory for full buffer, including space for trailing EOB's. */
--      n = _yybytes_len + 2;
--      buf = (char *) yyalloc(n  );
--      if ( ! buf )
--              YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
--
--      for ( i = 0; i < _yybytes_len; ++i )
--              buf[i] = yybytes[i];
--
--      buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
--
--      b = yy_scan_buffer(buf,n );
--      if ( ! b )
--              YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
--
--      /* It's okay to grow etc. this buffer, and we should throw it
--       * away when we're done.
--       */
--      b->yy_is_our_buffer = 1;
--
--      return b;
--}
--
--#ifndef YY_EXIT_FAILURE
--#define YY_EXIT_FAILURE 2
--#endif
--
--static void yy_fatal_error (yyconst char* msg )
--{
--      (void) fprintf( stderr, "%s\n", msg );
--      exit( YY_EXIT_FAILURE );
--}
--
--/* Redefine yyless() so it works in section 3 code. */
--
--#undef yyless
--#define yyless(n) \
--      do \
--              { \
--              /* Undo effects of setting up yytext. */ \
--        int yyless_macro_arg = (n); \
--        YY_LESS_LINENO(yyless_macro_arg);\
--              yytext[yyleng] = (yy_hold_char); \
--              (yy_c_buf_p) = yytext + yyless_macro_arg; \
--              (yy_hold_char) = *(yy_c_buf_p); \
--              *(yy_c_buf_p) = '\0'; \
--              yyleng = yyless_macro_arg; \
--              } \
--      while ( 0 )
--
--/* Accessor  methods (get/set functions) to struct members. */
--
--/** Get the current line number.
-- * 
-- */
--int yyget_lineno  (void)
--{
--        
--    return yylineno;
--}
--
--/** Get the input stream.
-- * 
-- */
--FILE *yyget_in  (void)
--{
--        return yyin;
--}
--
--/** Get the output stream.
-- * 
-- */
--FILE *yyget_out  (void)
--{
--        return yyout;
--}
--
--/** Get the length of the current token.
-- * 
-- */
--int yyget_leng  (void)
--{
--        return yyleng;
--}
--
--/** Get the current token.
-- * 
-- */
--
--char *yyget_text  (void)
--{
--        return yytext;
--}
--
--/** Set the current line number.
-- * @param line_number
-- * 
-- */
--void yyset_lineno (int  line_number )
--{
--    
--    yylineno = line_number;
--}
--
--/** Set the input stream. This does not discard the current
-- * input buffer.
-- * @param in_str A readable stream.
-- * 
-- * @see yy_switch_to_buffer
-- */
--void yyset_in (FILE *  in_str )
--{
--        yyin = in_str ;
--}
--
--void yyset_out (FILE *  out_str )
--{
--        yyout = out_str ;
--}
--
--int yyget_debug  (void)
--{
--        return yy_flex_debug;
--}
--
--void yyset_debug (int  bdebug )
--{
--        yy_flex_debug = bdebug ;
--}
--
--static int yy_init_globals (void)
--{
--        /* Initialization is the same as for the non-reentrant scanner.
--     * This function is called from yylex_destroy(), so don't allocate here.
--     */
--
--    (yy_buffer_stack) = 0;
--    (yy_buffer_stack_top) = 0;
--    (yy_buffer_stack_max) = 0;
--    (yy_c_buf_p) = (char *) 0;
--    (yy_init) = 0;
--    (yy_start) = 0;
--
--/* Defined in main.c */
--#ifdef YY_STDINIT
--    yyin = stdin;
--    yyout = stdout;
--#else
--    yyin = (FILE *) 0;
--    yyout = (FILE *) 0;
--#endif
--
--    /* For future reference: Set errno on error, since we are called by
--     * yylex_init()
--     */
--    return 0;
--}
--
--/* yylex_destroy is for both reentrant and non-reentrant scanners. */
--int yylex_destroy  (void)
--{
--    
--    /* Pop the buffer stack, destroying each element. */
--      while(YY_CURRENT_BUFFER){
--              yy_delete_buffer(YY_CURRENT_BUFFER  );
--              YY_CURRENT_BUFFER_LVALUE = NULL;
--              yypop_buffer_state();
--      }
--
--      /* Destroy the stack itself. */
--      yyfree((yy_buffer_stack) );
--      (yy_buffer_stack) = NULL;
--
--    /* Reset the globals. This is important in a non-reentrant scanner so the next time
--     * yylex() is called, initialization will occur. */
--    yy_init_globals( );
--
--    return 0;
--}
--
--/*
-- * Internal utility routines.
-- */
--
--#ifndef yytext_ptr
--static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
--{
--      register int i;
--      for ( i = 0; i < n; ++i )
--              s1[i] = s2[i];
--}
--#endif
--
--#ifdef YY_NEED_STRLEN
--static int yy_flex_strlen (yyconst char * s )
--{
--      register int n;
--      for ( n = 0; s[n]; ++n )
--              ;
--
--      return n;
--}
--#endif
--
--void *yyalloc (yy_size_t  size )
--{
--      return (void *) malloc( size );
--}
--
--void *yyrealloc  (void * ptr, yy_size_t  size )
--{
--      /* The cast to (char *) in the following accommodates both
--       * implementations that use char* generic pointers, and those
--       * that use void* generic pointers.  It works with the latter
--       * because both ANSI C and C++ allow castless assignment from
--       * any pointer type to void*, and deal with argument conversions
--       * as though doing an assignment.
--       */
--      return (void *) realloc( (char *) ptr, size );
--}
--
--void yyfree (void * ptr )
--{
--      free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
--}
--
--#define YYTABLES_NAME "yytables"
--
--#line 196 "/d/gcc-4.4.1/gcc-4.4.1/gcc/gengtype-lex.l"
--
--
--
--void
--yybegin (const char *fname)
--{
--  yyin = fopen (fname, "r");
--  if (yyin == NULL)
--    {
--      perror (fname);
--      exit (1);
--    }
--  lexer_line.file = fname;
--  lexer_line.line = 1;
--}
--
--void
--yyend (void)
--{
--  fclose (yyin);
--}
--
-diff -Nur a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l
---- a/gcc/gengtype-lex.l       2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/gengtype-lex.l       2010-01-25 09:50:29.145688053 +0100
-@@ -48,7 +48,7 @@
+--- a/gcc/gengtype-lex.l
++++ b/gcc/gengtype-lex.l
+@@ -48,7 +48,7 @@ update_lineno (const char *l, size_t len
  ID    [[:alpha:]_][[:alnum:]_]*
  WS    [[:space:]]+
  HWS   [ \t\r\v\f]*
@@ -27473,9 +22323,8 @@ diff -Nur a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l
  ITYPE {IWORD}({WS}{IWORD})*
  EOID  [^[:alnum:]_]
  
-diff -Nur a/gcc/genmultilib b/gcc/genmultilib
---- a/gcc/genmultilib  2007-07-26 10:37:01.000000000 +0200
-+++ b/gcc/genmultilib  2010-01-25 09:50:29.145688053 +0100
+--- a/gcc/genmultilib
++++ b/gcc/genmultilib
 @@ -73,6 +73,20 @@
  # the os directory names are used exclusively.  Use the mapping when
  # there is no one-to-one equivalence between GCC levels and the OS.
@@ -27497,7 +22346,7 @@ diff -Nur a/gcc/genmultilib b/gcc/genmultilib
  # The last option should be "yes" if multilibs are enabled.  If it is not
  # "yes", all GCC multilib dir names will be ".".
  
-@@ -121,7 +135,8 @@
+@@ -121,7 +135,8 @@ exceptions=$4
  extra=$5
  exclusions=$6
  osdirnames=$7
@@ -27507,7 +22356,7 @@ diff -Nur a/gcc/genmultilib b/gcc/genmultilib
  
  echo "static const char *const multilib_raw[] = {"
  
-@@ -129,6 +144,23 @@
+@@ -129,6 +144,23 @@ mkdir tmpmultilib.$$ || exit 1
  # Use cd ./foo to avoid CDPATH output.
  cd ./tmpmultilib.$$ || exit 1
  
@@ -27531,7 +22380,7 @@ diff -Nur a/gcc/genmultilib b/gcc/genmultilib
  # What we want to do is select all combinations of the sets in
  # options.  Each combination which includes a set of mutually
  # exclusive options must then be output multiple times, once for each
-@@ -195,6 +227,21 @@
+@@ -195,6 +227,21 @@ EOF
    combinations=`./tmpmultilib2 ${combinations}`
  fi
  
@@ -27553,7 +22402,7 @@ diff -Nur a/gcc/genmultilib b/gcc/genmultilib
  # Construct a sed pattern which will convert option names to directory
  # names.
  todirnames=
-@@ -343,23 +390,25 @@
+@@ -343,23 +390,25 @@ for combo in ${combinations}; do
      fi
    fi
  
@@ -27594,10 +22443,9 @@ diff -Nur a/gcc/genmultilib b/gcc/genmultilib
  done
  
  # Terminate the list of string.
-diff -Nur a/gcc/haifa-sched.c b/gcc/haifa-sched.c
---- a/gcc/haifa-sched.c        2008-10-14 14:52:19.000000000 +0200
-+++ b/gcc/haifa-sched.c        2010-01-25 09:50:29.145688053 +0100
-@@ -1990,6 +1990,23 @@
+--- a/gcc/haifa-sched.c
++++ b/gcc/haifa-sched.c
+@@ -1990,6 +1990,23 @@ move_insn (rtx insn, rtx last, rtx nt)
    SCHED_GROUP_P (insn) = 0;  
  }
  
@@ -27621,7 +22469,7 @@ diff -Nur a/gcc/haifa-sched.c b/gcc/haifa-sched.c
  /* The following structure describe an entry of the stack of choices.  */
  struct choice_entry
  {
-@@ -2168,7 +2185,10 @@
+@@ -2168,7 +2185,10 @@ max_issue (struct ready_list *ready, int
          delay = state_transition (state, insn);
          if (delay < 0)
            {
@@ -27633,10 +22481,9 @@ diff -Nur a/gcc/haifa-sched.c b/gcc/haifa-sched.c
                top->rest = 0;
              else
                top->rest--;
-diff -Nur a/gcc/hooks.c b/gcc/hooks.c
---- a/gcc/hooks.c      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/hooks.c      2010-01-25 09:50:29.145688053 +0100
-@@ -335,3 +335,10 @@
+--- a/gcc/hooks.c
++++ b/gcc/hooks.c
+@@ -335,3 +335,10 @@ hook_constcharptr_int_const_tree_const_t
  {
    return NULL;
  }
@@ -27647,10 +22494,9 @@ diff -Nur a/gcc/hooks.c b/gcc/hooks.c
 +{
 +  return NULL;
 +}
-diff -Nur a/gcc/hooks.h b/gcc/hooks.h
---- a/gcc/hooks.h      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/hooks.h      2010-01-25 09:50:29.145688053 +0100
-@@ -64,6 +64,8 @@
+--- a/gcc/hooks.h
++++ b/gcc/hooks.h
+@@ -64,6 +64,8 @@ extern int hook_int_rtx_bool_0 (rtx, boo
  extern int hook_int_size_t_constcharptr_int_0 (size_t, const char *, int);
  extern int hook_int_void_no_regs (void);
  
@@ -27659,9 +22505,8 @@ diff -Nur a/gcc/hooks.h b/gcc/hooks.h
  extern tree hook_tree_tree_tree_null (tree, tree);
  extern tree hook_tree_tree_tree_tree_null (tree, tree, tree);
  extern tree hook_tree_tree_tree_tree_3rd_identity (tree, tree, tree);
-diff -Nur a/gcc/incpath.c b/gcc/incpath.c
---- a/gcc/incpath.c    2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/incpath.c    2010-01-25 09:50:29.145688053 +0100
+--- a/gcc/incpath.c
++++ b/gcc/incpath.c
 @@ -30,6 +30,8 @@
  #include "intl.h"
  #include "incpath.h"
@@ -27671,7 +22516,7 @@ diff -Nur a/gcc/incpath.c b/gcc/incpath.c
  
  /* Microsoft Windows does not natively support inodes.
     VMS has non-numeric inodes.  */
-@@ -353,6 +355,24 @@
+@@ -353,6 +355,24 @@ merge_include_chains (const char *sysroo
        }
        fprintf (stderr, _("End of search list.\n"));
      }
@@ -27696,10 +22541,62 @@ diff -Nur a/gcc/incpath.c b/gcc/incpath.c
  }
  
  /* Use given -I paths for #include "..." but not #include <...>, and
-diff -Nur a/gcc/ira.c b/gcc/ira.c
---- a/gcc/ira.c        2009-07-04 00:46:30.000000000 +0200
-+++ b/gcc/ira.c        2010-01-25 09:50:29.145688053 +0100
-@@ -1349,14 +1349,12 @@
+--- a/gcc/ira-costs.c
++++ b/gcc/ira-costs.c
+@@ -706,11 +706,11 @@ record_reg_classes (int n_alts, int n_op
+ /* Wrapper around REGNO_OK_FOR_INDEX_P, to allow pseudo registers.  */
+ static inline bool
+-ok_for_index_p_nonstrict (rtx reg)
++ok_for_index_p_nonstrict (rtx reg, enum machine_mode mode)
+ {
+   unsigned regno = REGNO (reg);
+-  return regno >= FIRST_PSEUDO_REGISTER || REGNO_OK_FOR_INDEX_P (regno);
++  return regno >= FIRST_PSEUDO_REGISTER || ok_for_index_p_1 (regno, mode);
+ }
+ /* A version of regno_ok_for_base_p for use here, when all
+@@ -748,7 +748,7 @@ record_address_regs (enum machine_mode m
+   enum reg_class rclass;
+   if (context == 1)
+-    rclass = INDEX_REG_CLASS;
++    rclass = index_reg_class (mode);
+   else
+     rclass = base_reg_class (mode, outer_code, index_code);
+@@ -795,7 +795,8 @@ record_address_regs (enum machine_mode m
+          just record registers in any non-constant operands.  We
+          assume here, as well as in the tests below, that all
+          addresses are in canonical form.  */
+-      else if (INDEX_REG_CLASS == base_reg_class (VOIDmode, PLUS, SCRATCH))
++      else if (index_reg_class (mode)
++               == base_reg_class (mode, PLUS, SCRATCH))
+         {
+           record_address_regs (mode, arg0, context, PLUS, code1, scale);
+           if (! CONSTANT_P (arg1))
+@@ -816,7 +817,7 @@ record_address_regs (enum machine_mode m
+       else if (code0 == REG && code1 == REG
+                && REGNO (arg0) < FIRST_PSEUDO_REGISTER
+                && (ok_for_base_p_nonstrict (arg0, mode, PLUS, REG)
+-                   || ok_for_index_p_nonstrict (arg0)))
++                   || ok_for_index_p_nonstrict (arg0, mode)))
+         record_address_regs (mode, arg1,
+                              ok_for_base_p_nonstrict (arg0, mode, PLUS, REG)
+                              ? 1 : 0,
+@@ -824,7 +825,7 @@ record_address_regs (enum machine_mode m
+       else if (code0 == REG && code1 == REG
+                && REGNO (arg1) < FIRST_PSEUDO_REGISTER
+                && (ok_for_base_p_nonstrict (arg1, mode, PLUS, REG)
+-                   || ok_for_index_p_nonstrict (arg1)))
++                   || ok_for_index_p_nonstrict (arg1, mode)))
+         record_address_regs (mode, arg0,
+                              ok_for_base_p_nonstrict (arg1, mode, PLUS, REG)
+                              ? 1 : 0,
+--- a/gcc/ira.c
++++ b/gcc/ira.c
+@@ -1349,14 +1349,12 @@ insn_contains_asm (rtx insn)
    return for_each_rtx (&insn, insn_contains_asm_1, NULL);
  }
  
@@ -27716,7 +22613,7 @@ diff -Nur a/gcc/ira.c b/gcc/ira.c
    FOR_EACH_BB (bb)
      {
        rtx insn;
-@@ -1377,7 +1375,7 @@
+@@ -1377,7 +1375,7 @@ compute_regs_asm_clobbered (char *regs_a
                      + hard_regno_nregs[dregno][mode] - 1;
  
                    for (i = dregno; i <= end; ++i)
@@ -27725,7 +22622,7 @@ diff -Nur a/gcc/ira.c b/gcc/ira.c
                  }
              }
        }
-@@ -1415,7 +1413,8 @@
+@@ -1415,7 +1413,8 @@ setup_eliminable_regset (void)
    COPY_HARD_REG_SET (ira_no_alloc_regs, no_unit_alloc_regs);
    CLEAR_HARD_REG_SET (eliminable_regset);
  
@@ -27735,7 +22632,7 @@ diff -Nur a/gcc/ira.c b/gcc/ira.c
    /* Build the regset of all eliminable registers and show we can't
       use those that we already know won't be eliminated.  */
  #ifdef ELIMINABLE_REGS
-@@ -1425,7 +1424,7 @@
+@@ -1425,7 +1424,7 @@ setup_eliminable_regset (void)
        = (! CAN_ELIMINATE (eliminables[i].from, eliminables[i].to)
           || (eliminables[i].to == STACK_POINTER_REGNUM && need_fp));
  
@@ -27744,7 +22641,7 @@ diff -Nur a/gcc/ira.c b/gcc/ira.c
        {
            SET_HARD_REG_BIT (eliminable_regset, eliminables[i].from);
  
-@@ -1439,7 +1438,7 @@
+@@ -1439,7 +1438,7 @@ setup_eliminable_regset (void)
        df_set_regs_ever_live (eliminables[i].from, true);
      }
  #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
@@ -27753,7 +22650,7 @@ diff -Nur a/gcc/ira.c b/gcc/ira.c
      {
        SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
        if (need_fp)
-@@ -1453,7 +1452,7 @@
+@@ -1453,7 +1452,7 @@ setup_eliminable_regset (void)
  #endif
  
  #else
@@ -27762,414 +22659,91 @@ diff -Nur a/gcc/ira.c b/gcc/ira.c
      {
        SET_HARD_REG_BIT (eliminable_regset, FRAME_POINTER_REGNUM);
        if (need_fp)
-diff -Nur a/gcc/ira-costs.c b/gcc/ira-costs.c
---- a/gcc/ira-costs.c  2009-04-22 22:16:13.000000000 +0200
-+++ b/gcc/ira-costs.c  2010-01-25 09:50:29.145688053 +0100
-@@ -706,11 +706,11 @@
- /* Wrapper around REGNO_OK_FOR_INDEX_P, to allow pseudo registers.  */
- static inline bool
--ok_for_index_p_nonstrict (rtx reg)
-+ok_for_index_p_nonstrict (rtx reg, enum machine_mode mode)
- {
-   unsigned regno = REGNO (reg);
--  return regno >= FIRST_PSEUDO_REGISTER || REGNO_OK_FOR_INDEX_P (regno);
-+  return regno >= FIRST_PSEUDO_REGISTER || ok_for_index_p_1 (regno, mode);
- }
- /* A version of regno_ok_for_base_p for use here, when all
-@@ -748,7 +748,7 @@
-   enum reg_class rclass;
+--- a/gcc/modulo-sched.c
++++ b/gcc/modulo-sched.c
+@@ -270,6 +270,7 @@ static struct haifa_sched_info sms_sched
+   NULL,
+   sms_print_insn,
+   NULL,
++  NULL, /* insn_finishes_block_p */
+   NULL, NULL,
+   NULL, NULL,
+   0, 0,
+--- a/gcc/optabs.c
++++ b/gcc/optabs.c
+@@ -3300,7 +3300,8 @@ expand_unop (enum machine_mode mode, opt
+       if (unoptab == ffs_optab || unoptab == clz_optab || unoptab == ctz_optab
+         || unoptab == popcount_optab || unoptab == parity_optab)
+       outmode
+-          = GET_MODE (hard_libcall_value (TYPE_MODE (integer_type_node)));
++        = GET_MODE (hard_libcall_value (TYPE_MODE (integer_type_node),
++                                        optab_libfunc (unoptab, mode)));
  
-   if (context == 1)
--    rclass = INDEX_REG_CLASS;
-+    rclass = index_reg_class (mode);
-   else
-     rclass = base_reg_class (mode, outer_code, index_code);
+       start_sequence ();
  
-@@ -795,7 +795,8 @@
-          just record registers in any non-constant operands.  We
-          assume here, as well as in the tests below, that all
-          addresses are in canonical form.  */
--      else if (INDEX_REG_CLASS == base_reg_class (VOIDmode, PLUS, SCRATCH))
-+      else if (index_reg_class (mode)
-+               == base_reg_class (mode, PLUS, SCRATCH))
-         {
-           record_address_regs (mode, arg0, context, PLUS, code1, scale);
-           if (! CONSTANT_P (arg1))
-@@ -816,7 +817,7 @@
-       else if (code0 == REG && code1 == REG
-                && REGNO (arg0) < FIRST_PSEUDO_REGISTER
-                && (ok_for_base_p_nonstrict (arg0, mode, PLUS, REG)
--                   || ok_for_index_p_nonstrict (arg0)))
-+                   || ok_for_index_p_nonstrict (arg0, mode)))
-         record_address_regs (mode, arg1,
-                              ok_for_base_p_nonstrict (arg0, mode, PLUS, REG)
-                              ? 1 : 0,
-@@ -824,7 +825,7 @@
-       else if (code0 == REG && code1 == REG
-                && REGNO (arg1) < FIRST_PSEUDO_REGISTER
-                && (ok_for_base_p_nonstrict (arg1, mode, PLUS, REG)
--                   || ok_for_index_p_nonstrict (arg1)))
-+                   || ok_for_index_p_nonstrict (arg1, mode)))
-         record_address_regs (mode, arg0,
-                              ok_for_base_p_nonstrict (arg1, mode, PLUS, REG)
-                              ? 1 : 0,
-diff -Nur a/gcc/longlong.h b/gcc/longlong.h
---- a/gcc/longlong.h   2009-02-12 17:30:53.000000000 +0100
-+++ b/gcc/longlong.h   2010-01-25 09:50:29.145688053 +0100
-@@ -982,7 +982,7 @@
- "     or r1,%0"                                                       \
-       : "=r" (q), "=&z" (r)                                           \
-       : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16)          \
--      : "r1", "r2", "r4", "r5", "r6", "pr");                          \
-+      : "r1", "r2", "r4", "r5", "r6", "pr", "t");                     \
-   } while (0)
- #define UDIV_TIME 80
-diff -Nur a/gcc/Makefile.in b/gcc/Makefile.in
---- a/gcc/Makefile.in  2009-05-22 01:17:37.000000000 +0200
-+++ b/gcc/Makefile.in  2010-01-25 09:50:29.145688053 +0100
-@@ -327,6 +327,8 @@
- # It also specifies -isystem ./include to find, e.g., stddef.h.
- GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS)
+@@ -4357,10 +4358,12 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
+        mode != VOIDmode;
+        mode = GET_MODE_WIDER_MODE (mode))
+     {
+-      if ((libfunc = optab_libfunc (code_to_optab[comparison], mode)))
++      if (code_to_optab[comparison]
++        && (libfunc = optab_libfunc (code_to_optab[comparison], mode)))
+       break;
  
-+EGLIBC_CONFIGS = @EGLIBC_CONFIGS@
-+
- # ---------------------------------------------------
- # Programs which produce files for the target machine
- # ---------------------------------------------------
-@@ -408,6 +410,9 @@
+-      if ((libfunc = optab_libfunc (code_to_optab[swapped] , mode)))
++      if (code_to_optab[swapped]
++        && (libfunc = optab_libfunc (code_to_optab[swapped], mode)))
+       {
+         rtx tmp;
+         tmp = x; x = y; y = tmp;
+@@ -4368,7 +4371,8 @@ prepare_float_lib_cmp (rtx *px, rtx *py,
+         break;
+       }
  
- xmake_file=@xmake_file@
- tmake_file=@tmake_file@
-+TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
-+TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
-+TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
- out_file=$(srcdir)/config/@out_file@
- out_object_file=@out_object_file@
- md_file=$(srcdir)/config/@md_file@
-@@ -542,6 +547,23 @@
- exeext = @host_exeext@
- build_exeext = @build_exeext@
-+licensedir = @licensedir@
-+ifneq ($(licensedir),) 
-+# Header files for licensing.
-+CSL_LICENSEINC = -I $(licensedir)/include
-+# Libraries for licensing.
-+CSL_LICENSELIB = -L$(licensedir)/lib -lcsllicense
-+# The licensing program.  If the program does not exist, assume that
-+# it is not needed.
-+CSL_LICENSE_PROG = cs-license$(exeext)
-+$(CSL_LICENSE_PROG):
-+      if [ -f "$(licensedir)/libexec/cs-license$(exeext)" ] ; then \
-+        $(LN_S) $(licensedir)/libexec/cs-license$(exeext) . ;  \
-+        else \
-+        touch $@; \
-+      fi
-+endif
-+
- # Directory in which to put man pages.
- mandir = @mandir@
- man1dir = $(mandir)/man1
-@@ -684,7 +706,7 @@
- # List of things which should already be built whenever we try to use xgcc
- # to compile anything (without linking).
--GCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES)
-+GCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES) $(CSL_LICENSE_PROG)
- # Directory to link to, when using the target `maketest'.
- DIR = ../gcc
-@@ -913,7 +935,7 @@
- # How to link with both our special library facilities
- # and the system's installed libraries.
--LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER)
-+LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) $(CSL_LICENSELIB)
- BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -943,7 +965,7 @@
- INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
-          -I$(srcdir)/../include @INCINTL@ \
-          $(CPPINC) $(GMPINC) $(DECNUMINC) \
--         $(PPLINC) $(CLOOGINC)
-+         $(PPLINC) $(CLOOGINC) $(CSL_LICENSEINC)
- .c.o:
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
-@@ -1249,6 +1271,7 @@
-       tree-ssa-loop-manip.o \
-       tree-ssa-loop-niter.o \
-       tree-ssa-loop-prefetch.o \
-+      tree-ssa-loop-promote.o \
-       tree-ssa-loop-unswitch.o \
-       tree-ssa-loop.o \
-       tree-ssa-math-opts.o \
-@@ -1258,6 +1281,7 @@
-       tree-ssa-pre.o \
-       tree-ssa-propagate.o \
-       tree-ssa-reassoc.o \
-+      tree-ssa-remove-local-statics.o \
-       tree-ssa-sccvn.o \
-       tree-ssa-sink.o \
-       tree-ssa-structalias.o \
-@@ -1674,7 +1698,7 @@
-       $(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \
-       $(LIB2ADD_ST) $(LIB2ADDEH) $(srcdir)/emutls.c gcov-iov.h $(SFP_MACHINE)
+-      if ((libfunc = optab_libfunc (code_to_optab[reversed], mode))
++      if (code_to_optab[reversed]
++        && (libfunc = optab_libfunc (code_to_optab[reversed], mode))
+         && FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, reversed))
+       {
+         comparison = reversed;
+--- a/gcc/opts.c
++++ b/gcc/opts.c
+@@ -906,7 +906,7 @@ decode_options (unsigned int argc, const
+   flag_tree_vrp = opt2;
+   flag_tree_builtin_call_dce = opt2;
+   flag_tree_pre = opt2;
+-  flag_tree_switch_conversion = 1;
++  flag_tree_switch_conversion = opt2;
+   flag_ipa_cp = opt2;
  
--libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
-+libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs $(tmake_file) \
-               xgcc$(exeext)
-       : > tmp-libgcc.mvars
-       echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars
-@@ -1728,7 +1752,7 @@
- # driver program needs to select the library directory based on the
- # switches.
- multilib.h: s-mlib; @true
--s-mlib: $(srcdir)/genmultilib Makefile
-+s-mlib: $(srcdir)/genmultilib Makefile $(tmakefile)
-       if test @enable_multilib@ = yes \
-          || test -n "$(MULTILIB_OSDIRNAMES)"; then \
-         $(SHELL) $(srcdir)/genmultilib \
-@@ -1739,10 +1763,11 @@
-           "$(MULTILIB_EXTRA_OPTS)" \
-           "$(MULTILIB_EXCLUSIONS)" \
-           "$(MULTILIB_OSDIRNAMES)" \
-+          "$(MULTILIB_ALIASES)" \
-           "@enable_multilib@" \
-           > tmp-mlib.h; \
-       else \
--        $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \
-+        $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' '' no \
-           > tmp-mlib.h; \
-       fi
-       $(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h
-@@ -1816,7 +1841,7 @@
+   /* Allow more virtual operators to increase alias precision.  */
+@@ -930,6 +930,7 @@ decode_options (unsigned int argc, const
+   flag_gcse_after_reload = opt3;
+   flag_tree_vectorize = opt3;
+   flag_ipa_cp_clone = opt3;
++  flag_tree_pre_partial_partial = opt3;
+   if (flag_ipa_cp_clone)
+     flag_ipa_cp = 1;
  
- incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
-               intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \
--              $(MACHMODE_H)
-+              $(MACHMODE_H) $(FLAGS_H) toplev.h
+@@ -953,10 +954,13 @@ decode_options (unsigned int argc, const
+        being declared inline.  */
+       flag_inline_functions = 1;
  
- c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
-     $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \
-@@ -1900,7 +1925,7 @@
-         $(TREE_H) $(C_PRAGMA_H) $(FLAGS_H) $(TOPLEV_H) langhooks.h            \
-         $(TREE_INLINE_H) $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H) \
-         opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h $(TARGET_H) \
--      $(TM_P_H) $(VARRAY_H)
-+      $(TM_P_H) $(VARRAY_H) $(C_TREE_H)
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
-               $< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@
+-      /* Basic optimization options.  */
+-      optimize_size = 1;
++      /* Basic optimization options at -Os are almost the same as -O2.  The
++       only difference is that we disable PRE, because it sometimes still
++       increases code size.  If the user want to run PRE with -Os, he/she
++       will have to indicate so explicitly.  */
+       if (optimize > 2)
+       optimize = 2;
++      flag_tree_pre = 0;
  
-@@ -1953,7 +1978,8 @@
-   -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \
-   @TARGET_SYSTEM_ROOT_DEFINE@ \
-   $(VALGRIND_DRIVER_DEFINES) \
--  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"`
-+  `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \
-+  -DCONFIGURE_SPECS="\"@CONFIGURE_SPECS@\""
- gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \
-     Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \
-@@ -2176,6 +2202,9 @@
-    alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \
-    $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
-    $(DBGCNT_H)
-+tree-ssa-remove-local-statics.o: tree-ssa-remove-local-statics.c \
-+   coretypes.h $(CONFIG_H) $(SYSTEM_H) $(BASIC_BLOCK_H) tree.h tree-pass.h \
-+   $(TM_H) $(HASHTAB_H) $(BASIC_BLOCK_H)
- tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
-    $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
-    $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
-@@ -2271,6 +2300,12 @@
-    $(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \
-    tree-chrec.h $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \
-    $(OPTABS_H)
-+tree-ssa-loop-promote.o: tree-ssa-loop-promote.c \
-+   coretypes.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) \
-+   $(RTL_H) $(TM_P_H) hard-reg-set.h $(OBSTACK_H) $(BASIC_BLOCK_H) \
-+   pointer-set.h intl.h $(TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(DIAGNOSTIC_H) \
-+   $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(FLAGS_H) $(TIMEVAR_H) \
-+   tree-pass.h $(TM_H)
- tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
-    $(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) $(SCEV_H) \
-    $(PARAMS_H) $(DIAGNOSTIC_H) tree-pass.h $(TM_H) coretypes.h tree-affine.h \
-@@ -2865,7 +2900,7 @@
-    $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
-    hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
-    $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \
--   $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H)
-+   $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h addresses.h $(DF_H) $(DBGCNT_H)
- postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
-    $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
-    $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
-@@ -3582,7 +3617,7 @@
- # be rebuilt.
- # Build the include directories.
--stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list
-+stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H)
- # Copy in the headers provided with gcc.
- # The sed command gets just the last file name component;
- # this is necessary because VPATH could add a dirname.
-@@ -3601,21 +3636,23 @@
-       done
-       rm -f include/unwind.h
-       cp $(UNWIND_H) include/unwind.h
--      set -e; for ml in `cat fixinc_list`; do \
--        sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
--        multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
--        fix_dir=include-fixed$${multi_dir}; \
--        if $(LIMITS_H_TEST) ; then \
--          cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
--        else \
--          cat $(srcdir)/glimits.h > tmp-xlimits.h; \
--        fi; \
--        $(mkinstalldirs) $${fix_dir}; \
--        chmod a+rx $${fix_dir} || true; \
--        rm -f $${fix_dir}/limits.h; \
--        mv tmp-xlimits.h $${fix_dir}/limits.h; \
--        chmod a+r $${fix_dir}/limits.h; \
--      done
-+      set -e; if [ -f fixinc_list ] ; then \
-+        for ml in `cat fixinc_list`; do \
-+          sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
-+          multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
-+          fix_dir=include-fixed$${multi_dir}; \
-+          if $(LIMITS_H_TEST) ; then \
-+            cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \
-+          else \
-+            cat $(srcdir)/glimits.h > tmp-xlimits.h; \
-+          fi; \
-+          $(mkinstalldirs) $${fix_dir}; \
-+          chmod a+rx $${fix_dir} || true; \
-+          rm -f $${fix_dir}/limits.h; \
-+          mv tmp-xlimits.h $${fix_dir}/limits.h; \
-+          chmod a+r $${fix_dir}/limits.h; \
-+        done; \
-+      fi
- # Install the README
-       rm -f include-fixed/README
-       cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
-@@ -4340,16 +4377,18 @@
- # Install supporting files for fixincludes to be run later.
- install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-itoolsdirs \
--  macro_list fixinc_list
-+  macro_list
-       $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
-         $(DESTDIR)$(itoolsdatadir)/gsyslimits.h
-       $(INSTALL_DATA) macro_list $(DESTDIR)$(itoolsdatadir)/macro_list
--      $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list
--      set -e; for ml in `cat fixinc_list`; do \
--        multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
--        $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
--        $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
--      done
-+      set -e; if [ -f fixinc_list ] ; then \
-+        $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list; \
-+        for ml in `cat fixinc_list`; do \
-+          multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
-+          $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
-+          $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
-+        done; \
-+      fi
-       $(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
-               $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
-       if [ x$(STMP_FIXPROTO) != x ] ; then \
-diff -Nur a/gcc/modulo-sched.c b/gcc/modulo-sched.c
---- a/gcc/modulo-sched.c       2008-09-01 10:57:00.000000000 +0200
-+++ b/gcc/modulo-sched.c       2010-01-25 09:50:29.155687438 +0100
-@@ -270,6 +270,7 @@
-   NULL,
-   sms_print_insn,
-   NULL,
-+  NULL, /* insn_finishes_block_p */
-   NULL, NULL,
-   NULL, NULL,
-   0, 0,
-diff -Nur a/gcc/optabs.c b/gcc/optabs.c
---- a/gcc/optabs.c     2009-03-17 18:46:23.000000000 +0100
-+++ b/gcc/optabs.c     2010-01-25 09:50:29.155687438 +0100
-@@ -3300,7 +3300,8 @@
-       if (unoptab == ffs_optab || unoptab == clz_optab || unoptab == ctz_optab
-         || unoptab == popcount_optab || unoptab == parity_optab)
-       outmode
--          = GET_MODE (hard_libcall_value (TYPE_MODE (integer_type_node)));
-+        = GET_MODE (hard_libcall_value (TYPE_MODE (integer_type_node),
-+                                        optab_libfunc (unoptab, mode)));
-       start_sequence ();
-@@ -4357,10 +4358,12 @@
-        mode != VOIDmode;
-        mode = GET_MODE_WIDER_MODE (mode))
-     {
--      if ((libfunc = optab_libfunc (code_to_optab[comparison], mode)))
-+      if (code_to_optab[comparison]
-+        && (libfunc = optab_libfunc (code_to_optab[comparison], mode)))
-       break;
--      if ((libfunc = optab_libfunc (code_to_optab[swapped] , mode)))
-+      if (code_to_optab[swapped]
-+        && (libfunc = optab_libfunc (code_to_optab[swapped], mode)))
-       {
-         rtx tmp;
-         tmp = x; x = y; y = tmp;
-@@ -4368,7 +4371,8 @@
-         break;
-       }
--      if ((libfunc = optab_libfunc (code_to_optab[reversed], mode))
-+      if (code_to_optab[reversed]
-+        && (libfunc = optab_libfunc (code_to_optab[reversed], mode))
-         && FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, reversed))
-       {
-         comparison = reversed;
-diff -Nur a/gcc/opts.c b/gcc/opts.c
---- a/gcc/opts.c       2009-03-28 18:28:45.000000000 +0100
-+++ b/gcc/opts.c       2010-01-25 09:50:29.155687438 +0100
-@@ -904,7 +904,7 @@
-   flag_tree_vrp = opt2;
-   flag_tree_builtin_call_dce = opt2;
-   flag_tree_pre = opt2;
--  flag_tree_switch_conversion = 1;
-+  flag_tree_switch_conversion = opt2;
-   flag_ipa_cp = opt2;
-   /* Allow more virtual operators to increase alias precision.  */
-@@ -928,6 +928,7 @@
-   flag_gcse_after_reload = opt3;
-   flag_tree_vectorize = opt3;
-   flag_ipa_cp_clone = opt3;
-+  flag_tree_pre_partial_partial = opt3;
-   if (flag_ipa_cp_clone)
-     flag_ipa_cp = 1;
-@@ -951,10 +952,13 @@
-        being declared inline.  */
-       flag_inline_functions = 1;
--      /* Basic optimization options.  */
--      optimize_size = 1;
-+      /* Basic optimization options at -Os are almost the same as -O2.  The
-+       only difference is that we disable PRE, because it sometimes still
-+       increases code size.  If the user want to run PRE with -Os, he/she
-+       will have to indicate so explicitly.  */
-       if (optimize > 2)
-       optimize = 2;
-+      flag_tree_pre = 0;
-       /* We want to crossjump as much as possible.  */
-       set_param_value ("min-crossjump-insns", 1);
-@@ -2060,6 +2064,10 @@
-       /* These are no-ops, preserved for backward compatibility.  */
-       break;
+       /* We want to crossjump as much as possible.  */
+       set_param_value ("min-crossjump-insns", 1);
+@@ -2062,6 +2066,10 @@ common_handle_option (size_t scode, cons
+       /* These are no-ops, preserved for backward compatibility.  */
+       break;
  
 +    case OPT_feglibc_:
 +      /* This is a no-op at the moment.  */
@@ -28178,10 +22752,9 @@ diff -Nur a/gcc/opts.c b/gcc/opts.c
      default:
        /* If the flag was handled in a standard way, assume the lack of
         processing here is intentional.  */
-diff -Nur a/gcc/passes.c b/gcc/passes.c
---- a/gcc/passes.c     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/passes.c     2010-01-25 09:50:29.155687438 +0100
-@@ -591,6 +591,7 @@
+--- a/gcc/passes.c
++++ b/gcc/passes.c
+@@ -591,6 +591,7 @@ init_optimization_passes (void)
        NEXT_PASS (pass_rename_ssa_copies);
        NEXT_PASS (pass_complete_unrolli);
        NEXT_PASS (pass_ccp);
@@ -28189,7 +22762,7 @@ diff -Nur a/gcc/passes.c b/gcc/passes.c
        NEXT_PASS (pass_forwprop);
        /* Ideally the function call conditional
         dead code elimination phase can be delayed
-@@ -605,6 +606,7 @@
+@@ -605,6 +606,7 @@ init_optimization_passes (void)
         alias information also rewrites no longer addressed
         locals into SSA form if possible.  */
        NEXT_PASS (pass_build_alias);
@@ -28197,10 +22770,9 @@ diff -Nur a/gcc/passes.c b/gcc/passes.c
        NEXT_PASS (pass_return_slot);
        NEXT_PASS (pass_phiprop);
        NEXT_PASS (pass_fre);
-diff -Nur a/gcc/pointer-set.c b/gcc/pointer-set.c
---- a/gcc/pointer-set.c        2007-08-16 16:31:21.000000000 +0200
-+++ b/gcc/pointer-set.c        2010-01-25 09:50:29.155687438 +0100
-@@ -181,6 +181,23 @@
+--- a/gcc/pointer-set.c
++++ b/gcc/pointer-set.c
+@@ -181,6 +181,23 @@ void pointer_set_traverse (const struct 
        break;
  }
  
@@ -28224,7 +22796,7 @@ diff -Nur a/gcc/pointer-set.c b/gcc/pointer-set.c
  \f
  /* A pointer map is represented the same way as a pointer_set, so
     the hash code is based on the address of the key, rather than
-@@ -301,3 +318,20 @@
+@@ -301,3 +318,20 @@ void pointer_map_traverse (const struct 
      if (pmap->keys[i] && !fn (pmap->keys[i], &pmap->values[i], data))
        break;
  }
@@ -28245,10 +22817,9 @@ diff -Nur a/gcc/pointer-set.c b/gcc/pointer-set.c
 +  memset (pmap->keys, 0, sizeof (pmap->keys[0]) * pmap->n_slots);
 +  memset (pmap->values, 0, sizeof (pmap->values[0]) * pmap->n_slots);
 +}
-diff -Nur a/gcc/pointer-set.h b/gcc/pointer-set.h
---- a/gcc/pointer-set.h        2007-08-16 16:31:21.000000000 +0200
-+++ b/gcc/pointer-set.h        2010-01-25 09:50:29.155687438 +0100
-@@ -29,6 +29,8 @@
+--- a/gcc/pointer-set.h
++++ b/gcc/pointer-set.h
+@@ -29,6 +29,8 @@ int pointer_set_insert (struct pointer_s
  void pointer_set_traverse (const struct pointer_set_t *,
                           bool (*) (const void *, void *),
                           void *);
@@ -28257,7 +22828,7 @@ diff -Nur a/gcc/pointer-set.h b/gcc/pointer-set.h
  
  struct pointer_map_t;
  struct pointer_map_t *pointer_map_create (void);
-@@ -38,5 +40,7 @@
+@@ -38,5 +40,7 @@ void **pointer_map_contains (const struc
  void **pointer_map_insert (struct pointer_map_t *pmap, const void *p);
  void pointer_map_traverse (const struct pointer_map_t *,
                           bool (*) (const void *, void **, void *), void *);
@@ -28265,10 +22836,9 @@ diff -Nur a/gcc/pointer-set.h b/gcc/pointer-set.h
 +void pointer_map_clear (struct pointer_map_t *);
  
  #endif  /* POINTER_SET_H  */
-diff -Nur a/gcc/postreload.c b/gcc/postreload.c
---- a/gcc/postreload.c 2008-08-31 11:44:25.000000000 +0200
-+++ b/gcc/postreload.c 2010-01-25 09:50:29.155687438 +0100
-@@ -46,6 +46,7 @@
+--- a/gcc/postreload.c
++++ b/gcc/postreload.c
+@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3.  
  #include "tree.h"
  #include "timevar.h"
  #include "tree-pass.h"
@@ -28276,7 +22846,7 @@ diff -Nur a/gcc/postreload.c b/gcc/postreload.c
  #include "df.h"
  #include "dbgcnt.h"
  
-@@ -708,17 +709,19 @@
+@@ -708,17 +709,19 @@ reload_combine (void)
    int last_label_ruid;
    int min_labelno, n_labels;
    HARD_REG_SET ever_live_at_start, *label_live;
@@ -28298,7 +22868,7 @@ diff -Nur a/gcc/postreload.c b/gcc/postreload.c
        {
        if (first_index_reg == -1)
          first_index_reg = r;
-@@ -826,8 +829,8 @@
+@@ -826,8 +829,8 @@ reload_combine (void)
             substitute uses of REG (typically in MEMs) with.
             First check REG and BASE for being index registers;
             we can use them even if they are not dead.  */
@@ -28309,7 +22879,7 @@ diff -Nur a/gcc/postreload.c b/gcc/postreload.c
                                    REGNO (base)))
            {
              const_reg = reg;
-@@ -841,8 +844,7 @@
+@@ -841,8 +844,7 @@ reload_combine (void)
                 two registers.  */
              for (i = first_index_reg; i <= last_index_reg; i++)
                {
@@ -28319,10 +22889,9 @@ diff -Nur a/gcc/postreload.c b/gcc/postreload.c
                      && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
                      && reg_state[i].store_ruid <= reg_state[regno].use_ruid
                      && hard_regno_nregs[i][GET_MODE (reg)] == 1)
-diff -Nur a/gcc/real.c b/gcc/real.c
---- a/gcc/real.c       2009-02-06 22:01:46.000000000 +0100
-+++ b/gcc/real.c       2010-01-25 09:50:29.155687438 +0100
-@@ -4513,6 +4513,167 @@
+--- a/gcc/real.c
++++ b/gcc/real.c
+@@ -4576,6 +4576,167 @@ const struct real_format decimal_quad_fo
      false
    };
  \f
@@ -28490,10 +23059,9 @@ diff -Nur a/gcc/real.c b/gcc/real.c
  /* A synthetic "format" for internal arithmetic.  It's the size of the
     internal significand minus the two bits needed for proper rounding.
     The encode and decode routines exist only to satisfy our paranoia
-diff -Nur a/gcc/real.h b/gcc/real.h
---- a/gcc/real.h       2008-10-29 18:05:42.000000000 +0100
-+++ b/gcc/real.h       2010-01-25 09:50:29.155687438 +0100
-@@ -304,6 +304,8 @@
+--- a/gcc/real.h
++++ b/gcc/real.h
+@@ -304,6 +304,8 @@ extern const struct real_format real_int
  extern const struct real_format decimal_single_format;
  extern const struct real_format decimal_double_format;
  extern const struct real_format decimal_quad_format;
@@ -28502,10 +23070,9 @@ diff -Nur a/gcc/real.h b/gcc/real.h
  
  
  /* ====================================================================== */
-diff -Nur a/gcc/regrename.c b/gcc/regrename.c
---- a/gcc/regrename.c  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/regrename.c  2010-01-25 09:50:29.155687438 +0100
-@@ -567,14 +567,14 @@
+--- a/gcc/regrename.c
++++ b/gcc/regrename.c
+@@ -567,14 +567,14 @@ scan_rtx_address (rtx insn, rtx *loc, en
            int index_op;
            unsigned regno0 = REGNO (op0), regno1 = REGNO (op1);
  
@@ -28523,7 +23090,7 @@ diff -Nur a/gcc/regrename.c b/gcc/regrename.c
              index_op = 1;
            else if (regno_ok_for_base_p (regno1, mode, PLUS, REG))
              index_op = 0;
-@@ -599,7 +599,7 @@
+@@ -599,7 +599,7 @@ scan_rtx_address (rtx insn, rtx *loc, en
          }
  
        if (locI)
@@ -28532,7 +23099,7 @@ diff -Nur a/gcc/regrename.c b/gcc/regrename.c
        if (locB)
          scan_rtx_address (insn, locB, base_reg_class (mode, PLUS, index_code),
                            action, mode);
-@@ -1488,14 +1488,14 @@
+@@ -1488,14 +1488,14 @@ replace_oldest_value_addr (rtx *loc, enu
            int index_op;
            unsigned regno0 = REGNO (op0), regno1 = REGNO (op1);
  
@@ -28550,7 +23117,7 @@ diff -Nur a/gcc/regrename.c b/gcc/regrename.c
              index_op = 1;
            else if (regno_ok_for_base_p (regno1, mode, PLUS, REG))
              index_op = 0;
-@@ -1520,8 +1520,8 @@
+@@ -1520,8 +1520,8 @@ replace_oldest_value_addr (rtx *loc, enu
          }
  
        if (locI)
@@ -28561,10 +23128,9 @@ diff -Nur a/gcc/regrename.c b/gcc/regrename.c
        if (locB)
          changed |= replace_oldest_value_addr (locB,
                                                base_reg_class (mode, PLUS,
-diff -Nur a/gcc/reload.c b/gcc/reload.c
---- a/gcc/reload.c     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/reload.c     2010-01-25 09:50:29.155687438 +0100
-@@ -5046,7 +5046,7 @@
+--- a/gcc/reload.c
++++ b/gcc/reload.c
+@@ -5046,7 +5046,7 @@ find_reloads_address (enum machine_mode 
            loc = &XEXP (*loc, 0);
        }
  
@@ -28573,7 +23139,7 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
        {
          /* Unshare the sum as well.  */
          *loc = ad = copy_rtx (ad);
-@@ -5054,8 +5054,8 @@
+@@ -5054,8 +5054,8 @@ find_reloads_address (enum machine_mode 
          /* Reload the displacement into an index reg.
             We assume the frame pointer or arg pointer is a base reg.  */
          find_reloads_address_part (XEXP (ad, 1), &XEXP (ad, 1),
@@ -28584,7 +23150,7 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
          return 0;
        }
        else
-@@ -5448,13 +5448,13 @@
+@@ -5448,13 +5448,13 @@ find_reloads_address_1 (enum machine_mod
  #define REG_OK_FOR_CONTEXT(CONTEXT, REGNO, MODE, OUTER, INDEX)                \
    ((CONTEXT) == 0                                                     \
     ? regno_ok_for_base_p (REGNO, MODE, OUTER, INDEX)                  \
@@ -28600,7 +23166,7 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
    else
      context_reg_class = base_reg_class (mode, outer_code, index_code);
  
-@@ -5546,17 +5546,17 @@
+@@ -5546,17 +5546,17 @@ find_reloads_address_1 (enum machine_mod
  
        else if (code0 == REG && code1 == REG)
          {
@@ -28621,7 +23187,7 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
              find_reloads_address_1 (mode, orig_op0, 0, PLUS, REG,
                                      &XEXP (x, 0), opnum, type, ind_levels,
                                      insn);
-@@ -5564,7 +5564,7 @@
+@@ -5564,7 +5564,7 @@ find_reloads_address_1 (enum machine_mod
              find_reloads_address_1 (mode, orig_op0, 1, PLUS, SCRATCH,
                                      &XEXP (x, 0), opnum, type, ind_levels,
                                      insn);
@@ -28630,7 +23196,7 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
              find_reloads_address_1 (mode, orig_op1, 0, PLUS, REG,
                                      &XEXP (x, 1), opnum, type, ind_levels,
                                      insn);
-@@ -5634,7 +5634,7 @@
+@@ -5634,7 +5634,7 @@ find_reloads_address_1 (enum machine_mod
           need to live longer than a TYPE reload normally would, so be
           conservative and class it as RELOAD_OTHER.  */
        if ((REG_P (XEXP (op1, 1))
@@ -28639,7 +23205,7 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
            || GET_CODE (XEXP (op1, 1)) == PLUS)
          find_reloads_address_1 (mode, XEXP (op1, 1), 1, code, SCRATCH,
                                  &XEXP (op1, 1), opnum, RELOAD_OTHER,
-@@ -6128,18 +6128,26 @@
+@@ -6131,18 +6131,26 @@ find_reloads_subreg_address (rtx x, int 
              /* For some processors an address may be valid in the
                 original mode but not in a smaller mode.  For
                 example, ARM accepts a scaled index register in
@@ -28677,10 +23243,24 @@ diff -Nur a/gcc/reload.c b/gcc/reload.c
                push_reload (XEXP (tem, 0), NULL_RTX, &XEXP (tem, 0), (rtx*) 0,
                             base_reg_class (GET_MODE (tem), MEM, SCRATCH),
                             GET_MODE (XEXP (tem, 0)), VOIDmode, 0, 0,
-diff -Nur a/gcc/rtlanal.c b/gcc/rtlanal.c
---- a/gcc/rtlanal.c    2009-03-14 09:10:55.000000000 +0100
-+++ b/gcc/rtlanal.c    2010-01-25 09:50:29.155687438 +0100
-@@ -2913,62 +2913,78 @@
+--- a/gcc/rtl.def
++++ b/gcc/rtl.def
+@@ -1088,7 +1088,11 @@ DEF_RTL_EXPR(FINAL_ABSENCE_SET, "final_a
+    guard for the bypass.  The function will get the two insns as
+    parameters.  If the function returns zero the bypass will be
+    ignored for this case.  Additional guard is necessary to recognize
+-   complicated bypasses, e.g. when consumer is load address.  */
++   complicated bypasses, e.g. when consumer is load address.  If there
++   are more one bypass with the same output and input insns, the
++   chosen bypass is the first bypass with a guard in description whose
++   guard function returns nonzero.  If there is no such bypass, then
++   bypass without the guard function is chosen.  */
+ DEF_RTL_EXPR(DEFINE_BYPASS, "define_bypass", "issS", RTX_EXTRA)
+ /* (define_automaton string) describes names of automata generated and
+--- a/gcc/rtlanal.c
++++ b/gcc/rtlanal.c
+@@ -2913,62 +2913,78 @@ int
  commutative_operand_precedence (rtx op)
  {
    enum rtx_code code = GET_CODE (op);
@@ -28808,26 +23388,9 @@ diff -Nur a/gcc/rtlanal.c b/gcc/rtlanal.c
  }
  
  /* Return 1 iff it is necessary to swap operands of commutative operation
-diff -Nur a/gcc/rtl.def b/gcc/rtl.def
---- a/gcc/rtl.def      2008-02-26 17:05:24.000000000 +0100
-+++ b/gcc/rtl.def      2010-01-25 09:50:29.155687438 +0100
-@@ -1088,7 +1088,11 @@
-    guard for the bypass.  The function will get the two insns as
-    parameters.  If the function returns zero the bypass will be
-    ignored for this case.  Additional guard is necessary to recognize
--   complicated bypasses, e.g. when consumer is load address.  */
-+   complicated bypasses, e.g. when consumer is load address.  If there
-+   are more one bypass with the same output and input insns, the
-+   chosen bypass is the first bypass with a guard in description whose
-+   guard function returns nonzero.  If there is no such bypass, then
-+   bypass without the guard function is chosen.  */
- DEF_RTL_EXPR(DEFINE_BYPASS, "define_bypass", "issS", RTX_EXTRA)
- /* (define_automaton string) describes names of automata generated and
-diff -Nur a/gcc/sched-ebb.c b/gcc/sched-ebb.c
---- a/gcc/sched-ebb.c  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/sched-ebb.c  2010-01-25 09:50:29.155687438 +0100
-@@ -286,6 +286,7 @@
+--- a/gcc/sched-ebb.c
++++ b/gcc/sched-ebb.c
+@@ -286,6 +286,7 @@ static struct haifa_sched_info ebb_sched
    rank,
    ebb_print_insn,
    ebb_contributes_to_priority,
@@ -28835,10 +23398,9 @@ diff -Nur a/gcc/sched-ebb.c b/gcc/sched-ebb.c
  
    NULL, NULL,
    NULL, NULL,
-diff -Nur a/gcc/sched-int.h b/gcc/sched-int.h
---- a/gcc/sched-int.h  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/sched-int.h  2010-01-25 09:50:29.155687438 +0100
-@@ -558,6 +558,10 @@
+--- a/gcc/sched-int.h
++++ b/gcc/sched-int.h
+@@ -558,6 +558,10 @@ struct haifa_sched_info
       calculations.  */
    int (*contributes_to_priority) (rtx, rtx);
  
@@ -28849,10 +23411,9 @@ diff -Nur a/gcc/sched-int.h b/gcc/sched-int.h
    /* The boundaries of the set of insns to be scheduled.  */
    rtx prev_head, next_tail;
  
-diff -Nur a/gcc/sched-rgn.c b/gcc/sched-rgn.c
---- a/gcc/sched-rgn.c  2008-09-18 10:29:48.000000000 +0200
-+++ b/gcc/sched-rgn.c  2010-01-25 09:50:29.155687438 +0100
-@@ -2338,6 +2338,19 @@
+--- a/gcc/sched-rgn.c
++++ b/gcc/sched-rgn.c
+@@ -2338,6 +2338,19 @@ static const struct sched_deps_info_def 
      0, 0, 0
    };
  
@@ -28872,7 +23433,7 @@ diff -Nur a/gcc/sched-rgn.c b/gcc/sched-rgn.c
  /* Used in schedule_insns to initialize current_sched_info for scheduling
     regions (or single basic blocks).  */
  
-@@ -2350,6 +2363,7 @@
+@@ -2350,6 +2363,7 @@ static const struct haifa_sched_info rgn
    rgn_rank,
    rgn_print_insn,
    contributes_to_priority,
@@ -28880,10 +23441,9 @@ diff -Nur a/gcc/sched-rgn.c b/gcc/sched-rgn.c
  
    NULL, NULL,
    NULL, NULL,
-diff -Nur a/gcc/sdbout.c b/gcc/sdbout.c
---- a/gcc/sdbout.c     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/sdbout.c     2010-01-25 09:50:29.155687438 +0100
-@@ -337,6 +337,7 @@
+--- a/gcc/sdbout.c
++++ b/gcc/sdbout.c
+@@ -338,6 +338,7 @@ const struct gcc_debug_hooks sdb_debug_h
    debug_nothing_int,                   /* handle_pch */
    debug_nothing_rtx,                   /* var_location */
    debug_nothing_void,                    /* switch_text_section */
@@ -28891,10 +23451,9 @@ diff -Nur a/gcc/sdbout.c b/gcc/sdbout.c
    0                                      /* start_end_main_source_file */
  };
  
-diff -Nur a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
---- a/gcc/sel-sched-ir.c       2008-10-12 01:39:21.000000000 +0200
-+++ b/gcc/sel-sched-ir.c       2010-01-25 09:50:29.165687452 +0100
-@@ -5431,6 +5431,7 @@
+--- a/gcc/sel-sched-ir.c
++++ b/gcc/sel-sched-ir.c
+@@ -5431,6 +5431,7 @@ static struct haifa_sched_info sched_sel
    NULL, /* rgn_rank */
    sel_print_insn, /* rgn_print_insn */
    contributes_to_priority,
@@ -28902,9 +23461,8 @@ diff -Nur a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
  
    NULL, NULL,
    NULL, NULL,
-diff -Nur a/gcc/target-def.h b/gcc/target-def.h
---- a/gcc/target-def.h 2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/target-def.h 2010-01-25 09:50:29.165687452 +0100
+--- a/gcc/target-def.h
++++ b/gcc/target-def.h
 @@ -84,7 +84,7 @@
  #define TARGET_ASM_INTERNAL_LABEL default_internal_label
  #endif
@@ -29030,10 +23588,9 @@ diff -Nur a/gcc/target-def.h b/gcc/target-def.h
    TARGET_UNWIND_TABLES_DEFAULT,                       \
    TARGET_HAVE_NAMED_SECTIONS,                 \
    TARGET_HAVE_SWITCHABLE_BSS_SECTIONS,                \
-diff -Nur a/gcc/target.h b/gcc/target.h
---- a/gcc/target.h     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/target.h     2010-01-25 09:50:29.165687452 +0100
-@@ -473,7 +473,16 @@
+--- a/gcc/target.h
++++ b/gcc/target.h
+@@ -473,7 +473,16 @@ struct gcc_target
  
      /* Target builtin that implements vector permute.  */
      tree (* builtin_vec_perm) (tree, tree*);
@@ -29051,7 +23608,7 @@ diff -Nur a/gcc/target.h b/gcc/target.h
  
    /* The initial value of target_flags.  */
    int default_target_flags;
-@@ -694,6 +703,10 @@
+@@ -694,6 +703,10 @@ struct gcc_target
       FLAGS has the same meaning as in rtlanal.c: may_trap_p_1.  */
    int (* unspec_may_trap_p) (const_rtx x, unsigned flags);
  
@@ -29062,7 +23619,7 @@ diff -Nur a/gcc/target.h b/gcc/target.h
    /* Given a register, this hook should return a parallel of registers
       to represent where to find the register pieces.  Define this hook
       if the register and its mode are represented in Dwarf in
-@@ -870,6 +883,10 @@
+@@ -870,6 +883,10 @@ struct gcc_target
      rtx (*function_value) (const_tree ret_type, const_tree fn_decl_or_type,
                           bool outgoing);
  
@@ -29073,7 +23630,7 @@ diff -Nur a/gcc/target.h b/gcc/target.h
      /* Return an rtx for the argument pointer incoming to the
         current function.  */
      rtx (*internal_arg_pointer) (void);
-@@ -899,6 +916,24 @@
+@@ -899,6 +916,24 @@ struct gcc_target
       is not permitted on TYPE1 and TYPE2, NULL otherwise.  */
    const char *(*invalid_binary_op) (int op, const_tree type1, const_tree type2);
  
@@ -29098,7 +23655,7 @@ diff -Nur a/gcc/target.h b/gcc/target.h
    /* Return the array of IRA cover classes for the current target.  */
    const enum reg_class *(*ira_cover_classes) (void);
  
-@@ -977,6 +1012,11 @@
+@@ -977,6 +1012,11 @@ struct gcc_target
         class  (eg, tweak visibility or perform any other required
         target modifications).  */
      void (*adjust_class_at_definition) (tree type);
@@ -29110,7 +23667,7 @@ diff -Nur a/gcc/target.h b/gcc/target.h
    } cxx;
  
    /* Functions and data for emulated TLS support.  */
-@@ -1040,6 +1080,10 @@
+@@ -1040,6 +1080,10 @@ struct gcc_target
       bits in the bitmap passed in. */  
    void (*live_on_entry) (bitmap); 
  
@@ -29121,10 +23678,9 @@ diff -Nur a/gcc/target.h b/gcc/target.h
    /* True if unwinding tables should be generated by default.  */
    bool unwind_tables_default;
  
-diff -Nur a/gcc/targhooks.c b/gcc/targhooks.c
---- a/gcc/targhooks.c  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/targhooks.c  2010-01-25 09:50:29.165687452 +0100
-@@ -441,6 +441,15 @@
+--- a/gcc/targhooks.c
++++ b/gcc/targhooks.c
+@@ -441,6 +441,15 @@ hook_invalid_arg_for_unprototyped_fn (
    return NULL;
  }
  
@@ -29140,7 +23696,7 @@ diff -Nur a/gcc/targhooks.c b/gcc/targhooks.c
  /* Initialize the stack protection decls.  */
  
  /* Stack protection related decls living in libgcc.  */
-@@ -561,6 +570,12 @@
+@@ -561,6 +570,12 @@ default_function_value (const_tree ret_t
  }
  
  rtx
@@ -29153,7 +23709,7 @@ diff -Nur a/gcc/targhooks.c b/gcc/targhooks.c
  default_internal_arg_pointer (void)
  {
    /* If the reg that the virtual arg pointer will be translated into is
-@@ -712,6 +727,12 @@
+@@ -712,6 +727,12 @@ default_builtin_vector_alignment_reachab
    return true;
  }
  
@@ -29166,10 +23722,9 @@ diff -Nur a/gcc/targhooks.c b/gcc/targhooks.c
  bool
  default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED)
  {
-diff -Nur a/gcc/targhooks.h b/gcc/targhooks.h
---- a/gcc/targhooks.h  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/targhooks.h  2010-01-25 09:50:29.165687452 +0100
-@@ -48,6 +48,7 @@
+--- a/gcc/targhooks.h
++++ b/gcc/targhooks.h
+@@ -48,6 +48,7 @@ extern enum machine_mode default_mode_fo
  
  extern tree default_cxx_guard_type (void);
  extern tree default_cxx_get_cookie_size (tree);
@@ -29177,7 +23732,7 @@ diff -Nur a/gcc/targhooks.h b/gcc/targhooks.h
  
  extern bool hook_pass_by_reference_must_pass_in_stack
    (CUMULATIVE_ARGS *, enum machine_mode mode, const_tree, bool);
-@@ -71,6 +72,8 @@
+@@ -71,6 +72,8 @@ extern tree default_builtin_reciprocal (
  
  extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
  
@@ -29186,7 +23741,7 @@ diff -Nur a/gcc/targhooks.h b/gcc/targhooks.h
  /* These are here, and not in hooks.[ch], because not all users of
     hooks.h include tm.h, and thus we don't have CUMULATIVE_ARGS.  */
  
-@@ -87,6 +90,7 @@
+@@ -87,6 +90,7 @@ extern const char *hook_invalid_arg_for_
    (const_tree, const_tree, const_tree);
  extern bool hook_bool_const_rtx_commutative_p (const_rtx, int);
  extern rtx default_function_value (const_tree, const_tree, bool);
@@ -29194,321 +23749,483 @@ diff -Nur a/gcc/targhooks.h b/gcc/targhooks.h
  extern rtx default_internal_arg_pointer (void);
  #ifdef IRA_COVER_CLASSES
  extern const enum reg_class *default_ira_cover_classes (void);
-diff -Nur a/gcc/testsuite/gcc.c-torture/execute/990208-1.x b/gcc/testsuite/gcc.c-torture/execute/990208-1.x
---- a/gcc/testsuite/gcc.c-torture/execute/990208-1.x   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.c-torture/execute/990208-1.x   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,12 @@
-+
-+# On ARM, with -Os, some of the functions that this test
-+# expects to be inlined are not inlined for code size
-+# reasons.  This is not a bug, it's intentional,
-+# so stop this test from running.
-+set torture_eval_before_compile {
-+  if { [istarget "arm-*-*"] && [string match {*-Os*} "$option"] } {
-+    continue
-+  }
-+}
-+
-+return 0
-\ No newline at end of file
-diff -Nur a/gcc/testsuite/gcc.c-torture/execute/bcp-1.x b/gcc/testsuite/gcc.c-torture/execute/bcp-1.x
---- a/gcc/testsuite/gcc.c-torture/execute/bcp-1.x      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.c-torture/execute/bcp-1.x      2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,12 @@
-+
-+# On ARM, with -Os, some of the functions that this test
-+# expects to be inlined are not inlined for code size
-+# reasons.  This is not a bug, it's intentional,
-+# so stop this test from running.
-+set torture_eval_before_compile {
-+  if { [istarget "arm-*-*"] && [string match {*-Os*} "$option"] } {
-+    continue
-+  }
-+}
-+
-+return 0
-\ No newline at end of file
-diff -Nur a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
---- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp        2009-03-16 22:11:57.000000000 +0100
-+++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp        2010-01-25 09:50:29.165687452 +0100
-@@ -54,6 +54,9 @@
-      || [istarget "sh*-*-*"] } then {
-   lappend additional_flags "-mieee"
- }
-+if [istarget "mips*-sde-*"] then {
-+  lappend additional_flags "-Wl,--defsym=__cs3_mips_float_type=2" "-lcs3-mips-cp1" "-lcs3-mips-fpemu"
-+}
- # load support procs
- load_lib c-torture.exp
-diff -Nur a/gcc/testsuite/gcc.dg/builtin-redefine.c b/gcc/testsuite/gcc.dg/builtin-redefine.c
---- a/gcc/testsuite/gcc.dg/builtin-redefine.c  2008-09-18 17:39:08.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/builtin-redefine.c  2010-01-25 09:50:29.165687452 +0100
-@@ -28,7 +28,7 @@
- #define __TIME__ "X"         /* Re-define while defined.  */
- #define __TIME__ "Y"         /* { dg-warning "\"__TIME__\" redefined" } */
--/* { dg-warning "previous definition" "" { target *-*-* } 28 } */
-+/* { dg-message "previous definition" "" { target *-*-* } 28 } */
- #undef __TIME__              /* Undefine while defined.  */
-@@ -39,7 +39,7 @@
- #define __DATE__ "X"         /* Re-define while defined.  */
- #define __DATE__ "Y"         /* { dg-warning "\"__DATE__\" redefined" } */
--/* { dg-warning "previous definition" "" { target *-*-* } 39 } */
-+/* { dg-message "previous definition" "" { target *-*-* } 39 } */
- #undef __DATE__              /* Undefine while defined.  */
-@@ -48,7 +48,7 @@
- #define __TIMESTAMP__ "X"    /* Re-define while defined.  */
+--- a/gcc/testsuite/g++.dg/abi/mangle-neon.C
++++ b/gcc/testsuite/g++.dg/abi/mangle-neon.C
+@@ -2,7 +2,7 @@
  
- #define __TIMESTAMP__ "Y"    /* { dg-warning "\"__TIMESTAMP__\" redefined" } */
--/* { dg-warning "previous definition" "" { target *-*-* } 48 } */
-+/* { dg-message "previous definition" "" { target *-*-* } 48 } */
+ // { dg-do compile }
+ // { dg-require-effective-target arm_neon_ok }
+-// { dg-options "-mfpu=neon -mfloat-abi=softfp" }
++// { dg-add-options arm_neon }
  
- #undef __TIMESTAMP__         /* Undefine while defined.  */
+ #include <arm_neon.h>
  
-diff -Nur a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
---- a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c   2009-03-19 23:10:22.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c   2010-01-25 09:50:29.165687452 +0100
-@@ -46,7 +46,7 @@
- "/* { dg-options \"%s-I%s\" } */\n",
- "/* { dg-options \"%s-I%s -Wno-abi\" } */\n",
- "/* { dg-options \"%s-I%s -mno-mmx -Wno-abi\" { target i?86-*-* x86_64-*-* } } */\n",
--"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* *-*-mingw32* *-*-cygwin* } } */\n",
-+"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* } } */\n",
- "/* { dg-options \"%s-I%s -mno-mmx -fno-common -Wno-abi\" { target i?86-*-darwin* x86_64-*-darwin* } } */\n",
- "/* { dg-options \"%s-I%s -mno-base-addresses\" { target mmix-*-* } } */\n",
- "/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n"
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/include2a.c b/gcc/testsuite/gcc.dg/cpp/include2a.c
---- a/gcc/testsuite/gcc.dg/cpp/include2a.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/include2a.c     2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,16 @@
-+/* Copyright (C) 2000 Free Software Foundation, Inc.  */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/eh/ref1.C
+@@ -0,0 +1,61 @@
++// { dg-do run { xfail { ! arm-*-*eabi } } }
 +
-+/* { dg-do preprocess } */
++// catching a pointer to class by reference prohibits derived->base
++// transformation.   The generic C++ ABI gets this wrong.  ARM EABI
++// gets this right, except for exception specifications where a bug is
++// acknowledged. 
 +
-+/* Tests that #include does not allow the terminating '>' or '"' to be
-+   escaped, as per the standard.  */
++#include <stdio.h>
 +
-+/* Source: Neil Booth, 4 Nov 2000.  */
++struct A {};
 +
-+#include "silly\""  /* { dg-error "extra tokens" "" } */
++struct B : A {};
 +
-+/* These error is No such file or directory, just once.  However, this
-+   message is locale-dependent, so don't test for it.  */
-+/* { dg-error "silly" "" { target *-*-* } 10 } */
-+/* { dg-error "missing" "" { target *-*-* } 10 } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/include2.c b/gcc/testsuite/gcc.dg/cpp/include2.c
---- a/gcc/testsuite/gcc.dg/cpp/include2.c      2007-05-17 22:58:47.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/cpp/include2.c      2010-01-25 09:50:29.165687452 +0100
-@@ -8,9 +8,8 @@
- /* Source: Neil Booth, 4 Nov 2000.  */
- #include <silly\>>  /* { dg-error "extra tokens" "" } */
--#include "silly\""  /* { dg-error "extra tokens" "" } */
- /* These error is No such file or directory, just once.  However, this
-    message is locale-dependent, so don't test for it.  */
- /* { dg-error "silly" "" { target *-*-* } 10 } */
--/* { dg-error "missing" "" { target *-*-* } 11 } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-header-1.c b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c
---- a/gcc/testsuite/gcc.dg/cpp/missing-header-1.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c      2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,9 @@
-+/* Test that missing headers are fatal errors.  PR 15638.  */
-+/* { dg-do compile } */
-+/* { dg-options "" } */
++int Foo ()
++{
++  B b;
++  
++  try
++    {
++      throw &b;
++    }
++  catch (A *&a)  // { dg-bogus "earlier handler" "" { xfail { ! arm-*-*eabi } } }
++    {
++      printf ("fail, caught A*&%p\n", a);
++      return 1;
++    }
++  catch (B *&b)  // { dg-bogus "will be caught" "" { xfail { ! arm-*-*eabi } } }
++    {
++      printf ("pass, caught B*&%p\n", b);
++    }
++  catch (...)
++    {
++      printf ("fail, caught ...");
++      return 2;
++    }
++  try
++    {
++      throw &b;
++    }
++  catch (A *a) // { dg-warning "by earlier handler" }
++    {
++      printf ("pass, caught A*%p\n", a);
++    }
++  catch (B *b) // { dg-warning "will be caught" }
++    {
++      printf ("fail, caught B*%p\n", b);
++      return 3;
++    }
++  catch (...)
++    {
++      printf ("fail, caught ...");
++      return 4;
++    }
++  return 0;
++}
 +
-+#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
 +
-+/* This declaration should not receive any diagnostic.  */
-+foo bar;
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c b/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c
---- a/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c     2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,6 @@
-+/* Test that missing user headers are fatal errors with -MD.  */
-+/* { dg-do compile } */
-+/* { dg-options "-MD" } */
++int main ()
++{
++  return Foo ();
++}
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/eh/ref2.C
+@@ -0,0 +1,70 @@
++// { dg-do run { xfail { ! arm-*-*eabi } } }
 +
-+#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c b/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
---- a/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c    2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,6 @@
-+/* Test that missing user headers are fatal errors with -MMD.  */
-+/* { dg-do compile } */
-+/* { dg-options "-MMD" } */
++// catching a pointer to class by reference prohibits derived->base
++// transformation.   The generic C++ ABI gets this wrong.  ARM EABI
++// gets this right, except for exception specifications where a bug is
++// acknowledged. 
 +
-+#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
---- a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c  2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,6 @@
-+/* Test that missing system headers are fatal errors with -MD.  */
-+/* { dg-do compile } */
-+/* { dg-options "-MD" } */
++#include <stdio.h>
++#include <exception>
++#include <stdlib.h>
 +
-+#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
---- a/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c 2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,6 @@
-+/* Test that missing system headers are fatal errors with -MMD.  */
-+/* { dg-do compile } */
-+/* { dg-options "-MMD" } */
++struct A {};
 +
-+#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/redef2.c b/gcc/testsuite/gcc.dg/cpp/redef2.c
---- a/gcc/testsuite/gcc.dg/cpp/redef2.c        2001-11-23 08:50:42.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/redef2.c        2010-01-25 09:50:29.165687452 +0100
-@@ -23,9 +23,9 @@
-    { dg-warning "redefined" "redef ro"      { target *-*-* } 12 }
-    { dg-warning "redefined" "redef va"      { target *-*-* } 15 }
--   { dg-warning "previous"  "prev def mac"  { target *-*-* } 6  }
--   { dg-warning "previous"  "prev def mac"  { target *-*-* } 7  }
--   { dg-warning "previous"  "prev def mac"  { target *-*-* } 8  }
--   { dg-warning "previous"  "prev def ro"   { target *-*-* } 11 }
--   { dg-warning "previous"  "prev def va"   { target *-*-* } 14 }
-+   { dg-message "previous"  "prev def mac"  { target *-*-* } 6  }
-+   { dg-message "previous"  "prev def mac"  { target *-*-* } 7  }
-+   { dg-message "previous"  "prev def mac"  { target *-*-* } 8  }
-+   { dg-message "previous"  "prev def ro"   { target *-*-* } 11 }
-+   { dg-message "previous"  "prev def va"   { target *-*-* } 14 }
- */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/redef3.c b/gcc/testsuite/gcc.dg/cpp/redef3.c
---- a/gcc/testsuite/gcc.dg/cpp/redef3.c        2003-06-01 20:55:15.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/cpp/redef3.c        2010-01-25 09:50:29.165687452 +0100
-@@ -15,7 +15,7 @@
-    { dg-warning "redefined" "redef B"      { target *-*-* } 9  }
-    { dg-warning "redefined" "redef D"      { target *-*-* } 11 }
-    { dg-warning "redefined" "redef E"      { target *-*-* } 12 }
--   { dg-warning "previous"  "prev def A"   { target *-*-* } 6  }
--   { dg-warning "previous"  "prev def B"   { target *-*-* } 8  }
--   { dg-warning "previous"  "prev def D/E" { target *-*-* } 0  }
-+   { dg-message "previous"  "prev def A"   { target *-*-* } 6  }
-+   { dg-message "previous"  "prev def B"   { target *-*-* } 8  }
-+   { dg-message "previous"  "prev def D/E" { target *-*-* } 0  }
- */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/trad/redef2.c b/gcc/testsuite/gcc.dg/cpp/trad/redef2.c
---- a/gcc/testsuite/gcc.dg/cpp/trad/redef2.c   2002-06-21 07:29:09.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/cpp/trad/redef2.c   2010-01-25 09:50:29.165687452 +0100
-@@ -2,31 +2,31 @@
- /* { dg-do preprocess } */
--#define foo bar    /* { dg-warning "previous def" "foo prev def" } */
-+#define foo bar    /* { dg-message "previous def" "foo prev def" } */
- #define foo barr   /* { dg-warning "redefined" "foo redefined" } */
- #undef foo
--#define foo bar    /* { dg-warning "previous def" "foo prev def 2" } */
-+#define foo bar    /* { dg-message "previous def" "foo prev def 2" } */
- #define foo() bar    /* { dg-warning "redefined" "foo redefined 2" } */
- #undef foo
--#define foo() bar    /* { dg-warning "previous def" "foo prev def" } */
-+#define foo() bar    /* { dg-message "previous def" "foo prev def" } */
- #define foo() barr   /* { dg-warning "redefined" "foo redefined" } */
--#define quux(thud) a thud b /* { dg-warning "previous def" "quux prev def" } */
-+#define quux(thud) a thud b /* { dg-message "previous def" "quux prev def" } */
- #define quux(thu) a thud b   /* { dg-warning "redefined" "quux redefined" } */
--#define bar(x, y) x+y /* { dg-warning "previous def" "bar prev def" } */
-+#define bar(x, y) x+y /* { dg-message "previous def" "bar prev def" } */
- #define bar(x, y) x+x   /* { dg-warning "redefined" "bar redefined" } */
--#define bat(x, y) x+y  /* { dg-warning "previous def" "bat prev def" } */
-+#define bat(x, y) x+y  /* { dg-message "previous def" "bat prev def" } */
- #define bat(x, y) x+ y   /* { dg-warning "redefined" "bat redefined" } */
--#define baz(x, y) x+y  /* { dg-warning "previous def" "baz prev def" } */
-+#define baz(x, y) x+y  /* { dg-message "previous def" "baz prev def" } */
- #define baz(x, y) x +y   /* { dg-warning "redefined" "baz redefined" } */
--#define f(x, y) "x y"  /* { dg-warning "previous def" "f prev def" } */
-+#define f(x, y) "x y"  /* { dg-message "previous def" "f prev def" } */
- #define f(x, y) "x  y"   /* { dg-warning "redefined" "f redefined" } */
--#define g(x, y) 'x'  /* { dg-warning "previous def" "g prev def" } */
-+#define g(x, y) 'x'  /* { dg-message "previous def" "g prev def" } */
- #define g(x, y) ' x'   /* { dg-warning "redefined" "g redefined" } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c b/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c
---- a/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c   2004-02-20 19:42:51.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c   2010-01-25 09:50:29.165687452 +0100
-@@ -4,3 +4,4 @@
- #define f(x,...)      /* { dg-error "variadic" } */
- #define g(x,y...)     /* { dg-error "variadic" } */
- int not_empty;
-+/* { dg-message "warnings being treated as errors" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c b/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c
---- a/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c   2004-02-20 19:42:51.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c   2010-01-25 09:50:29.165687452 +0100
-@@ -4,3 +4,4 @@
- #define f(x,...)
- #define g(x,y...)     /* { dg-error "variadic" } */
- int not_empty;
-+/* { dg-message "warnings being treated as errors" "" { target *-*-* } 0 } */
-diff -Nur a/gcc/testsuite/gcc.dg/dll-4.c b/gcc/testsuite/gcc.dg/dll-4.c
---- a/gcc/testsuite/gcc.dg/dll-4.c     2005-10-12 22:54:50.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/dll-4.c     2010-01-25 09:50:29.165687452 +0100
-@@ -11,5 +11,6 @@
- int f () { return foo1 + foo2; }
- /* FIXME: We should scan the output of nm for this case.  */
--/* { dg-final { scan-assembler "(foo2:.*\.comm\[ \t_\]*foo1)" } } */
-+/* { dg-final { scan-assembler "(foo2:)" } } */
-+/* { dg-final { scan-assembler "(\.comm\[ \t_\]*foo1)" } } */
- /* { dg-final { scan-assembler-not "(__imp_|_imp__)" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/dll-6a.c b/gcc/testsuite/gcc.dg/dll-6a.c
---- a/gcc/testsuite/gcc.dg/dll-6a.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/dll-6a.c    2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,21 @@
-+extern void i1();
-+extern void i3();
-+extern void i4();
-+extern void i5();
++struct B : A {};
 +
-+extern void e1();
-+extern void e3();
-+extern void e4();
-+extern void e5();
++B b;
 +
-+int main () {
-+  i1();
-+  i3();
-+  i4();
-+  i5();
++void One () throw (A *&)
++{
++  throw &b;
++}
 +
-+  e1();
-+  e3();
-+  e4();
-+  e5();
++void Two () throw (A *&, B *&)
++{
++  throw &b;
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/dll-6.c b/gcc/testsuite/gcc.dg/dll-6.c
---- a/gcc/testsuite/gcc.dg/dll-6.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/dll-6.c     2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,52 @@
-+/* { dg-do link } */
-+/* { dg-require-dll "" } */
-+/* { dg-additional-sources "dll-6a.c" } */
-+/* { dg-options "-w -O2 -std=gnu89" } */
 +
-+/* Test that inline functions declared "dllexport" appear in object
-+   files, even if they are not called.
++void Three () throw (A *)
++{
++  throw &b;
++}
++
++int Foo (void (*fn)())
++{
++  try
++    {
++      fn ();
++    }
++  catch (B *b)
++    {
++      printf ("pass, caught B*%p\n", b);
++    }
++  catch (...)
++    {
++      printf ("fail, caught ...");
++      return 1;
++    }
++  return 0;
++}
++
++void handler ()
++{
++  printf ("pass, got unexpected exception\n");
++  exit (0);
++}
++
++int main ()
++{
++  if (Foo (&Three))
++    return 1;
++
++  if (Foo (&Two))
++    return 2;
++
++  std::set_unexpected (handler);
++  if (Foo (&One))
++    return 3;
++  printf ("fail, did not get unexpected exception\n");
++  return 4;
++}
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/altivec-17.C
+@@ -0,0 +1,16 @@
++// { dg-do compile { target powerpc*-*-* } }
++// { dg-require-effective-target powerpc_altivec_ok }
++// { dg-options "-maltivec" }
++
++// Make sure that bool vectors have distinct names to int vectors
++
++#define vector__ __attribute__((altivec (vector__)))
++#define bool__ __attribute__((altivec(bool__)))
++
++typedef vector__ unsigned int simd_type;
++typedef vector__ bool__ int bool_simd_type;
++
++void Foo (bool_simd_type const &a)
++{
++  simd_type const &v = a; // { dg-error "'const unsigned int __vector__&' from expression of type 'const __bool int __vector__'" }
++}
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee -ffast-math" } */
++
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=alternative" } */
++
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=alternative -ffast-math" } */
++
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
+@@ -0,0 +1,15 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_fp16_ok } */
++/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-add-options arm_neon_fp16 } */
++
++#include "arm-fp16-ops.h"
++
++/* We've specified options for hardware float, including fp16 support, so
++   we should not see any calls to libfuncs here.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
+@@ -0,0 +1,15 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_fp16_ok } */
++/* { dg-options "-mfp16-format=ieee -ffast-math" } */
++/* { dg-add-options arm_neon_fp16 } */
++
++#include "arm-fp16-ops.h"
++
++/* We've specified options for hardware float, including fp16 support, so
++   we should not see any calls to libfuncs here.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
+@@ -0,0 +1,13 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-add-options arm_neon } */
++
++#include "arm-fp16-ops.h"
++
++/* We've specified options for hardware float, so we should not see any 
++   calls to libfuncs here except for those to the conversion functions.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C
+@@ -0,0 +1,13 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-mfp16-format=ieee -ffast-math" } */
++/* { dg-add-options arm_neon } */
++
++#include "arm-fp16-ops.h"
++
++/* We've specified options for hardware float, so we should not see any 
++   calls to libfuncs here except for those to the conversion functions.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h
+@@ -0,0 +1,135 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++
++#include <assert.h>
++
++#define CHECK(e,r) assert ((e) == r)
++#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r))
++#define TEST(e) assert (e)
++#define TESTNOT(e) assert (!(e))
++
++volatile __fp16 h0 = 0.0;
++volatile __fp16 h1 = 1.0;
++volatile __fp16 h42 = 42.0;
++volatile __fp16 hm2 = -2.0;
++volatile __fp16 temp;
++
++volatile float f0 = 0.0;
++volatile float f1 = 1.0;
++volatile float f42 = 42.0;
++volatile float fm2 = -2.0;
++
++int main (void)
++{
++  TEST (h1);
++  TESTNOT (h0);
++  TEST (!h0);
++  TESTNOT (!h1);
++
++  CHECK2 (-h1, -1.0);
++  CHECK2 (+h1, 1.0);
++
++  CHECK (h1++, 1.0);
++  CHECK (h1, 2.0);
++  CHECK (++h1, 3.0);
++  CHECK (h1, 3.0);
++
++  CHECK (--h1, 2.0);
++  CHECK (h1, 2.0);
++  CHECK (h1--, 2.0);
++  CHECK (h1, 1.0);
++
++  CHECK2 (h42 * hm2, -84.0);
++  CHECK2 (h42 * (__fp16) -2.0, -84.0);
++  CHECK2 (h42 * fm2, -84.0);
++  CHECK2 (f42 * hm2, -84.0);
++
++  CHECK2 (h42 / hm2, -21.0);
++  CHECK2 (h42 / (__fp16) -2.0, -21.0);
++  CHECK2 (h42 / fm2, -21.0);
++  CHECK2 (f42 / hm2, -21.0);
++
++  CHECK2 (hm2 + h42, 40.0);
++  CHECK2 ((__fp16)-2.0 + h42, 40.0);
++  CHECK2 (hm2 + f42, 40.0);
++  CHECK2 (fm2 + h42, 40.0);
++
++  CHECK2 (hm2 - h42, -44.0);
++  CHECK2 ((__fp16)-2.0 - h42, -44.0);
++  CHECK2 (hm2 - f42, -44.0);
++  CHECK2 (fm2 - h42, -44.0);
++
++  TEST (hm2 < h42);
++  TEST (hm2 < (__fp16)42.0);
++  TEST (hm2 < f42);
++  TEST (fm2 < h42);
++
++  TEST (h42 > hm2);
++  TEST ((__fp16)42.0 > hm2);
++  TEST (h42 > fm2);
++  TEST (f42 > hm2);
++
++  TEST (hm2 <= h42);
++  TEST (hm2 <= (__fp16)42.0);
++  TEST (hm2 <= f42);
++  TEST (fm2 <= h42);
++
++  TEST (h42 >= hm2);
++  TEST (h42 >= (__fp16)-2.0);
++  TEST (h42 >= fm2);
++  TEST (f42 >= hm2);
++
++  TESTNOT (h1 == hm2);
++  TEST (h1 == h1);
++  TEST (h1 == (__fp16)1.0);
++  TEST (h1 == f1);
++  TEST (f1 == h1);
++
++  TEST (h1 != hm2);
++  TESTNOT (h1 != h1);
++  TESTNOT (h1 != (__fp16)1.0);
++  TESTNOT (h1 != f1);
++  TESTNOT (f1 != h1);
++
++  CHECK2 ((h1 ? hm2 : h42), -2.0);
++  CHECK2 ((h0 ? hm2 : h42), 42.0);
++
++  CHECK (h0 = h42, 42.0);
++  CHECK (h0, 42.0);
++  CHECK (h0 = (__fp16)-2.0, -2.0);
++  CHECK (h0, -2.0);
++  CHECK (h0 = f0, 0.0);
++  CHECK (h0, 0.0);
++
++  CHECK (h0 += h1, 1.0);
++  CHECK (h0, 1.0);
++  CHECK (h0 += (__fp16)1.0, 2.0);
++  CHECK (h0, 2.0);
++  CHECK (h0 += fm2, 0.0);
++  CHECK (h0, 0.0);
++
++  CHECK (h0 -= h1, -1.0);
++  CHECK (h0, -1.0);
++  CHECK (h0 -= (__fp16)1.0, -2.0);
++  CHECK (h0, -2.0);
++  CHECK (h0 -= fm2, 0.0);
++  CHECK (h0, 0.0);
++
++  h0 = hm2;
++  CHECK (h0 *= hm2, 4.0);
++  CHECK (h0, 4.0);
++  CHECK (h0 *= (__fp16)-2.0, -8.0);
++  CHECK (h0, -8.0);
++  CHECK (h0 *= fm2, 16.0);
++  CHECK (h0, 16.0);
++
++  CHECK (h0 /= hm2, -8.0);
++  CHECK (h0, -8.0);
++  CHECK (h0 /= (__fp16)-2.0, 4.0);
++  CHECK (h0, 4.0);
++  CHECK (h0 /= fm2, -2.0);
++  CHECK (h0, -2.0);
++
++  CHECK ((h0, h1), 1.0);
++
++  return 0;
++}
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C
+@@ -0,0 +1,14 @@
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++/* Test mangling */
++
++/* { dg-final { scan-assembler "\t.global\t_Z1fPDh" } } */
++void f (__fp16 *x) { }
++
++/* { dg-final { scan-assembler "\t.global\t_Z1gPDhS_" } } */
++void g (__fp16 *x, __fp16 *y) { }
++
++/* { dg-final { scan-assembler "\t.global\t_ZN1SIDhDhE1iE" } } */
++template <typename T, typename U> struct S { static int i; }; 
++template <> int S<__fp16, __fp16>::i = 3;
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C
+@@ -0,0 +1,16 @@
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++/* __fp16 values are autoconverted to float and should therefore be treated
++ * just like float for overloading purposes.  */
++
++extern int frobnify (float x);
++extern int frobnify (double x);
++
++int g (void)
++{
++  return frobnify ((__fp16)1.0);
++}
++
++/* { dg-final { scan-assembler "_Z8frobnifyf" } } */
++/* { dg-final { scan-assembler-not " _Z8frobnifyd" } } */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C
+@@ -0,0 +1,10 @@
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++/* Functions cannot have parameters of type __fp16.  */
++extern void f (__fp16);               /* { dg-error "parameters cannot have __fp16 type" } */
++extern void (*pf) (__fp16);   /* { dg-error "parameters cannot have __fp16 type" } */
++
++/* These should be OK.  */
++extern void g (__fp16 *);
++extern void (*pg) (__fp16 *);
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C
+@@ -0,0 +1,10 @@
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++/* Functions cannot return type __fp16.  */
++extern __fp16 f (void);               /* { dg-error "cannot return __fp16" } */
++extern __fp16 (*pf) (void);   /* { dg-error "cannot return __fp16" } */
++
++/* These should be OK.  */
++extern __fp16 *g (void);
++extern __fp16 *(*pg) (void);
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/dllexport2.C
+@@ -0,0 +1,52 @@
++// { dg-do link }
++// { dg-require-dll "" }
++// { dg-additional-sources "dllexport2a.cc" }
++// { dg-options "-O2" }
++
++/* Test that inline functions declared "dllexport" appear in object
++   files, even if they are not called.
 +
 +   This behavior is required by the ARM C++ ABI:
 +
@@ -29554,9 +24271,8 @@ diff -Nur a/gcc/testsuite/gcc.dg/dll-6.c b/gcc/testsuite/gcc.dg/dll-6.c
 +   -- does not cause errors.  */
 +__declspec(dllexport) inline void i6();
 +__declspec(dllexport) extern inline void e6();
-diff -Nur a/gcc/testsuite/gcc.dg/dll-7a.c b/gcc/testsuite/gcc.dg/dll-7a.c
---- a/gcc/testsuite/gcc.dg/dll-7a.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/dll-7a.c    2010-01-25 09:50:29.165687452 +0100
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/dllexport2a.cc
 @@ -0,0 +1,21 @@
 +extern void i1();
 +extern void i3();
@@ -29579,29941 +24295,5168 @@ diff -Nur a/gcc/testsuite/gcc.dg/dll-7a.c b/gcc/testsuite/gcc.dg/dll-7a.c
 +  e4();
 +  e5();
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/dll-7.c b/gcc/testsuite/gcc.dg/dll-7.c
---- a/gcc/testsuite/gcc.dg/dll-7.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/dll-7.c     2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,52 @@
-+/* { dg-do link } */
-+/* { dg-require-dll "" } */
-+/* { dg-additional-sources "dll-7a.c" } */
-+/* { dg-options "-w -O2 -std=gnu99" } */
-+
-+/* Test that inline functions declared "dllexport" appear in object
-+   files, even if they are not called.
-+
-+   This behavior is required by the ARM C++ ABI:
-+
-+     Exporting a function that can be inlined should force the
-+     creation and export of an out-of-line copy of it.
-+
-+   and should presumably also apply.
-+
-+   Visual Studio 2005 also honors that rule.  */
-+
-+__declspec(dllexport) inline void i1() {}
-+
-+__declspec(dllexport) extern inline void e1() {}
-+
-+/* It is invalid to declare the function inline after its definition.  */
-+#if 0
-+__declspec(dllexport) void i2() {}
-+inline void i2();
-+
-+__declspec(dllexport) extern void e2() {}
-+inline void e2();
-+#endif
-+
-+__declspec(dllexport) inline void i3() {}
-+void i3();
-+
-+__declspec(dllexport) inline void e3() {}
-+extern void e3();
-+
-+__declspec(dllexport) void i4();
-+inline void i4() {};
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/ext/ms-1.C
+@@ -0,0 +1,17 @@
 +
-+__declspec(dllexport) extern void e4();
-+inline void e4() {};
++// MS allows more things to be pointers to member functions
++// { dg-options "-fms-extensions" }
 +
-+__declspec(dllexport) inline void i5();
-+void i5() {};
++struct X
++{
++  void Foo (X *);
++  void Bar ();
++};
 +
-+__declspec(dllexport) inline void e5();
-+extern void e5() {};
++void Quux (void (X::*) ());
 +
-+/* Make sure that just declaring the function -- without defining it
-+   -- does not cause errors.  */
-+__declspec(dllexport) inline void i6();
-+__declspec(dllexport) extern inline void e6();
-diff -Nur a/gcc/testsuite/gcc.dg/falign-labels-1.c b/gcc/testsuite/gcc.dg/falign-labels-1.c
---- a/gcc/testsuite/gcc.dg/falign-labels-1.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/falign-labels-1.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,39 @@
-+/* { dg-do run } */
-+/* { dg-options "-falign-labels=8" { target { ! { m68k*-*-* || fido*-*-* } } } } */
++void X::Foo (X *ptr)  // { dg-message "candidates" }
++{
++  Quux (Foo); // { dg-error "no matches" }
++  Quux (Bar);
++}
+--- a/gcc/testsuite/g++.dg/init/ref15.C
++++ b/gcc/testsuite/g++.dg/init/ref15.C
+@@ -1,6 +1,8 @@
+ // PR c++/20416.  We correctly constructed the temporary S in foo(),
+ // but incorrectly destroyed it every time foo() was called.
+-// { dg-do run }
++// When using a wrapped target, there is no way to override the exit
++// code after returning from main.
++// { dg-do run { target unwrapped } }
+ extern "C" void abort (void);
+ extern "C" void _exit (int);
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/opt/alias5.C
+@@ -0,0 +1,24 @@
++// { dg-options "-O2" }
++// ICE in struct-alias
 +
-+/* On ARMv7-A CPUs, this test resulted in incorrect code generation.
-+   The code generated for the switch statement expected the jump table
-+   to immediately follow the jump instruction, but -falign-labels
-+   caused the label preceding the table to be aligned.  */
-+/* M68K and fido only support -falign-labels argument <= 2.  */
++typedef int (*PFN)(void);
++int f (void);
++struct Container
++{
++  PFN ptr;
++};
 +
-+volatile int x;
++inline PFN Get (struct Container *tpl)
++{
++  return tpl->ptr;
++}
++void Other (PFN);
 +
-+int main(void)
++inline void Foo (PFN pfn)
 +{
-+  int y;
++  Other (Get ((struct Container *)&pfn));
++}
++void Bar (void)
++{
++  Foo (f);
++}
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/other/arm-neon-1.C
+@@ -0,0 +1,18 @@
++/* Basic smoke test for arm_neon.h */
 +
-+  x = 0;
++/* { dg-do assemble } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-add-options arm_neon } */
 +
-+  switch(x)
-+    {
-+    case 0:
-+      y = 2 * x;
-+      break;
-+    case 1:
-+      y = -3 * x;
-+      break;
-+    case 2:
-+      y = x + 5;
-+      break;
-+    case 3:
-+      y = x - 7;
-+      break;
-+    default:
-+      break;
-+    }
++#include "arm_neon.h"
 +
-+  x = y;
++float a[4];
 +
-+  return 0;
++void test(void)
++{
++  float32x2x2_t v;
++  float32x2_t res;
++  v = vld2_f32(a);
++  res = vadd_f32(v.val[0], v.val[1]);
++  vst1_f32(a, res);
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/fltconst-1.c b/gcc/testsuite/gcc.dg/fltconst-1.c
---- a/gcc/testsuite/gcc.dg/fltconst-1.c        2008-08-21 19:50:01.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/fltconst-1.c        2010-01-25 09:50:29.165687452 +0100
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-std=gnu99" } */
-+/* { dg-options "-std=gnu99 -fshow-column" } */
- double a = 1.ld;      /* { dg-error "12:invalid suffix" } */
- double b = 1.fd;      /* { dg-error "12:invalid suffix" } */
-diff -Nur a/gcc/testsuite/gcc.dg/m68k-fp-1.c b/gcc/testsuite/gcc.dg/m68k-fp-1.c
---- a/gcc/testsuite/gcc.dg/m68k-fp-1.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/m68k-fp-1.c 2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,13 @@
-+/* ColdFire has restricted addressing modes for float operands.  */
-+/* { dg-do compile { target m68k-*-* } }  */
-+/* { dg-options "-O0 -mcpu=547x -mhard-float" }  */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/other/armv7m-1.C
+@@ -0,0 +1,69 @@
++/* { dg-do run { target arm*-*-* } } */
++/* Test Armv7m interrupt routines.  */
++#include <stdlib.h>
 +
-+double Foo (unsigned a)
++#ifdef __ARM_ARCH_7M__
++void __attribute__((interrupt))
++foo(void)
 +{
-+  unsigned local_data[16384] __attribute__((unused));
-+  double d;
-+
-+  d = a;
++  long long n;
++  long p;
++  asm volatile ("" : "=r" (p) : "0" (&n));
++  if (p & 4)
++    abort ();
++  return;
++}
 +
-+  return d;
++void __attribute__((interrupt))
++bar(void)
++{
++  throw 42;
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/pch/counter-2.c b/gcc/testsuite/gcc.dg/pch/counter-2.c
---- a/gcc/testsuite/gcc.dg/pch/counter-2.c     2008-05-21 02:04:45.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/pch/counter-2.c     2010-01-25 09:50:29.165687452 +0100
-@@ -10,6 +10,7 @@
- #include "counter-2.h" /* { dg-warning "not used because `__COUNTER__' is invalid" } */
- /* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 10 } */
- /* { dg-error "one or more PCH files were found, but they were invalid" "invalid files" { target *-*-* } 10 } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
- int main(void) 
- {
-diff -Nur a/gcc/testsuite/gcc.dg/pch/valid-1.c b/gcc/testsuite/gcc.dg/pch/valid-1.c
---- a/gcc/testsuite/gcc.dg/pch/valid-1.c       2008-05-21 02:04:45.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/pch/valid-1.c       2010-01-25 09:50:29.165687452 +0100
-@@ -3,5 +3,6 @@
- #include "valid-1.h"/* { dg-warning "created with -gnone, but used with -g" } */
- /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
- /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
- int x;
-diff -Nur a/gcc/testsuite/gcc.dg/pch/valid-2.c b/gcc/testsuite/gcc.dg/pch/valid-2.c
---- a/gcc/testsuite/gcc.dg/pch/valid-2.c       2008-05-21 02:04:45.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/pch/valid-2.c       2010-01-25 09:50:29.165687452 +0100
-@@ -3,4 +3,5 @@
- #include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */
- /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
- /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
- int x;
-diff -Nur a/gcc/testsuite/gcc.dg/pch/warn-1.c b/gcc/testsuite/gcc.dg/pch/warn-1.c
---- a/gcc/testsuite/gcc.dg/pch/warn-1.c        2008-05-21 02:04:45.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/pch/warn-1.c        2010-01-25 09:50:29.165687452 +0100
-@@ -5,6 +5,7 @@
- #include "warn-1.h"/* { dg-warning "not used because .DEFINED_VALUE. is defined" } */
- /* { dg-error "No such file" "no such file" { target *-*-* } 5 } */
- /* { dg-error "they were invalid" "invalid files" { target *-*-* } 5 } */
-+/* { dg-message "terminated" "" { target *-*-* } 0 } */
- int main(void) 
-diff -Nur a/gcc/testsuite/gcc.dg/pr34263.c b/gcc/testsuite/gcc.dg/pr34263.c
---- a/gcc/testsuite/gcc.dg/pr34263.c   2008-01-06 16:24:10.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/pr34263.c   2010-01-25 09:50:29.165687452 +0100
-@@ -1,5 +1,5 @@
- /* { dg-do run } */
--/* { dg-options "-O2 -fdump-tree-optimized" } */
-+/* { dg-options "-O2 -fdump-tree-optimized -fno-unroll-loops" } */
- /* Same test as 990128-1.c.  */
- extern int printf (const char *,...);
-diff -Nur a/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c b/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
---- a/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c 2007-08-13 11:24:46.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c 2010-01-25 09:50:29.165687452 +0100
-@@ -1,4 +1,6 @@
- /* { dg-do compile { target { { sh-*-* sh4*-*-* } && nonpic } } } */
-+/* { dg-skip-if "FPU Required" { "sh*-*-*" } { "-m*nofpu*" } { "" } } */
-+/* { dg-skip-if "FPU Required" { "sh*-*-*" } { "-m4al*" } { "" } } */
- /* { dg-options "-O -m4" } */
- extern void foo ();
-diff -Nur a/gcc/testsuite/gcc.dg/profile-dir-1.c b/gcc/testsuite/gcc.dg/profile-dir-1.c
---- a/gcc/testsuite/gcc.dg/profile-dir-1.c     2008-04-22 01:35:47.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/profile-dir-1.c     2010-01-25 09:50:29.165687452 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */
-+/* { dg-require-host-local "" } */
- /* { dg-final { scan-tree-dump " ./profile-dir-1.gcda" "tree_profile" } } */
- int
-diff -Nur a/gcc/testsuite/gcc.dg/profile-dir-2.c b/gcc/testsuite/gcc.dg/profile-dir-2.c
---- a/gcc/testsuite/gcc.dg/profile-dir-2.c     2008-04-22 01:35:47.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/profile-dir-2.c     2010-01-25 09:50:29.165687452 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */
-+/* { dg-require-host-local "" } */
- /* { dg-final { scan-tree-dump "/profile-dir-2.gcda" "tree_profile" } } */
- int
-diff -Nur a/gcc/testsuite/gcc.dg/profile-dir-3.c b/gcc/testsuite/gcc.dg/profile-dir-3.c
---- a/gcc/testsuite/gcc.dg/profile-dir-3.c     2008-04-22 01:35:47.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/profile-dir-3.c     2010-01-25 09:50:29.165687452 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-tree_profile" } */
-+/* { dg-require-host-local "" } */
- /* { dg-final { scan-tree-dump " ./profile-dir-3.gcda" "tree_profile" } } */
- int
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-10.c b/gcc/testsuite/gcc.dg/promote-short-10.c
---- a/gcc/testsuite/gcc.dg/promote-short-10.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-10.c  2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,20 @@
-+/* Verify that we do not promote a short loop index variable when its
-+   address is taken.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Found 0 candidates" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+extern void outside (short *);
-+
-+void
-+test1 (int n, int *x)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
-+    {
-+      outside (&i);
-+    }
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-1.c b/gcc/testsuite/gcc.dg/promote-short-1.c
---- a/gcc/testsuite/gcc.dg/promote-short-1.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-1.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,15 @@
-+/* Verify that we promote a short loop index variable.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (short n, int *x)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
-+    x[i] = 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-2.c b/gcc/testsuite/gcc.dg/promote-short-2.c
---- a/gcc/testsuite/gcc.dg/promote-short-2.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-2.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,16 @@
-+/* Verify that we do not promote a short loop index variable when it is
-+   being stored to memory.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (short n, short *x)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
-+    x[i] = i;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-3.c b/gcc/testsuite/gcc.dg/promote-short-3.c
---- a/gcc/testsuite/gcc.dg/promote-short-3.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-3.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,18 @@
-+/* Verify that we do not promote a short loop index variable when it is
-+   being passed as a function parameter.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" { xfail m68k*-*-* fido*-*-* i?86-*-* x86_64-*-* mips*-*-* sh*-*-* } } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+extern void outside (short);
 +
-+void
-+test1 (short n)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
-+    outside (i);
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-4.c b/gcc/testsuite/gcc.dg/promote-short-4.c
---- a/gcc/testsuite/gcc.dg/promote-short-4.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-4.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,19 @@
-+/* Verify that we do not promote a short loop index variable when it is
-+   modified within the loop.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (short n, int *x)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
-+    {
-+      i++;
-+      x[i] = 0;
-+    }
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-5.c b/gcc/testsuite/gcc.dg/promote-short-5.c
---- a/gcc/testsuite/gcc.dg/promote-short-5.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-5.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,18 @@
-+/* Verify that we do not promote a short loop index variable when it has
-+   a non-unit-increment.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (short n, int *x)
++int main()
 +{
-+  short i;
++  int a;
++  int before;
++  int after;
++  volatile register int sp asm("sp");
 +
-+  for (i = 0; i < n; i+=2)
++  asm volatile ("mov %0, sp\n"
++              "blx %2\n"
++              "mov %1, sp\n"
++              : "=&r" (before), "=r" (after) : "r" (foo)
++              : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
++  if (before != after)
++    abort();
++  asm volatile ("mov %0, sp\n"
++              "sub sp, sp, #4\n"
++              "blx %2\n"
++              "add sp, sp, #4\n"
++              "mov %1, sp\n"
++              : "=&r" (before), "=r" (after) : "r" (foo)
++              : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
++  if (before != after)
++    abort();
++  before = sp;
++  try
 +    {
-+      x[i] = 0;
++      bar();
 +    }
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-6.c b/gcc/testsuite/gcc.dg/promote-short-6.c
---- a/gcc/testsuite/gcc.dg/promote-short-6.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-6.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,18 @@
-+/* Verify that we do promote a short loop index variable when it has
-+   a non-unit-increment and -funsafe-loop-optimizations is in effect.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -funsafe-loop-optimizations -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (short n, int *x)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i+=2)
++  catch (int i)
 +    {
-+      x[i] = 0;
++      if (i != 42)
++      abort();
 +    }
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-7.c b/gcc/testsuite/gcc.dg/promote-short-7.c
---- a/gcc/testsuite/gcc.dg/promote-short-7.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-7.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,18 @@
-+/* Verify that we do not promote a short loop index variable when the
-+   loop in which it is used has a bound of wider type.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (int n, int *x)
-+{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
++  catch (...)
 +    {
-+      x[i] = 0;
++      abort();
 +    }
++  if (before != sp)
++    abort();
++  exit(0);
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-8.c b/gcc/testsuite/gcc.dg/promote-short-8.c
---- a/gcc/testsuite/gcc.dg/promote-short-8.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-8.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,19 @@
-+/* Verify that we do promote a short loop index variable when the loop
-+   in which it is used has a bound of wider type and
-+   -funsafe-loop-optimizations is in effect.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices -funsafe-loop-optimizations -fdump-tree-promoteshort" } */
-+/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
-+/* { dg-final { cleanup-tree-dump "promoteshort" } } */
-+
-+void
-+test1 (int n, int *x)
++#else
++int main()
 +{
-+  short i;
-+
-+  for (i = 0; i < n; i++)
-+    {
-+      x[i] = 0;
-+    }
++  exit (0);
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/promote-short-9.c b/gcc/testsuite/gcc.dg/promote-short-9.c
---- a/gcc/testsuite/gcc.dg/promote-short-9.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/promote-short-9.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,15 @@
-+/* -fpromote-loop-indices used to ICE on this.  */
++#endif
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/remove-local-statics-1.C
+@@ -0,0 +1,21 @@
++/* Verify that we do not eliminate a static variable in
++   main::Local::Foo.  */
 +
 +/* { dg-do compile } */
-+/* { dg-options "-O2 -fpromote-loop-indices" } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+char
-+lookup (char *haystack, char *needle)
++int
++main (void)
 +{
-+  char x;
++   static int thestatic = 0;
++   struct Local {
++     __attribute__((__noinline__))
++     static void Foo () { thestatic = 1; }
++   };
 +
-+  for (x = haystack[-2]; x < *needle; x++)
-+    haystack[x] = needle[x];
++   thestatic = 2;
++   Local::Foo();
 +
-+  return 1;
++   return thestatic++;
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-10.c b/gcc/testsuite/gcc.dg/remove-local-statics-10.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-10.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-10.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,32 @@
-+/* Verify that we do not eliminate a static local variable when it is
-+   live on return from a function call that recursively calls the
-+   function in which the variable is defined.  */
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/remove-local-statics-2.C
+@@ -0,0 +1,21 @@
++/* Verify that we do not eliminate a static variable in
++   main due to its use in Local::Foo.  */
 +
 +/* { dg-do compile } */
 +/* { dg-options "-O2 -fremove-local-statics" } */
 +/* { dg-final { scan-assembler "thestatic" } } */
 +
 +int
-+test2 (int x)
-+{
-+  if (x < 0)
-+    return 0;
-+  else
-+    return test1 (x - 1);
-+}
-+
-+int
-+test1 (int x)
++main (void)
 +{
-+  static int thestatic;
-+  int y;
-+
-+  thestatic = x;
-+
-+  y = test2 (x - 1);
++   static int thestatic = 0;
++   struct Local {
++     __attribute__((__noinline__))
++     static int Foo () { return thestatic; }
++   };
 +
-+  y += thestatic;
++   thestatic = 2;
++   thestatic = Local::Foo();
 +
-+  return y + x;
++   return thestatic++;
 +}
+--- a/gcc/testsuite/g++.dg/template/overload9.C
++++ b/gcc/testsuite/g++.dg/template/overload9.C
+@@ -7,12 +7,12 @@ template <typename T> A<T>& operator<<(A
+ template <typename T>
+ struct A 
+ {
+-  A<T>& operator<<(A<T>& (*)(A<T>&)); // { dg-message "candidate" }
++  A<T>& operator<<(A<T>& (*)(A<T>&));
+ };
+ template <typename T> A<T>& foo(A<T>&);
+ extern A<char> c;
+ int main () {
+-  c << (1, foo); // { dg-error "no match" }
++  c << (1, foo); // { dg-error "no context" }
+ }
+--- a/gcc/testsuite/g++.dg/torture/pr36191.C
++++ b/gcc/testsuite/g++.dg/torture/pr36191.C
+@@ -1,6 +1,7 @@
+ // PR c++/36191
+ // { dg-do compile }
+ // { dg-options "-fnon-call-exceptions" }
++// { dg-skip-if "Frame pointer required for unwind tables" { sh*-*-* } "-fomit-frame-pointer" "" }
+ __complex__ double
+ foo (__complex__ double x, double y)
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/tree-ssa/sink-1.C
+@@ -0,0 +1,50 @@
++/* { dg-do run } */
++/* { dg-options "-O1" } */
++
++class A {
++ public:
++  A() {}
++  virtual ~A() {}  
++  void * dostuff();
 +  
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-11.c b/gcc/testsuite/gcc.dg/remove-local-statics-11.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-11.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-11.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,16 @@
-+/* Verify that we do not eliminate a static local variable when its
-+   address is taken.  */
++  virtual int dovirtual() = 0;
++};
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
 +
-+int *
-+test1 (int x)
-+{
-+  static int thestatic;
++class B : public A {
++ public:
++  B() {}
++  int dovirtual() { return 0;}
++  virtual ~B() {};
++}; 
 +
-+  thestatic = x;
++class C : public B {
++ public:
++  C() {}
++  virtual ~C() {};
++};
 +
-+  return &thestatic + x;
++void* A::dostuff()
++{
++  return (void*)dovirtual();
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-12.c b/gcc/testsuite/gcc.dg/remove-local-statics-12.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-12.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-12.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,20 @@
-+/* Verify that we do not eliminate a static variable when it is declared
-+   in a function that has nested functions.  */
-+
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
 +
-+int test1 (int x)
-+{
-+  static int thestatic;
++/* tree-ssa-sink was sinking the inlined destructor for STUFF out of
++   the first inner block and into the second one, where it was ending up
++   after the inlined constructor for STUFF2.  This is bad because
++   cfgexpand aliases STUFF and STUFF2 to the same storage at -O1
++   (i.e., without -fstrict-aliasing), with the result that STUFF2's
++   vtable was getting trashed. */
 +
-+  int nested_test1 (int x)
++int main() {
 +  {
-+    return x + thestatic;
++    B stuff;
++    stuff.dostuff();
 +  }
-+
-+  thestatic = x;
-+
-+  return thestatic + x + nested_test1 (x);
++  {
++    C stuff2;
++    stuff2.dostuff();
++  }
++  return 0;
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-13.c b/gcc/testsuite/gcc.dg/remove-local-statics-13.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-13.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-13.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,24 @@
-+/* We used to ICE on this test, because the call to BAR appeared to
-+   define both static variables in FOO.  Verify that we no longer do
-+   this.  */
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "static1" } } */
-+/* { dg-final { scan-assembler-not "static2" } } */
+--- a/gcc/testsuite/g++.dg/vect/vect.exp
++++ b/gcc/testsuite/g++.dg/vect/vect.exp
+@@ -105,7 +105,7 @@ if  [istarget "powerpc-*paired*"]  {
+ } elseif [istarget "ia64-*-*"] {
+     set dg-do-what-default run
+ } elseif [is-effective-target arm_neon_ok] {
+-    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
++    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
+     if [is-effective-target arm_neon_hw] {
+       set dg-do-what-default run
+     } else {
+--- a/gcc/testsuite/g++.dg/warn/null4.C
++++ b/gcc/testsuite/g++.dg/warn/null4.C
+@@ -11,9 +11,22 @@ int foo (void) 
+   if (NULL < NULL) return -1; // { dg-warning "NULL used in arithmetic" } 
+   if (NULL >= 0) return -1;   // { dg-warning "NULL used in arithmetic" } 
+   if (NULL <= 0) return -1;   // { dg-warning "NULL used in arithmetic" } 
++  // Adding to the NULL pointer, which has no specific type, should
++  // result in a warning; the type of the resulting expression is
++  // actually "int", not a pointer type.
++  if (NULL + 1) return -1;    // { dg-warning "NULL used in arithmetic" }
++  if (1 + NULL) return -1;    // { dg-warning "NULL used in arithmetic" }
+   return 0;
+ }
++int *ip;
 +
-+int foo(int i) {
-+  static int static1 = 0;
-+  static int static2;
++struct S {};
++typedef int S::*SPD;
++typedef void (S::*SPF)(void);
++SPD spd;
++SPF spf;
 +
-+  if (static2 = bar(i))
-+    static1 = 1;
-+  static2 = static1 + 30;
+ int bar (void) 
+ {
+   if (NULL) return -1;
+@@ -25,5 +38,18 @@ int bar (void) 
+   if (NULL != NULL) return -1;
+   if (NULL == 0) return -1;
+   if (NULL != 0) return -1;
++  // Subtraction of pointers is vaild, so using NULL is OK.
++  if (ip - NULL) return -1;
++  if (NULL - NULL) return -1;
++  // Comparing NULL with a pointer-to-member is OK.
++  if (NULL == spd) return -1;
++  if (spd == NULL) return -1;
++  if (NULL != spd) return -1;
++  if (spd != NULL) return -1;
++  if (NULL == spf) return -1;
++  if (spf == NULL) return -1;
++  if (NULL != spf) return -1;
++  if (spf != NULL) return -1;
 +
-+  return static1 + static2;
-+}
+   return 0;
+ }
+--- a/gcc/testsuite/g++.old-deja/g++.other/overload11.C
++++ b/gcc/testsuite/g++.old-deja/g++.other/overload11.C
+@@ -54,11 +54,10 @@ int main (int argc, char **argv)
+   
+   ptr = (ovl);              // ok
+   ptr = (&ovl);             // ok
+-  // 13.4 indicates these are ok.
+-  ptr = (0, ovl);           // ok { dg-bogus "" "" { xfail *-*-* } }
+-  ptr = (0, &ovl);          // ok { dg-bogus "" "" { xfail *-*-* } }
+-  ptr = (argc ? ovl : ovl); // ok { dg-bogus "" "" { xfail *-*-* } }
+-  ptr = (argc ? &ovl : &ovl);// ok { dg-bogus "" "" { xfail *-*-* } }
++  ptr = (0, ovl);           // ok { dg-error "no context" }
++  ptr = (0, &ovl);          // ok { dg-error "no context" }
++  ptr = (argc ? ovl : ovl); // ok { dg-error "no context" }
++  ptr = (argc ? &ovl : &ovl);// ok { dg-error "no context" }
+   
+   vptr = (ovl);              // { dg-error "" } no matching candidates
+   vptr = (&ovl);             // { dg-error "" } no matching candidates
+--- /dev/null
++++ b/gcc/testsuite/gcc.c-torture/execute/990208-1.x
+@@ -0,0 +1,12 @@
 +
-+int bar(int i) {
-+  if (i) { foo(i-1); return 0; }
-+  return 1;
++# On ARM, with -Os, some of the functions that this test
++# expects to be inlined are not inlined for code size
++# reasons.  This is not a bug, it's intentional,
++# so stop this test from running.
++set torture_eval_before_compile {
++  if { [istarget "arm-*-*"] && [string match {*-Os*} "$option"] } {
++    continue
++  }
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-14.c b/gcc/testsuite/gcc.dg/remove-local-statics-14.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-14.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-14.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,29 @@
-+/* Verify that we do eliminate a static local variable whose last use is
-+   in a statement containing a call expression.  */
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler-not "thestatic" } } */
-+
-+int
-+test2 (int x)
-+{
-+  if (x < 0)
-+    return 0;
-+  else
-+    return test1 (x - 1);
-+}
++return 0
+\ No newline at end of file
+--- /dev/null
++++ b/gcc/testsuite/gcc.c-torture/execute/bcp-1.x
+@@ -0,0 +1,12 @@
 +
-+int
-+test1 (int x)
-+{
-+  static int thestatic;
-+  int y;
-+
-+  thestatic = x;
-+
-+  y = test2 (thestatic - 1);
-+
-+  return y + x;
++# On ARM, with -Os, some of the functions that this test
++# expects to be inlined are not inlined for code size
++# reasons.  This is not a bug, it's intentional,
++# so stop this test from running.
++set torture_eval_before_compile {
++  if { [istarget "arm-*-*"] && [string match {*-Os*} "$option"] } {
++    continue
++  }
 +}
-+  
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-15.c b/gcc/testsuite/gcc.dg/remove-local-statics-15.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-15.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-15.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,17 @@
-+/* Verify that we do not consider an array variable for local static
-+   elimination.  */
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
++return 0
+\ No newline at end of file
+--- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
++++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
+@@ -54,6 +54,9 @@ if { [istarget "alpha*-*-*"] 
+      || [istarget "sh*-*-*"] } then {
+   lappend additional_flags "-mieee"
+ }
++if [istarget "mips*-sde-*"] then {
++  lappend additional_flags "-Wl,--defsym=__cs3_mips_float_type=2" "-lcs3-mips-cp1" "-lcs3-mips-fpemu"
++}
+ # load support procs
+ load_lib c-torture.exp
+--- a/gcc/testsuite/gcc.dg/builtin-redefine.c
++++ b/gcc/testsuite/gcc.dg/builtin-redefine.c
+@@ -28,7 +28,7 @@
+ #define __TIME__ "X"         /* Re-define while defined.  */
+ #define __TIME__ "Y"         /* { dg-warning "\"__TIME__\" redefined" } */
+-/* { dg-warning "previous definition" "" { target *-*-* } 28 } */
++/* { dg-message "previous definition" "" { target *-*-* } 28 } */
+ #undef __TIME__              /* Undefine while defined.  */
+@@ -39,7 +39,7 @@
+ #define __DATE__ "X"         /* Re-define while defined.  */
+ #define __DATE__ "Y"         /* { dg-warning "\"__DATE__\" redefined" } */
+-/* { dg-warning "previous definition" "" { target *-*-* } 39 } */
++/* { dg-message "previous definition" "" { target *-*-* } 39 } */
+ #undef __DATE__              /* Undefine while defined.  */
+@@ -48,7 +48,7 @@
+ #define __TIMESTAMP__ "X"    /* Re-define while defined.  */
+ #define __TIMESTAMP__ "Y"    /* { dg-warning "\"__TIMESTAMP__\" redefined" } */
+-/* { dg-warning "previous definition" "" { target *-*-* } 48 } */
++/* { dg-message "previous definition" "" { target *-*-* } 48 } */
+ #undef __TIMESTAMP__         /* Undefine while defined.  */
+--- a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
++++ b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
+@@ -46,7 +46,7 @@ const char *dg_options[] = {
+ "/* { dg-options \"%s-I%s\" } */\n",
+ "/* { dg-options \"%s-I%s -Wno-abi\" } */\n",
+ "/* { dg-options \"%s-I%s -mno-mmx -Wno-abi\" { target i?86-*-* x86_64-*-* } } */\n",
+-"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* *-*-mingw32* *-*-cygwin* } } */\n",
++"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* } } */\n",
+ "/* { dg-options \"%s-I%s -mno-mmx -fno-common -Wno-abi\" { target i?86-*-darwin* x86_64-*-darwin* } } */\n",
+ "/* { dg-options \"%s-I%s -mno-base-addresses\" { target mmix-*-* } } */\n",
+ "/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n"
+--- a/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c
++++ b/gcc/testsuite/gcc.dg/cpp/Wvariadic-1.c
+@@ -4,3 +4,4 @@
+ #define f(x,...)      /* { dg-error "variadic" } */
+ #define g(x,y...)     /* { dg-error "variadic" } */
+ int not_empty;
++/* { dg-message "warnings being treated as errors" "" { target *-*-* } 0 } */
+--- a/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c
++++ b/gcc/testsuite/gcc.dg/cpp/Wvariadic-3.c
+@@ -4,3 +4,4 @@
+ #define f(x,...)
+ #define g(x,y...)     /* { dg-error "variadic" } */
+ int not_empty;
++/* { dg-message "warnings being treated as errors" "" { target *-*-* } 0 } */
+--- a/gcc/testsuite/gcc.dg/cpp/include2.c
++++ b/gcc/testsuite/gcc.dg/cpp/include2.c
+@@ -8,9 +8,8 @@
+ /* Source: Neil Booth, 4 Nov 2000.  */
+ #include <silly\>>  /* { dg-error "extra tokens" "" } */
+-#include "silly\""  /* { dg-error "extra tokens" "" } */
+ /* These error is No such file or directory, just once.  However, this
+    message is locale-dependent, so don't test for it.  */
+ /* { dg-error "silly" "" { target *-*-* } 10 } */
+-/* { dg-error "missing" "" { target *-*-* } 11 } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/cpp/include2a.c
+@@ -0,0 +1,16 @@
++/* Copyright (C) 2000 Free Software Foundation, Inc.  */
 +
-+int foo (void)
-+{
-+  static int a[1];
++/* { dg-do preprocess } */
 +
-+  a[0] = 0;
++/* Tests that #include does not allow the terminating '>' or '"' to be
++   escaped, as per the standard.  */
 +
-+  return a[0];
-+}
++/* Source: Neil Booth, 4 Nov 2000.  */
 +
-+/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
-+/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-16.c b/gcc/testsuite/gcc.dg/remove-local-statics-16.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-16.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-16.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,20 @@
-+/* Verify that we do not consider an structure variable for local static
-+   elimination.  */
++#include "silly\""  /* { dg-error "extra tokens" "" } */
 +
++/* These error is No such file or directory, just once.  However, this
++   message is locale-dependent, so don't test for it.  */
++/* { dg-error "silly" "" { target *-*-* } 10 } */
++/* { dg-error "missing" "" { target *-*-* } 10 } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c
+@@ -0,0 +1,9 @@
++/* Test that missing headers are fatal errors.  PR 15638.  */
 +/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
-+
-+int foo (void)
-+{
-+  static struct {
-+    int x;
-+    int y;
-+  } a;
++/* { dg-options "" } */
 +
-+  a.x = 0;
++#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
 +
-+  return a.y;
-+}
++/* This declaration should not receive any diagnostic.  */
++foo bar;
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/cpp/missing-header-MD.c
+@@ -0,0 +1,6 @@
++/* Test that missing user headers are fatal errors with -MD.  */
++/* { dg-do compile } */
++/* { dg-options "-MD" } */
 +
-+/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
-+/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-17.c b/gcc/testsuite/gcc.dg/remove-local-statics-17.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-17.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-17.c   2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,19 @@
-+/* Verify that we do not eliminate a static variable that is "defined"
-+   by an asm that clobbers memory.  */
++#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/cpp/missing-header-MMD.c
+@@ -0,0 +1,6 @@
++/* Test that missing user headers are fatal errors with -MMD.  */
++/* { dg-do compile } */
++/* { dg-options "-MMD" } */
 +
++#include "nonexistent.h" /* { dg-error "nonexistent.h" } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MD.c
+@@ -0,0 +1,6 @@
++/* Test that missing system headers are fatal errors with -MD.  */
 +/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
++/* { dg-options "-MD" } */
 +
-+int foo (void)
-+{
-+  static int foo = 0;
++#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/cpp/missing-sysheader-MMD.c
+@@ -0,0 +1,6 @@
++/* Test that missing system headers are fatal errors with -MMD.  */
++/* { dg-do compile } */
++/* { dg-options "-MMD" } */
 +
-+  __asm__ __volatile__ ("bogus" : : : "memory");
++#include <nonexistent.h> /* { dg-error "nonexistent.h" } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+--- a/gcc/testsuite/gcc.dg/cpp/redef2.c
++++ b/gcc/testsuite/gcc.dg/cpp/redef2.c
+@@ -23,9 +23,9 @@
+    { dg-warning "redefined" "redef ro"      { target *-*-* } 12 }
+    { dg-warning "redefined" "redef va"      { target *-*-* } 15 }
+-   { dg-warning "previous"  "prev def mac"  { target *-*-* } 6  }
+-   { dg-warning "previous"  "prev def mac"  { target *-*-* } 7  }
+-   { dg-warning "previous"  "prev def mac"  { target *-*-* } 8  }
+-   { dg-warning "previous"  "prev def ro"   { target *-*-* } 11 }
+-   { dg-warning "previous"  "prev def va"   { target *-*-* } 14 }
++   { dg-message "previous"  "prev def mac"  { target *-*-* } 6  }
++   { dg-message "previous"  "prev def mac"  { target *-*-* } 7  }
++   { dg-message "previous"  "prev def mac"  { target *-*-* } 8  }
++   { dg-message "previous"  "prev def ro"   { target *-*-* } 11 }
++   { dg-message "previous"  "prev def va"   { target *-*-* } 14 }
+ */
+--- a/gcc/testsuite/gcc.dg/cpp/redef3.c
++++ b/gcc/testsuite/gcc.dg/cpp/redef3.c
+@@ -15,7 +15,7 @@
+    { dg-warning "redefined" "redef B"      { target *-*-* } 9  }
+    { dg-warning "redefined" "redef D"      { target *-*-* } 11 }
+    { dg-warning "redefined" "redef E"      { target *-*-* } 12 }
+-   { dg-warning "previous"  "prev def A"   { target *-*-* } 6  }
+-   { dg-warning "previous"  "prev def B"   { target *-*-* } 8  }
+-   { dg-warning "previous"  "prev def D/E" { target *-*-* } 0  }
++   { dg-message "previous"  "prev def A"   { target *-*-* } 6  }
++   { dg-message "previous"  "prev def B"   { target *-*-* } 8  }
++   { dg-message "previous"  "prev def D/E" { target *-*-* } 0  }
+ */
+--- a/gcc/testsuite/gcc.dg/cpp/trad/redef2.c
++++ b/gcc/testsuite/gcc.dg/cpp/trad/redef2.c
+@@ -2,31 +2,31 @@
+ /* { dg-do preprocess } */
+-#define foo bar    /* { dg-warning "previous def" "foo prev def" } */
++#define foo bar    /* { dg-message "previous def" "foo prev def" } */
+ #define foo barr   /* { dg-warning "redefined" "foo redefined" } */
+ #undef foo
+-#define foo bar    /* { dg-warning "previous def" "foo prev def 2" } */
++#define foo bar    /* { dg-message "previous def" "foo prev def 2" } */
+ #define foo() bar    /* { dg-warning "redefined" "foo redefined 2" } */
+ #undef foo
+-#define foo() bar    /* { dg-warning "previous def" "foo prev def" } */
++#define foo() bar    /* { dg-message "previous def" "foo prev def" } */
+ #define foo() barr   /* { dg-warning "redefined" "foo redefined" } */
+-#define quux(thud) a thud b /* { dg-warning "previous def" "quux prev def" } */
++#define quux(thud) a thud b /* { dg-message "previous def" "quux prev def" } */
+ #define quux(thu) a thud b   /* { dg-warning "redefined" "quux redefined" } */
+-#define bar(x, y) x+y /* { dg-warning "previous def" "bar prev def" } */
++#define bar(x, y) x+y /* { dg-message "previous def" "bar prev def" } */
+ #define bar(x, y) x+x   /* { dg-warning "redefined" "bar redefined" } */
+-#define bat(x, y) x+y  /* { dg-warning "previous def" "bat prev def" } */
++#define bat(x, y) x+y  /* { dg-message "previous def" "bat prev def" } */
+ #define bat(x, y) x+ y   /* { dg-warning "redefined" "bat redefined" } */
+-#define baz(x, y) x+y  /* { dg-warning "previous def" "baz prev def" } */
++#define baz(x, y) x+y  /* { dg-message "previous def" "baz prev def" } */
+ #define baz(x, y) x +y   /* { dg-warning "redefined" "baz redefined" } */
+-#define f(x, y) "x y"  /* { dg-warning "previous def" "f prev def" } */
++#define f(x, y) "x y"  /* { dg-message "previous def" "f prev def" } */
+ #define f(x, y) "x  y"   /* { dg-warning "redefined" "f redefined" } */
+-#define g(x, y) 'x'  /* { dg-warning "previous def" "g prev def" } */
++#define g(x, y) 'x'  /* { dg-message "previous def" "g prev def" } */
+ #define g(x, y) ' x'   /* { dg-warning "redefined" "g redefined" } */
+--- a/gcc/testsuite/gcc.dg/dll-4.c
++++ b/gcc/testsuite/gcc.dg/dll-4.c
+@@ -11,5 +11,6 @@ int foo2 = 5;        /* { dg-warning "redeclare
+ int f () { return foo1 + foo2; }
+ /* FIXME: We should scan the output of nm for this case.  */
+-/* { dg-final { scan-assembler "(foo2:.*\.comm\[ \t_\]*foo1)" } } */
++/* { dg-final { scan-assembler "(foo2:)" } } */
++/* { dg-final { scan-assembler "(\.comm\[ \t_\]*foo1)" } } */
+ /* { dg-final { scan-assembler-not "(__imp_|_imp__)" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/dll-6.c
+@@ -0,0 +1,52 @@
++/* { dg-do link } */
++/* { dg-require-dll "" } */
++/* { dg-additional-sources "dll-6a.c" } */
++/* { dg-options "-w -O2 -std=gnu89" } */
 +
-+  foo++;
++/* Test that inline functions declared "dllexport" appear in object
++   files, even if they are not called.
 +
-+  return foo;
-+}
++   This behavior is required by the ARM C++ ABI:
 +
-+/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
-+/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-1.c b/gcc/testsuite/gcc.dg/remove-local-statics-1.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-1.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-1.c    2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,16 @@
-+/* Verify that we eliminate a static local variable where its uses
-+   are dominated by a def.  */
++     Exporting a function that can be inlined should force the
++     creation and export of an out-of-line copy of it.
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler-not "thestatic" } } */
++   and should presumably also apply.
 +
-+int
-+test1 (int x)
-+{
-+  static int thestatic;
++   Visual Studio 2005 also honors that rule.  */
 +
-+  thestatic = x;
++__declspec(dllexport) inline void i1() {}
 +
-+  return thestatic + x;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-2.c b/gcc/testsuite/gcc.dg/remove-local-statics-2.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-2.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-2.c    2010-01-25 09:50:29.165687452 +0100
-@@ -0,0 +1,19 @@
-+/* Verify that we do not eliminate a static local variable when its uses
-+   are not dominated by a def.  */
++__declspec(dllexport) extern inline void e1() {}
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "first_time" } } */
++/* It is invalid to declare the function inline after its definition.  */
++#if 0
++__declspec(dllexport) void i2() {}
++inline void i2();
 +
-+int
-+test1 (int x)
-+{
-+  static int first_time;
++__declspec(dllexport) extern void e2() {}
++inline void e2();
++#endif
 +
-+  if (x == 1)
-+    first_time = 1;
-+  else if (x > 0)
-+    first_time = 2;
++__declspec(dllexport) inline void i3() {}
++void i3();
 +
-+  return first_time + x;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-3.c b/gcc/testsuite/gcc.dg/remove-local-statics-3.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-3.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-3.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,16 @@
-+/* Verify that we do not eliminate a static local variable whose uses
-+   are dominated by a def when the variable is volatile.  */
++__declspec(dllexport) inline void e3() {}
++extern void e3();
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
++__declspec(dllexport) void i4();
++inline void i4() {};
 +
-+int
-+test1 (int x)
-+{
-+  static volatile int thestatic;
++__declspec(dllexport) extern void e4();
++inline void e4() {};
 +
-+  thestatic = x;
++__declspec(dllexport) inline void i5();
++void i5() {};
 +
-+  return thestatic + x;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-4.c b/gcc/testsuite/gcc.dg/remove-local-statics-4.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-4.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-4.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,15 @@
-+/* Verify that we don't eliminate a global static variable.  */
++__declspec(dllexport) inline void e5();
++extern void e5() {};
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "global_static" } } */
++/* Make sure that just declaring the function -- without defining it
++   -- does not cause errors.  */
++__declspec(dllexport) inline void i6();
++__declspec(dllexport) extern inline void e6();
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/dll-6a.c
+@@ -0,0 +1,21 @@
++extern void i1();
++extern void i3();
++extern void i4();
++extern void i5();
 +
-+static int global_static;
++extern void e1();
++extern void e3();
++extern void e4();
++extern void e5();
 +
-+int
-+test1 (int x)
-+{
-+  global_static = x;
++int main () {
++  i1();
++  i3();
++  i4();
++  i5();
 +
-+  return global_static + x;
++  e1();
++  e3();
++  e4();
++  e5();
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-5.c b/gcc/testsuite/gcc.dg/remove-local-statics-5.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-5.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-5.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,24 @@
-+/* Verify that we do not eliminate a static local variable whose uses
-+   are dominated by a def when the function calls setjmp.  */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/dll-7.c
+@@ -0,0 +1,52 @@
++/* { dg-do link } */
++/* { dg-require-dll "" } */
++/* { dg-additional-sources "dll-7a.c" } */
++/* { dg-options "-w -O2 -std=gnu99" } */
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
++/* Test that inline functions declared "dllexport" appear in object
++   files, even if they are not called.
 +
-+#include <setjmp.h>
++   This behavior is required by the ARM C++ ABI:
 +
-+int
-+foo (int x)
-+{
-+  static int thestatic;
-+  int retval;
-+  jmp_buf env;
++     Exporting a function that can be inlined should force the
++     creation and export of an out-of-line copy of it.
 +
-+  thestatic = x;
++   and should presumably also apply.
 +
-+  retval = thestatic + x;
++   Visual Studio 2005 also honors that rule.  */
 +
-+  setjmp (env);
++__declspec(dllexport) inline void i1() {}
 +
-+  return retval;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-6.c b/gcc/testsuite/gcc.dg/remove-local-statics-6.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-6.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-6.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,16 @@
-+/* Verify that we do not eliminate a static local variable whose uses
-+   are dominated by a def when the variable is addressed.  */
++__declspec(dllexport) extern inline void e1() {}
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
++/* It is invalid to declare the function inline after its definition.  */
++#if 0
++__declspec(dllexport) void i2() {}
++inline void i2();
 +
-+int *
-+test1 (int x)
-+{
-+  static int thestatic;
++__declspec(dllexport) extern void e2() {}
++inline void e2();
++#endif
 +
-+  thestatic = x;
++__declspec(dllexport) inline void i3() {}
++void i3();
 +
-+  return &thestatic + x;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-7.c b/gcc/testsuite/gcc.dg/remove-local-statics-7.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-7.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-7.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,21 @@
-+/* Verify that we eliminate a static local variable where it is defined
-+   along all paths leading to a use.
++__declspec(dllexport) inline void e3() {}
++extern void e3();
 +
-+   XFAIL'd because our analysis is currently too weak.  */
++__declspec(dllexport) void i4();
++inline void i4() {};
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler-not "thestatic" } } */
++__declspec(dllexport) extern void e4();
++inline void e4() {};
 +
-+int
-+test1 (int x)
-+{
-+  static int thestatic;
++__declspec(dllexport) inline void i5();
++void i5() {};
 +
-+  if (x < 0)
-+    thestatic = x;
-+  else
-+    thestatic = -x;
++__declspec(dllexport) inline void e5();
++extern void e5() {};
 +
-+  return thestatic + x;
-+}
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-8.c b/gcc/testsuite/gcc.dg/remove-local-statics-8.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-8.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-8.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,33 @@
-+/* Verify that we eliminate a static local variable when it is dead on
-+   return from a function call that recursively calls the function in
-+   which the variable is defined.  */
++/* Make sure that just declaring the function -- without defining it
++   -- does not cause errors.  */
++__declspec(dllexport) inline void i6();
++__declspec(dllexport) extern inline void e6();
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/dll-7a.c
+@@ -0,0 +1,21 @@
++extern void i1();
++extern void i3();
++extern void i4();
++extern void i5();
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler-not "thestatic" } } */
++extern void e1();
++extern void e3();
++extern void e4();
++extern void e5();
 +
-+int test1 (int);
-+int test2 (int);
++int main () {
++  i1();
++  i3();
++  i4();
++  i5();
 +
-+int
-+test2 (int x)
-+{
-+  if (x < 0)
-+    return 0;
-+  else
-+    return test1 (x - 1);
++  e1();
++  e3();
++  e4();
++  e5();
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/falign-labels-1.c
+@@ -0,0 +1,39 @@
++/* { dg-do run } */
++/* { dg-options "-falign-labels=8" { target { ! { m68k*-*-* || fido*-*-* } } } } */
 +
-+int
-+test1 (int x)
++/* On ARMv7-A CPUs, this test resulted in incorrect code generation.
++   The code generated for the switch statement expected the jump table
++   to immediately follow the jump instruction, but -falign-labels
++   caused the label preceding the table to be aligned.  */
++/* M68K and fido only support -falign-labels argument <= 2.  */
++
++volatile int x;
++
++int main(void)
 +{
-+  static int thestatic;
 +  int y;
 +
-+  thestatic = x;
++  x = 0;
 +
-+  y = thestatic;
++  switch(x)
++    {
++    case 0:
++      y = 2 * x;
++      break;
++    case 1:
++      y = -3 * x;
++      break;
++    case 2:
++      y = x + 5;
++      break;
++    case 3:
++      y = x - 7;
++      break;
++    default:
++      break;
++    }
 +
-+  return y + x + test1 (x - 1) + test2 (x - 1);
++  x = y;
++
++  return 0;
 +}
-+  
-diff -Nur a/gcc/testsuite/gcc.dg/remove-local-statics-9.c b/gcc/testsuite/gcc.dg/remove-local-statics-9.c
---- a/gcc/testsuite/gcc.dg/remove-local-statics-9.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/remove-local-statics-9.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,34 @@
-+/* Verify that we eliminate a static local variable when it is live
-+   on return from a function call that does not recursively call the
-+   function in which the variable is defined.  */
+--- a/gcc/testsuite/gcc.dg/fltconst-1.c
++++ b/gcc/testsuite/gcc.dg/fltconst-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-std=gnu99" } */
++/* { dg-options "-std=gnu99 -fshow-column" } */
+ double a = 1.ld;      /* { dg-error "12:invalid suffix" } */
+ double b = 1.fd;      /* { dg-error "12:invalid suffix" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/m68k-fp-1.c
+@@ -0,0 +1,13 @@
++/* ColdFire has restricted addressing modes for float operands.  */
++/* { dg-do compile { target m68k-*-* } }  */
++/* { dg-options "-O0 -mcpu=547x -mhard-float" }  */
 +
-+/* XFAIL'd because we don't utilize the callgraph properly.  */
++double Foo (unsigned a)
++{
++  unsigned local_data[16384] __attribute__((unused));
++  double d;
++
++  d = a;
++
++  return d;
++}
+--- a/gcc/testsuite/gcc.dg/pch/counter-2.c
++++ b/gcc/testsuite/gcc.dg/pch/counter-2.c
+@@ -10,6 +10,7 @@
+ #include "counter-2.h" /* { dg-warning "not used because `__COUNTER__' is invalid" } */
+ /* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 10 } */
+ /* { dg-error "one or more PCH files were found, but they were invalid" "invalid files" { target *-*-* } 10 } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+ int main(void) 
+ {
+--- a/gcc/testsuite/gcc.dg/pch/valid-1.c
++++ b/gcc/testsuite/gcc.dg/pch/valid-1.c
+@@ -3,5 +3,6 @@
+ #include "valid-1.h"/* { dg-warning "created with -gnone, but used with -g" } */
+ /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
+ /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+ int x;
+--- a/gcc/testsuite/gcc.dg/pch/valid-2.c
++++ b/gcc/testsuite/gcc.dg/pch/valid-2.c
+@@ -3,4 +3,5 @@
+ #include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */
+ /* { dg-error "No such file" "no such file" { target *-*-* } 3 } */
+ /* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+ int x;
+--- a/gcc/testsuite/gcc.dg/pch/warn-1.c
++++ b/gcc/testsuite/gcc.dg/pch/warn-1.c
+@@ -5,6 +5,7 @@
+ #include "warn-1.h"/* { dg-warning "not used because .DEFINED_VALUE. is defined" } */
+ /* { dg-error "No such file" "no such file" { target *-*-* } 5 } */
+ /* { dg-error "they were invalid" "invalid files" { target *-*-* } 5 } */
++/* { dg-message "terminated" "" { target *-*-* } 0 } */
+ int main(void) 
+--- a/gcc/testsuite/gcc.dg/pr34263.c
++++ b/gcc/testsuite/gcc.dg/pr34263.c
+@@ -1,5 +1,5 @@
+ /* { dg-do run } */
+-/* { dg-options "-O2 -fdump-tree-optimized" } */
++/* { dg-options "-O2 -fdump-tree-optimized -fno-unroll-loops" } */
+ /* Same test as 990128-1.c.  */
+ extern int printf (const char *,...);
+--- a/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
++++ b/gcc/testsuite/gcc.dg/pragma-isr-trapa2.c
+@@ -1,4 +1,6 @@
+ /* { dg-do compile { target { { sh-*-* sh4*-*-* } && nonpic } } } */
++/* { dg-skip-if "FPU Required" { "sh*-*-*" } { "-m*nofpu*" } { "" } } */
++/* { dg-skip-if "FPU Required" { "sh*-*-*" } { "-m4al*" } { "" } } */
+ /* { dg-options "-O -m4" } */
+ extern void foo ();
+--- a/gcc/testsuite/gcc.dg/profile-dir-1.c
++++ b/gcc/testsuite/gcc.dg/profile-dir-1.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O -fprofile-generate=. -fdump-tree-tree_profile" } */
++/* { dg-require-host-local "" } */
+ /* { dg-final { scan-tree-dump " ./profile-dir-1.gcda" "tree_profile" } } */
+ int
+--- a/gcc/testsuite/gcc.dg/profile-dir-2.c
++++ b/gcc/testsuite/gcc.dg/profile-dir-2.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O -fprofile-generate -fdump-tree-tree_profile" } */
++/* { dg-require-host-local "" } */
+ /* { dg-final { scan-tree-dump "/profile-dir-2.gcda" "tree_profile" } } */
+ int
+--- a/gcc/testsuite/gcc.dg/profile-dir-3.c
++++ b/gcc/testsuite/gcc.dg/profile-dir-3.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O -fprofile-generate -fprofile-dir=. -fdump-tree-tree_profile" } */
++/* { dg-require-host-local "" } */
+ /* { dg-final { scan-tree-dump " ./profile-dir-3.gcda" "tree_profile" } } */
+ int
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-1.c
+@@ -0,0 +1,15 @@
++/* Verify that we promote a short loop index variable.  */
 +
 +/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler-not "thestatic" { xfail *-*-* } } } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+static int
-+test2 (int x)
++void
++test1 (short n, int *x)
 +{
-+  if (x < 0)
-+    return 0;
-+  else
-+    return x + test2 (x - 1);
++  short i;
++
++  for (i = 0; i < n; i++)
++    x[i] = 0;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-10.c
+@@ -0,0 +1,20 @@
++/* Verify that we do not promote a short loop index variable when its
++   address is taken.  */
 +
-+int
-+test1 (int x)
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Found 0 candidates" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
++
++extern void outside (short *);
++
++void
++test1 (int n, int *x)
 +{
-+  static int thestatic;
-+  int y;
++  short i;
 +
-+  thestatic = x;
++  for (i = 0; i < n; i++)
++    {
++      outside (&i);
++    }
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-2.c
+@@ -0,0 +1,16 @@
++/* Verify that we do not promote a short loop index variable when it is
++   being stored to memory.  */
 +
-+  y = test2 (x - 1);
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+  y += thestatic;
++void
++test1 (short n, short *x)
++{
++  short i;
 +
-+  return y + x;
++  for (i = 0; i < n; i++)
++    x[i] = i;
 +}
-+  
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c   2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,29 @@
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-3.c
+@@ -0,0 +1,18 @@
++/* Verify that we do not promote a short loop index variable when it is
++   being passed as a function parameter.  */
 +
-+/* Test basic assignments and conversions for __fp16.  */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" { xfail m68k*-*-* fido*-*-* i?86-*-* x86_64-*-* mips*-*-* sh*-*-* } } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+__fp16 h0 = -1.0;
-+__fp16 h1 = 0.0;
-+__fp16 h2 = 1234.0;
-+__fp16 h3 = 42.0;
-+float f1 = 2.0;
-+float f2 = -999.9;
++extern void outside (short);
 +
-+void f (__fp16 *p)
++void
++test1 (short n)
 +{
-+  __fp16 t;
-+
-+  h0 = 1.0;
-+  h1 = h2;
-+  h2 = f1;
-+  f2 = h2;
++  short i;
 +
-+  t = *p;
-+  *p = h3;
-+  h3 = t;
++  for (i = 0; i < n; i++)
++    outside (i);
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-4.c
+@@ -0,0 +1,19 @@
++/* Verify that we do not promote a short loop index variable when it is
++   modified within the loop.  */
 +
-+/* Make sure we are not falling through to undefined libcalls.  */
-+/* { dg-final { scan-assembler-not "__truncsfhf" } } */
-+/* { dg-final { scan-assembler-not "__extendhfsf" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c  2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+/* Test basic assignments and conversions for __fp16.  */
++void
++test1 (short n, int *x)
++{
++  short i;
 +
-+__fp16 h1 = 0.0;
-+__fp16 h2 = 1234.0;
-+char c1 = 1;
-+char c2 = 2;
-+short s1 = 10;
-+short s2 = 20;
-+int i1 = -100;
-+int i2 = -200;
-+long long l1 = 1000.0;
-+long long l2 = 2000.0;
-+double d1 = -10000.0;
-+double d2 = -20000.0;
++  for (i = 0; i < n; i++)
++    {
++      i++;
++      x[i] = 0;
++    }
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-5.c
+@@ -0,0 +1,18 @@
++/* Verify that we do not promote a short loop index variable when it has
++   a non-unit-increment.  */
 +
-+void f (void)
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
++
++void
++test1 (short n, int *x)
 +{
-+  c1 = h1;
-+  h2 = c2;
++  short i;
 +
-+  h1 = s1;
-+  s2 = h2;
++  for (i = 0; i < n; i+=2)
++    {
++      x[i] = 0;
++    }
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-6.c
+@@ -0,0 +1,18 @@
++/* Verify that we do promote a short loop index variable when it has
++   a non-unit-increment and -funsafe-loop-optimizations is in effect.  */
 +
-+  i1 = h1;
-+  h2 = i2;
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -funsafe-loop-optimizations -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+  h1 = l1;
-+  l2 = h2;
-+  
-+  d1 = h1;
-+  h2 = d2;
-+}
++void
++test1 (short n, int *x)
++{
++  short i;
 +
-+/* Make sure we are not falling through to undefined libcalls.  */
-+/* { dg-final { scan-assembler-not "__float.ihf" } } */
-+/* { dg-final { scan-assembler-not "__fixhf.i" } } */
-+/* { dg-final { scan-assembler-not "__trunc.fhf" } } */
-+/* { dg-final { scan-assembler-not "__extendhf.f" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c  2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,17 @@
-+/* Test floating-point conversions.  Standard types and __fp16.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=alternative" } */
++  for (i = 0; i < n; i+=2)
++    {
++      x[i] = 0;
++    }
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-7.c
+@@ -0,0 +1,18 @@
++/* Verify that we do not promote a short loop index variable when the
++   loop in which it is used has a bound of wider type.  */
 +
-+#include "fp-int-convert.h"
-+#define FP16_MANT_DIG 11
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 0 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+int
-+main (void)
++void
++test1 (int n, int *x)
 +{
-+  TEST_I_F(signed char, unsigned char, float, FP16_MANT_DIG);
-+  TEST_I_F(signed short, unsigned short, float, FP16_MANT_DIG);
-+  TEST_I_F(signed int, unsigned int, float, FP16_MANT_DIG);
-+  TEST_I_F(signed long, unsigned long, float, FP16_MANT_DIG);
-+  TEST_I_F(signed long long, unsigned long long, float, FP16_MANT_DIG);
-+  exit (0);
++  short i;
++
++  for (i = 0; i < n; i++)
++    {
++      x[i] = 0;
++    }
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c 2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,17 @@
-+/* Test floating-point conversions.  Standard types and __fp16.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-8.c
+@@ -0,0 +1,19 @@
++/* Verify that we do promote a short loop index variable when the loop
++   in which it is used has a bound of wider type and
++   -funsafe-loop-optimizations is in effect.  */
 +
-+#include "fp-int-convert.h"
-+#define FP16_MANT_DIG 11
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices -funsafe-loop-optimizations -fdump-tree-promoteshort" } */
++/* { dg-final { scan-tree-dump-times "Promoting 1 variables" 1 "promoteshort" } } */
++/* { dg-final { cleanup-tree-dump "promoteshort" } } */
 +
-+int
-+main (void)
++void
++test1 (int n, int *x)
 +{
-+  TEST_I_F(signed char, unsigned char, float, FP16_MANT_DIG);
-+  TEST_I_F(signed short, unsigned short, float, FP16_MANT_DIG);
-+  TEST_I_F(signed int, unsigned int, float, FP16_MANT_DIG);
-+  TEST_I_F(signed long, unsigned long, float, FP16_MANT_DIG);
-+  TEST_I_F(signed long long, unsigned long long, float, FP16_MANT_DIG);
-+  exit (0);
++  short i;
++
++  for (i = 0; i < n; i++)
++    {
++      x[i] = 0;
++    }
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/promote-short-9.c
+@@ -0,0 +1,15 @@
++/* -fpromote-loop-indices used to ICE on this.  */
 +
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c    2010-01-25 09:50:29.235686709 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fpromote-loop-indices" } */
 +
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c    2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=alternative" } */
++char
++lookup (char *haystack, char *needle)
++{
++  char x;
 +
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c    2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=alternative -ffast-math" } */
++  for (x = haystack[-2]; x < *needle; x++)
++    haystack[x] = needle[x];
 +
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c    2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,15 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_fp16_ok } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+/* { dg-add-options arm_neon_fp16 } */
++  return 1;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-1.c
+@@ -0,0 +1,16 @@
++/* Verify that we eliminate a static local variable where its uses
++   are dominated by a def.  */
 +
-+#include "arm-fp16-ops.h"
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler-not "thestatic" } } */
 +
-+/* We've specified options for hardware float, including fp16 support, so
-+   we should not see any calls to libfuncs here.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c    2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,15 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_fp16_ok } */
-+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
-+/* { dg-add-options arm_neon_fp16 } */
++int
++test1 (int x)
++{
++  static int thestatic;
 +
-+#include "arm-fp16-ops.h"
++  thestatic = x;
 +
-+/* We've specified options for hardware float, including fp16 support, so
-+   we should not see any calls to libfuncs here.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c    2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,13 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+/* { dg-add-options arm_neon } */
++  return thestatic + x;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-10.c
+@@ -0,0 +1,32 @@
++/* Verify that we do not eliminate a static local variable when it is
++   live on return from a function call that recursively calls the
++   function in which the variable is defined.  */
 +
-+#include "arm-fp16-ops.h"
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+/* We've specified options for hardware float, so we should not see any 
-+   calls to libfuncs here except for those to the conversion functions.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c    2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,13 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
-+/* { dg-add-options arm_neon } */
++int
++test2 (int x)
++{
++  if (x < 0)
++    return 0;
++  else
++    return test1 (x - 1);
++}
 +
-+#include "arm-fp16-ops.h"
++int
++test1 (int x)
++{
++  static int thestatic;
++  int y;
 +
-+/* We've specified options for hardware float, so we should not see any 
-+   calls to libfuncs here except for those to the conversion functions.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h
---- a/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h      2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,135 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++  thestatic = x;
 +
-+#include <assert.h>
++  y = test2 (x - 1);
 +
-+#define CHECK(e,r) assert ((e) == r)
-+#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r))
-+#define TEST(e) assert (e)
-+#define TESTNOT(e) assert (!(e))
++  y += thestatic;
 +
-+volatile __fp16 h0 = 0.0;
-+volatile __fp16 h1 = 1.0;
-+volatile __fp16 h42 = 42.0;
-+volatile __fp16 hm2 = -2.0;
-+volatile __fp16 temp;
++  return y + x;
++}
++  
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-11.c
+@@ -0,0 +1,16 @@
++/* Verify that we do not eliminate a static local variable when its
++   address is taken.  */
 +
-+volatile float f0 = 0.0;
-+volatile float f1 = 1.0;
-+volatile float f42 = 42.0;
-+volatile float fm2 = -2.0;
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+int main (void)
++int *
++test1 (int x)
 +{
-+  TEST (h1);
-+  TESTNOT (h0);
-+  TEST (!h0);
-+  TESTNOT (!h1);
++  static int thestatic;
 +
-+  CHECK2 (-h1, -1.0);
-+  CHECK2 (+h1, 1.0);
++  thestatic = x;
 +
-+  CHECK (h1++, 1.0);
-+  CHECK (h1, 2.0);
-+  CHECK (++h1, 3.0);
-+  CHECK (h1, 3.0);
++  return &thestatic + x;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-12.c
+@@ -0,0 +1,20 @@
++/* Verify that we do not eliminate a static variable when it is declared
++   in a function that has nested functions.  */
 +
-+  CHECK (--h1, 2.0);
-+  CHECK (h1, 2.0);
-+  CHECK (h1--, 2.0);
-+  CHECK (h1, 1.0);
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+  CHECK2 (h42 * hm2, -84.0);
-+  CHECK2 (h42 * (__fp16) -2.0, -84.0);
-+  CHECK2 (h42 * fm2, -84.0);
-+  CHECK2 (f42 * hm2, -84.0);
++int test1 (int x)
++{
++  static int thestatic;
 +
-+  CHECK2 (h42 / hm2, -21.0);
-+  CHECK2 (h42 / (__fp16) -2.0, -21.0);
-+  CHECK2 (h42 / fm2, -21.0);
-+  CHECK2 (f42 / hm2, -21.0);
++  int nested_test1 (int x)
++  {
++    return x + thestatic;
++  }
 +
-+  CHECK2 (hm2 + h42, 40.0);
-+  CHECK2 ((__fp16)-2.0 + h42, 40.0);
-+  CHECK2 (hm2 + f42, 40.0);
-+  CHECK2 (fm2 + h42, 40.0);
++  thestatic = x;
 +
-+  CHECK2 (hm2 - h42, -44.0);
-+  CHECK2 ((__fp16)-2.0 - h42, -44.0);
-+  CHECK2 (hm2 - f42, -44.0);
-+  CHECK2 (fm2 - h42, -44.0);
++  return thestatic + x + nested_test1 (x);
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-13.c
+@@ -0,0 +1,24 @@
++/* We used to ICE on this test, because the call to BAR appeared to
++   define both static variables in FOO.  Verify that we no longer do
++   this.  */
 +
-+  TEST (hm2 < h42);
-+  TEST (hm2 < (__fp16)42.0);
-+  TEST (hm2 < f42);
-+  TEST (fm2 < h42);
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "static1" } } */
++/* { dg-final { scan-assembler-not "static2" } } */
 +
-+  TEST (h42 > hm2);
-+  TEST ((__fp16)42.0 > hm2);
-+  TEST (h42 > fm2);
-+  TEST (f42 > hm2);
++int foo(int i) {
++  static int static1 = 0;
++  static int static2;
 +
-+  TEST (hm2 <= h42);
-+  TEST (hm2 <= (__fp16)42.0);
-+  TEST (hm2 <= f42);
-+  TEST (fm2 <= h42);
++  if (static2 = bar(i))
++    static1 = 1;
++  static2 = static1 + 30;
 +
-+  TEST (h42 >= hm2);
-+  TEST (h42 >= (__fp16)-2.0);
-+  TEST (h42 >= fm2);
-+  TEST (f42 >= hm2);
++  return static1 + static2;
++}
 +
-+  TESTNOT (h1 == hm2);
-+  TEST (h1 == h1);
-+  TEST (h1 == (__fp16)1.0);
-+  TEST (h1 == f1);
-+  TEST (f1 == h1);
++int bar(int i) {
++  if (i) { foo(i-1); return 0; }
++  return 1;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-14.c
+@@ -0,0 +1,29 @@
++/* Verify that we do eliminate a static local variable whose last use is
++   in a statement containing a call expression.  */
 +
-+  TEST (h1 != hm2);
-+  TESTNOT (h1 != h1);
-+  TESTNOT (h1 != (__fp16)1.0);
-+  TESTNOT (h1 != f1);
-+  TESTNOT (f1 != h1);
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler-not "thestatic" } } */
 +
-+  CHECK2 ((h1 ? hm2 : h42), -2.0);
-+  CHECK2 ((h0 ? hm2 : h42), 42.0);
++int
++test2 (int x)
++{
++  if (x < 0)
++    return 0;
++  else
++    return test1 (x - 1);
++}
 +
-+  CHECK (h0 = h42, 42.0);
-+  CHECK (h0, 42.0);
-+  CHECK (h0 = (__fp16)-2.0, -2.0);
-+  CHECK (h0, -2.0);
-+  CHECK (h0 = f0, 0.0);
-+  CHECK (h0, 0.0);
++int
++test1 (int x)
++{
++  static int thestatic;
++  int y;
 +
-+  CHECK (h0 += h1, 1.0);
-+  CHECK (h0, 1.0);
-+  CHECK (h0 += (__fp16)1.0, 2.0);
-+  CHECK (h0, 2.0);
-+  CHECK (h0 += fm2, 0.0);
-+  CHECK (h0, 0.0);
++  thestatic = x;
 +
-+  CHECK (h0 -= h1, -1.0);
-+  CHECK (h0, -1.0);
-+  CHECK (h0 -= (__fp16)1.0, -2.0);
-+  CHECK (h0, -2.0);
-+  CHECK (h0 -= fm2, 0.0);
-+  CHECK (h0, 0.0);
++  y = test2 (thestatic - 1);
 +
-+  h0 = hm2;
-+  CHECK (h0 *= hm2, 4.0);
-+  CHECK (h0, 4.0);
-+  CHECK (h0 *= (__fp16)-2.0, -8.0);
-+  CHECK (h0, -8.0);
-+  CHECK (h0 *= fm2, 16.0);
-+  CHECK (h0, 16.0);
++  return y + x;
++}
++  
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-15.c
+@@ -0,0 +1,17 @@
++/* Verify that we do not consider an array variable for local static
++   elimination.  */
 +
-+  CHECK (h0 /= hm2, -8.0);
-+  CHECK (h0, -8.0);
-+  CHECK (h0 /= (__fp16)-2.0, 4.0);
-+  CHECK (h0, 4.0);
-+  CHECK (h0 /= fm2, -2.0);
-+  CHECK (h0, -2.0);
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
 +
-+  CHECK ((h0, h1), 1.0);
++int foo (void)
++{
++  static int a[1];
 +
-+  return 0;
++  a[0] = 0;
++
++  return a[0];
 +}
-diff -Nur a/gcc/testsuite/gcc.dg/torture/type-generic-1.c b/gcc/testsuite/gcc.dg/torture/type-generic-1.c
---- a/gcc/testsuite/gcc.dg/torture/type-generic-1.c    2008-12-10 08:49:40.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/torture/type-generic-1.c    2010-01-25 09:50:29.245686094 +0100
-@@ -3,6 +3,7 @@
- /* { dg-do run } */
- /* { dg-options "-mieee" { target alpha*-*-* sh*-*-* } } */
-+/* { dg-options "-Wl,--defsym=__cs3_mips_float_type=2 -lcs3-mips-cp1 -lcs3-mips-fpemu" { target mips*-*sde*-* } } */
- /* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
- #include "../tg-tests.h"
-diff -Nur a/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c
---- a/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c  2007-07-12 04:20:04.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c  2010-01-25 09:50:29.245686094 +0100
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
-+/* { dg-options "-O2 -fdump-tree-vrp1-details -fno-remove-local-statics" } */
- static int blocksize = 4096;
-diff -Nur a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
---- a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c       2007-06-10 22:39:22.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c       2010-01-25 09:50:29.245686094 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
- /* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 --param max-unrolled-insns=1 -fdump-tree-aprefetch-details -fdump-tree-final_cleanup" } */
- #define K 1000000
-diff -Nur a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
---- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c        2005-04-26 19:15:46.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c        2010-01-25 09:50:29.245686094 +0100
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O2 -fdump-tree-dse1" } */
-+/* { dg-options "-O2 -fdump-tree-dse1 -fno-remove-local-statics" } */
- int foo11 (int c)
- {
-diff -Nur a/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c b/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c
---- a/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c       2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,34 @@
++
++/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
++/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-16.c
+@@ -0,0 +1,20 @@
++/* Verify that we do not consider an structure variable for local static
++   elimination.  */
++
 +/* { dg-do compile } */
-+/* { dg-require-effective-target section_anchors } */
-+/* { dg-require-effective-target vect_int } */
++/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
 +
-+#include <stdarg.h>
-+#include "tree-vect.h"
++int foo (void)
++{
++  static struct {
++    int x;
++    int y;
++  } a;
 +
-+#define N 32
++  a.x = 0;
 +
-+static int a[N][N];
-+static int b[N][N];
-+static int c[N][N];
++  return a.y;
++}
 +
-+void clobber(int *);
++/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
++/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-17.c
+@@ -0,0 +1,19 @@
++/* Verify that we do not eliminate a static variable that is "defined"
++   by an asm that clobbers memory.  */
 +
-+int *foo(void)
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics -fdump-tree-remlocstatic-details" } */
++
++int foo (void)
 +{
-+  int i;
-+  int j;
++  static int foo = 0;
 +
-+  clobber (&a[0][0]);
-+  clobber (&b[0][0]);
-+  clobber (&c[0][0]);
++  __asm__ __volatile__ ("bogus" : : : "memory");
 +
-+  for (i = 0; i < N; i++) {
-+      for (j = 0; j < N; j++) {
-+        c[j][i] += a[j][i] + c[j][i];
-+      }
-+  }
-+  return &c[0][0];
++  foo++;
++
++  return foo;
 +}
 +
-+/* { dg-final { scan-ipa-dump-times "Increasing alignment of decl" 3 "increase_alignment" } } */
-+/* { dg-final { cleanup-ipa-dump "increase_alignment" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
---- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c   2007-10-30 06:25:10.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c   2010-01-25 09:50:29.245686094 +0100
-@@ -88,5 +88,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
---- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c   2007-10-30 06:25:10.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c   2010-01-25 09:50:29.245686094 +0100
-@@ -84,5 +84,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
---- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c   2008-04-27 18:27:08.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c   2010-01-25 09:50:29.245686094 +0100
-@@ -79,5 +79,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
---- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c   2007-10-30 06:25:10.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c   2010-01-25 09:50:29.245686094 +0100
-@@ -88,5 +88,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
---- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c   2008-04-27 18:27:08.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c   2010-01-25 09:50:29.245686094 +0100
-@@ -114,7 +114,7 @@
- /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vector_alignment_reachable} } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_element_align || {! vector_alignment_reachable} } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target {! vector_alignment_reachable} } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target {! vector_alignment_reachable} } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { ! vector_alignment_reachable } && { ! vect_element_align } } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c b/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
---- a/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c      2007-08-07 21:13:27.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c      2010-01-25 09:50:29.245686094 +0100
-@@ -115,6 +115,6 @@
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
- /* Alignment forced using versioning until the pass that increases alignment
-   is extended to handle structs.  */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target {vect_int && vector_alignment_reachable } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target { {vect_int && vector_alignment_reachable } && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target {vect_int && {! vector_alignment_reachable} } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/slp-25.c b/gcc/testsuite/gcc.dg/vect/slp-25.c
---- a/gcc/testsuite/gcc.dg/vect/slp-25.c       2008-04-22 01:32:32.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/slp-25.c       2010-01-25 09:50:29.245686094 +0100
-@@ -56,5 +56,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-109.c b/gcc/testsuite/gcc.dg/vect/vect-109.c
---- a/gcc/testsuite/gcc.dg/vect/vect-109.c     2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-109.c     2010-01-25 09:50:29.245686094 +0100
-@@ -73,6 +73,6 @@
- }
- /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
--/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-26.c b/gcc/testsuite/gcc.dg/vect/vect-26.c
---- a/gcc/testsuite/gcc.dg/vect/vect-26.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-26.c      2010-01-25 09:50:29.245686094 +0100
-@@ -37,5 +37,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-27.c b/gcc/testsuite/gcc.dg/vect/vect-27.c
---- a/gcc/testsuite/gcc.dg/vect/vect-27.c      2007-10-30 06:25:10.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/vect-27.c      2010-01-25 09:50:29.245686094 +0100
-@@ -45,6 +45,6 @@
- /* The initialization induction loop (with aligned access) is also vectorized.  */
- /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail vect_no_align } } } */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-28.c b/gcc/testsuite/gcc.dg/vect/vect-28.c
---- a/gcc/testsuite/gcc.dg/vect/vect-28.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-28.c      2010-01-25 09:50:29.245686094 +0100
-@@ -40,6 +40,6 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-29.c b/gcc/testsuite/gcc.dg/vect/vect-29.c
---- a/gcc/testsuite/gcc.dg/vect/vect-29.c      2007-10-30 06:25:10.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/vect-29.c      2010-01-25 09:50:29.245686094 +0100
-@@ -50,7 +50,7 @@
- /* The initialization induction loop (with aligned access) is also vectorized.  */
- /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target vect_no_align } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-33.c b/gcc/testsuite/gcc.dg/vect/vect-33.c
---- a/gcc/testsuite/gcc.dg/vect/vect-33.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-33.c      2010-01-25 09:50:29.245686094 +0100
-@@ -39,6 +39,6 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-42.c b/gcc/testsuite/gcc.dg/vect/vect-42.c
---- a/gcc/testsuite/gcc.dg/vect/vect-42.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-42.c      2010-01-25 09:50:29.245686094 +0100
-@@ -57,6 +57,6 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align || { ! vector_alignment_reachable } } } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || { ! vector_alignment_reachable } } } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail {vect_no_align || { ! vector_alignment_reachable } } } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { { vect_no_align || vect_element_align } || { ! vector_alignment_reachable } } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || { ! vector_alignment_reachable } } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-44.c b/gcc/testsuite/gcc.dg/vect/vect-44.c
---- a/gcc/testsuite/gcc.dg/vect/vect-44.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-44.c      2010-01-25 09:50:29.245686094 +0100
-@@ -65,8 +65,8 @@
-    two loads to be aligned).  */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_no_align} } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-48.c b/gcc/testsuite/gcc.dg/vect/vect-48.c
---- a/gcc/testsuite/gcc.dg/vect/vect-48.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-48.c      2010-01-25 09:50:29.245686094 +0100
-@@ -54,7 +54,7 @@
-    (The store is aligned).  */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-50.c b/gcc/testsuite/gcc.dg/vect/vect-50.c
---- a/gcc/testsuite/gcc.dg/vect/vect-50.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-50.c      2010-01-25 09:50:29.245686094 +0100
-@@ -61,8 +61,8 @@
-    two loads to be aligned).  */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_no_align} } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-52.c b/gcc/testsuite/gcc.dg/vect/vect-52.c
---- a/gcc/testsuite/gcc.dg/vect/vect-52.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-52.c      2010-01-25 09:50:29.245686094 +0100
-@@ -55,7 +55,7 @@
-    (The store is aligned).  */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-54.c b/gcc/testsuite/gcc.dg/vect/vect-54.c
---- a/gcc/testsuite/gcc.dg/vect/vect-54.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-54.c      2010-01-25 09:50:29.245686094 +0100
-@@ -59,5 +59,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-56.c b/gcc/testsuite/gcc.dg/vect/vect-56.c
---- a/gcc/testsuite/gcc.dg/vect/vect-56.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-56.c      2010-01-25 09:50:29.245686094 +0100
-@@ -67,6 +67,6 @@
- }
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-58.c b/gcc/testsuite/gcc.dg/vect/vect-58.c
---- a/gcc/testsuite/gcc.dg/vect/vect-58.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-58.c      2010-01-25 09:50:29.245686094 +0100
-@@ -58,5 +58,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-60.c b/gcc/testsuite/gcc.dg/vect/vect-60.c
---- a/gcc/testsuite/gcc.dg/vect/vect-60.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-60.c      2010-01-25 09:50:29.245686094 +0100
-@@ -68,6 +68,6 @@
- }
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-70.c b/gcc/testsuite/gcc.dg/vect/vect-70.c
---- a/gcc/testsuite/gcc.dg/vect/vect-70.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-70.c      2010-01-25 09:50:29.245686094 +0100
-@@ -64,6 +64,6 @@
-           
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-72.c b/gcc/testsuite/gcc.dg/vect/vect-72.c
---- a/gcc/testsuite/gcc.dg/vect/vect-72.c      2008-08-12 08:31:57.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-72.c      2010-01-25 09:50:29.245686094 +0100
-@@ -46,6 +46,6 @@
- }
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-75.c b/gcc/testsuite/gcc.dg/vect/vect-75.c
---- a/gcc/testsuite/gcc.dg/vect/vect-75.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-75.c      2010-01-25 09:50:29.245686094 +0100
-@@ -45,5 +45,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-87.c b/gcc/testsuite/gcc.dg/vect/vect-87.c
---- a/gcc/testsuite/gcc.dg/vect/vect-87.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-87.c      2010-01-25 09:50:29.245686094 +0100
-@@ -51,6 +51,6 @@
- /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-88.c b/gcc/testsuite/gcc.dg/vect/vect-88.c
---- a/gcc/testsuite/gcc.dg/vect/vect-88.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-88.c      2010-01-25 09:50:29.245686094 +0100
-@@ -51,6 +51,6 @@
- /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-89.c b/gcc/testsuite/gcc.dg/vect/vect-89.c
---- a/gcc/testsuite/gcc.dg/vect/vect-89.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-89.c      2010-01-25 09:50:29.245686094 +0100
-@@ -46,5 +46,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-91.c b/gcc/testsuite/gcc.dg/vect/vect-91.c
---- a/gcc/testsuite/gcc.dg/vect/vect-91.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-91.c      2010-01-25 09:50:29.245686094 +0100
-@@ -59,6 +59,6 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" { xfail vect_no_int_add } } } */
- /* { dg-final { scan-tree-dump-times "accesses have the same alignment." 3 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target vector_alignment_reachable } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" {target {! vector_alignment_reachable} } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-92.c b/gcc/testsuite/gcc.dg/vect/vect-92.c
---- a/gcc/testsuite/gcc.dg/vect/vect-92.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-92.c      2010-01-25 09:50:29.245686094 +0100
-@@ -92,5 +92,5 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-93.c b/gcc/testsuite/gcc.dg/vect/vect-93.c
---- a/gcc/testsuite/gcc.dg/vect/vect-93.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-93.c      2010-01-25 09:50:29.245686094 +0100
-@@ -72,7 +72,7 @@
- /* main && main1 together: */
- /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 2 "vect" { target powerpc*-*-* i?86-*-* x86_64-*-* } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { vect_no_align && {! vector_alignment_reachable} } } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
- /* in main1: */
- /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target !powerpc*-*-* !i?86-*-* !x86_64-*-* } } } */
-@@ -80,6 +80,6 @@
- /* in main: */
- /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-95.c b/gcc/testsuite/gcc.dg/vect/vect-95.c
---- a/gcc/testsuite/gcc.dg/vect/vect-95.c      2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-95.c      2010-01-25 09:50:29.245686094 +0100
-@@ -62,8 +62,8 @@
-    stores and generate misaligned accesses for the loads. For targets that 
-    don't support unaligned loads we version for all four accesses.  */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /*  { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target vect_no_align } } } */
- /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target vect_no_align } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-align-2.c b/gcc/testsuite/gcc.dg/vect/vect-align-2.c
---- a/gcc/testsuite/gcc.dg/vect/vect-align-2.c 2008-03-13 21:13:29.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/vect-align-2.c 2010-01-25 09:50:29.245686094 +0100
-@@ -43,6 +43,6 @@
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
---- a/gcc/testsuite/gcc.dg/vect/vect.exp       2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/vect.exp       2010-01-25 09:50:29.245686094 +0100
-@@ -97,7 +97,7 @@
- } elseif [istarget "ia64-*-*"] {
-     set dg-do-what-default run
- } elseif [is-effective-target arm_neon_ok] {
--    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
-+    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
-     if [is-effective-target arm_neon_hw] {
-       set dg-do-what-default run
-     } else {
-@@ -183,6 +183,12 @@
- dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/section-anchors-*.\[cS\]]]  \
-       "" $DEFAULT_VECTCFLAGS
-+# alignment-sensitive -fsection-anchors tests
-+set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
-+lappend DEFAULT_VECTCFLAGS "-fsection-anchors" "-fdump-ipa-increase_alignment"
-+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/aligned-section-anchors-*.\[cS\]]]  \
-+      "" $DEFAULT_VECTCFLAGS
++/* { dg-final { scan-tree-dump-times "static variables to consider" 0 "remlocstatic" } } */
++/* { dg-final { cleanup-tree-dump "remlocstatic" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-2.c
+@@ -0,0 +1,19 @@
++/* Verify that we do not eliminate a static local variable when its uses
++   are not dominated by a def.  */
 +
- # -fno-section-anchors tests
- set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
- lappend DEFAULT_VECTCFLAGS "-fno-section-anchors"
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
---- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c    2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c    2010-01-25 09:50:29.245686094 +0100
-@@ -78,11 +78,11 @@
-   return 0;
- }
--/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
--/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { ! vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail *-*-* } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail *-*-* } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
---- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c    2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c    2010-01-25 09:50:29.245686094 +0100
-@@ -54,6 +54,6 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
---- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c    2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c    2010-01-25 09:50:29.245686094 +0100
-@@ -85,11 +85,11 @@
-   return 0;
- }
--/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
--/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { ! vect_element_align } } } } */
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail *-*-* } } } */
--/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 8 "vect" { xfail *-*-* } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
---- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c    2007-09-04 15:05:19.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c    2010-01-25 09:50:29.245686094 +0100
-@@ -61,6 +61,6 @@
- /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
- /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target vect_no_align } } } */
--/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail vect_no_align } } } */
-+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail { vect_no_align || vect_element_align } } } } */
- /* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
---- a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c 2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,37 @@
-+/* { dg-require-effective-target vect_shift_char } */
-+/* { dg-require-effective-target vect_int } */
-+
-+#include "tree-vect.h"
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "first_time" } } */
 +
-+#define N 32
++int
++test1 (int x)
++{
++  static int first_time;
 +
-+unsigned char dst[N] __attribute__((aligned(N)));
-+unsigned char src[N] __attribute__((aligned(N)));
++  if (x == 1)
++    first_time = 1;
++  else if (x > 0)
++    first_time = 2;
 +
-+__attribute__ ((noinline))
-+void array_shift(void)
-+{
-+  int i;
-+  for (i = 0; i < N; i++)
-+    dst[i] = src[i] >> 3;
++  return first_time + x;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-3.c
+@@ -0,0 +1,16 @@
++/* Verify that we do not eliminate a static local variable whose uses
++   are dominated by a def when the variable is volatile.  */
 +
-+int main()
-+{
-+  volatile int i;
-+  check_vect ();
-+
-+  for (i = 0; i < N; i++)
-+    src[i] = i << 3;
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+  array_shift ();
++int
++test1 (int x)
++{
++  static volatile int thestatic;
 +
-+  for (i = 0; i < N; i++)
-+    if (dst[i] != i)
-+      abort ();
++  thestatic = x;
 +
-+  return 0;
++  return thestatic + x;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-4.c
+@@ -0,0 +1,15 @@
++/* Verify that we don't eliminate a global static variable.  */
 +
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
-+/* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vect/vect-shift-3.c b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
---- a/gcc/testsuite/gcc.dg/vect/vect-shift-3.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c 2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,37 @@
-+/* { dg-require-effective-target vect_shift } */
-+/* { dg-require-effective-target vect_int } */
-+
-+#include "tree-vect.h"
-+
-+#define N 32
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "global_static" } } */
 +
-+unsigned short dst[N] __attribute__((aligned(N)));
-+unsigned short src[N] __attribute__((aligned(N)));
++static int global_static;
 +
-+__attribute__ ((noinline))
-+void array_shift(void)
++int
++test1 (int x)
 +{
-+  int i;
-+  for (i = 0; i < N; i++)
-+    dst[i] = src[i] >> 3;
++  global_static = x;
++
++  return global_static + x;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-5.c
+@@ -0,0 +1,24 @@
++/* Verify that we do not eliminate a static local variable whose uses
++   are dominated by a def when the function calls setjmp.  */
 +
-+int main()
-+{
-+  volatile int i;
-+  check_vect ();
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+  for (i = 0; i < N; i++)
-+    src[i] = i << 3;
++#include <setjmp.h>
 +
-+  array_shift ();
++int
++foo (int x)
++{
++  static int thestatic;
++  int retval;
++  jmp_buf env;
 +
-+  for (i = 0; i < N; i++)
-+    if (dst[i] != i)
-+      abort ();
++  thestatic = x;
 +
-+  return 0;
-+}
++  retval = thestatic + x;
 +
-+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
-+/* { dg-final { cleanup-tree-dump "vect" } } */
-diff -Nur a/gcc/testsuite/gcc.dg/vmx/vmx.exp b/gcc/testsuite/gcc.dg/vmx/vmx.exp
---- a/gcc/testsuite/gcc.dg/vmx/vmx.exp 2007-08-01 18:25:11.000000000 +0200
-+++ b/gcc/testsuite/gcc.dg/vmx/vmx.exp 2010-01-25 09:50:29.245686094 +0100
-@@ -31,7 +31,7 @@
- # nothing but extensions.
- global DEFAULT_VMXCFLAGS
- if ![info exists DEFAULT_VMXCFLAGS] then {
--    set DEFAULT_VMXCFLAGS "-maltivec -mabi=altivec -std=gnu99"
-+    set DEFAULT_VMXCFLAGS "-maltivec -std=gnu99"
- }
- # If the target system supports AltiVec instructions, the default action
-diff -Nur a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
---- a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp   2010-01-25 09:50:29.245686094 +0100
-@@ -90,6 +90,13 @@
- dg-init
- torture-init
-+if { [board_info target exists multilib_flags]
-+     && [string match "* -march=*" " [board_info target multilib_flags] "] } {
-+    # Multilib flags come after the -march flags we pass and override
-+    # them, so skip these tests when such flags are passed.
-+    return
++  setjmp (env);
++
++  return retval;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-6.c
+@@ -0,0 +1,16 @@
++/* Verify that we do not eliminate a static local variable whose uses
++   are dominated by a def when the variable is addressed.  */
 +
- set-torture-options $PREFETCH_NONE
- gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-none-*.c]] ""
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
---- a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp     2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,35 @@
-+# Copyright (C) 1997, 2004, 2006, 2007 Free Software Foundation, Inc.
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler "thestatic" } } */
 +
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3.  If not see
-+# <http://www.gnu.org/licenses/>.
++int *
++test1 (int x)
++{
++  static int thestatic;
 +
-+# GCC testsuite that uses the `dg.exp' driver.
++  thestatic = x;
 +
-+# Exit immediately if this isn't an ARM target.
-+if ![istarget arm*-*-*] then {
-+  return
++  return &thestatic + x;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-7.c
+@@ -0,0 +1,21 @@
++/* Verify that we eliminate a static local variable where it is defined
++   along all paths leading to a use.
 +
-+# Load support procs.
-+load_lib gcc-dg.exp
-+
-+# Initialize `dg'.
-+dg-init
-+
-+# Main loop.
-+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
-+      "" ""
++   XFAIL'd because our analysis is currently too weak.  */
 +
-+# All done.
-+dg-finish
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/abitest.h b/gcc/testsuite/gcc.target/arm/aapcs/abitest.h
---- a/gcc/testsuite/gcc.target/arm/aapcs/abitest.h     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/abitest.h     2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,118 @@
-+#define IN_FRAMEWORK
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler-not "thestatic" } } */
 +
-+#ifdef VFP
-+#define D0    0
-+#define D1    8
-+#define D2    16
-+#define D3    24
-+#define D4    32
-+#define D5    40
-+#define D6    48
-+#define D7    56
++int
++test1 (int x)
++{
++  static int thestatic;
 +
-+#define S0    64
-+#define S1    68
-+#define S2    72
-+#define S3    76
-+#define S4    80
-+#define S5    84
-+#define S6    88
-+#define S7    92
-+#define S8      86
-+#define S9    100
-+#define S10   104
-+#define S11   108
-+#define S12   112
-+#define S13   116
-+#define S14   120
-+#define S15   124
++  if (x < 0)
++    thestatic = x;
++  else
++    thestatic = -x;
 +
-+#define R0    128
-+#define R1    132
-+#define R2    136
-+#define R3    140
++  return thestatic + x;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-8.c
+@@ -0,0 +1,33 @@
++/* Verify that we eliminate a static local variable when it is dead on
++   return from a function call that recursively calls the function in
++   which the variable is defined.  */
 +
-+#define STACK 144
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler-not "thestatic" } } */
 +
-+#else
++int test1 (int);
++int test2 (int);
 +
-+#define R0    0
-+#define R1    4
-+#define R2    8
-+#define R3    12
++int
++test2 (int x)
++{
++  if (x < 0)
++    return 0;
++  else
++    return test1 (x - 1);
++}
 +
-+#define STACK   16
++int
++test1 (int x)
++{
++  static int thestatic;
++  int y;
 +
-+#endif
++  thestatic = x;
 +
-+extern void abort (void);
++  y = thestatic;
 +
-+__attribute__((naked))  void dumpregs () __asm("myfunc");
-+__attribute__((naked))  void dumpregs ()
-+{
-+  asm(
-+      "mov    ip, sp\n\t"
-+      "stmfd  sp!, {r0-r3}\n\t"
-+#ifdef VFP
-+      "fstmdbs        sp!, {s0-s15}\n\t"
-+      "fstmdbd        sp!, {d0-d7}\n\t"
-+#endif
-+      "mov    r0, sp\n\t"
-+      "stmfd  sp!, {ip, r14}\n\t"
-+      "bl     testfunc\n\t"
-+      "ldmfd  sp!, {r0, r14}\n\t"
-+      "mov    sp, r0\n\t"
-+      "bx     lr");
++  return y + x + test1 (x - 1) + test2 (x - 1);
 +}
++  
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/remove-local-statics-9.c
+@@ -0,0 +1,34 @@
++/* Verify that we eliminate a static local variable when it is live
++   on return from a function call that does not recursively call the
++   function in which the variable is defined.  */
 +
++/* XFAIL'd because we don't utilize the callgraph properly.  */
 +
-+#define LAST_ARG(type,val,offset) { type __x = val; if (memcmp(&__x, stack+offset, sizeof(type)) != 0) abort(); }
-+#define ARG(type,val,offset) LAST_ARG(type, val, offset)
-+#define ANON(type,val,offset) LAST_ARG(type, val, offset)
-+#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
-+#define DOTS
++/* { dg-do compile } */
++/* { dg-options "-O2 -fremove-local-statics" } */
++/* { dg-final { scan-assembler-not "thestatic" { xfail *-*-* } } } */
 +
-+void testfunc(char* stack)
++static int
++test2 (int x)
 +{
-+#include TESTFILE
-+  return;
++  if (x < 0)
++    return 0;
++  else
++    return x + test2 (x - 1);
 +}
 +
-+#undef LAST_ARG
-+#undef ARG
-+#undef DOTS
-+#undef ANON
-+#undef LAST_ANON
-+#define LAST_ARG(type,val,offset) type
-+#define ARG(type,val,offset) LAST_ARG(type, val, offset),
-+#define DOTS ...
-+#define ANON(type,val, offset)
-+#define LAST_ANON(type,val, offset)
-+
-+#ifndef MYFUNCTYPE
-+#define MYFUNCTYPE void
-+#endif
++int
++test1 (int x)
++{
++  static int thestatic;
++  int y;
 +
-+MYFUNCTYPE myfunc(
-+#include TESTFILE
-+);
++  thestatic = x;
 +
-+#undef LAST_ARG
-+#undef ARG
-+#undef DOTS
-+#undef ANON
-+#undef LAST_ANON
-+#define LAST_ARG(type,val,offset) val
-+#define ARG(type,val,offset) LAST_ARG(type, val, offset),
-+#define DOTS
-+#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
-+#define ANON(type,val,offset) LAST_ARG(type, val, offset),
++  y = test2 (x - 1);
 +
++  y += thestatic;
 +
-+int main()
-+{
-+  myfunc(
-+#include TESTFILE
-+);
-+  return 0;
++  return y + x;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c       2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,38 @@
-+/* Test AAPCS layout (VFP variant) */
-+
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
-+
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp10.c"
++  
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-assign.c
+@@ -0,0 +1,29 @@
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+__complex__ x = 1.0+2.0i;
++/* Test basic assignments and conversions for __fp16.  */
 +
-+struct y
-+{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++__fp16 h0 = -1.0;
++__fp16 h1 = 0.0;
++__fp16 h2 = 1234.0;
++__fp16 h3 = 42.0;
++float f1 = 2.0;
++float f2 = -999.9;
 +
-+struct z
++void f (__fp16 *p)
 +{
-+  double x[4];
-+};
++  __fp16 t;
 +
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
++  h0 = 1.0;
++  h1 = h2;
++  h2 = f1;
++  f2 = h2;
 +
-+#include "abitest.h"
-+#else
-+  /* A variadic function passes using the base ABI */
-+  ARG(double, 11.0, R0)
-+  DOTS
-+  ANON(struct z, a, R2)
-+  ANON(struct z, b, STACK+24)
-+  LAST_ANON(double, 0.5, STACK+56)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c       2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,39 @@
-+/* Test AAPCS layout (VFP variant) */
++  t = *p;
++  *p = h3;
++  h3 = t;
++}
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++/* Make sure we are not falling through to undefined libcalls.  */
++/* { dg-final { scan-assembler-not "__truncsfhf" } } */
++/* { dg-final { scan-assembler-not "__extendhfsf" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-compile-convert.c
+@@ -0,0 +1,41 @@
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp11.c"
++/* Test basic assignments and conversions for __fp16.  */
 +
-+__complex__ x = 1.0+2.0i;
++__fp16 h1 = 0.0;
++__fp16 h2 = 1234.0;
++char c1 = 1;
++char c2 = 2;
++short s1 = 10;
++short s2 = 20;
++int i1 = -100;
++int i2 = -200;
++long long l1 = 1000.0;
++long long l2 = 2000.0;
++double d1 = -10000.0;
++double d2 = -20000.0;
 +
-+struct y
++void f (void)
 +{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++  c1 = h1;
++  h2 = c2;
 +
-+struct z
-+{
-+  double x[4];
-+};
++  h1 = s1;
++  s2 = h2;
 +
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
++  i1 = h1;
++  h2 = i2;
 +
-+#define MYFUNCTYPE struct y
++  h1 = l1;
++  l2 = h2;
++  
++  d1 = h1;
++  h2 = d2;
++}
 +
-+#include "abitest.h"
-+#else
-+  ARG(int, 7, R1)
-+  ARG(struct y, v, R2)
-+  ARG(struct z, a, D0)
-+  ARG(struct z, b, D4)
-+  LAST_ARG(double, 0.5, STACK+8)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c       2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,38 @@
-+/* Test AAPCS layout (VFP variant) */
++/* Make sure we are not falling through to undefined libcalls.  */
++/* { dg-final { scan-assembler-not "__float.ihf" } } */
++/* { dg-final { scan-assembler-not "__fixhf.i" } } */
++/* { dg-final { scan-assembler-not "__trunc.fhf" } } */
++/* { dg-final { scan-assembler-not "__extendhf.f" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c
+@@ -0,0 +1,17 @@
++/* Test floating-point conversions.  Standard types and __fp16.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++#include "fp-int-convert.h"
++#define FP16_MANT_DIG 11
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp12.c"
++int
++main (void)
++{
++  TEST_I_F(signed char, unsigned char, float, FP16_MANT_DIG);
++  TEST_I_F(signed short, unsigned short, float, FP16_MANT_DIG);
++  TEST_I_F(signed int, unsigned int, float, FP16_MANT_DIG);
++  TEST_I_F(signed long, unsigned long, float, FP16_MANT_DIG);
++  TEST_I_F(signed long long, unsigned long long, float, FP16_MANT_DIG);
++  exit (0);
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-ieee.c
+@@ -0,0 +1,17 @@
++/* Test floating-point conversions.  Standard types and __fp16.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+__complex__ x = 1.0+2.0i;
++#include "fp-int-convert.h"
++#define FP16_MANT_DIG 11
 +
-+struct y
++int
++main (void)
 +{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
-+
-+struct z
-+{
-+  double x[4];
-+};
-+
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
-+
-+#include "abitest.h"
-+#else
-+  ARG(int, 7, R0)
-+  ARG(struct y, v, R1)
-+  ARG(struct z, a, D0)
-+  ARG(double, 1.0, D4)
-+  ARG(struct z, b, STACK+8)
-+  LAST_ARG(double, 0.5, STACK+40)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c       2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,39 @@
-+/* Test AAPCS layout (VFP variant) */
-+
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
-+
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp13.c"
++  TEST_I_F(signed char, unsigned char, float, FP16_MANT_DIG);
++  TEST_I_F(signed short, unsigned short, float, FP16_MANT_DIG);
++  TEST_I_F(signed int, unsigned int, float, FP16_MANT_DIG);
++  TEST_I_F(signed long, unsigned long, float, FP16_MANT_DIG);
++  TEST_I_F(signed long long, unsigned long long, float, FP16_MANT_DIG);
++  exit (0);
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-1.c
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+__complex__ x = 1.0+2.0i;
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-2.c
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=ieee -ffast-math" } */
 +
-+struct y
-+{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+struct z
-+{
-+  double x[4];
-+};
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c
+@@ -0,0 +1,5 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do run { target arm*-*-* } } */
++/* { dg-options "-mfp16-format=alternative -ffast-math" } */
 +
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
++#include "arm-fp16-ops.h"
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
+@@ -0,0 +1,15 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_fp16_ok } */
++/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-add-options arm_neon_fp16 } */
 +
-+#include "abitest.h"
-+#else
-+  ARG(int, 7, R0)
-+  ARG(int, 9, R1)
-+  ARG(struct z, a, D0)
-+  ARG(double, 1.0, D4)
-+  ARG(struct z, b, STACK)
-+  ARG(int, 4, R2)
-+  LAST_ARG(double, 0.5, STACK+32)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c       2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,24 @@
-+/* Test AAPCS layout (VFP variant) */
++#include "arm-fp16-ops.h"
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++/* We've specified options for hardware float, including fp16 support, so
++   we should not see any calls to libfuncs here.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
+@@ -0,0 +1,15 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_fp16_ok } */
++/* { dg-options "-mfp16-format=ieee -ffast-math" } */
++/* { dg-add-options arm_neon_fp16 } */
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp14.c"
++#include "arm-fp16-ops.h"
 +
-+#include "abitest.h"
-+#else
-+  ARG(double, 1.0, D0)
-+  ARG(double, 2.0, D1)
-+  ARG(double, 3.0, D2)
-+  ARG(double, 4.0, D3)
-+  ARG(double, 5.0, D4)
-+  ARG(double, 6.0, D5)
-+  ARG(double, 7.0, D6)
-+  ARG(double, 8.0, D7)
-+  ARG(double, 9.0, STACK)
-+  LAST_ARG(double, 10.0, STACK+8)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,17 @@
-+/* Test AAPCS layout (VFP variant) */
++/* We've specified options for hardware float, including fp16 support, so
++   we should not see any calls to libfuncs here.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
+@@ -0,0 +1,13 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-add-options arm_neon } */
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++#include "arm-fp16-ops.h"
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp1.c"
-+#include "abitest.h"
++/* We've specified options for hardware float, so we should not see any 
++   calls to libfuncs here except for those to the conversion functions.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
+@@ -0,0 +1,13 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++/* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-mfp16-format=ieee -ffast-math" } */
++/* { dg-add-options arm_neon } */
 +
-+#else
-+  ARG(int, 4, R0)
-+  ARG(double, 4.0, D0)
-+  LAST_ARG(int, 3, R1)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,19 @@
-+/* Test AAPCS layout (VFP variant) */
++#include "arm-fp16-ops.h"
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++/* We've specified options for hardware float, so we should not see any 
++   calls to libfuncs here except for those to the conversion functions.  */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
++/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h
+@@ -0,0 +1,135 @@
++/* Test various operators on __fp16 and mixed __fp16/float operands.  */
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp2.c"
-+#include "abitest.h"
++#include <assert.h>
 +
-+#else
-+  ARG(float, 1.0f, S0)
-+  ARG(double, 4.0, D1)
-+  ARG(float, 2.0f, S1)
-+  ARG(double, 5.0, D2)
-+  LAST_ARG(int, 3, R0)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,21 @@
-+/* Test AAPCS layout (VFP variant) */
++#define CHECK(e,r) assert ((e) == r)
++#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r))
++#define TEST(e) assert (e)
++#define TESTNOT(e) assert (!(e))
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++volatile __fp16 h0 = 0.0;
++volatile __fp16 h1 = 1.0;
++volatile __fp16 h42 = 42.0;
++volatile __fp16 hm2 = -2.0;
++volatile __fp16 temp;
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp3.c"
++volatile float f0 = 0.0;
++volatile float f1 = 1.0;
++volatile float f42 = 42.0;
++volatile float fm2 = -2.0;
 +
-+__complex__ x = 1.0+2.0i;
++int main (void)
++{
++  TEST (h1);
++  TESTNOT (h0);
++  TEST (!h0);
++  TESTNOT (!h1);
 +
-+#include "abitest.h"
-+#else
-+  ARG(float, 1.0f, S0)
-+  ARG(__complex__ double, x, D1)
-+  ARG(float, 2.0f, S1)
-+  ARG(double, 5.0, D3)
-+  LAST_ARG(int, 3, R0)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,20 @@
-+/* Test AAPCS layout (VFP variant) */
++  CHECK2 (-h1, -1.0);
++  CHECK2 (+h1, 1.0);
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++  CHECK (h1++, 1.0);
++  CHECK (h1, 2.0);
++  CHECK (++h1, 3.0);
++  CHECK (h1, 3.0);
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp4.c"
++  CHECK (--h1, 2.0);
++  CHECK (h1, 2.0);
++  CHECK (h1--, 2.0);
++  CHECK (h1, 1.0);
 +
-+__complex__ float x = 1.0f + 2.0fi;
-+#include "abitest.h"
-+#else
-+  ARG(float, 1.0f, S0)
-+  ARG(__complex__ float, x, S1)
-+  ARG(float, 2.0f, S3)
-+  ARG(double, 5.0, D2)
-+  LAST_ARG(int, 3, R0)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,30 @@
-+/* Test AAPCS layout (VFP variant) */
++  CHECK2 (h42 * hm2, -84.0);
++  CHECK2 (h42 * (__fp16) -2.0, -84.0);
++  CHECK2 (h42 * fm2, -84.0);
++  CHECK2 (f42 * hm2, -84.0);
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++  CHECK2 (h42 / hm2, -21.0);
++  CHECK2 (h42 / (__fp16) -2.0, -21.0);
++  CHECK2 (h42 / fm2, -21.0);
++  CHECK2 (f42 / hm2, -21.0);
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp5.c"
++  CHECK2 (hm2 + h42, 40.0);
++  CHECK2 ((__fp16)-2.0 + h42, 40.0);
++  CHECK2 (hm2 + f42, 40.0);
++  CHECK2 (fm2 + h42, 40.0);
 +
-+__complex__ float x = 1.0+2.0i;
++  CHECK2 (hm2 - h42, -44.0);
++  CHECK2 ((__fp16)-2.0 - h42, -44.0);
++  CHECK2 (hm2 - f42, -44.0);
++  CHECK2 (fm2 - h42, -44.0);
 +
-+struct y
-+{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++  TEST (hm2 < h42);
++  TEST (hm2 < (__fp16)42.0);
++  TEST (hm2 < f42);
++  TEST (fm2 < h42);
 +
-+#include "abitest.h"
-+#else
-+  ARG(float, 1.0f, S0)
-+  ARG(__complex__ float, x, S1)
-+  ARG(float, 2.0f, S3)
-+  ARG(double, 5.0, D2)
-+  ARG(struct y, v, R0)
-+  LAST_ARG(int, 3, STACK)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,30 @@
-+/* Test AAPCS layout (VFP variant) */
++  TEST (h42 > hm2);
++  TEST ((__fp16)42.0 > hm2);
++  TEST (h42 > fm2);
++  TEST (f42 > hm2);
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++  TEST (hm2 <= h42);
++  TEST (hm2 <= (__fp16)42.0);
++  TEST (hm2 <= f42);
++  TEST (fm2 <= h42);
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp6.c"
++  TEST (h42 >= hm2);
++  TEST (h42 >= (__fp16)-2.0);
++  TEST (h42 >= fm2);
++  TEST (f42 >= hm2);
 +
-+__complex__ float x = 1.0+2.0i;
++  TESTNOT (h1 == hm2);
++  TEST (h1 == h1);
++  TEST (h1 == (__fp16)1.0);
++  TEST (h1 == f1);
++  TEST (f1 == h1);
 +
-+struct y
-+{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++  TEST (h1 != hm2);
++  TESTNOT (h1 != h1);
++  TESTNOT (h1 != (__fp16)1.0);
++  TESTNOT (h1 != f1);
++  TESTNOT (f1 != h1);
 +
-+#include "abitest.h"
-+#else
-+  ARG(struct y, v, R0)
-+  ARG(float, 1.0f, S0)
-+  ARG(__complex__ float, x, S1)
-+  ARG(float, 2.0f, S3)
-+  ARG(double, 5.0, D2)
-+  LAST_ARG(int, 3, STACK)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,37 @@
-+/* Test AAPCS layout (VFP variant) */
++  CHECK2 ((h1 ? hm2 : h42), -2.0);
++  CHECK2 ((h0 ? hm2 : h42), 42.0);
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++  CHECK (h0 = h42, 42.0);
++  CHECK (h0, 42.0);
++  CHECK (h0 = (__fp16)-2.0, -2.0);
++  CHECK (h0, -2.0);
++  CHECK (h0 = f0, 0.0);
++  CHECK (h0, 0.0);
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp7.c"
++  CHECK (h0 += h1, 1.0);
++  CHECK (h0, 1.0);
++  CHECK (h0 += (__fp16)1.0, 2.0);
++  CHECK (h0, 2.0);
++  CHECK (h0 += fm2, 0.0);
++  CHECK (h0, 0.0);
 +
-+__complex__ x = 1.0+2.0i;
++  CHECK (h0 -= h1, -1.0);
++  CHECK (h0, -1.0);
++  CHECK (h0 -= (__fp16)1.0, -2.0);
++  CHECK (h0, -2.0);
++  CHECK (h0 -= fm2, 0.0);
++  CHECK (h0, 0.0);
 +
-+struct y
-+{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++  h0 = hm2;
++  CHECK (h0 *= hm2, 4.0);
++  CHECK (h0, 4.0);
++  CHECK (h0 *= (__fp16)-2.0, -8.0);
++  CHECK (h0, -8.0);
++  CHECK (h0 *= fm2, 16.0);
++  CHECK (h0, 16.0);
 +
-+struct z
-+{
-+  double x[4];
-+};
++  CHECK (h0 /= hm2, -8.0);
++  CHECK (h0, -8.0);
++  CHECK (h0 /= (__fp16)-2.0, 4.0);
++  CHECK (h0, 4.0);
++  CHECK (h0 /= fm2, -2.0);
++  CHECK (h0, -2.0);
 +
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
++  CHECK ((h0, h1), 1.0);
 +
-+#include "abitest.h"
-+#else
-+  ARG(struct z, a, D0)
-+  ARG(struct z, b, D4)
-+  ARG(double, 0.5, STACK)
-+  ARG(int, 7, R0)
-+  LAST_ARG(struct y, v, STACK+8)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,37 @@
-+/* Test AAPCS layout (VFP variant) */
++  return 0;
++}
+--- a/gcc/testsuite/gcc.dg/torture/type-generic-1.c
++++ b/gcc/testsuite/gcc.dg/torture/type-generic-1.c
+@@ -3,6 +3,7 @@
+ /* { dg-do run } */
+ /* { dg-options "-mieee" { target alpha*-*-* sh*-*-* } } */
++/* { dg-options "-Wl,--defsym=__cs3_mips_float_type=2 -lcs3-mips-cp1 -lcs3-mips-fpemu" { target mips*-*sde*-* } } */
+ /* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
+ #include "../tg-tests.h"
+--- a/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
++/* { dg-options "-O2 -fdump-tree-vrp1-details -fno-remove-local-statics" } */
+ static int blocksize = 4096;
+--- a/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
+ /* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 --param max-unrolled-insns=1 -fdump-tree-aprefetch-details -fdump-tree-final_cleanup" } */
+ #define K 1000000
+--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-dse1" } */
++/* { dg-options "-O2 -fdump-tree-dse1 -fno-remove-local-statics" } */
+ int foo11 (int c)
+ {
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c
+@@ -0,0 +1,34 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target section_anchors } */
++/* { dg-require-effective-target vect_int } */
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++#include <stdarg.h>
++#include "tree-vect.h"
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp8.c"
++#define N 32
 +
-+__complex__ x = 1.0+2.0i;
++static int a[N][N];
++static int b[N][N];
++static int c[N][N];
 +
-+struct y
-+{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++void clobber(int *);
 +
-+struct z
++int *foo(void)
 +{
-+  double x[4];
-+};
-+
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
++  int i;
++  int j;
 +
-+#include "abitest.h"
-+#else
-+  ARG(int, 7, R0)
-+  ARG(struct y, v, R1)
-+  ARG(struct z, a, D0)
-+  ARG(struct z, b, D4)
-+  LAST_ARG(double, 0.5, STACK+8)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
---- a/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c        2010-01-25 09:50:29.245686094 +0100
-@@ -0,0 +1,38 @@
-+/* Test AAPCS layout (VFP variant) */
++  clobber (&a[0][0]);
++  clobber (&b[0][0]);
++  clobber (&c[0][0]);
 +
-+/* { dg-do run { target arm*-*-eabi* } } */
-+/* { dg-require-effective-target arm_hard_vfp_ok } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
++  for (i = 0; i < N; i++) {
++      for (j = 0; j < N; j++) {
++        c[j][i] += a[j][i] + c[j][i];
++      }
++  }
++  return &c[0][0];
++}
 +
-+#ifndef IN_FRAMEWORK
-+#define VFP
-+#define TESTFILE "vfp9.c"
++/* { dg-final { scan-ipa-dump-times "Increasing alignment of decl" 3 "increase_alignment" } } */
++/* { dg-final { cleanup-ipa-dump "increase_alignment" } } */
+--- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
++++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
+@@ -88,5 +88,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
++++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
+@@ -84,5 +84,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
++++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
+@@ -79,5 +79,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
++++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
+@@ -88,5 +88,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
++++ b/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
+@@ -114,7 +114,7 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vector_alignment_reachable} } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_element_align || {! vector_alignment_reachable} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target {! vector_alignment_reachable} } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target {! vector_alignment_reachable} } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { ! vector_alignment_reachable } && { ! vect_element_align } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
++++ b/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
+@@ -115,6 +115,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* Alignment forced using versioning until the pass that increases alignment
+   is extended to handle structs.  */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target {vect_int && vector_alignment_reachable } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target { {vect_int && vector_alignment_reachable } && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target {vect_int && {! vector_alignment_reachable} } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/slp-25.c
++++ b/gcc/testsuite/gcc.dg/vect/slp-25.c
+@@ -56,5 +56,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-109.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-109.c
+@@ -73,6 +73,6 @@ int main (void)
+ }
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" } } */
++/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-26.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-26.c
+@@ -37,5 +37,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-27.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-27.c
+@@ -45,6 +45,6 @@ int main (void)
+ /* The initialization induction loop (with aligned access) is also vectorized.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-28.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-28.c
+@@ -40,6 +40,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-29.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-29.c
+@@ -50,7 +50,7 @@ int main (void)
+ /* The initialization induction loop (with aligned access) is also vectorized.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-33.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-33.c
+@@ -39,6 +39,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-42.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-42.c
+@@ -57,6 +57,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align || { ! vector_alignment_reachable } } } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || { ! vector_alignment_reachable } } } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail {vect_no_align || { ! vector_alignment_reachable } } } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { { vect_no_align || vect_element_align } || { ! vector_alignment_reachable } } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || { ! vector_alignment_reachable } } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-44.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-44.c
+@@ -65,8 +65,8 @@ int main (void)
+    two loads to be aligned).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_no_align} } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-48.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-48.c
+@@ -54,7 +54,7 @@ int main (void)
+    (The store is aligned).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-50.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-50.c
+@@ -61,8 +61,8 @@ int main (void)
+    two loads to be aligned).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_no_align} } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-52.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-52.c
+@@ -55,7 +55,7 @@ int main (void)
+    (The store is aligned).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-54.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-54.c
+@@ -59,5 +59,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-56.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-56.c
+@@ -67,6 +67,6 @@ int main (void)
+ }
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-58.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-58.c
+@@ -58,5 +58,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-60.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-60.c
+@@ -68,6 +68,6 @@ int main (void)
+ }
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-70.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-70.c
+@@ -64,6 +64,6 @@ int main (void)
+           
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-72.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-72.c
+@@ -46,6 +46,6 @@ int main (void)
+ }
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-75.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-75.c
+@@ -45,5 +45,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-87.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-87.c
+@@ -51,6 +51,6 @@ int main (void)
+ /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-88.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-88.c
+@@ -51,6 +51,6 @@ int main (void)
+ /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {! vector_alignment_reachable} } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-89.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-89.c
+@@ -46,5 +46,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-91.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-91.c
+@@ -59,6 +59,6 @@ main3 ()
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" { xfail vect_no_int_add } } } */
+ /* { dg-final { scan-tree-dump-times "accesses have the same alignment." 3 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target vector_alignment_reachable } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target { vector_alignment_reachable && { ! vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" {target {! vector_alignment_reachable} } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-92.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-92.c
+@@ -92,5 +92,5 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-93.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-93.c
+@@ -72,7 +72,7 @@ int main (void)
+ /* main && main1 together: */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 2 "vect" { target powerpc*-*-* i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { vect_no_align && {! vector_alignment_reachable} } } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { vect_no_align || {! vector_alignment_reachable} } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" { xfail { { vect_no_align || vect_element_align } || {! vector_alignment_reachable} } } } } */
+ /* in main1: */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target !powerpc*-*-* !i?86-*-* !x86_64-*-* } } } */
+@@ -80,6 +80,6 @@ int main (void)
+ /* in main: */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-95.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-95.c
+@@ -62,8 +62,8 @@ int main (void)
+    stores and generate misaligned accesses for the loads. For targets that 
+    don't support unaligned loads we version for all four accesses.  */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /*  { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target vect_no_align } } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target vect_no_align } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-align-2.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-align-2.c
+@@ -43,6 +43,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
+@@ -78,11 +78,11 @@ int main (void)
+   return 0;
+ }
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { ! vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
+@@ -54,6 +54,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
+@@ -85,11 +85,11 @@ int main (void)
+   return 0;
+ }
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { ! vect_element_align } } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 8 "vect" { xfail *-*-* } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
+@@ -61,6 +61,6 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { sparc*-*-* && ilp32 } }} } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target vect_no_align } } } */
+-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail vect_no_align } } } */
++/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
+@@ -0,0 +1,37 @@
++/* { dg-require-effective-target vect_shift_char } */
++/* { dg-require-effective-target vect_int } */
 +
-+__complex__ x = 1.0+2.0i;
++#include "tree-vect.h"
 +
-+struct y
++#define N 32
++
++unsigned char dst[N] __attribute__((aligned(N)));
++unsigned char src[N] __attribute__((aligned(N)));
++
++__attribute__ ((noinline))
++void array_shift(void)
 +{
-+  int p;
-+  int q;
-+  int r;
-+  int s;
-+} v = { 1, 2, 3, 4 };
++  int i;
++  for (i = 0; i < N; i++)
++    dst[i] = src[i] >> 3;
++}
 +
-+struct z
++int main()
 +{
-+  double x[4];
-+};
++  volatile int i;
++  check_vect ();
 +
-+struct z a = { 5.0, 6.0, 7.0, 8.0 };
-+struct z b = { 9.0, 10.0, 11.0, 12.0 };
++  for (i = 0; i < N; i++)
++    src[i] = i << 3;
 +
-+#include "abitest.h"
-+#else
-+  /* A variadic function passes using the base ABI */
-+  ARG(int, 7, R0)
-+  DOTS
-+  ANON(struct z, a, R2)
-+  ANON(struct z, b, STACK+24)
-+  LAST_ANON(double, 0.5, STACK+56)
-+#endif
-diff -Nur a/gcc/testsuite/gcc.target/arm/ctz.c b/gcc/testsuite/gcc.target/arm/ctz.c
---- a/gcc/testsuite/gcc.target/arm/ctz.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/ctz.c       2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,12 @@
-+/* { dg-do compile } */
-+/* { dg-require-effective-target arm32 } */
-+/* { dg-options "-O2 -march=armv6t2" } */
++  array_shift ();
 +
-+unsigned int functest(unsigned int x)
-+{
-+      return __builtin_ctz(x);
-+}
++  for (i = 0; i < N; i++)
++    if (dst[i] != i)
++      abort ();
 +
-+/* { dg-final { scan-assembler "rbit" } } */
-+/* { dg-final { scan-assembler "clz" } } */
-+/* { dg-final { scan-assembler-not "rsb" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/eabi1.c b/gcc/testsuite/gcc.target/arm/eabi1.c
---- a/gcc/testsuite/gcc.target/arm/eabi1.c     2009-01-14 02:44:39.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/eabi1.c     2010-01-25 09:50:29.265686890 +0100
-@@ -30,43 +30,48 @@
- #include <stdlib.h>
- #include <math.h>
--#define decl_float(code, type)                                        \
--  extern type __aeabi_ ## code ## add (type, type);           \
--  extern type __aeabi_ ## code ## div (type, type);           \
--  extern type __aeabi_ ## code ## mul (type, type);           \
--  extern type __aeabi_ ## code ## neg (type);                 \
--  extern type __aeabi_ ## code ## rsub (type, type);          \
--  extern type __aeabi_ ## code ## sub (type, type);           \
--  extern int __aeabi_ ## code ## cmpeq (type, type);          \
--  extern int __aeabi_ ## code ## cmplt (type, type);          \
--  extern int __aeabi_ ## code ## cmple (type, type);          \
--  extern int __aeabi_ ## code ## cmpge (type, type);          \
--  extern int __aeabi_ ## code ## cmpgt (type, type);          \
--  extern int __aeabi_ ## code ## cmpun (type, type);          \
--  extern int __aeabi_ ## code ## 2iz (type);                  \
--  extern unsigned int __aeabi_ ## code ## 2uiz (type);                \
--  extern long long __aeabi_ ## code ## 2lz (type);            \
--  extern unsigned long long __aeabi_ ## code ## 2ulz (type);  \
--  extern type __aeabi_i2 ## code (int);                               \
--  extern type __aeabi_ui2 ## code (int);                      \
--  extern type __aeabi_l2 ## code (long long);                 \
--  extern type __aeabi_ul2 ## code (unsigned long long);               \
--                                                              \
--  type code ## zero = 0.0;                                    \
--  type code ## one = 1.0;                                     \
--  type code ## two = 2.0;                                     \
--  type code ## four = 4.0;                                    \
--  type code ## minus_one = -1.0;                              \
--  type code ## minus_two = -2.0;                              \
--  type code ## minus_four = -4.0;                             \
--  type code ## epsilon = 1E-32;                                       \
--  type code ## NaN = 0.0 / 0.0;                               
-+/* All these functions are defined to use the base ABI, so use the
-+   attribute to ensure the tests use the base ABI to call them even
-+   when the VFP ABI is otherwise in effect.  */
-+#define PCS __attribute__((pcs("aapcs")))
++  return 0;
++}
 +
-+#define decl_float(code, type)                                                \
-+  extern type __aeabi_ ## code ## add (type, type) PCS;                       \
-+  extern type __aeabi_ ## code ## div (type, type) PCS;                       \
-+  extern type __aeabi_ ## code ## mul (type, type) PCS;                       \
-+  extern type __aeabi_ ## code ## neg (type) PCS;                     \
-+  extern type __aeabi_ ## code ## rsub (type, type) PCS;              \
-+  extern type __aeabi_ ## code ## sub (type, type) PCS;                       \
-+  extern int __aeabi_ ## code ## cmpeq (type, type) PCS;              \
-+  extern int __aeabi_ ## code ## cmplt (type, type) PCS;              \
-+  extern int __aeabi_ ## code ## cmple (type, type) PCS;              \
-+  extern int __aeabi_ ## code ## cmpge (type, type) PCS;              \
-+  extern int __aeabi_ ## code ## cmpgt (type, type) PCS;              \
-+  extern int __aeabi_ ## code ## cmpun (type, type) PCS;              \
-+  extern int __aeabi_ ## code ## 2iz (type) PCS;                      \
-+  extern unsigned int __aeabi_ ## code ## 2uiz (type) PCS;            \
-+  extern long long __aeabi_ ## code ## 2lz (type) PCS;                        \
-+  extern unsigned long long __aeabi_ ## code ## 2ulz (type) PCS;      \
-+  extern type __aeabi_i2 ## code (int) PCS;                           \
-+  extern type __aeabi_ui2 ## code (int) PCS;                          \
-+  extern type __aeabi_l2 ## code (long long) PCS;                     \
-+  extern type __aeabi_ul2 ## code (unsigned long long) PCS;           \
-+                                                                      \
-+  type code ## zero = 0.0;                                            \
-+  type code ## one = 1.0;                                             \
-+  type code ## two = 2.0;                                             \
-+  type code ## four = 4.0;                                            \
-+  type code ## minus_one = -1.0;                                      \
-+  type code ## minus_two = -2.0;                                      \
-+  type code ## minus_four = -4.0;                                     \
-+  type code ## epsilon = 1E-32;                                               \
-+  type code ## NaN = 0.0 / 0.0;
- decl_float (d, double)
- decl_float (f, float)
--extern float __aeabi_d2f (double);
--extern double __aeabi_f2d (float);
-+extern float __aeabi_d2f (double) PCS;
-+extern double __aeabi_f2d (float) PCS;
- extern long long __aeabi_lmul (long long, long long);
- extern long long __aeabi_llsl (long long, int);
- extern long long __aeabi_llsr (long long, int);
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c b/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c   2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,92 @@
-+/* Test type-generic builtins with __fp16 arguments.
-+   Except as otherwise noted, they should behave exactly
-+   the same as those with float arguments.  */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
+@@ -0,0 +1,37 @@
++/* { dg-require-effective-target vect_shift } */
++/* { dg-require-effective-target vect_int } */
 +
-+/* { dg-do run } */
-+/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
++#include "tree-vect.h"
 +
-+#include <stdlib.h>
-+#include <math.h>
++#define N 32
 +
-+volatile __fp16 h1, h2;
-+volatile float f1, f2;
++unsigned short dst[N] __attribute__((aligned(N)));
++unsigned short src[N] __attribute__((aligned(N)));
 +
-+void
-+set1 (double x)
++__attribute__ ((noinline))
++void array_shift(void)
 +{
-+  h1 = x;
-+  f1 = h1;
++  int i;
++  for (i = 0; i < N; i++)
++    dst[i] = src[i] >> 3;
 +}
 +
-+void
-+set2 (double x, double y)
++int main()
 +{
-+  h1 = x;
-+  f1 = h1;
-+  h2 = y;
-+  f2 = h2;
-+}
-+
-+#define test1(p,x)                            \
-+  set1 (x);                                   \
-+  hp = (p (h1) ? 1 : 0);                      \
-+  fp = (p (f1) ? 1 : 0);                      \
-+  if (hp ^ fp) abort ()
-+
-+#define test2(p,x,y)                          \
-+  set2 (x,y);                                 \
-+  hp = (p (h1, h2) ? 1 : 0);                  \
-+  fp = (p (f1, f2) ? 1 : 0);                  \
-+  if (hp ^ fp) abort ()
++  volatile int i;
++  check_vect ();
 +
-+int
-+main (void)
-+{
-+  int hp, fp;
++  for (i = 0; i < N; i++)
++    src[i] = i << 3;
 +
-+  test1 (__builtin_isfinite, 17.0);
-+  test1 (__builtin_isfinite, INFINITY);
-+  test1 (__builtin_isinf, -0.5);
-+  test1 (__builtin_isinf, INFINITY);
-+  test1 (__builtin_isnan, 493.0);
-+  test1 (__builtin_isnan, NAN);
-+  test1 (__builtin_isnormal, 3.14159);
++  array_shift ();
 +
-+  test2 (__builtin_isgreater, 5.0, 3.0);
-+  test2 (__builtin_isgreater, 3.0, 5.0);
-+  test2 (__builtin_isgreater, 73.5, 73.5);
-+  test2 (__builtin_isgreater, 1.0, NAN);
++  for (i = 0; i < N; i++)
++    if (dst[i] != i)
++      abort ();
 +
-+  test2 (__builtin_isgreaterequal, 5.0, 3.0);
-+  test2 (__builtin_isgreaterequal, 3.0, 5.0);
-+  test2 (__builtin_isgreaterequal, 73.5, 73.5);
-+  test2 (__builtin_isgreaterequal, 1.0, NAN);
++  return 0;
++}
 +
-+  test2 (__builtin_isless, 5.0, 3.0);
-+  test2 (__builtin_isless, 3.0, 5.0);
-+  test2 (__builtin_isless, 73.5, 73.5);
-+  test2 (__builtin_isless, 1.0, NAN);
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
++/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/gcc/testsuite/gcc.dg/vect/vect.exp
++++ b/gcc/testsuite/gcc.dg/vect/vect.exp
+@@ -97,7 +97,7 @@ if  [istarget "powerpc-*paired*"]  {
+ } elseif [istarget "ia64-*-*"] {
+     set dg-do-what-default run
+ } elseif [is-effective-target arm_neon_ok] {
+-    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
++    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
+     if [is-effective-target arm_neon_hw] {
+       set dg-do-what-default run
+     } else {
+@@ -183,6 +183,12 @@ lappend DEFAULT_VECTCFLAGS "-fsection-an
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/section-anchors-*.\[cS\]]]  \
+       "" $DEFAULT_VECTCFLAGS
++# alignment-sensitive -fsection-anchors tests
++set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
++lappend DEFAULT_VECTCFLAGS "-fsection-anchors" "-fdump-ipa-increase_alignment"
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/aligned-section-anchors-*.\[cS\]]]  \
++      "" $DEFAULT_VECTCFLAGS
 +
-+  test2 (__builtin_islessequal, 5.0, 3.0);
-+  test2 (__builtin_islessequal, 3.0, 5.0);
-+  test2 (__builtin_islessequal, 73.5, 73.5);
-+  test2 (__builtin_islessequal, 1.0, NAN);
+ # -fno-section-anchors tests
+ set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
+ lappend DEFAULT_VECTCFLAGS "-fno-section-anchors"
+--- a/gcc/testsuite/gcc.dg/vmx/vmx.exp
++++ b/gcc/testsuite/gcc.dg/vmx/vmx.exp
+@@ -31,7 +31,7 @@ if {![istarget powerpc*-*-*]
+ # nothing but extensions.
+ global DEFAULT_VMXCFLAGS
+ if ![info exists DEFAULT_VMXCFLAGS] then {
+-    set DEFAULT_VMXCFLAGS "-maltivec -mabi=altivec -std=gnu99"
++    set DEFAULT_VMXCFLAGS "-maltivec -std=gnu99"
+ }
+ # If the target system supports AltiVec instructions, the default action
+--- a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
++++ b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
+@@ -90,6 +90,13 @@ load_lib torture-options.exp
+ dg-init
+ torture-init
++if { [board_info target exists multilib_flags]
++     && [string match "* -march=*" " [board_info target multilib_flags] "] } {
++    # Multilib flags come after the -march flags we pass and override
++    # them, so skip these tests when such flags are passed.
++    return
++}
 +
-+  test2 (__builtin_islessgreater, 5.0, 3.0);
-+  test2 (__builtin_islessgreater, 3.0, 5.0);
-+  test2 (__builtin_islessgreater, 73.5, 73.5);
-+  test2 (__builtin_islessgreater, 1.0, NAN);
+ set-torture-options $PREFETCH_NONE
+ gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/i386-pf-none-*.c]] ""
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
+@@ -0,0 +1,35 @@
++# Copyright (C) 1997, 2004, 2006, 2007 Free Software Foundation, Inc.
 +
-+  test2 (__builtin_isunordered, 5.0, 3.0);
-+  test2 (__builtin_isunordered, 3.0, 5.0);
-+  test2 (__builtin_isunordered, 73.5, 73.5);
-+  test2 (__builtin_isunordered, 1.0, NAN);
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with GCC; see the file COPYING3.  If not see
++# <http://www.gnu.org/licenses/>.
 +
-+  /* Test that __builtin_isnormal recognizes a denormalized __fp16 value,
-+     even if it's representable as a normalized float.  */
-+  h1 = 5.96046E-8;
-+  if (__builtin_isnormal (h1))
-+    abort ();
++# GCC testsuite that uses the `dg.exp' driver.
 +
-+  return 0;
++# Exit immediately if this isn't an ARM target.
++if ![istarget arm*-*-*] then {
++  return
 +}
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c       2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,8 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative -pedantic -std=gnu99" } */
-+
-+#include <math.h>
 +
-+/* NaNs are not representable in the alternative format; we should get a
-+   diagnostic.  */
-+__fp16 xx = NAN; /* { dg-warning "overflow" } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c       2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,13 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative -pedantic -std=gnu99" } */
++# Load support procs.
++load_lib gcc-dg.exp
 +
-+#include <math.h>
++# Initialize `dg'.
++dg-init
 +
-+/* Infinities are not representable in the alternative format;
-+   we should get a diagnostic, and the value set to the largest
-+   representable value.  */
-+/* 0x7fff = 32767 */
-+__fp16 xx = INFINITY; /* { dg-warning "overflow" } */
++# Main loop.
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
++      "" ""
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t32767" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c       2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,8 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++# All done.
++dg-finish
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/abitest.h
+@@ -0,0 +1,118 @@
++#define IN_FRAMEWORK
 +
-+float xx __attribute__((mode(HF))) = 0.0;
++#ifdef VFP
++#define D0    0
++#define D1    8
++#define D2    16
++#define D3    24
++#define D4    32
++#define D5    40
++#define D6    48
++#define D7    56
 +
-+/* { dg-final { scan-assembler "\t.eabi_attribute 38, 2" } } */
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.space\t2" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,8 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++#define S0    64
++#define S1    68
++#define S2    72
++#define S3    76
++#define S4    80
++#define S5    84
++#define S6    88
++#define S7    92
++#define S8      86
++#define S9    100
++#define S10   104
++#define S11   108
++#define S12   112
++#define S13   116
++#define S14   120
++#define S15   124
 +
-+__fp16 xx = 0.0;
++#define R0    128
++#define R1    132
++#define R2    136
++#define R3    140
 +
-+/* { dg-final { scan-assembler "\t.eabi_attribute 38, 2" } } */
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.space\t2" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++#define STACK 144
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0x3c00 = 15360 */
-+__fp16 xx = 1.0;
++#else
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t15360" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++#define R0    0
++#define R1    4
++#define R2    8
++#define R3    12
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0xc000 = 49152 */
-+__fp16 xx = -2.0;
++#define STACK   16
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t49152" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++#endif
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0x7bff = 31743 */
-+__fp16 xx = 65504.0;
++extern void abort (void);
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t31743" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++__attribute__((naked))  void dumpregs () __asm("myfunc");
++__attribute__((naked))  void dumpregs ()
++{
++  asm(
++      "mov    ip, sp\n\t"
++      "stmfd  sp!, {r0-r3}\n\t"
++#ifdef VFP
++      "fstmdbs        sp!, {s0-s15}\n\t"
++      "fstmdbd        sp!, {d0-d7}\n\t"
++#endif
++      "mov    r0, sp\n\t"
++      "stmfd  sp!, {ip, r14}\n\t"
++      "bl     testfunc\n\t"
++      "ldmfd  sp!, {r0, r14}\n\t"
++      "mov    sp, r0\n\t"
++      "bx     lr");
++}
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0x3555 = 13653 */
-+__fp16 xx = (1.0/3.0);
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t13653" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++#define LAST_ARG(type,val,offset) { type __x = val; if (memcmp(&__x, stack+offset, sizeof(type)) != 0) abort(); }
++#define ARG(type,val,offset) LAST_ARG(type, val, offset)
++#define ANON(type,val,offset) LAST_ARG(type, val, offset)
++#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
++#define DOTS
 +
-+/* This number is the maximum value representable in the alternative
-+   encoding.  */
-+/* 0x7fff = 32767 */
-+__fp16 xx = 131008.0;
++void testfunc(char* stack)
++{
++#include TESTFILE
++  return;
++}
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t32767" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,11 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative -pedantic" } */
++#undef LAST_ARG
++#undef ARG
++#undef DOTS
++#undef ANON
++#undef LAST_ANON
++#define LAST_ARG(type,val,offset) type
++#define ARG(type,val,offset) LAST_ARG(type, val, offset),
++#define DOTS ...
++#define ANON(type,val, offset)
++#define LAST_ANON(type,val, offset)
 +
-+/* This number overflows the range of the alternative encoding.  Since this
-+   encoding doesn't have infinities, we should get a pedantic warning,
-+   and the value should be set to the largest representable value.  */
-+/* 0x7fff = 32767 */
-+__fp16 xx = 123456789.0;  /* { dg-warning "overflow" } */
++#ifndef MYFUNCTYPE
++#define MYFUNCTYPE void
++#endif
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t32767" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
++MYFUNCTYPE myfunc(
++#include TESTFILE
++);
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* This is the minimum normalized value.  */
-+/* 0x0400 = 1024 */
-+__fp16 xx = 6.10352E-5;
++#undef LAST_ARG
++#undef ARG
++#undef DOTS
++#undef ANON
++#undef LAST_ANON
++#define LAST_ARG(type,val,offset) val
++#define ARG(type,val,offset) LAST_ARG(type, val, offset),
++#define DOTS
++#define LAST_ANON(type,val,offset) LAST_ARG(type, val, offset)
++#define ANON(type,val,offset) LAST_ARG(type, val, offset),
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t1024" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c        2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=alternative" } */
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* This is the minimum denormalized value.  */
-+/* 0x0001 = 1 */
-+__fp16 xx = 5.96046E-8;
++int main()
++{
++  myfunc(
++#include TESTFILE
++);
++  return 0;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp1.c
+@@ -0,0 +1,17 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t1" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c b/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c     2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,29 @@
-+/* Test that expressions involving __fp16 values have the right types.  */
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+/* This produces a diagnostic if EXPR doesn't have type TYPE.  */
-+#define CHECK(expr,type)                      \
-+  do {                                                \
-+    type v;                                   \
-+    __typeof (expr) *p = &v;                  \
-+  } while (0);
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp1.c"
++#include "abitest.h"
 +
-+volatile __fp16 f1;
-+volatile __fp16 f2;
++#else
++  ARG(int, 4, R0)
++  ARG(double, 4.0, D0)
++  LAST_ARG(int, 3, R1)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp10.c
+@@ -0,0 +1,38 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+int
-+main (void)
-+{
-+  CHECK (f1, __fp16);
-+  CHECK (+f1, float);
-+  CHECK (-f1, float);
-+  CHECK (f1+f2, float);
-+  CHECK ((__fp16)(f1+f2), __fp16);
-+  CHECK ((__fp16)99.99, __fp16);
-+  CHECK ((f1+f2, f1), __fp16);
-+}
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp10.c"
 +
++__complex__ x = 1.0+2.0i;
 +
++struct y
++{
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c      2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
++struct z
++{
++  double x[4];
++};
 +
-+#include <math.h>
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+/* 0x7e00 = 32256 */
-+__fp16 xx = NAN;
++#include "abitest.h"
++#else
++  /* A variadic function passes using the base ABI */
++  ARG(double, 11.0, R0)
++  DOTS
++  ANON(struct z, a, R2)
++  ANON(struct z, b, STACK+24)
++  LAST_ANON(double, 0.5, STACK+56)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp11.c
+@@ -0,0 +1,39 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t32256" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c      2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+#include <math.h>
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp11.c"
 +
-+/* 0x7c00 = 31744 */
-+__fp16 xx = INFINITY;
++__complex__ x = 1.0+2.0i;
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t31744" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c      2010-01-25 09:50:29.265686890 +0100
-@@ -0,0 +1,8 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++struct y
++{
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+float xx __attribute__((mode(HF))) = 0.0;
++struct z
++{
++  double x[4];
++};
 +
-+/* { dg-final { scan-assembler "\t.eabi_attribute 38, 1" } } */
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.space\t2" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,8 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+__fp16 xx = 0.0;
++#define MYFUNCTYPE struct y
 +
-+/* { dg-final { scan-assembler "\t.eabi_attribute 38, 1" } } */
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.space\t2" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++#include "abitest.h"
++#else
++  ARG(int, 7, R1)
++  ARG(struct y, v, R2)
++  ARG(struct z, a, D0)
++  ARG(struct z, b, D4)
++  LAST_ARG(double, 0.5, STACK+8)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp12.c
+@@ -0,0 +1,38 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0x3c00 = 15360 */
-+__fp16 xx = 1.0;
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t15360" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp12.c"
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0xc000 = 49152 */
-+__fp16 xx = -2.0;
++__complex__ x = 1.0+2.0i;
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t49152" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++struct y
++{
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0x7bff = 31743 */
-+__fp16 xx = 65504.0;
++struct z
++{
++  double x[4];
++};
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t31743" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,9 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* 0x3555 = 13653 */
-+__fp16 xx = (1.0/3.0);
++#include "abitest.h"
++#else
++  ARG(int, 7, R0)
++  ARG(struct y, v, R1)
++  ARG(struct z, a, D0)
++  ARG(double, 1.0, D4)
++  ARG(struct z, b, STACK+8)
++  LAST_ARG(double, 0.5, STACK+40)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp13.c
+@@ -0,0 +1,39 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t13653" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* This number is too big and is represented as infinity.  */
-+/* 0x7c00 = 31744 */
-+__fp16 xx = 131008.0;
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp13.c"
 +
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t31744" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,11 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee -pedantic" } */
++__complex__ x = 1.0+2.0i;
 +
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* This number is too big and is represented as infinity.  */
-+/* We should *not* get an overflow warning here.  */
-+/* 0x7c00 = 31744 */
-+__fp16 xx = 123456789.0;
-+
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t31744" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* This is the minimum normalized value.  */
-+/* 0x0400 = 1024 */
-+__fp16 xx = 6.10352E-5;
-+
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t1024" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+
-+/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
-+/* This is the minimum denormalized value.  */
-+/* 0x0001 = 1 */
-+__fp16 xx = 5.96046E-8;
-+
-+/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
-+/* { dg-final { scan-assembler "\t.short\t1" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,6 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=none" } */
-+
-+/* __fp16 type name is not recognized unless you explicitly enable it
-+   by selecting -mfp16-format=ieee or -mfp16-format=alternative.  */
-+__fp16 xx = 0.0;  /* { dg-error "expected" } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c b/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,7 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=none" } */
-+
-+/* mode(HF) attributes are not recognized unless you explicitly enable
-+   half-precision floating point by selecting -mfp16-format=ieee or
-+   -mfp16-format=alternative.  */
-+float xx __attribute__((mode(HF))) = 0.0;  /* { dg-error "HF" } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c b/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
---- a/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c 2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,20 @@
-+/* { dg-do compile } */
-+/* { dg-require-effective-target arm_neon_fp16_ok } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+/* { dg-add-options arm_neon_fp16 } */
-+
-+/* Test generation of VFP __fp16 instructions.  */
-+
-+__fp16 h1 = 0.0;
-+__fp16 h2 = 1234.0;
-+float f1 = 2.0;
-+float f2 = -999.9;
-+
-+void f (void)
++struct y
 +{
-+  h1 = f1;
-+  f2 = h2;
-+}
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+/* { dg-final { scan-assembler "\tvcvtb.f32.f16" } } */
-+/* { dg-final { scan-assembler "\tvcvtb.f16.f32" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-param-1.c b/gcc/testsuite/gcc.target/arm/fp16-param-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-param-1.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-param-1.c      2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++struct z
++{
++  double x[4];
++};
 +
-+/* Functions cannot have parameters of type __fp16.  */
-+extern void f (__fp16);               /* { dg-error "parameters cannot have __fp16 type" } */
-+extern void (*pf) (__fp16);   /* { dg-error "parameters cannot have __fp16 type" } */
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+/* These should be OK.  */
-+extern void g (__fp16 *);
-+extern void (*pg) (__fp16 *);
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-return-1.c b/gcc/testsuite/gcc.target/arm/fp16-return-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-return-1.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-return-1.c     2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++#include "abitest.h"
++#else
++  ARG(int, 7, R0)
++  ARG(int, 9, R1)
++  ARG(struct z, a, D0)
++  ARG(double, 1.0, D4)
++  ARG(struct z, b, STACK)
++  ARG(int, 4, R2)
++  LAST_ARG(double, 0.5, STACK+32)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp14.c
+@@ -0,0 +1,24 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+/* Functions cannot return type __fp16.  */
-+extern __fp16 f (void);               /* { dg-error "cannot return __fp16" } */
-+extern __fp16 (*pf) (void);   /* { dg-error "cannot return __fp16" } */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+/* These should be OK.  */
-+extern __fp16 *g (void);
-+extern __fp16 *(*pg) (void);
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c b/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,47 @@
-+/* Test intermediate rounding of double to float and then to __fp16, using
-+   an example of a number that would round differently if it went directly
-+   from double to __fp16.  */
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp14.c"
 +
-+/* { dg-do run } */
-+/* { dg-options "-mfp16-format=alternative" } */
++#include "abitest.h"
++#else
++  ARG(double, 1.0, D0)
++  ARG(double, 2.0, D1)
++  ARG(double, 3.0, D2)
++  ARG(double, 4.0, D3)
++  ARG(double, 5.0, D4)
++  ARG(double, 6.0, D5)
++  ARG(double, 7.0, D6)
++  ARG(double, 8.0, D7)
++  ARG(double, 9.0, STACK)
++  LAST_ARG(double, 10.0, STACK+8)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp2.c
+@@ -0,0 +1,19 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+#include <stdlib.h>
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+/* The original double value.  */
-+#define ORIG 0x1.0020008p0
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp2.c"
++#include "abitest.h"
 +
-+/* The expected (double)((__fp16)((float)ORIG)) value.  */
-+#define ROUNDED 0x1.0000000p0
++#else
++  ARG(float, 1.0f, S0)
++  ARG(double, 4.0, D1)
++  ARG(float, 2.0f, S1)
++  ARG(double, 5.0, D2)
++  LAST_ARG(int, 3, R0)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp3.c
+@@ -0,0 +1,21 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+typedef union u {
-+  __fp16 f;
-+  unsigned short h;
-+} ufh;
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+ufh s = { ORIG };
-+ufh r = { ROUNDED };
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp3.c"
 +
-+double d = ORIG;
++__complex__ x = 1.0+2.0i;
 +
-+int
-+main (void)
-+{
-+  ufh x;
++#include "abitest.h"
++#else
++  ARG(float, 1.0f, S0)
++  ARG(__complex__ double, x, D1)
++  ARG(float, 2.0f, S1)
++  ARG(double, 5.0, D3)
++  LAST_ARG(int, 3, R0)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp4.c
+@@ -0,0 +1,20 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+  /* Test that the rounding is correct for static initializers.  */
-+  if (s.h != r.h)
-+    abort ();
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+  /* Test that the rounding is correct for a casted constant expression
-+     not in a static initializer.  */
-+  x.f = (__fp16)ORIG;
-+  if (x.h != r.h)
-+    abort ();
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp4.c"
 +
-+  /* Test that the rounding is correct for a runtime conversion.  */
-+  x.f = (__fp16)d;
-+  if (x.h != r.h)
-+    abort ();
++__complex__ float x = 1.0f + 2.0fi;
++#include "abitest.h"
++#else
++  ARG(float, 1.0f, S0)
++  ARG(__complex__ float, x, S1)
++  ARG(float, 2.0f, S3)
++  ARG(double, 5.0, D2)
++  LAST_ARG(int, 3, R0)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp5.c
+@@ -0,0 +1,30 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c b/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c      2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,47 @@
-+/* Test intermediate rounding of double to float and then to __fp16, using
-+   an example of a number that would round differently if it went directly
-+   from double to __fp16.  */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+/* { dg-do run } */
-+/* { dg-options "-mfp16-format=ieee" } */
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp5.c"
 +
-+#include <stdlib.h>
++__complex__ float x = 1.0+2.0i;
 +
-+/* The original double value.  */
-+#define ORIG 0x1.0020008p0
++struct y
++{
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+/* The expected (double)((__fp16)((float)ORIG)) value.  */
-+#define ROUNDED 0x1.0000000p0
++#include "abitest.h"
++#else
++  ARG(float, 1.0f, S0)
++  ARG(__complex__ float, x, S1)
++  ARG(float, 2.0f, S3)
++  ARG(double, 5.0, D2)
++  ARG(struct y, v, R0)
++  LAST_ARG(int, 3, STACK)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp6.c
+@@ -0,0 +1,30 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+typedef union u {
-+  __fp16 f;
-+  unsigned short h;
-+} ufh;
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+ufh s = { ORIG };
-+ufh r = { ROUNDED };
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp6.c"
 +
-+double d = ORIG;
++__complex__ float x = 1.0+2.0i;
 +
-+int
-+main (void)
++struct y
 +{
-+  ufh x;
-+
-+  /* Test that the rounding is correct for static initializers.  */
-+  if (s.h != r.h)
-+    abort ();
-+
-+  /* Test that the rounding is correct for a casted constant expression
-+     not in a static initializer.  */
-+  x.f = (__fp16)ORIG;
-+  if (x.h != r.h)
-+    abort ();
-+
-+  /* Test that the rounding is correct for a runtime conversion.  */
-+  x.f = (__fp16)d;
-+  if (x.h != r.h)
-+    abort ();
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,21 @@
-+/* Test promotion of __fp16 to double as arguments to unprototyped
-+   function in another compilation unit.  */
++#include "abitest.h"
++#else
++  ARG(struct y, v, R0)
++  ARG(float, 1.0f, S0)
++  ARG(__complex__ float, x, S1)
++  ARG(float, 2.0f, S3)
++  ARG(double, 5.0, D2)
++  LAST_ARG(int, 3, STACK)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
+@@ -0,0 +1,37 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+/* { dg-do run } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+/* { dg-additional-sources "fp16-unprototyped-2.c" } */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+#include <stdlib.h>
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp7.c"
 +
-+extern int f ();
++__complex__ x = 1.0+2.0i;
 +
-+static __fp16 x = 42.0;
-+static __fp16 y = -42.0;
++struct y
++{
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+int
-+main (void)
++struct z
 +{
-+  if (!f (x, y))
-+    abort ();
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
---- a/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c       2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,12 @@
-+/* { dg-do compile } */
-+/* { dg-options "-mfp16-format=ieee" } */
++  double x[4];
++};
 +
-+extern int f ();
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+int
-+f (double xx, double yy)
-+{
-+  if (xx == 42.0 && yy == -42.0)
-+    return 1;
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c b/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
---- a/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c   2010-01-25 09:50:29.275686903 +0100
++#include "abitest.h"
++#else
++  ARG(struct z, a, D0)
++  ARG(struct z, b, D4)
++  ARG(double, 0.5, STACK)
++  ARG(int, 7, R0)
++  LAST_ARG(struct y, v, STACK+8)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
 @@ -0,0 +1,37 @@
-+/* Test promotion of __fp16 to double as arguments to variadic function.  */
++/* Test AAPCS layout (VFP variant) */
 +
-+/* { dg-do run } */
-+/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+#include <stdlib.h>
-+#include <stdarg.h>
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp8.c"
 +
-+extern int f (int n, ...);
++__complex__ x = 1.0+2.0i;
 +
-+int 
-+f (int n, ...)
++struct y
 +{
-+  if (n == 2)
-+    {
-+      double xx, yy;
-+      va_list ap;
-+      va_start (ap, n);
-+      xx = va_arg (ap, double);
-+      yy = va_arg (ap, double);
-+      va_end (ap);
-+      if (xx == 42.0 && yy == -42.0)
-+      return 1;
-+    }
-+  return 0;
-+}
-+
-+static __fp16 x = 42.0;
-+static __fp16 y = -42.0;
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+int
-+main (void)
++struct z
 +{
-+  if (!f (2, x, y))
-+    abort ();
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/frame-pointer-1.c b/gcc/testsuite/gcc.target/arm/frame-pointer-1.c
---- a/gcc/testsuite/gcc.target/arm/frame-pointer-1.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/frame-pointer-1.c   2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,42 @@
-+/* Check local register variables using a register conventionally 
-+   used as the frame pointer aren't clobbered under high register pressure.  */
-+/* { dg-do run } */
-+/* { dg-options "-Os -mthumb -fomit-frame-pointer" } */
++  double x[4];
++};
 +
-+#include <stdlib.h>
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+int global=5;
++#include "abitest.h"
++#else
++  ARG(int, 7, R0)
++  ARG(struct y, v, R1)
++  ARG(struct z, a, D0)
++  ARG(struct z, b, D4)
++  LAST_ARG(double, 0.5, STACK+8)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
+@@ -0,0 +1,38 @@
++/* Test AAPCS layout (VFP variant) */
 +
-+void __attribute__((noinline)) foo(int p1, int p2, int p3, int p4)
-+{
-+  if (global != 5 || p1 != 1 || p2 != 2 || p3 != 3 || p4 != 4)
-+    abort();
-+}
++/* { dg-do run { target arm*-*-eabi* } } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O -mfpu=vfp -mfloat-abi=hard" } */
 +
-+int __attribute__((noinline)) test(int a, int b, int c, int d)
-+{
-+  register unsigned long r __asm__("r7") = 0xdeadbeef;
-+  int e;
++#ifndef IN_FRAMEWORK
++#define VFP
++#define TESTFILE "vfp9.c"
 +
-+  /* ABCD are live after the call which should be enough
-+     to cause r7 to be used if it weren't for the register variable.  */
-+  foo(a,b,c,d);
++__complex__ x = 1.0+2.0i;
 +
-+  e = 0;
-+  __asm__ __volatile__ ("mov %0, %2"
-+                      : "=r" (e)
-+                      : "0" (e), "r" (r));
++struct y
++{
++  int p;
++  int q;
++  int r;
++  int s;
++} v = { 1, 2, 3, 4 };
 +
-+  global = a+b+c+d;
++struct z
++{
++  double x[4];
++};
 +
-+  return e;
-+}
++struct z a = { 5.0, 6.0, 7.0, 8.0 };
++struct z b = { 9.0, 10.0, 11.0, 12.0 };
 +
-+int main()
-+{
-+  if (test(1, 2, 3, 4) != 0xdeadbeef)
-+    abort();
-+  if (global != 10)
-+    abort();
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c
---- a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c 2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,17 @@
-+/* Check that a nop is inserted after a shift taking a register operand.  */
++#include "abitest.h"
++#else
++  /* A variadic function passes using the base ABI */
++  ARG(int, 7, R0)
++  DOTS
++  ANON(struct z, a, R2)
++  ANON(struct z, b, STACK+24)
++  LAST_ANON(double, 0.5, STACK+56)
++#endif
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/ctz.c
+@@ -0,0 +1,12 @@
 +/* { dg-do compile } */
-+/* { dg-options "-mfix-janus-2cc" } */
-+/* { dg-require-effective-target arm_not_thumb } */
-+int foo(int x)
-+{
-+  int y;
-+  int z;
-+  
-+  y = x << 4;
-+  z = y << x;
++/* { dg-require-effective-target arm32 } */
++/* { dg-options "-O2 -march=armv6t2" } */
 +
-+  return y+z;
++unsigned int functest(unsigned int x)
++{
++      return __builtin_ctz(x);
 +}
-+/* { dg-final { scan-assembler "\tmov\tr\[0-9], r\[0-9], asl r\[0-9]\n\tnop\n" } } */
-+/* { dg-final { scan-assembler-not "\tmov\tr\[0-9], r\[0-9], asl #4\n\tnop\n" } } */
 +
-diff -Nur a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c
---- a/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c 2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,17 @@
-+/* Check that a nop is inserted after a shift taking a register operand.  */
-+/* { dg-do compile } */
-+/* { dg-options "-mfix-janus-2cc -mthumb" } */
-+/* { dg-require-effective-target arm_thumb1_ok } */
-+int foo(int x)
-+{
-+  int y;
-+  int z;
-+  
-+  y = x << 4;
-+  z = y << x;
-+
-+  return y+z;
-+}
-+/* { dg-final { scan-assembler "\tlsl\tr\[0-9], r\[0-9], r\[0-9]\n\tnop\n" } } */
-+/* { dg-final { scan-assembler-not "\tlsl\tr\[0-9], r\[0-9], #4\n\tnop\n" } } */
-+
-diff -Nur a/gcc/testsuite/gcc.target/arm/mmx-1.c b/gcc/testsuite/gcc.target/arm/mmx-1.c
---- a/gcc/testsuite/gcc.target/arm/mmx-1.c     2008-09-13 15:26:46.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/mmx-1.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,10 +3,10 @@
- /* { dg-do compile } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
--/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mfloat-abi=softfp" } { "" } } */
- /* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
- /* { dg-options "-O -mno-apcs-frame -mcpu=iwmmxt -mabi=iwmmxt" } */
- /* { dg-require-effective-target arm32 } */
-+/* { dg-require-effective-target arm_iwmmxt_ok } */
- /* { dg-final { scan-assembler "ldmfd\[       ]sp!.*ip,\[ ]*pc" } } */
- /* This function uses all the call-saved registers, namely r4, r5, r6,
-diff -Nur a/gcc/testsuite/gcc.target/arm/naked-3.c b/gcc/testsuite/gcc.target/arm/naked-3.c
---- a/gcc/testsuite/gcc.target/arm/naked-3.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/naked-3.c   2010-01-25 09:50:29.275686903 +0100
-@@ -0,0 +1,15 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -Wall" } */
-+/* Check that we do not get warnings about missing return statements
-+   or bogus looking noreturn functions.  */
-+int __attribute__((naked))
-+foo(void)
-+{
-+  __asm__ volatile ("mov r0, #1\r\nbx lr\n");
-+}
-+
-+int __attribute__((naked,noreturn))
-+bar(void)
-+{
-+  __asm__ volatile ("frob r0\n");
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/polytypes.c b/gcc/testsuite/gcc.target/arm/neon/polytypes.c
---- a/gcc/testsuite/gcc.target/arm/neon/polytypes.c    2008-07-02 21:35:08.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/polytypes.c    2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,7 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-add-options arm_neon } */
- #include <arm_neon.h>
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabals16.c b/gcc/testsuite/gcc.target/arm/neon/vabals16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabals16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabals16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabals32.c b/gcc/testsuite/gcc.target/arm/neon/vabals32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabals32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabals32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabals8.c b/gcc/testsuite/gcc.target/arm/neon/vabals8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabals8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabals8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabalu16.c b/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabalu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabalu16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabalu32.c b/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabalu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabalu32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabalu8.c b/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabalu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabalu8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c b/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c b/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c b/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c b/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c b/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c b/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabas16.c b/gcc/testsuite/gcc.target/arm/neon/vabas16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabas16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabas16.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabas32.c b/gcc/testsuite/gcc.target/arm/neon/vabas32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabas32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabas32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabas8.c b/gcc/testsuite/gcc.target/arm/neon/vabas8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabas8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabas8.c       2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabau16.c b/gcc/testsuite/gcc.target/arm/neon/vabau16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabau16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabau16.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabau32.c b/gcc/testsuite/gcc.target/arm/neon/vabau32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabau32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabau32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabau8.c b/gcc/testsuite/gcc.target/arm/neon/vabau8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabau8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabau8.c       2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdf32.c b/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdf32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdls16.c b/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdls16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdls32.c b/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdls32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdls8.c b/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdls8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c b/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c b/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c b/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c b/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c b/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c b/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c b/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c b/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c b/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c b/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabds16.c b/gcc/testsuite/gcc.target/arm/neon/vabds16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabds16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabds16.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabds32.c b/gcc/testsuite/gcc.target/arm/neon/vabds32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabds32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabds32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabds8.c b/gcc/testsuite/gcc.target/arm/neon/vabds8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabds8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabds8.c       2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdu16.c b/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdu16.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdu32.c b/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdu32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabdu8.c b/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabdu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabdu8.c       2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsf32.c b/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabsf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabsf32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c     2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabss16.c b/gcc/testsuite/gcc.target/arm/neon/vabss16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabss16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabss16.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabss32.c b/gcc/testsuite/gcc.target/arm/neon/vabss32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabss32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabss32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vabss8.c b/gcc/testsuite/gcc.target/arm/neon/vabss8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vabss8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vabss8.c       2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddf32.c b/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddf32.c      2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c b/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c    2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c b/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c    2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c b/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c    2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c    2010-01-25 09:50:29.275686903 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c    2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c    2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddls16.c b/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddls16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddls32.c b/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddls32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddls8.c b/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddls8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c b/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds16.c b/gcc/testsuite/gcc.target/arm/neon/vadds16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vadds16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vadds16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds32.c b/gcc/testsuite/gcc.target/arm/neon/vadds32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vadds32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vadds32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds64.c b/gcc/testsuite/gcc.target/arm/neon/vadds64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vadds64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vadds64.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vadds8.c b/gcc/testsuite/gcc.target/arm/neon/vadds8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vadds8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vadds8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddu16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddu32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu64.c b/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddu64.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddu8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddws16.c b/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddws16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddws16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddws32.c b/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddws32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddws32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddws8.c b/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddws8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddws8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c b/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c b/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c b/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs16.c b/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQs16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs32.c b/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQs32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs64.c b/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQs64.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQs8.c b/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQs8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu16.c b/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQu16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu32.c b/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQu32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu64.c b/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQu64.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandQu8.c b/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandQu8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands16.c b/gcc/testsuite/gcc.target/arm/neon/vands16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vands16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vands16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands32.c b/gcc/testsuite/gcc.target/arm/neon/vands32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vands32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vands32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands64.c b/gcc/testsuite/gcc.target/arm/neon/vands64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vands64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vands64.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vands8.c b/gcc/testsuite/gcc.target/arm/neon/vands8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vands8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vands8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu16.c b/gcc/testsuite/gcc.target/arm/neon/vandu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandu16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu32.c b/gcc/testsuite/gcc.target/arm/neon/vandu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandu32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu64.c b/gcc/testsuite/gcc.target/arm/neon/vandu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandu64.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vandu8.c b/gcc/testsuite/gcc.target/arm/neon/vandu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vandu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vandu8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c b/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c     2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c b/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics16.c b/gcc/testsuite/gcc.target/arm/neon/vbics16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbics16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbics16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics32.c b/gcc/testsuite/gcc.target/arm/neon/vbics32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbics32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbics32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics64.c b/gcc/testsuite/gcc.target/arm/neon/vbics64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbics64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbics64.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbics8.c b/gcc/testsuite/gcc.target/arm/neon/vbics8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbics8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbics8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu16.c b/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicu16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu32.c b/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicu32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu64.c b/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicu64.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbicu8.c b/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbicu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbicu8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslf32.c b/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslf32.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslp16.c b/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslp16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslp16.c      2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslp8.c b/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslp8.c       2010-01-25 09:50:29.285687196 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c b/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c b/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c b/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c b/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c b/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls16.c b/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbsls16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbsls16.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls32.c b/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbsls32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbsls32.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls64.c b/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbsls64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbsls64.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbsls8.c b/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbsls8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbsls8.c       2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu16.c b/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslu16.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu32.c b/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslu32.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu64.c b/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslu64.c      2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vbslu8.c b/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vbslu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vbslu8.c       2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcagef32.c b/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcagef32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcagef32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c    2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c b/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c    2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcalef32.c b/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcalef32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcalef32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c    2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c b/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c     2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c    2010-01-25 09:50:29.295686791 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqf32.c b/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqf32.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqp8.c b/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqp8.c       2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c b/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c     2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c b/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c b/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c     2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c b/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c     2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c b/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c b/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c     2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c b/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c     2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c b/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqs16.c b/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqs16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqs16.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqs32.c b/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqs32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqs32.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vceqs8.c b/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vceqs8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vceqs8.c       2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcequ16.c b/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcequ16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcequ16.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcequ32.c b/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcequ32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcequ32.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcequ8.c b/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcequ8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcequ8.c       2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgef32.c b/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgef32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgef32.c      2010-01-25 09:50:29.305687083 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcges16.c b/gcc/testsuite/gcc.target/arm/neon/vcges16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcges16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcges16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcges32.c b/gcc/testsuite/gcc.target/arm/neon/vcges32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcges32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcges32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcges8.c b/gcc/testsuite/gcc.target/arm/neon/vcges8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcges8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcges8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgts16.c b/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgts16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgts16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgts32.c b/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgts32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgts32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgts8.c b/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgts8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgts8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c b/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c b/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c b/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclef32.c b/gcc/testsuite/gcc.target/arm/neon/vclef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclef32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclef32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcles16.c b/gcc/testsuite/gcc.target/arm/neon/vcles16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcles16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcles16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcles32.c b/gcc/testsuite/gcc.target/arm/neon/vcles32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcles32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcles32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcles8.c b/gcc/testsuite/gcc.target/arm/neon/vcles8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcles8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcles8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleu16.c b/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleu16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleu32.c b/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleu32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcleu8.c b/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcleu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcleu8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclss16.c b/gcc/testsuite/gcc.target/arm/neon/vclss16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclss16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclss16.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclss32.c b/gcc/testsuite/gcc.target/arm/neon/vclss32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclss32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclss32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclss8.c b/gcc/testsuite/gcc.target/arm/neon/vclss8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclss8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclss8.c       2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltf32.c b/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltf32.c      2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c b/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c b/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c b/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c     2010-01-25 09:50:29.315687027 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c b/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c     2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c b/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c     2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclts16.c b/gcc/testsuite/gcc.target/arm/neon/vclts16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclts16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclts16.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclts32.c b/gcc/testsuite/gcc.target/arm/neon/vclts32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclts32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclts32.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclts8.c b/gcc/testsuite/gcc.target/arm/neon/vclts8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclts8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclts8.c       2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltu16.c b/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltu16.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltu32.c b/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltu32.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcltu8.c b/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcltu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcltu8.c       2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c b/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c     2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c b/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c     2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c b/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c b/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c     2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c b/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c     2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c b/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzs16.c b/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzs16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzs16.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzs32.c b/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzs32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzs32.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzs8.c b/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzs8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzs8.c       2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzu16.c b/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzu16.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzu32.c b/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzu32.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vclzu8.c b/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vclzu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vclzu8.c       2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntp8.c b/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcntp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcntp8.c       2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c b/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c      2010-01-25 09:50:29.335686357 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c b/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c      2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c b/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c      2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcnts8.c b/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcnts8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcnts8.c       2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcntu8.c b/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcntu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcntu8.c       2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c b/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c b/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c b/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines16.c b/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombines16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombines16.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines32.c b/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombines32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombines32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines64.c b/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombines64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombines64.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombines8.c b/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombines8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombines8.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c b/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c b/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c b/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c b/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates16.c b/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreates16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreates16.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates32.c b/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreates32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreates32.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates64.c b/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreates64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreates64.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreates8.c b/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreates8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreates8.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c   2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c b/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c       2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c       2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c       2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c       2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c  2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c     2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c     2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c    2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c     2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c 2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c        2010-01-25 09:50:29.345686441 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c        2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c 2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c    2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c    2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c   2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c    2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs16.c b/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQs16.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs32.c b/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQs32.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs64.c b/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQs64.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQs8.c b/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQs8.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu16.c b/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQu16.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu32.c b/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQu32.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu64.c b/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQu64.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veorQu8.c b/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/veorQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veorQu8.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors16.c b/gcc/testsuite/gcc.target/arm/neon/veors16.c
---- a/gcc/testsuite/gcc.target/arm/neon/veors16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veors16.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors32.c b/gcc/testsuite/gcc.target/arm/neon/veors32.c
---- a/gcc/testsuite/gcc.target/arm/neon/veors32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veors32.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors64.c b/gcc/testsuite/gcc.target/arm/neon/veors64.c
---- a/gcc/testsuite/gcc.target/arm/neon/veors64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veors64.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veors8.c b/gcc/testsuite/gcc.target/arm/neon/veors8.c
---- a/gcc/testsuite/gcc.target/arm/neon/veors8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veors8.c       2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru16.c b/gcc/testsuite/gcc.target/arm/neon/veoru16.c
---- a/gcc/testsuite/gcc.target/arm/neon/veoru16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veoru16.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru32.c b/gcc/testsuite/gcc.target/arm/neon/veoru32.c
---- a/gcc/testsuite/gcc.target/arm/neon/veoru32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veoru32.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru64.c b/gcc/testsuite/gcc.target/arm/neon/veoru64.c
---- a/gcc/testsuite/gcc.target/arm/neon/veoru64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veoru64.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/veoru8.c b/gcc/testsuite/gcc.target/arm/neon/veoru8.c
---- a/gcc/testsuite/gcc.target/arm/neon/veoru8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/veoru8.c       2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextf32.c b/gcc/testsuite/gcc.target/arm/neon/vextf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextf32.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextp16.c b/gcc/testsuite/gcc.target/arm/neon/vextp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextp16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextp16.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextp8.c b/gcc/testsuite/gcc.target/arm/neon/vextp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextp8.c       2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQf32.c b/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQf32.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQp16.c b/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQp16.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQp8.c b/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQp8.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs16.c b/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQs16.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs32.c b/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQs32.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs64.c b/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQs64.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQs8.c b/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQs8.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu16.c b/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQu16.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu32.c b/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQu32.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu64.c b/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQu64.c     2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextQu8.c b/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextQu8.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts16.c b/gcc/testsuite/gcc.target/arm/neon/vexts16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vexts16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vexts16.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts32.c b/gcc/testsuite/gcc.target/arm/neon/vexts32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vexts32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vexts32.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts64.c b/gcc/testsuite/gcc.target/arm/neon/vexts64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vexts64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vexts64.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vexts8.c b/gcc/testsuite/gcc.target/arm/neon/vexts8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vexts8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vexts8.c       2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu16.c b/gcc/testsuite/gcc.target/arm/neon/vextu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextu16.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu32.c b/gcc/testsuite/gcc.target/arm/neon/vextu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextu32.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu64.c b/gcc/testsuite/gcc.target/arm/neon/vextu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextu64.c      2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vextu8.c b/gcc/testsuite/gcc.target/arm/neon/vextu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vextu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vextu8.c       2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
---- a/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c       2010-01-25 09:50:29.355686315 +0100
-@@ -0,0 +1,27 @@
-+/* Check that NEON vector shifts support immediate values == size.  /*
-+
-+/* { dg-do compile } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-add-options arm_neon } */
-+
-+#include <arm_neon.h>
-+
-+uint16x8_t test_vshll_n_u8 (uint8x8_t a)
-+{
-+    return vshll_n_u8(a, 8);
-+}
-+
-+uint32x4_t test_vshll_n_u16 (uint16x4_t a)
-+{   
-+    return vshll_n_u16(a, 16);
-+}
-+
-+uint64x2_t test_vshll_n_u32 (uint32x2_t a)
-+{
-+    return vshll_n_u32(a, 32);
-+}
-+
-+/* { dg-final { scan-assembler "vshll\.u16\[  \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-+/* { dg-final { scan-assembler "vshll\.u32\[  \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-+/* { dg-final { scan-assembler "vshll\.u8\[   \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
-+/* { dg-final { cleanup-saved-temps } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c b/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c 2010-01-25 09:50:29.355686315 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c b/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c b/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c b/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c 2007-07-30 15:48:43.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c 2007-07-30 15:48:43.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c 2007-07-30 15:48:43.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c   2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c   2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c   2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c        2007-07-30 15:48:43.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c        2007-07-30 15:48:43.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c        2007-07-30 15:48:43.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c        2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c 2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhadds16.c b/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhadds16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhadds16.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhadds32.c b/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhadds32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhadds32.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhadds8.c b/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhadds8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhadds8.c      2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c      2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c    2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c      2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c b/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c b/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c     2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c b/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c      2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c   2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c  2010-01-25 09:50:29.365686888 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c   2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c   2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1f32.c b/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1f32.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1p16.c b/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1p16.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1p8.c b/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1p8.c       2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c        2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c     2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s16.c b/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s16.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s32.c b/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s32.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s64.c b/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s64.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1s8.c b/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1s8.c       2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u16.c b/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u16.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u32.c b/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u32.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u64.c b/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u64.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld1u8.c b/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld1u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld1u8.c       2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c   2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c   2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c  2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c   2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2f32.c b/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2f32.c      2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c 2010-01-25 09:50:29.375686623 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2p16.c b/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2p16.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2p8.c b/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2p8.c       2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s16.c b/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s16.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s32.c b/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s32.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s64.c b/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s64.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2s8.c b/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2s8.c       2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u16.c b/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u16.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u32.c b/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u32.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u64.c b/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u64.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld2u8.c b/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld2u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld2u8.c       2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c   2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c   2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c   2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3f32.c b/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3f32.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c 2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c  2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3p16.c b/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3p16.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3p8.c b/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3p8.c       2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c        2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c     2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c      2010-01-25 09:50:29.385686707 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s16.c b/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s32.c b/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s64.c b/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s64.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3s8.c b/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3s8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u16.c b/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u32.c b/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u64.c b/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u64.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld3u8.c b/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld3u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld3u8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c   2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c   2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c   2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4f32.c b/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4f32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c 2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c 2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c 2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c 2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c 2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c 2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c  2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4p16.c b/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4p16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4p8.c b/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4p8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c        2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c        2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c        2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c        2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c        2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c        2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s16.c b/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s32.c b/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s64.c b/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s64.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4s8.c b/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4s8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u16.c b/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u32.c b/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u64.c b/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u64.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vld4u8.c b/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vld4u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vld4u8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c b/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c b/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c b/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c       2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminf32.c b/gcc/testsuite/gcc.target/arm/neon/vminf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminf32.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQf32.c b/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQf32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQs16.c b/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQs16.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQs32.c b/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQs32.c     2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQs8.c b/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQs8.c      2010-01-25 09:50:29.395687140 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQu16.c b/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQu16.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQu32.c b/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQu32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminQu8.c b/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminQu8.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmins16.c b/gcc/testsuite/gcc.target/arm/neon/vmins16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmins16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmins16.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmins32.c b/gcc/testsuite/gcc.target/arm/neon/vmins32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmins32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmins32.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmins8.c b/gcc/testsuite/gcc.target/arm/neon/vmins8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmins8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmins8.c       2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminu16.c b/gcc/testsuite/gcc.target/arm/neon/vminu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminu16.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminu32.c b/gcc/testsuite/gcc.target/arm/neon/vminu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminu32.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vminu8.c b/gcc/testsuite/gcc.target/arm/neon/vminu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vminu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vminu8.c       2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlals16.c b/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlals16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlals16.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlals32.c b/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlals32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlals32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlals8.c b/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlals8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlals8.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c    2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c    2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c    2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c    2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c    2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlas16.c b/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlas16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlas16.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlas32.c b/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlas32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlas32.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlas8.c b/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlas8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlas8.c       2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlau16.c b/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlau16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlau16.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlau32.c b/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlau32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlau32.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlau8.c b/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlau8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlau8.c       2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c 2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c        2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c   2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c     2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c      2010-01-25 09:50:29.405687154 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c        2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c        2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c        2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c        2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c        2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlss16.c b/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlss16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlss16.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlss32.c b/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlss32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlss32.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlss8.c b/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlss8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlss8.c       2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c b/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c b/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c b/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c       2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovls16.c b/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovls16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovls32.c b/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovls32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovls8.c b/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovls8.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c b/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c b/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c b/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c b/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c b/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovns16.c b/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovns16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovns16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovns32.c b/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovns32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovns32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovns64.c b/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovns64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovns64.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c b/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c b/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c b/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c     2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c   2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c    2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulf32.c b/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulf32.c      2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c 2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c 2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c 2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c 2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c 2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c        2010-01-25 09:50:29.415686609 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullp8.c b/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmullp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmullp8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulls16.c b/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulls16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulls32.c b/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulls32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulls8.c b/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulls8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullu16.c b/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmullu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmullu16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullu32.c b/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmullu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmullu32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmullu8.c b/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmullu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmullu8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c    2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c    2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c    2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c    2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c    2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulp8.c b/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulp8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c        2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c   2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c b/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmuls16.c b/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmuls16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmuls16.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmuls32.c b/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmuls32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmuls32.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmuls8.c b/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmuls8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmuls8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulu16.c b/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulu16.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulu32.c b/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulu32.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmulu8.c b/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmulu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmulu8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvns16.c b/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvns16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvns16.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvns32.c b/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvns32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvns32.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvns8.c b/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvns8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvns8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c b/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c b/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c b/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegf32.c b/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegf32.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c b/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c b/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c b/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c b/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegs16.c b/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegs16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegs16.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegs32.c b/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegs32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegs32.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vnegs8.c b/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vnegs8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vnegs8.c       2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs16.c b/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQs16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs32.c b/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQs32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs64.c b/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQs64.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQs8.c b/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQs8.c      2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu16.c b/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQu16.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu32.c b/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQu32.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu64.c b/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQu64.c     2010-01-25 09:50:29.425686763 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornQu8.c b/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornQu8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns16.c b/gcc/testsuite/gcc.target/arm/neon/vorns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorns16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorns16.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns32.c b/gcc/testsuite/gcc.target/arm/neon/vorns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorns32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorns32.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns64.c b/gcc/testsuite/gcc.target/arm/neon/vorns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorns64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorns64.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorns8.c b/gcc/testsuite/gcc.target/arm/neon/vorns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorns8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorns8.c       2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu16.c b/gcc/testsuite/gcc.target/arm/neon/vornu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornu16.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu32.c b/gcc/testsuite/gcc.target/arm/neon/vornu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornu32.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu64.c b/gcc/testsuite/gcc.target/arm/neon/vornu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornu64.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vornu8.c b/gcc/testsuite/gcc.target/arm/neon/vornu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vornu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vornu8.c       2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c b/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c b/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs16.c b/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrs16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrs16.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs32.c b/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrs32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrs32.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs64.c b/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrs64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrs64.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorrs8.c b/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorrs8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorrs8.c       2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru16.c b/gcc/testsuite/gcc.target/arm/neon/vorru16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorru16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorru16.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru32.c b/gcc/testsuite/gcc.target/arm/neon/vorru32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorru32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorru32.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru64.c b/gcc/testsuite/gcc.target/arm/neon/vorru64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorru64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorru64.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vorru8.c b/gcc/testsuite/gcc.target/arm/neon/vorru8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vorru8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vorru8.c       2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c b/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadals16.c b/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadals16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadals16.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadals32.c b/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadals32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadals32.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadals8.c b/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadals8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadals8.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c b/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c b/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c b/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c   2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadds16.c b/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadds16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadds16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadds32.c b/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadds32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadds32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpadds8.c b/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpadds8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpadds8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c b/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminf32.c b/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpminf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpminf32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmins16.c b/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmins16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmins16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmins32.c b/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmins32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmins32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpmins8.c b/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpmins8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpmins8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminu16.c b/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpminu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpminu16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminu32.c b/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpminu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpminu32.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vpminu8.c b/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vpminu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vpminu8.c      2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c    2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabss16.c b/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqabss16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqabss16.c     2010-01-25 09:50:29.435686987 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabss32.c b/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqabss32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqabss32.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqabss8.c b/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqabss8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqabss8.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds16.c b/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqadds16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqadds16.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds32.c b/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqadds32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqadds32.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds64.c b/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqadds64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqadds64.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqadds8.c b/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqadds8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqadds8.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c        2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c        2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c  2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c  2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c b/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c b/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c b/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c b/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c b/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c b/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c b/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c b/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c b/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c b/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c   2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c b/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c b/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c b/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c      2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c     2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c        2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c        2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c    2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c       2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c       2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c 2010-01-25 09:50:29.445687421 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c        2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c        2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c        2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c    2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls16.c b/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshls16.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls32.c b/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshls32.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls64.c b/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshls64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshls64.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshls8.c b/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshls8.c      2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c     2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c      2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c   2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c 2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c  2010-01-25 09:50:29.455686248 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c      2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c     2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c b/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c      2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c   2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c    2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c  2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c 2010-01-25 09:50:29.465686681 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c   2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c   2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c   2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c   2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c  2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c 2010-01-25 09:50:29.475686346 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c 2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c    2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c    2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c   2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c  2010-01-25 09:50:29.485687478 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c  2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c b/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c b/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c b/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c b/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c b/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c b/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c     2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c   2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c    2010-01-25 09:50:29.495687004 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c b/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c b/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c b/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c b/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls16.c b/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshls16.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls32.c b/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshls32.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls64.c b/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshls64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshls64.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshls8.c b/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshls8.c      2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c     2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c      2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c    2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c  2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c   2010-01-25 09:50:29.505686669 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c  2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c  2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c  2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c        2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c 2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c b/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls16.c b/gcc/testsuite/gcc.target/arm/neon/vshls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshls16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshls16.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls32.c b/gcc/testsuite/gcc.target/arm/neon/vshls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshls32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshls32.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls64.c b/gcc/testsuite/gcc.target/arm/neon/vshls64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshls64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshls64.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshls8.c b/gcc/testsuite/gcc.target/arm/neon/vshls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshls8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshls8.c       2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu16.c b/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlu16.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu32.c b/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlu32.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu64.c b/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlu64.c      2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshlu8.c b/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshlu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshlu8.c       2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c   2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c    2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c     2010-01-25 09:50:29.515686194 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c     2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c   2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c   2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c    2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1f32.c b/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1f32.c      2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c 2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c 2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c  2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c 2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c 2010-01-25 09:50:29.525687396 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c  2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c  2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1p16.c b/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1p16.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1p8.c b/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1p8.c       2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s16.c b/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s16.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s32.c b/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s32.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s64.c b/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s64.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1s8.c b/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1s8.c       2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u16.c b/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u16.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u32.c b/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u32.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u64.c b/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u64.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst1u8.c b/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst1u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst1u8.c       2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2f32.c b/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2f32.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c  2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c  2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c 2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c  2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2p16.c b/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2p16.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2p8.c b/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2p8.c       2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c        2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c     2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s16.c b/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s16.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s32.c b/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s32.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s64.c b/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s64.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2s8.c b/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2s8.c       2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u16.c b/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u16.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u32.c b/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u32.c      2010-01-25 09:50:29.535686781 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u64.c b/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u64.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst2u8.c b/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst2u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst2u8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3f32.c b/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3f32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c  2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c  2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c  2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3p16.c b/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3p16.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3p8.c b/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3p8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s16.c b/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s16.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s32.c b/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s64.c b/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s64.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3s8.c b/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3s8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u16.c b/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u16.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u32.c b/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u64.c b/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u64.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst3u8.c b/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst3u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst3u8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4f32.c b/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4f32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4f32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c  2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c  2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c 2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c 2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c  2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c  2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4p16.c b/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4p16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4p16.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4p8.c b/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4p8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4p8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c        2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c        2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c     2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c b/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s16.c b/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4s16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s16.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s32.c b/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4s32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s64.c b/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4s64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s64.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4s8.c b/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4s8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4s8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u16.c b/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4u16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u16.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u32.c b/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4u32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u64.c b/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4u64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u64.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vst4u8.c b/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vst4u8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vst4u8.c       2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubf32.c b/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubf32.c      2010-01-25 09:50:29.545686586 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c b/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c    2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c b/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c    2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c b/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c    2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c    2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c    2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c b/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c    2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c    2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubls16.c b/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubls16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubls16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubls32.c b/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubls32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubls32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubls8.c b/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubls8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubls8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsublu16.c b/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsublu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsublu16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsublu32.c b/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsublu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsublu32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsublu8.c b/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsublu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsublu8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c b/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c b/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c b/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs16.c b/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubs16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubs16.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs32.c b/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubs32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubs32.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs64.c b/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubs64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubs64.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubs8.c b/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubs8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubs8.c       2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubu16.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubu32.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu64.c b/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubu64.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubu64.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubu8.c b/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubu8.c       2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubws16.c b/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubws16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubws16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubws32.c b/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubws32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubws32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubws8.c b/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubws8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubws8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c b/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c b/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c b/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c b/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c       2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c     2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c      2010-01-25 09:50:29.555686949 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrns16.c b/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrns16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrns16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrns32.c b/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrns32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrns32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrns8.c b/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrns8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrns8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c b/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstp8.c b/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstp8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c b/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c b/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c b/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c b/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c b/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c b/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c b/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtsts16.c b/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtsts16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtsts16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtsts32.c b/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtsts32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtsts32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtsts8.c b/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtsts8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtsts8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstu16.c b/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstu16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstu32.c b/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstu32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vtstu8.c b/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vtstu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vtstu8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzps16.c b/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzps16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzps16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzps32.c b/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzps32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzps32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzps8.c b/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzps8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzps8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c b/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c b/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c b/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipf32.c b/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipf32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipf32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipp16.c b/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipp16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipp16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipp8.c b/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipp8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipp8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c b/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c b/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c b/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c b/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c b/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c b/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c b/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c b/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c     2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c     2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c b/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzips16.c b/gcc/testsuite/gcc.target/arm/neon/vzips16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzips16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzips16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzips32.c b/gcc/testsuite/gcc.target/arm/neon/vzips32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzips32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzips32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzips8.c b/gcc/testsuite/gcc.target/arm/neon/vzips8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzips8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzips8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipu16.c b/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipu16.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipu16.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipu32.c b/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipu32.c      2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipu32.c      2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon/vzipu8.c b/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
---- a/gcc/testsuite/gcc.target/arm/neon/vzipu8.c       2007-07-25 14:28:31.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/arm/neon/vzipu8.c       2010-01-25 09:50:29.565686614 +0100
-@@ -3,7 +3,8 @@
- /* { dg-do assemble } */
- /* { dg-require-effective-target arm_neon_ok } */
--/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-save-temps -O0" } */
-+/* { dg-add-options arm_neon } */
- #include "arm_neon.h"
++/* { dg-final { scan-assembler "rbit" } } */
++/* { dg-final { scan-assembler "clz" } } */
++/* { dg-final { scan-assembler-not "rsb" } } */
+--- a/gcc/testsuite/gcc.target/arm/eabi1.c
++++ b/gcc/testsuite/gcc.target/arm/eabi1.c
+@@ -30,43 +30,48 @@
+ #include <stdlib.h>
+ #include <math.h>
  
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon-cond-1.c b/gcc/testsuite/gcc.target/arm/neon-cond-1.c
---- a/gcc/testsuite/gcc.target/arm/neon-cond-1.c       2009-01-27 17:14:13.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/neon-cond-1.c       2010-01-25 09:50:29.565686614 +0100
-@@ -1,6 +1,7 @@
- /* { dg-do run } */
- /* { dg-require-effective-target arm_neon_hw } */
--/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp" } */
-+/* { dg-options "-O2" } */
-+/* { dg-add-options arm_neon } */
- /* Check that the arm_final_prescan_insn ccfsm code does not try to
-  * conditionally execute NEON instructions.  */
- #include <arm_neon.h>
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon-modes-1.c b/gcc/testsuite/gcc.target/arm/neon-modes-1.c
---- a/gcc/testsuite/gcc.target/arm/neon-modes-1.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/neon-modes-1.c      2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,14 @@
-+/* { dg-do compile } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-options "-O1" } */
-+/* { dg-add-options arm_neon } */
+-#define decl_float(code, type)                                        \
+-  extern type __aeabi_ ## code ## add (type, type);           \
+-  extern type __aeabi_ ## code ## div (type, type);           \
+-  extern type __aeabi_ ## code ## mul (type, type);           \
+-  extern type __aeabi_ ## code ## neg (type);                 \
+-  extern type __aeabi_ ## code ## rsub (type, type);          \
+-  extern type __aeabi_ ## code ## sub (type, type);           \
+-  extern int __aeabi_ ## code ## cmpeq (type, type);          \
+-  extern int __aeabi_ ## code ## cmplt (type, type);          \
+-  extern int __aeabi_ ## code ## cmple (type, type);          \
+-  extern int __aeabi_ ## code ## cmpge (type, type);          \
+-  extern int __aeabi_ ## code ## cmpgt (type, type);          \
+-  extern int __aeabi_ ## code ## cmpun (type, type);          \
+-  extern int __aeabi_ ## code ## 2iz (type);                  \
+-  extern unsigned int __aeabi_ ## code ## 2uiz (type);                \
+-  extern long long __aeabi_ ## code ## 2lz (type);            \
+-  extern unsigned long long __aeabi_ ## code ## 2ulz (type);  \
+-  extern type __aeabi_i2 ## code (int);                               \
+-  extern type __aeabi_ui2 ## code (int);                      \
+-  extern type __aeabi_l2 ## code (long long);                 \
+-  extern type __aeabi_ul2 ## code (unsigned long long);               \
+-                                                              \
+-  type code ## zero = 0.0;                                    \
+-  type code ## one = 1.0;                                     \
+-  type code ## two = 2.0;                                     \
+-  type code ## four = 4.0;                                    \
+-  type code ## minus_one = -1.0;                              \
+-  type code ## minus_two = -2.0;                              \
+-  type code ## minus_four = -4.0;                             \
+-  type code ## epsilon = 1E-32;                                       \
+-  type code ## NaN = 0.0 / 0.0;                               
++/* All these functions are defined to use the base ABI, so use the
++   attribute to ensure the tests use the base ABI to call them even
++   when the VFP ABI is otherwise in effect.  */
++#define PCS __attribute__((pcs("aapcs")))
 +
-+#include <arm_neon.h>
++#define decl_float(code, type)                                                \
++  extern type __aeabi_ ## code ## add (type, type) PCS;                       \
++  extern type __aeabi_ ## code ## div (type, type) PCS;                       \
++  extern type __aeabi_ ## code ## mul (type, type) PCS;                       \
++  extern type __aeabi_ ## code ## neg (type) PCS;                     \
++  extern type __aeabi_ ## code ## rsub (type, type) PCS;              \
++  extern type __aeabi_ ## code ## sub (type, type) PCS;                       \
++  extern int __aeabi_ ## code ## cmpeq (type, type) PCS;              \
++  extern int __aeabi_ ## code ## cmplt (type, type) PCS;              \
++  extern int __aeabi_ ## code ## cmple (type, type) PCS;              \
++  extern int __aeabi_ ## code ## cmpge (type, type) PCS;              \
++  extern int __aeabi_ ## code ## cmpgt (type, type) PCS;              \
++  extern int __aeabi_ ## code ## cmpun (type, type) PCS;              \
++  extern int __aeabi_ ## code ## 2iz (type) PCS;                      \
++  extern unsigned int __aeabi_ ## code ## 2uiz (type) PCS;            \
++  extern long long __aeabi_ ## code ## 2lz (type) PCS;                        \
++  extern unsigned long long __aeabi_ ## code ## 2ulz (type) PCS;      \
++  extern type __aeabi_i2 ## code (int) PCS;                           \
++  extern type __aeabi_ui2 ## code (int) PCS;                          \
++  extern type __aeabi_l2 ## code (long long) PCS;                     \
++  extern type __aeabi_ul2 ## code (unsigned long long) PCS;           \
++                                                                      \
++  type code ## zero = 0.0;                                            \
++  type code ## one = 1.0;                                             \
++  type code ## two = 2.0;                                             \
++  type code ## four = 4.0;                                            \
++  type code ## minus_one = -1.0;                                      \
++  type code ## minus_two = -2.0;                                      \
++  type code ## minus_four = -4.0;                                     \
++  type code ## epsilon = 1E-32;                                               \
++  type code ## NaN = 0.0 / 0.0;
+ decl_float (d, double)
+ decl_float (f, float)
+-extern float __aeabi_d2f (double);
+-extern double __aeabi_f2d (float);
++extern float __aeabi_d2f (double) PCS;
++extern double __aeabi_f2d (float) PCS;
+ extern long long __aeabi_lmul (long long, long long);
+ extern long long __aeabi_llsl (long long, int);
+ extern long long __aeabi_llsr (long long, int);
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-builtins-1.c
+@@ -0,0 +1,92 @@
++/* Test type-generic builtins with __fp16 arguments.
++   Except as otherwise noted, they should behave exactly
++   the same as those with float arguments.  */
 +
-+void neon_internal_error(int *dst, int *src)
-+{
-+  uint16x8x4_t sval;
++/* { dg-do run } */
++/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
 +
-+  sval = vld4q_u16((void *)src);
-+  vst4q_u16((void *)dst,sval);
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon-vmla-1.c b/gcc/testsuite/gcc.target/arm/neon-vmla-1.c
---- a/gcc/testsuite/gcc.target/arm/neon-vmla-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/neon-vmla-1.c       2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,11 @@
-+/* { dg-require-effective-target arm_neon_hw } */
-+/* { dg-options "-O2 -ftree-vectorize" } */
-+/* { dg-add-options arm_neon } */
-+/* { dg-final { scan-assembler "vmla\\.f32" } } */
++#include <stdlib.h>
++#include <math.h>
 +
-+/* Verify that VMLA is used.  */
-+void f1(int n, float a, float x[], float y[]) {
-+  int i;
-+  for (i = 0; i < n; ++i)
-+    y[i] = a * x[i] + y[i];
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/neon-vmls-1.c b/gcc/testsuite/gcc.target/arm/neon-vmls-1.c
---- a/gcc/testsuite/gcc.target/arm/neon-vmls-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/neon-vmls-1.c       2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,11 @@
-+/* { dg-require-effective-target arm_neon_hw } */
-+/* { dg-options "-O2 -ftree-vectorize" } */
-+/* { dg-add-options arm_neon } */
-+/* { dg-final { scan-assembler "vmls\\.f32" } } */
++volatile __fp16 h1, h2;
++volatile float f1, f2;
 +
-+/* Verify that VMLS is used.  */
-+void f1(int n, float a, float x[], float y[]) {
-+  int i;
-+  for (i = 0; i < n; ++i)
-+    y[i] = y[i] - a * x[i];
++void
++set1 (double x)
++{
++  h1 = x;
++  f1 = h1;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/arm/pr40482.c b/gcc/testsuite/gcc.target/arm/pr40482.c
---- a/gcc/testsuite/gcc.target/arm/pr40482.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/pr40482.c   2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,7 @@
-+/* { dg-options "-mthumb -Os" }  */
-+/* { dg-final { scan-assembler-not "ldr" } } */
 +
-+unsigned int foo (unsigned int i )
++void
++set2 (double x, double y)
 +{
-+  return i | 0xff000000;
++  h1 = x;
++  f1 = h1;
++  h2 = y;
++  f2 = h2;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c
---- a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,15 @@
-+/* In Thumb-2 mode, when optimizing for size, generate a "muls"
-+   instruction and use the resulting condition flags rather than a
-+   separate compare instruction.  */
-+/* { dg-options "-mthumb -Os" }  */
-+/* { dg-require-effective-target arm_thumb2_ok } */
-+/* { dg-final { scan-assembler "muls" } } */
-+/* { dg-final { scan-assembler-not "cmp" } } */
 +
-+int x;
++#define test1(p,x)                            \
++  set1 (x);                                   \
++  hp = (p (h1) ? 1 : 0);                      \
++  fp = (p (f1) ? 1 : 0);                      \
++  if (hp ^ fp) abort ()
 +
-+void f(int i, int j)
++#define test2(p,x,y)                          \
++  set2 (x,y);                                 \
++  hp = (p (h1, h2) ? 1 : 0);                  \
++  fp = (p (f1, f2) ? 1 : 0);                  \
++  if (hp ^ fp) abort ()
++
++int
++main (void)
 +{
-+  if (i * j < 0)
-+    x = 1;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c
---- a/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,17 @@
-+/* In Thumb-2 mode, when optimizing for size, generate a "muls"
-+   instruction and use the resulting condition flags rather than a
-+   separate compare instruction.  */
-+/* { dg-options "-mthumb -Os" }  */
-+/* { dg-require-effective-target arm_thumb2_ok } */
-+/* { dg-final { scan-assembler "muls" } } */
-+/* { dg-final { scan-assembler-not "cmp" } } */
++  int hp, fp;
 +
-+int x;
++  test1 (__builtin_isfinite, 17.0);
++  test1 (__builtin_isfinite, INFINITY);
++  test1 (__builtin_isinf, -0.5);
++  test1 (__builtin_isinf, INFINITY);
++  test1 (__builtin_isnan, 493.0);
++  test1 (__builtin_isnan, NAN);
++  test1 (__builtin_isnormal, 3.14159);
 +
-+int f(int i, int j)
-+{
-+  i = i * j;
-+  if (i < 0)
-+    x = 1;
-+  return i;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c
---- a/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c  2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,10 @@
-+/* Use 16-bit multiply instruction in Thumb-2 mode when optimizing for
-+   size.  */
-+/* { dg-options "-mthumb -Os" }  */
-+/* { dg-require-effective-target arm_thumb2_ok } */
-+/* { dg-final { scan-assembler "muls" } } */
++  test2 (__builtin_isgreater, 5.0, 3.0);
++  test2 (__builtin_isgreater, 3.0, 5.0);
++  test2 (__builtin_isgreater, 73.5, 73.5);
++  test2 (__builtin_isgreater, 1.0, NAN);
 +
-+int f(int i, int j) 
-+{
-+  return i * j;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c b/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c
---- a/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c  2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,27 @@
-+/* Do not use 16-bit multiply instructions in Thumb-2 mode when
-+   optimizing for speed.  */
-+/* { dg-options "-mthumb -O2" }  */
-+/* { dg-require-effective-target arm_thumb2_ok } */
-+/* { dg-final { scan-assembler-not "muls" } } */
++  test2 (__builtin_isgreaterequal, 5.0, 3.0);
++  test2 (__builtin_isgreaterequal, 3.0, 5.0);
++  test2 (__builtin_isgreaterequal, 73.5, 73.5);
++  test2 (__builtin_isgreaterequal, 1.0, NAN);
 +
-+int f(int i, int j) 
-+{
-+  return i * j;
-+}
++  test2 (__builtin_isless, 5.0, 3.0);
++  test2 (__builtin_isless, 3.0, 5.0);
++  test2 (__builtin_isless, 73.5, 73.5);
++  test2 (__builtin_isless, 1.0, NAN);
 +
-+int x;
++  test2 (__builtin_islessequal, 5.0, 3.0);
++  test2 (__builtin_islessequal, 3.0, 5.0);
++  test2 (__builtin_islessequal, 73.5, 73.5);
++  test2 (__builtin_islessequal, 1.0, NAN);
 +
-+void g(int i, int j)
-+{
-+  if (i * j < 0)
-+    x = 1;
-+}
++  test2 (__builtin_islessgreater, 5.0, 3.0);
++  test2 (__builtin_islessgreater, 3.0, 5.0);
++  test2 (__builtin_islessgreater, 73.5, 73.5);
++  test2 (__builtin_islessgreater, 1.0, NAN);
 +
-+int h(int i, int j)
-+{
-+  i = i * j;
-+  if (i < 0)
-+    x = 1;
-+  return i;
-+}
++  test2 (__builtin_isunordered, 5.0, 3.0);
++  test2 (__builtin_isunordered, 3.0, 5.0);
++  test2 (__builtin_isunordered, 73.5, 73.5);
++  test2 (__builtin_isunordered, 1.0, NAN);
 +
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c b/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c
---- a/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,15 @@
++  /* Test that __builtin_isnormal recognizes a denormalized __fp16 value,
++     even if it's representable as a normalized float.  */
++  h1 = 5.96046E-8;
++  if (__builtin_isnormal (h1))
++    abort ();
++
++  return 0;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-1.c
+@@ -0,0 +1,8 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+extern void bar (double);
++__fp16 xx = 0.0;
 +
-+void
-+foo (double *p, double a, int n)
-+{
-+  do
-+    bar (*--p + a);
-+  while (n--);
-+}
++/* { dg-final { scan-assembler "\t.eabi_attribute 38, 2" } } */
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.space\t2" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-10.c
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=alternative -pedantic -std=gnu99" } */
 +
-+/* { dg-final { scan-assembler "fldmdbd" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c b/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c
---- a/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,15 @@
++#include <math.h>
++
++/* NaNs are not representable in the alternative format; we should get a
++   diagnostic.  */
++__fp16 xx = NAN; /* { dg-warning "overflow" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-11.c
+@@ -0,0 +1,13 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative -pedantic -std=gnu99" } */
 +
-+extern void baz (float);
++#include <math.h>
 +
-+void
-+foo (float *p, float a, int n)
-+{
-+  do
-+    bar (*--p + a);
-+  while (n--);
-+}
++/* Infinities are not representable in the alternative format;
++   we should get a diagnostic, and the value set to the largest
++   representable value.  */
++/* 0x7fff = 32767 */
++__fp16 xx = INFINITY; /* { dg-warning "overflow" } */
 +
-+/* { dg-final { scan-assembler "fldmdbs" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c b/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c
---- a/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,15 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t32767" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-12.c
+@@ -0,0 +1,8 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+extern void bar (double);
++float xx __attribute__((mode(HF))) = 0.0;
 +
-+void
-+foo (double *p, double a, int n)
-+{
-+  do
-+    bar (*p++ + a);
-+  while (n--);
-+}
++/* { dg-final { scan-assembler "\t.eabi_attribute 38, 2" } } */
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.space\t2" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-2.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+/* { dg-final { scan-assembler "fldmiad" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-ldmias.c b/gcc/testsuite/gcc.target/arm/vfp-ldmias.c
---- a/gcc/testsuite/gcc.target/arm/vfp-ldmias.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-ldmias.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,15 @@
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0x3c00 = 15360 */
++__fp16 xx = 1.0;
++
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t15360" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-3.c
+@@ -0,0 +1,9 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+extern void baz (float);
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0xc000 = 49152 */
++__fp16 xx = -2.0;
 +
-+void
-+foo (float *p, float a, int n)
-+{
-+  do
-+    bar (*p++ + a);
-+  while (n--);
-+}
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t49152" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-4.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+/* { dg-final { scan-assembler "fldmias" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c b/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c
---- a/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,14 @@
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0x7bff = 31743 */
++__fp16 xx = 65504.0;
++
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t31743" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-5.c
+@@ -0,0 +1,9 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+void
-+foo (double *p, double a, double b, int n)
-+{
-+  double c = a + b;
-+  do
-+    *--p = c;
-+  while (n--);
-+}
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0x3555 = 13653 */
++__fp16 xx = (1.0/3.0);
 +
-+/* { dg-final { scan-assembler "fstmdbd" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c b/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c
---- a/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,14 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t13653" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-6.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+void
-+foo (float *p, float a, float b, int n)
-+{
-+  float c = a + b;
-+  do
-+    *--p = c;
-+  while (n--);
-+}
++/* This number is the maximum value representable in the alternative
++   encoding.  */
++/* 0x7fff = 32767 */
++__fp16 xx = 131008.0;
 +
-+/* { dg-final { scan-assembler "fstmdbs" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmiad.c b/gcc/testsuite/gcc.target/arm/vfp-stmiad.c
---- a/gcc/testsuite/gcc.target/arm/vfp-stmiad.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-stmiad.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,14 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t32767" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-7.c
+@@ -0,0 +1,11 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative -pedantic" } */
 +
-+void
-+foo (double *p, double a, double b, int n)
-+{
-+  double c = a + b;
-+  do
-+    *p++ = c;
-+  while (n--);
-+}
++/* This number overflows the range of the alternative encoding.  Since this
++   encoding doesn't have infinities, we should get a pedantic warning,
++   and the value should be set to the largest representable value.  */
++/* 0x7fff = 32767 */
++__fp16 xx = 123456789.0;  /* { dg-warning "overflow" } */
 +
-+/* { dg-final { scan-assembler "fstmiad" } } */
-diff -Nur a/gcc/testsuite/gcc.target/arm/vfp-stmias.c b/gcc/testsuite/gcc.target/arm/vfp-stmias.c
---- a/gcc/testsuite/gcc.target/arm/vfp-stmias.c        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/arm/vfp-stmias.c        2010-01-25 09:50:29.565686614 +0100
-@@ -0,0 +1,14 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t32767" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-8.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-require-effective-target arm_vfp_ok } */
-+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+void
-+foo (float *p, float a, float b, int n)
-+{
-+  float c = a + b;
-+  do
-+    *p++ = c;
-+  while (n--);
-+}
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* This is the minimum normalized value.  */
++/* 0x0400 = 1024 */
++__fp16 xx = 6.10352E-5;
 +
-+/* { dg-final { scan-assembler "fstmias" } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/387-1.c b/gcc/testsuite/gcc.target/i386/387-1.c
---- a/gcc/testsuite/gcc.target/i386/387-1.c    2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/387-1.c    2010-01-25 09:50:29.565686614 +0100
-@@ -1,6 +1,7 @@
- /* Verify that -mno-fancy-math-387 works.  */
- /* { dg-do compile } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
- /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
- /* { dg-final { scan-assembler "call\t(.*)sin" } } */
- /* { dg-final { scan-assembler "call\t(.*)cos" } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/387-5.c b/gcc/testsuite/gcc.target/i386/387-5.c
---- a/gcc/testsuite/gcc.target/i386/387-5.c    2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/387-5.c    2010-01-25 09:50:29.565686614 +0100
-@@ -1,6 +1,7 @@
- /* Verify that -mno-fancy-math-387 works.  */
- /* { dg-do compile } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
- /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
- /* { dg-final { scan-assembler "call\t(.*)atan" } } */
- /* { dg-final { scan-assembler "call\t(.*)log1p" } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/cmov7.c b/gcc/testsuite/gcc.target/i386/cmov7.c
---- a/gcc/testsuite/gcc.target/i386/cmov7.c    2008-01-10 19:31:43.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/cmov7.c    2010-01-25 09:50:29.565686614 +0100
-@@ -1,6 +1,7 @@
- /* PR middle-end/33187 */
- /* { dg-do compile } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
- /* { dg-options "-O2 -ffast-math -march=k8 -mbranch-cost=5 -mfpmath=387" } */
- /* { dg-final { scan-assembler "fcmov" } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/funcspec-1.c b/gcc/testsuite/gcc.target/i386/funcspec-1.c
---- a/gcc/testsuite/gcc.target/i386/funcspec-1.c       2008-08-31 01:50:40.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/funcspec-1.c       2010-01-25 09:50:29.575686558 +0100
-@@ -3,6 +3,7 @@
-    for a function that doesn't use attribute((option)).  */
- /* { dg-do compile } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
- /* { dg-options "-O3 -ftree-vectorize -march=i386" } */
- /* { dg-final { scan-assembler "addps\[ \t\]" } } */
- /* { dg-final { scan-assembler "fsubs\[ \t\]" } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/funcspec-8.c b/gcc/testsuite/gcc.target/i386/funcspec-8.c
---- a/gcc/testsuite/gcc.target/i386/funcspec-8.c       2008-08-31 01:50:40.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/funcspec-8.c       2010-01-25 09:50:29.575686558 +0100
-@@ -1,6 +1,7 @@
- /* Test whether using target specific options, we can use the x86 builtin
-    functions in functions with the appropriate function specific options.  */
- /* { dg-do compile } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
- /* { dg-options "-O2 -march=k8 -mfpmath=sse" } */
- typedef float     __m128  __attribute__ ((__vector_size__ (16), __may_alias__));
-diff -Nur a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c
---- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c 2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c 2010-01-25 09:50:29.575686558 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do preprocess } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
- /* { dg-options "-march=i386" } */
- #ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
-diff -Nur a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c
---- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c 2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c 2010-01-25 09:50:29.575686558 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do preprocess } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i486" } } */
- /* { dg-options "-march=i486" } */
- #ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
-diff -Nur a/gcc/testsuite/gcc.target/i386/isa-10.c b/gcc/testsuite/gcc.target/i386/isa-10.c
---- a/gcc/testsuite/gcc.target/i386/isa-10.c   2008-03-08 23:33:54.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/isa-10.c   2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-do run } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=x86-64" } } */
- /* { dg-options "-march=x86-64 -msse5 -mno-sse4" } */
- extern void abort (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/isa-6.c b/gcc/testsuite/gcc.target/i386/isa-6.c
---- a/gcc/testsuite/gcc.target/i386/isa-6.c    2008-02-19 02:21:03.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/isa-6.c    2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-do run } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
- /* { dg-options "-march=amdfam10 -mno-sse4" } */
- extern void abort (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/isa-7.c b/gcc/testsuite/gcc.target/i386/isa-7.c
---- a/gcc/testsuite/gcc.target/i386/isa-7.c    2008-02-19 02:21:03.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/isa-7.c    2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-do run } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
- /* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */
- extern void abort (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/isa-8.c b/gcc/testsuite/gcc.target/i386/isa-8.c
---- a/gcc/testsuite/gcc.target/i386/isa-8.c    2008-02-19 02:21:03.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/isa-8.c    2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-do run } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
- /* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */
- extern void abort (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/isa-9.c b/gcc/testsuite/gcc.target/i386/isa-9.c
---- a/gcc/testsuite/gcc.target/i386/isa-9.c    2008-02-19 02:21:03.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/isa-9.c    2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-do run } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
- /* { dg-options "-march=amdfam10 -mno-sse5" } */
- extern void abort (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/lea.c b/gcc/testsuite/gcc.target/i386/lea.c
---- a/gcc/testsuite/gcc.target/i386/lea.c      2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/lea.c      2010-01-25 09:50:29.575686558 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentiumpro" } } */
- /* { dg-options "-O2 -march=pentiumpro" } */
- /* { dg-final { scan-assembler "leal" } } */
- typedef struct {
-diff -Nur a/gcc/testsuite/gcc.target/i386/movbe-1.c b/gcc/testsuite/gcc.target/i386/movbe-1.c
---- a/gcc/testsuite/gcc.target/i386/movbe-1.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/movbe-1.c  2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,18 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t1024" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-alt-9.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-options "-O2 -mmovbe" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
-+extern int x;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* This is the minimum denormalized value.  */
++/* 0x0001 = 1 */
++__fp16 xx = 5.96046E-8;
 +
-+void
-+foo (int i)
-+{
-+  x = __builtin_bswap32 (i);
-+}
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t1" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-exprtype.c
+@@ -0,0 +1,29 @@
++/* Test that expressions involving __fp16 values have the right types.  */
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++/* This produces a diagnostic if EXPR doesn't have type TYPE.  */
++#define CHECK(expr,type)                      \
++  do {                                                \
++    type v;                                   \
++    __typeof (expr) *p = &v;                  \
++  } while (0);
++
++volatile __fp16 f1;
++volatile __fp16 f2;
 +
 +int
-+bar ()
++main (void)
 +{
-+  return __builtin_bswap32 (x);
++  CHECK (f1, __fp16);
++  CHECK (+f1, float);
++  CHECK (-f1, float);
++  CHECK (f1+f2, float);
++  CHECK ((__fp16)(f1+f2), __fp16);
++  CHECK ((__fp16)99.99, __fp16);
++  CHECK ((f1+f2, f1), __fp16);
 +}
 +
-+/* { dg-final { scan-assembler-times "movbe\[ \t\]" 2 } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/movbe-2.c b/gcc/testsuite/gcc.target/i386/movbe-2.c
---- a/gcc/testsuite/gcc.target/i386/movbe-2.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/movbe-2.c  2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,19 @@
++
++
++
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-1.c
+@@ -0,0 +1,8 @@
 +/* { dg-do compile } */
-+/* { dg-options "-O2 -mmovbe" } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+extern long long x;
++__fp16 xx = 0.0;
++
++/* { dg-final { scan-assembler "\t.eabi_attribute 38, 1" } } */
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.space\t2" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-10.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
++
++#include <math.h>
 +
-+void
-+foo (long long i)
-+{
-+  x = __builtin_bswap64 (i);
-+}
++/* 0x7e00 = 32256 */
++__fp16 xx = NAN;
 +
-+long long
-+bar ()
-+{
-+  return __builtin_bswap64 (x);
-+}
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t32256" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-11.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=ieee -std=gnu99" } */
 +
-+/* { dg-final { scan-assembler-times "movbe\[ \t\]" 4 { target ilp32 } } } */
-+/* { dg-final { scan-assembler-times "movbe\[ \t\]" 2 { target lp64 } } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
---- a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c        2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c        2010-01-25 09:50:29.575686558 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentium4" } } */
- /* { dg-options "-O2 -march=pentium4" } */
- /* { dg-final { scan-assembler-not "imull" } } */
-diff -Nur a/gcc/testsuite/gcc.target/i386/pr37216.c b/gcc/testsuite/gcc.target/i386/pr37216.c
---- a/gcc/testsuite/gcc.target/i386/pr37216.c  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/pr37216.c  2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,17 @@
-+/* { dg-do run } */
-+/* { dg-options "-O3 -msse2" } */
-+/* { dg-options "-O3 -msse2 -mpe-aligned-commons" { target pe_aligned_commons } } */
++#include <math.h>
 +
-+#include "sse2-check.h"
++/* 0x7c00 = 31744 */
++__fp16 xx = INFINITY;
 +
-+int iarr[64];
-+int iint = 0;
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t31744" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-12.c
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+void
-+sse2_test (void)
-+{
-+  int i;
++float xx __attribute__((mode(HF))) = 0.0;
 +
-+  for (i = 0; i < 64; i++)
-+    iarr[i] = -2;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/i386/pr37843-1.c b/gcc/testsuite/gcc.target/i386/pr37843-1.c
---- a/gcc/testsuite/gcc.target/i386/pr37843-1.c        2008-11-28 17:30:56.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/pr37843-1.c        2010-01-25 09:50:29.575686558 +0100
-@@ -2,8 +2,8 @@
- /* { dg-do compile { target nonpic } } */
- /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=5" } */
- /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
--/* { dg-final { scan-assembler "call\[\\t \]*foo" } } */
--/* { dg-final { scan-assembler-not "jmp\[\\t \]*foo" } } */
-+/* { dg-final { scan-assembler "call\[\\t \]*_?foo" } } */
-+/* { dg-final { scan-assembler-not "jmp\[\\t \]*_?foo" } } */
- extern int foo (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/pr37843-2.c b/gcc/testsuite/gcc.target/i386/pr37843-2.c
---- a/gcc/testsuite/gcc.target/i386/pr37843-2.c        2008-11-28 17:30:56.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/pr37843-2.c        2010-01-25 09:50:29.575686558 +0100
-@@ -2,8 +2,8 @@
- /* { dg-do compile { target nonpic } } */
- /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=6" } */
- /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
--/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
--/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
-+/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
-+/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
- extern int foo (void);
-diff -Nur a/gcc/testsuite/gcc.target/i386/pr37843-3.c b/gcc/testsuite/gcc.target/i386/pr37843-3.c
---- a/gcc/testsuite/gcc.target/i386/pr37843-3.c        2009-01-15 16:44:41.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/i386/pr37843-3.c        2010-01-25 09:50:29.575686558 +0100
-@@ -2,8 +2,8 @@
- /* { dg-do compile { target { ilp32 && nonpic } } } */
- /* { dg-options "-O2 -msse2 -mpreferred-stack-boundary=4 -mstackrealign" } */
- /* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%\[re\]?sp" } } */
--/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
--/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
-+/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
-+/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
- #include <emmintrin.h>
-diff -Nur a/gcc/testsuite/gcc.target/i386/sse-5.c b/gcc/testsuite/gcc.target/i386/sse-5.c
---- a/gcc/testsuite/gcc.target/i386/sse-5.c    2008-09-09 16:48:15.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/sse-5.c    2010-01-25 09:50:29.575686558 +0100
-@@ -1,5 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target ilp32 } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
- /* { dg-options "-Winline -O2 -march=i386" } */
- typedef double v2df __attribute__ ((vector_size (16)));
-diff -Nur a/gcc/testsuite/gcc.target/i386/ssefn-1.c b/gcc/testsuite/gcc.target/i386/ssefn-1.c
---- a/gcc/testsuite/gcc.target/i386/ssefn-1.c  2007-08-22 11:59:14.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/i386/ssefn-1.c  2010-01-25 09:50:29.575686558 +0100
-@@ -7,6 +7,7 @@
- /* { dg-final { scan-assembler "mulss" } } */
- /* { dg-final { scan-assembler-not "movsd" } } */
- /* { dg-final { scan-assembler-not "mulsd" } } */
-+/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
- /* { dg-options "-O2 -march=i386 -msse -mfpmath=sse -fno-inline" } */
- static float xs (void)
-diff -Nur a/gcc/testsuite/gcc.target/m68k/20090709-1.c b/gcc/testsuite/gcc.target/m68k/20090709-1.c
---- a/gcc/testsuite/gcc.target/m68k/20090709-1.c       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/20090709-1.c       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,20 @@
++/* { dg-final { scan-assembler "\t.eabi_attribute 38, 1" } } */
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.space\t2" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-2.c
+@@ -0,0 +1,9 @@
 +/* { dg-do compile } */
-+/* There should be 3 occurrences of .LC0 in the code:
-+   one for the definition of "0",
-+   one for use in test1() and
-+   one for use in test2().
-+   FIXME: At the moment m68k GCC does not optimize test1() to nop
-+   for some reason.  */
-+/* { dg-final { scan-assembler-times ".LC0" 3 } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+void dummy(char *arg);
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0x3c00 = 15360 */
++__fp16 xx = 1.0;
 +
-+void test1(void)
-+{
-+  char tmp[2] = "0";
-+}
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t15360" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-3.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+void test2(void)
-+{
-+  dummy("0");
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/pr36134.c b/gcc/testsuite/gcc.target/m68k/pr36134.c
---- a/gcc/testsuite/gcc.target/m68k/pr36134.c  2008-11-14 11:49:06.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/pr36134.c  2010-01-25 09:50:29.575686558 +0100
-@@ -1,10 +1,15 @@
- /* pr36134.c
-    This test ensures that the shorter LEA instruction is used in preference
--   to the longer ADD instruction.  */
-+   to the longer ADD instruction.
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0xc000 = 49152 */
++__fp16 xx = -2.0;
 +
-+   This preference is applicable to ColdFire only.  On CPU32, we can
-+   use a sequence of two ADDQ instructions, which is faster than the
-+   LEA instruction.  */
- /* { dg-do compile }  */
--/* { dg-options "-O2" }  */
-+/* { dg-skip-if "" { *-*-* } { "-mcpu=*" } { "-mcpu=5208" } } */
-+/* { dg-options "-O2 -mcpu=5208" }  */
- /* { dg-final { scan-assembler "lea" } } */
- /* { dg-final { scan-assembler-not "add" } } */
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-gd.c b/gcc/testsuite/gcc.target/m68k/tls-gd.c
---- a/gcc/testsuite/gcc.target/m68k/tls-gd.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-gd.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t49152" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-4.c
+@@ -0,0 +1,9 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -fpic" } */
-+/* { dg-final { scan-assembler "foo@TLSGD\\(\%a5\\)" } } */
-+/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+extern int __thread foo;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0x7bff = 31743 */
++__fp16 xx = 65504.0;
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c
---- a/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c      2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t31743" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-5.c
+@@ -0,0 +1,9 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -fpic -mxgot" } */
-+/* { dg-final { scan-assembler "#foo@TLSGD,\%\[ad\]\[0-7\]" } } */
-+/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+extern int __thread foo;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* 0x3555 = 13653 */
++__fp16 xx = (1.0/3.0);
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ie.c b/gcc/testsuite/gcc.target/m68k/tls-ie.c
---- a/gcc/testsuite/gcc.target/m68k/tls-ie.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-ie.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t13653" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-6.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2" } */
-+/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
-+/* { dg-final { scan-assembler "foo@TLSIE\\(\%a5\\)" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+extern int __thread foo;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* This number is too big and is represented as infinity.  */
++/* 0x7c00 = 31744 */
++__fp16 xx = 131008.0;
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c
---- a/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c      2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t31744" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c
+@@ -0,0 +1,11 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -mxgot" } */
-+/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
-+/* { dg-final { scan-assembler "#foo@TLSIE,\%\[ad\]\[0-7\]" } } */
++/* { dg-options "-mfp16-format=ieee -pedantic" } */
 +
-+extern int __thread foo;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* This number is too big and is represented as infinity.  */
++/* We should *not* get an overflow warning here.  */
++/* 0x7c00 = 31744 */
++__fp16 xx = 123456789.0;
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld.c b/gcc/testsuite/gcc.target/m68k/tls-ld.c
---- a/gcc/testsuite/gcc.target/m68k/tls-ld.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-ld.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,14 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t31744" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -fpic" } */
-+/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */
-+/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
-+/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+static int __thread foo;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* This is the minimum normalized value.  */
++/* 0x0400 = 1024 */
++__fp16 xx = 6.10352E-5;
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c
---- a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c      2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,14 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t1024" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -fpic -mxgot" } */
-+/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */
-+/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
-+/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+static int __thread foo;
++/* Encoding taken from:  http://en.wikipedia.org/wiki/Half_precision */
++/* This is the minimum denormalized value.  */
++/* 0x0001 = 1 */
++__fp16 xx = 5.96046E-8;
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c
---- a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c 2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,14 @@
++/* { dg-final { scan-assembler "\t.size\txx, 2" } } */
++/* { dg-final { scan-assembler "\t.short\t1" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c
+@@ -0,0 +1,6 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -fpic -mxgot -mxtls" } */
-+/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */
-+/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
-+/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */
++/* { dg-options "-mfp16-format=none" } */
 +
-+static int __thread foo;
++/* __fp16 type name is not recognized unless you explicitly enable it
++   by selecting -mfp16-format=ieee or -mfp16-format=alternative.  */
++__fp16 xx = 0.0;  /* { dg-error "expected" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c
+@@ -0,0 +1,7 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=none" } */
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c
---- a/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c      2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,14 @@
++/* mode(HF) attributes are not recognized unless you explicitly enable
++   half-precision floating point by selecting -mfp16-format=ieee or
++   -mfp16-format=alternative.  */
++float xx __attribute__((mode(HF))) = 0.0;  /* { dg-error "HF" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
+@@ -0,0 +1,20 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -fpic -mxtls" } */
-+/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */
-+/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
-+/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */
++/* { dg-require-effective-target arm_neon_fp16_ok } */
++/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-add-options arm_neon_fp16 } */
 +
-+static int __thread foo;
++/* Test generation of VFP __fp16 instructions.  */
 +
-+int *
-+bar (void)
++__fp16 h1 = 0.0;
++__fp16 h2 = 1234.0;
++float f1 = 2.0;
++float f2 = -999.9;
++
++void f (void)
 +{
-+  return &foo;
++  h1 = f1;
++  f2 = h2;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-le.c b/gcc/testsuite/gcc.target/m68k/tls-le.c
---- a/gcc/testsuite/gcc.target/m68k/tls-le.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-le.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
++
++/* { dg-final { scan-assembler "\tvcvtb.f32.f16" } } */
++/* { dg-final { scan-assembler "\tvcvtb.f16.f32" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-param-1.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2" } */
-+/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
-+/* { dg-final { scan-assembler "lea \\(foo@TLSLE,\%a0\\)" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+static int __thread foo;
++/* Functions cannot have parameters of type __fp16.  */
++extern void f (__fp16);               /* { dg-error "parameters cannot have __fp16 type" } */
++extern void (*pf) (__fp16);   /* { dg-error "parameters cannot have __fp16 type" } */
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c
---- a/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c      2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
++/* These should be OK.  */
++extern void g (__fp16 *);
++extern void (*pg) (__fp16 *);
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-return-1.c
+@@ -0,0 +1,10 @@
 +/* { dg-do compile } */
-+/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
-+/* { dg-options "-O2 -mxtls" } */
-+/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
-+/* { dg-final { scan-assembler "#foo@TLSLE,\%\[ad\]\[0-7\]" } } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+static int __thread foo;
++/* Functions cannot return type __fp16.  */
++extern __fp16 f (void);               /* { dg-error "cannot return __fp16" } */
++extern __fp16 (*pf) (void);   /* { dg-error "cannot return __fp16" } */
++
++/* These should be OK.  */
++extern __fp16 *g (void);
++extern __fp16 *(*pg) (void);
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-rounding-alt-1.c
+@@ -0,0 +1,47 @@
++/* Test intermediate rounding of double to float and then to __fp16, using
++   an example of a number that would round differently if it went directly
++   from double to __fp16.  */
 +
-+int *
-+bar (void)
-+{
-+  return &foo;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/mips/branch-2.c b/gcc/testsuite/gcc.target/mips/branch-2.c
---- a/gcc/testsuite/gcc.target/mips/branch-2.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/mips/branch-2.c 2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,44 @@
-+/* Check that we correctly expand out-of-range branches */
 +/* { dg-do run } */
-+/* { dg-options "-O2 -mabi=32 -fPIC" } */
++/* { dg-options "-mfp16-format=alternative" } */
 +
 +#include <stdlib.h>
 +
-+/* This is weak so the compiler cannot assume that calls from this TU
-+   necessarily arrive here.   And hence that $gp may be clobbered in
-+   o32 and o64 ABIs.  */
++/* The original double value.  */
++#define ORIG 0x1.0020008p0
 +
-+void __attribute__ ((weak)) Foo (int i)
-+{
-+  static int once = 0;
++/* The expected (double)((__fp16)((float)ORIG)) value.  */
++#define ROUNDED 0x1.0000000p0
 +
-+  if (!i && once++)
-+    exit (0);
++typedef union u {
++  __fp16 f;
++  unsigned short h;
++} ufh;
 +
-+#if (_ABIO32 || _ABIO64)
-+  /* Clobber $gp */
-+  __asm volatile ("li $gp,0");
-+#endif
-+}
++ufh s = { ORIG };
++ufh r = { ROUNDED };
 +
-+#define N1(X)  (Foo (X))
-+#define N2(X)  (N1 (X), N1 (X+(1<<0)))
-+#define N3(X)  (N2 (X), N2 (X+(1<<1)))
-+#define N4(X)  (N3 (X), N3 (X+(1<<2)))
-+#define N5(X)  (N4 (X), N4 (X+(1<<3)))
-+#define N6(X)  (N5 (X), N5 (X+(1<<4)))
-+#define N7(X)  (N6 (X), N6 (X+(1<<5)))
-+#define N8(X)  (N7 (X), N7 (X+(1<<6)))
-+#define N9(X)  (N8 (X), N8 (X+(1<<7)))
-+#define N10(X)  (N9 (X), N9 (X+(1<<8)))
-+#define N11(X)  (N10 (X), N10 (X+(1<<9)))
-+#define N12(X)  (N11 (X), N11 (X+(1<<10)))
-+#define N13(X)  (N12 (X), N12 (X+(1<<11)))
-+#define N14(X)  (N13 (X), N13 (X+(1<<12)))
++double d = ORIG;
 +
-+int main (void)
++int
++main (void)
 +{
-+  while (1)
-+    N14 (0);
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/mips/clear-cache-2.c b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
---- a/gcc/testsuite/gcc.target/mips/clear-cache-2.c    2008-12-21 22:47:38.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/mips/clear-cache-2.c    2010-01-25 09:50:29.575686558 +0100
-@@ -2,7 +2,8 @@
- /* { dg-options "-O2 -mips32" } */
- /* { dg-final { scan-assembler-not "synci" } } */
- /* { dg-final { scan-assembler-not "jr.hb" } } */
--/* { dg-final { scan-assembler "_flush_cache" } } */
-+/* { dg-final { scan-assembler "mips_sync_icache" { target { *-sde-* } } } } */
-+/* { dg-final { scan-assembler "_flush_cache" { target { ! *-sde-* } } } } */
- void f()
- {
-diff -Nur a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
---- a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c      2008-12-21 22:47:38.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c      2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-options "-mabi=64 -mhard-float -O2 -EL" } */
-+/* { dg-require-effective-target mips_newabi_large_long_double } */
- NOMIPS16 void
- foo (long double d, long double *x)
-diff -Nur a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
---- a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c      2008-12-21 22:47:38.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c      2010-01-25 09:50:29.575686558 +0100
-@@ -1,4 +1,5 @@
- /* { dg-options "-mabi=64 -mhard-float -O2 -EB" } */
-+/* { dg-require-effective-target mips_newabi_large_long_double } */
- NOMIPS16 void
- foo (long double d, long double *x)
-diff -Nur a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
---- a/gcc/testsuite/gcc.target/mips/mips.exp   2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/mips/mips.exp   2010-01-25 09:50:29.575686558 +0100
-@@ -229,6 +229,7 @@
-     gpopt
-     local-sdata
-     long-calls
-+    octeon-useun
-     paired-single
-     plt
-     shared
-diff -Nur a/gcc/testsuite/gcc.target/mips/octeon-useun.c b/gcc/testsuite/gcc.target/mips/octeon-useun.c
---- a/gcc/testsuite/gcc.target/mips/octeon-useun.c     1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/mips/octeon-useun.c     2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,16 @@
-+/* Check the mov_u[ls][dw] patterns.  */
-+/* { dg-options "-march=octeon -O2 -mabi=64 -mocteon-useun -meb" } */
-+struct __attribute__((packed)) sl { unsigned long x; };
-+struct __attribute__((packed)) si { unsigned int x; };
-+unsigned long f1 (struct sl *s) { return s[0].x; };
-+unsigned int f2 (struct si *s) { return s[1].x; };
-+void f3 (struct sl *s, unsigned long x) { s[10].x = x; }
-+void f4 (struct si *s, unsigned int x) { s[11].x = x; }
-+void f5 (struct sl *s) { s[100].x = 0; }
-+void f6 (struct si *s) { s[101].x = 0; }
-+/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tuld\t\\\$2,0\\(\\\$4\\)\n" } } */
-+/* { dg-final { scan-assembler "\tulw\t\\\$2,4\\(\\\$4\\)\n" } } */
-+/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusd\t\\\$5,80\\(\\\$4\\)\n" } } */
-+/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusw\t\\\$5,44\\(\\\$4\\)\n" } } */
-+/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusd\t\\\$0,800\\(\\\$4\\)\n" } } */
-+/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusw\t\\\$0,404\\(\\\$4\\)\n" } } */
-diff -Nur a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c
---- a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c        2009-01-13 18:52:32.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c        2010-01-25 09:50:29.575686558 +0100
-@@ -1,7 +1,7 @@
- /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
- /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
- /* { dg-require-effective-target powerpc_altivec_ok } */
--/* { dg-options "-maltivec -mabi=altivec -O2" } */
-+/* { dg-options "-maltivec -O2" } */
- /* Check that "easy" AltiVec constants are correctly synthesized.  */
-diff -Nur a/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c b/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
---- a/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c     2009-01-13 18:52:32.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c     2010-01-25 09:50:29.575686558 +0100
-@@ -1,7 +1,7 @@
- /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
- /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
- /* { dg-require-effective-target powerpc_altivec_ok } */
--/* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
-+/* { dg-options "-maltivec -fno-inline" } */
- #include <stdarg.h>
-diff -Nur a/gcc/testsuite/gcc.target/sh/20080410-1.c b/gcc/testsuite/gcc.target/sh/20080410-1.c
---- a/gcc/testsuite/gcc.target/sh/20080410-1.c 2008-09-13 15:26:46.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/sh/20080410-1.c 2010-01-25 09:50:29.575686558 +0100
-@@ -1,5 +1,5 @@
- /* { dg-do compile { target "sh-*-*" } } */
--/* { dg-options "-O0 -m4 -ml -fira" } */
-+/* { dg-options "-O0 -m4 -ml" } */
- /* { dg-final { scan-assembler-not "add\tr0,r0" } } */
- /* This test checks that chain reloads conflict.  I they don't
-diff -Nur a/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c b/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c
---- a/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c      2007-08-27 10:47:33.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c      2010-01-25 09:50:29.575686558 +0100
-@@ -35,15 +35,15 @@
- }
- /* Aligned.  */
--struct u0 { unsigned long long d : 32; } y0;
-+struct u0 { unsigned long long d : 32; } y_0;
- unsigned long long g0() {
--  return y0.d;
-+  return y_0.d;
- }
- /* Unaligned load.  */
--struct u1 { long long c : 8; unsigned long long d : 32; } y1;
-+struct u1 { long long c : 8; unsigned long long d : 32; } y_1;
- unsigned long long g1() {
--  return y1.d;
-+  return y_1.d;
- }
- /* Unaligned load.  */
-diff -Nur a/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c b/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c
---- a/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c      2007-08-27 10:47:33.000000000 +0200
-+++ b/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c      2010-01-25 09:50:29.575686558 +0100
-@@ -5,7 +5,7 @@
- /* { dg-final { scan-assembler-times "\tmovua\\.l\t(.*)+" 2 } } */
- #ifdef __SH4A__
--#include <stdlib.h>
-+#include <string.h>
- struct s { int i; char a[10], b[10]; } x;
- int f() {
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c    2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,27 @@
-+/* Test for cross x86_64<->w64 abi standard calls.  */
-+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
-+/* { dg-additional-sources "func-2b.c" } */
++  ufh x;
 +
-+extern void __attribute__ ((sysv_abi)) abort (void);
-+long double func_cross (long double, double, float, long, int, char);
++  /* Test that the rounding is correct for static initializers.  */
++  if (s.h != r.h)
++    abort ();
 +
-+long double __attribute__ ((sysv_abi))
-+func_native (long double a, double b, float c, long d, int e, char f)
-+{
-+  long double ret;
-+  ret = a + (long double) b + (long double) c;
-+  ret *= (long double) (d + (long) e);
-+  if (f>0)
-+    ret += func_native (a,b,c,d,e,-f);
-+  return ret;
-+}
++  /* Test that the rounding is correct for a casted constant expression
++     not in a static initializer.  */
++  x.f = (__fp16)ORIG;
++  if (x.h != r.h)
++    abort ();
 +
-+int __attribute__ ((sysv_abi))
-+main ()
-+{
-+  if (func_cross (1.0,2.0,3.0,1,2,3)
-+      != func_native (1.0,2.0,3.0,1,2,3))
++  /* Test that the rounding is correct for a runtime conversion.  */
++  x.f = (__fp16)d;
++  if (x.h != r.h)
 +    abort ();
++
 +  return 0;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c    2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
-+/* Test for cross x86_64<->w64 abi standard calls.  */
-+/* { dg-options "-mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-rounding-ieee-1.c
+@@ -0,0 +1,47 @@
++/* Test intermediate rounding of double to float and then to __fp16, using
++   an example of a number that would round differently if it went directly
++   from double to __fp16.  */
 +
-+long double func_cross (long double a, double b, float c, long d, int e,
-+                      char f)
-+{
-+  long double ret;
-+  ret = a + (long double) b + (long double) c;
-+  ret *= (long double) (d + (long) e);
-+  if (f>0)
-+    ret += func_cross (a,b,c,d,e,-f);
-+  return ret;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,17 @@
-+/* Test for cross x86_64<->w64 abi standard calls via variable.  */
-+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
-+/* { dg-additional-sources "func-indirect-2b.c" } */
++/* { dg-do run } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
-+extern void __attribute__ ((sysv_abi)) abort (void);
-+typedef int (*func)(void *, char *, char *, short, long long);
-+extern func get_callback (void);
++#include <stdlib.h>
 +
-+int __attribute__ ((sysv_abi))
-+main ()
++/* The original double value.  */
++#define ORIG 0x1.0020008p0
++
++/* The expected (double)((__fp16)((float)ORIG)) value.  */
++#define ROUNDED 0x1.0000000p0
++
++typedef union u {
++  __fp16 f;
++  unsigned short h;
++} ufh;
++
++ufh s = { ORIG };
++ufh r = { ROUNDED };
++
++double d = ORIG;
++
++int
++main (void)
 +{
-+  func callme = get_callback ();
-+  if (callme (0, 0, 0, 0x1234, 0x1234567890abcdefLL))
++  ufh x;
++
++  /* Test that the rounding is correct for static initializers.  */
++  if (s.h != r.h)
 +    abort ();
-+  return 0;
-+}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,24 @@
-+/* Test for cross x86_64<->w64 abi standard calls via variable.  */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
 +
-+typedef int (*func)(void *, char *, char *, short, long long);
++  /* Test that the rounding is correct for a casted constant expression
++     not in a static initializer.  */
++  x.f = (__fp16)ORIG;
++  if (x.h != r.h)
++    abort ();
 +
-+static int
-+callback (void *ptr, char *string1, char *string2, short number,
-+        long long rand)
-+{
-+  if (ptr != 0
-+      || string1 != 0
-+      || string2 != 0
-+      || number != 0x1234
-+      || rand != 0x1234567890abcdefLL)
-+    return 1;
-+  else
-+    return 0;
-+}
++  /* Test that the rounding is correct for a runtime conversion.  */
++  x.f = (__fp16)d;
++  if (x.h != r.h)
++    abort ();
 +
-+func
-+get_callback (void)
-+{
-+  return callback;
++  return 0;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,24 @@
-+/* Test for cross x86_64<->w64 abi va_list calls.  */
-+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
-+/* { dg-additional-sources "vaarg-4b.c" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
+@@ -0,0 +1,21 @@
++/* Test promotion of __fp16 to double as arguments to unprototyped
++   function in another compilation unit.  */
 +
-+extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
-+extern int __attribute__ ((sysv_abi)) sprintf (char *,const char *, ...);
-+extern void __attribute__ ((sysv_abi)) abort (void);
++/* { dg-do run } */
++/* { dg-options "-mfp16-format=ieee" } */
++/* { dg-additional-sources "fp16-unprototyped-2.c" } */
 +
-+extern void do_cpy (char *, ...);
++#include <stdlib.h>
 +
-+int __attribute__ ((sysv_abi))
-+main ()
-+{
-+  char s[256];
++extern int f ();
 +
-+  do_cpy (s, "1","2","3","4", "5", "6", "7", "");
++static __fp16 x = 42.0;
++static __fp16 y = -42.0;
 +
-+  if (s[0] != '1' || s[1] !='2' || s[2] != '3' || s[3] != '4'
-+      || s[4] != '5' || s[5] != '6' || s[6] != '7' || s[7] != 0)
++int
++main (void)
++{
++  if (!f (x, y))
 +    abort ();
++  return 0;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
+@@ -0,0 +1,12 @@
++/* { dg-do compile } */
++/* { dg-options "-mfp16-format=ieee" } */
++
++extern int f ();
 +
++int
++f (double xx, double yy)
++{
++  if (xx == 42.0 && yy == -42.0)
++    return 1;
 +  return 0;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,31 @@
-+/* Test for cross x86_64<->w64 abi va_list calls.  */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
+@@ -0,0 +1,37 @@
++/* Test promotion of __fp16 to double as arguments to variadic function.  */
++
++/* { dg-do run } */
++/* { dg-options "-mfp16-format=ieee" } */
 +
++#include <stdlib.h>
 +#include <stdarg.h>
 +
-+extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
-+extern int __attribute__ ((sysv_abi)) sprintf (char *, const char *, ...);
++extern int f (int n, ...);
 +
-+static void
-+vdo_cpy (char *s, va_list argp)
++int 
++f (int n, ...)
 +{
-+  __SIZE_TYPE__ len;
-+  char *r = s;
-+  char *e;
-+  *r = 0;
-+  for (;;) {
-+    e = va_arg (argp, char *);
-+    if (*e == 0) break;
-+    sprintf (r,"%s", e);
-+    r += strlen (r);
-+  }
++  if (n == 2)
++    {
++      double xx, yy;
++      va_list ap;
++      va_start (ap, n);
++      xx = va_arg (ap, double);
++      yy = va_arg (ap, double);
++      va_end (ap);
++      if (xx == 42.0 && yy == -42.0)
++      return 1;
++    }
++  return 0;
 +}
 +
-+void
-+do_cpy (char *s, ...)
++static __fp16 x = 42.0;
++static __fp16 y = -42.0;
++
++int
++main (void)
 +{
-+  va_list argp;
-+  va_start (argp, s);
-+  vdo_cpy (s, argp);
-+  va_end (argp);
++  if (!f (2, x, y))
++    abort ();
++  return 0;
 +}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,17 @@
-+/* Test for cross x86_64<->w64 abi va_list calls.  */
-+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
-+/* { dg-additional-sources "vaarg-5b.c" } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/frame-pointer-1.c
+@@ -0,0 +1,42 @@
++/* Check local register variables using a register conventionally 
++   used as the frame pointer aren't clobbered under high register pressure.  */
++/* { dg-do run } */
++/* { dg-options "-Os -mthumb -fomit-frame-pointer" } */
 +
-+extern void __attribute__ ((sysv_abi)) abort (void);
-+extern int fct2 (int, ...);
++#include <stdlib.h>
 +
-+#define SZ_ARGS       1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
++int global=5;
 +
-+int __attribute__ ((sysv_abi))
-+main()
++void __attribute__((noinline)) foo(int p1, int p2, int p3, int p4)
 +{
-+  if (fct2 (-1, SZ_ARGS) != 0)
-+    abort ();
-+  return 0;
++  if (global != 5 || p1 != 1 || p2 != 2 || p3 != 3 || p4 != 4)
++    abort();
 +}
-diff -Nur a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c
---- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,37 @@
-+/* Test for cross x86_64<->w64 abi va_list calls.  */
-+/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
 +
-+#include <stdarg.h>
++int __attribute__((noinline)) test(int a, int b, int c, int d)
++{
++  register unsigned long r __asm__("r7") = 0xdeadbeef;
++  int e;
 +
-+#define SZ_ARGS       1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
++  /* ABCD are live after the call which should be enough
++     to cause r7 to be used if it weren't for the register variable.  */
++  foo(a,b,c,d);
 +
-+static int __attribute__ ((sysv_abi))
-+fct1 (va_list argp, ...)
-+{
-+  long long p1,p2;
-+  int ret = 1;
-+  __builtin_sysv_va_list argp_2;
++  e = 0;
++  __asm__ __volatile__ ("mov %0, %2"
++                      : "=r" (e)
++                      : "0" (e), "r" (r));
 +
-+  __builtin_sysv_va_start (argp_2, argp);
-+  do {
-+    p1 = va_arg (argp_2, long long);
-+    p2 = va_arg (argp, long long);
-+    if (p1 != p2)
-+      ret = 0;
-+  } while (ret && p1 != 0);
-+  __builtin_sysv_va_end (argp_2);
++  global = a+b+c+d;
 +
-+  return ret;
++  return e;
 +}
 +
-+int
-+fct2 (int dummy, ...)
++int main()
 +{
-+  va_list argp;
-+  int ret = dummy;
-+
-+  va_start (argp, dummy);
-+  ret += fct1 (argp, SZ_ARGS);
-+  va_end (argp);
-+  return ret;
++  if (test(1, 2, 3, 4) != 0xdeadbeef)
++    abort();
++  if (global != 10)
++    abort();
++  return 0;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/abi/mangle-neon.C b/gcc/testsuite/g++.dg/abi/mangle-neon.C
---- a/gcc/testsuite/g++.dg/abi/mangle-neon.C   2008-08-30 00:19:24.000000000 +0200
-+++ b/gcc/testsuite/g++.dg/abi/mangle-neon.C   2010-01-25 09:50:29.575686558 +0100
-@@ -2,7 +2,7 @@
- // { dg-do compile }
- // { dg-require-effective-target arm_neon_ok }
--// { dg-options "-mfpu=neon -mfloat-abi=softfp" }
-+// { dg-add-options arm_neon }
- #include <arm_neon.h>
-diff -Nur a/gcc/testsuite/g++.dg/eh/ref1.C b/gcc/testsuite/g++.dg/eh/ref1.C
---- a/gcc/testsuite/g++.dg/eh/ref1.C   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/eh/ref1.C   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,61 @@
-+// { dg-do run { xfail { ! arm-*-*eabi } } }
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-1.c
+@@ -0,0 +1,17 @@
++/* Check that a nop is inserted after a shift taking a register operand.  */
++/* { dg-do compile } */
++/* { dg-options "-mfix-janus-2cc" } */
++/* { dg-require-effective-target arm_not_thumb } */
++int foo(int x)
++{
++  int y;
++  int z;
++  
++  y = x << 4;
++  z = y << x;
 +
-+// catching a pointer to class by reference prohibits derived->base
-+// transformation.   The generic C++ ABI gets this wrong.  ARM EABI
-+// gets this right, except for exception specifications where a bug is
-+// acknowledged. 
++  return y+z;
++}
++/* { dg-final { scan-assembler "\tmov\tr\[0-9], r\[0-9], asl r\[0-9]\n\tnop\n" } } */
++/* { dg-final { scan-assembler-not "\tmov\tr\[0-9], r\[0-9], asl #4\n\tnop\n" } } */
 +
-+#include <stdio.h>
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/janus-2cc-shift-2.c
+@@ -0,0 +1,17 @@
++/* Check that a nop is inserted after a shift taking a register operand.  */
++/* { dg-do compile } */
++/* { dg-options "-mfix-janus-2cc -mthumb" } */
++/* { dg-require-effective-target arm_thumb1_ok } */
++int foo(int x)
++{
++  int y;
++  int z;
++  
++  y = x << 4;
++  z = y << x;
 +
-+struct A {};
++  return y+z;
++}
++/* { dg-final { scan-assembler "\tlsl\tr\[0-9], r\[0-9], r\[0-9]\n\tnop\n" } } */
++/* { dg-final { scan-assembler-not "\tlsl\tr\[0-9], r\[0-9], #4\n\tnop\n" } } */
 +
-+struct B : A {};
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/naked-3.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -Wall" } */
++/* Check that we do not get warnings about missing return statements
++   or bogus looking noreturn functions.  */
++int __attribute__((naked))
++foo(void)
++{
++  __asm__ volatile ("mov r0, #1\r\nbx lr\n");
++}
 +
-+int Foo ()
++int __attribute__((naked,noreturn))
++bar(void)
 +{
-+  B b;
-+  
-+  try
-+    {
-+      throw &b;
-+    }
-+  catch (A *&a)  // { dg-bogus "earlier handler" "" { xfail { ! arm-*-*eabi } } }
-+    {
-+      printf ("fail, caught A*&%p\n", a);
-+      return 1;
-+    }
-+  catch (B *&b)  // { dg-bogus "will be caught" "" { xfail { ! arm-*-*eabi } } }
-+    {
-+      printf ("pass, caught B*&%p\n", b);
-+    }
-+  catch (...)
-+    {
-+      printf ("fail, caught ...");
-+      return 2;
-+    }
-+  try
-+    {
-+      throw &b;
-+    }
-+  catch (A *a) // { dg-warning "by earlier handler" }
-+    {
-+      printf ("pass, caught A*%p\n", a);
-+    }
-+  catch (B *b) // { dg-warning "will be caught" }
-+    {
-+      printf ("fail, caught B*%p\n", b);
-+      return 3;
-+    }
-+  catch (...)
-+    {
-+      printf ("fail, caught ...");
-+      return 4;
-+    }
-+  return 0;
++  __asm__ volatile ("frob r0\n");
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/neon-modes-1.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-options "-O1" } */
++/* { dg-add-options arm_neon } */
 +
++#include <arm_neon.h>
 +
-+int main ()
++void neon_internal_error(int *dst, int *src)
 +{
-+  return Foo ();
++  uint16x8x4_t sval;
++
++  sval = vld4q_u16((void *)src);
++  vst4q_u16((void *)dst,sval);
 +}
-diff -Nur a/gcc/testsuite/g++.dg/eh/ref2.C b/gcc/testsuite/g++.dg/eh/ref2.C
---- a/gcc/testsuite/g++.dg/eh/ref2.C   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/eh/ref2.C   2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,70 @@
-+// { dg-do run { xfail { ! arm-*-*eabi } } }
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/neon-vmla-1.c
+@@ -0,0 +1,11 @@
++/* { dg-require-effective-target arm_neon_hw } */
++/* { dg-options "-O2 -ftree-vectorize" } */
++/* { dg-add-options arm_neon } */
++/* { dg-final { scan-assembler "vmla\\.f32" } } */
 +
-+// catching a pointer to class by reference prohibits derived->base
-+// transformation.   The generic C++ ABI gets this wrong.  ARM EABI
-+// gets this right, except for exception specifications where a bug is
-+// acknowledged. 
++/* Verify that VMLA is used.  */
++void f1(int n, float a, float x[], float y[]) {
++  int i;
++  for (i = 0; i < n; ++i)
++    y[i] = a * x[i] + y[i];
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/neon-vmls-1.c
+@@ -0,0 +1,11 @@
++/* { dg-require-effective-target arm_neon_hw } */
++/* { dg-options "-O2 -ftree-vectorize" } */
++/* { dg-add-options arm_neon } */
++/* { dg-final { scan-assembler "vmls\\.f32" } } */
 +
-+#include <stdio.h>
-+#include <exception>
-+#include <stdlib.h>
++/* Verify that VMLS is used.  */
++void f1(int n, float a, float x[], float y[]) {
++  int i;
++  for (i = 0; i < n; ++i)
++    y[i] = y[i] - a * x[i];
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
+@@ -0,0 +1,27 @@
++/* Check that NEON vector shifts support immediate values == size.  /*
 +
-+struct A {};
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_neon_ok } */
++/* { dg-add-options arm_neon } */
 +
-+struct B : A {};
++#include <arm_neon.h>
 +
-+B b;
++uint16x8_t test_vshll_n_u8 (uint8x8_t a)
++{
++    return vshll_n_u8(a, 8);
++}
 +
-+void One () throw (A *&)
++uint32x4_t test_vshll_n_u16 (uint16x4_t a)
++{   
++    return vshll_n_u16(a, 16);
++}
++
++uint64x2_t test_vshll_n_u32 (uint32x2_t a)
 +{
-+  throw &b;
++    return vshll_n_u32(a, 32);
 +}
 +
-+void Two () throw (A *&, B *&)
++/* { dg-final { scan-assembler "vshll\.u16\[  \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vshll\.u32\[  \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { scan-assembler "vshll\.u8\[   \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[      \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
++/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/pr40482.c
+@@ -0,0 +1,7 @@
++/* { dg-options "-mthumb -Os" }  */
++/* { dg-final { scan-assembler-not "ldr" } } */
++
++unsigned int foo (unsigned int i )
 +{
-+  throw &b;
++  return i | 0xff000000;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-2.c
+@@ -0,0 +1,15 @@
++/* In Thumb-2 mode, when optimizing for size, generate a "muls"
++   instruction and use the resulting condition flags rather than a
++   separate compare instruction.  */
++/* { dg-options "-mthumb -Os" }  */
++/* { dg-require-effective-target arm_thumb2_ok } */
++/* { dg-final { scan-assembler "muls" } } */
++/* { dg-final { scan-assembler-not "cmp" } } */
 +
-+void Three () throw (A *)
++int x;
++
++void f(int i, int j)
 +{
-+  throw &b;
++  if (i * j < 0)
++    x = 1;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space-3.c
+@@ -0,0 +1,17 @@
++/* In Thumb-2 mode, when optimizing for size, generate a "muls"
++   instruction and use the resulting condition flags rather than a
++   separate compare instruction.  */
++/* { dg-options "-mthumb -Os" }  */
++/* { dg-require-effective-target arm_thumb2_ok } */
++/* { dg-final { scan-assembler "muls" } } */
++/* { dg-final { scan-assembler-not "cmp" } } */
 +
-+int Foo (void (*fn)())
++int x;
++
++int f(int i, int j)
 +{
-+  try
-+    {
-+      fn ();
-+    }
-+  catch (B *b)
-+    {
-+      printf ("pass, caught B*%p\n", b);
-+    }
-+  catch (...)
-+    {
-+      printf ("fail, caught ...");
-+      return 1;
-+    }
-+  return 0;
++  i = i * j;
++  if (i < 0)
++    x = 1;
++  return i;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-space.c
+@@ -0,0 +1,10 @@
++/* Use 16-bit multiply instruction in Thumb-2 mode when optimizing for
++   size.  */
++/* { dg-options "-mthumb -Os" }  */
++/* { dg-require-effective-target arm_thumb2_ok } */
++/* { dg-final { scan-assembler "muls" } } */
 +
-+void handler ()
++int f(int i, int j) 
 +{
-+  printf ("pass, got unexpected exception\n");
-+  exit (0);
++  return i * j;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/thumb2-mul-speed.c
+@@ -0,0 +1,27 @@
++/* Do not use 16-bit multiply instructions in Thumb-2 mode when
++   optimizing for speed.  */
++/* { dg-options "-mthumb -O2" }  */
++/* { dg-require-effective-target arm_thumb2_ok } */
++/* { dg-final { scan-assembler-not "muls" } } */
 +
-+int main ()
++int f(int i, int j) 
 +{
-+  if (Foo (&Three))
-+    return 1;
-+
-+  if (Foo (&Two))
-+    return 2;
-+
-+  std::set_unexpected (handler);
-+  if (Foo (&One))
-+    return 3;
-+  printf ("fail, did not get unexpected exception\n");
-+  return 4;
++  return i * j;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/ext/altivec-17.C b/gcc/testsuite/g++.dg/ext/altivec-17.C
---- a/gcc/testsuite/g++.dg/ext/altivec-17.C    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/altivec-17.C    2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,16 @@
-+// { dg-do compile { target powerpc*-*-* } }
-+// { dg-require-effective-target powerpc_altivec_ok }
-+// { dg-options "-maltivec" }
-+
-+// Make sure that bool vectors have distinct names to int vectors
 +
-+#define vector__ __attribute__((altivec (vector__)))
-+#define bool__ __attribute__((altivec(bool__)))
-+
-+typedef vector__ unsigned int simd_type;
-+typedef vector__ bool__ int bool_simd_type;
++int x;
 +
-+void Foo (bool_simd_type const &a)
++void g(int i, int j)
 +{
-+  simd_type const &v = a; // { dg-error "'const unsigned int __vector__&' from expression of type 'const __bool int __vector__'" }
++  if (i * j < 0)
++    x = 1;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-1.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-2.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
-+
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=alternative" } */
 +
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,5 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do run { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=alternative -ffast-math" } */
++int h(int i, int j)
++{
++  i = i * j;
++  if (i < 0)
++    x = 1;
++  return i;
++}
 +
-+#include "arm-fp16-ops.h"
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C       2010-01-25 09:50:29.575686558 +0100
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c
 @@ -0,0 +1,15 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_fp16_ok } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+/* { dg-add-options arm_neon_fp16 } */
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+#include "arm-fp16-ops.h"
++extern void bar (double);
 +
-+/* We've specified options for hardware float, including fp16 support, so
-+   we should not see any calls to libfuncs here.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,15 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_fp16_ok } */
-+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
-+/* { dg-add-options arm_neon_fp16 } */
++void
++foo (double *p, double a, int n)
++{
++  do
++    bar (*--p + a);
++  while (n--);
++}
 +
-+#include "arm-fp16-ops.h"
++/* { dg-final { scan-assembler "fldmdbd" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+/* We've specified options for hardware float, including fp16 support, so
-+   we should not see any calls to libfuncs here.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+/* { dg-add-options arm_neon } */
++extern void baz (float);
 +
-+#include "arm-fp16-ops.h"
++void
++foo (float *p, float a, int n)
++{
++  do
++    bar (*--p + a);
++  while (n--);
++}
 +
-+/* We've specified options for hardware float, so we should not see any 
-+   calls to libfuncs here except for those to the conversion functions.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C       1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C       2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,13 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
-+/* { dg-add-options arm_neon } */
++/* { dg-final { scan-assembler "fldmdbs" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+#include "arm-fp16-ops.h"
++extern void bar (double);
 +
-+/* We've specified options for hardware float, so we should not see any 
-+   calls to libfuncs here except for those to the conversion functions.  */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf2" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__.*hf3" } } */
-+/* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops.h 2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,135 @@
-+/* Test various operators on __fp16 and mixed __fp16/float operands.  */
++void
++foo (double *p, double a, int n)
++{
++  do
++    bar (*p++ + a);
++  while (n--);
++}
 +
-+#include <assert.h>
++/* { dg-final { scan-assembler "fldmiad" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-ldmias.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+#define CHECK(e,r) assert ((e) == r)
-+#define CHECK2(e,r) (assert ((e) == r), temp = (e), assert (temp == r))
-+#define TEST(e) assert (e)
-+#define TESTNOT(e) assert (!(e))
++extern void baz (float);
 +
-+volatile __fp16 h0 = 0.0;
-+volatile __fp16 h1 = 1.0;
-+volatile __fp16 h42 = 42.0;
-+volatile __fp16 hm2 = -2.0;
-+volatile __fp16 temp;
++void
++foo (float *p, float a, int n)
++{
++  do
++    bar (*p++ + a);
++  while (n--);
++}
 +
-+volatile float f0 = 0.0;
-+volatile float f1 = 1.0;
-+volatile float f42 = 42.0;
-+volatile float fm2 = -2.0;
++/* { dg-final { scan-assembler "fldmias" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+int main (void)
++void
++foo (double *p, double a, double b, int n)
 +{
-+  TEST (h1);
-+  TESTNOT (h0);
-+  TEST (!h0);
-+  TESTNOT (!h1);
++  double c = a + b;
++  do
++    *--p = c;
++  while (n--);
++}
 +
-+  CHECK2 (-h1, -1.0);
-+  CHECK2 (+h1, 1.0);
++/* { dg-final { scan-assembler "fstmdbd" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+  CHECK (h1++, 1.0);
-+  CHECK (h1, 2.0);
-+  CHECK (++h1, 3.0);
-+  CHECK (h1, 3.0);
++void
++foo (float *p, float a, float b, int n)
++{
++  float c = a + b;
++  do
++    *--p = c;
++  while (n--);
++}
 +
-+  CHECK (--h1, 2.0);
-+  CHECK (h1, 2.0);
-+  CHECK (h1--, 2.0);
-+  CHECK (h1, 1.0);
++/* { dg-final { scan-assembler "fstmdbs" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-stmiad.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+  CHECK2 (h42 * hm2, -84.0);
-+  CHECK2 (h42 * (__fp16) -2.0, -84.0);
-+  CHECK2 (h42 * fm2, -84.0);
-+  CHECK2 (f42 * hm2, -84.0);
++void
++foo (double *p, double a, double b, int n)
++{
++  double c = a + b;
++  do
++    *p++ = c;
++  while (n--);
++}
 +
-+  CHECK2 (h42 / hm2, -21.0);
-+  CHECK2 (h42 / (__fp16) -2.0, -21.0);
-+  CHECK2 (h42 / fm2, -21.0);
-+  CHECK2 (f42 / hm2, -21.0);
++/* { dg-final { scan-assembler "fstmiad" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arm/vfp-stmias.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
 +
-+  CHECK2 (hm2 + h42, 40.0);
-+  CHECK2 ((__fp16)-2.0 + h42, 40.0);
-+  CHECK2 (hm2 + f42, 40.0);
-+  CHECK2 (fm2 + h42, 40.0);
++void
++foo (float *p, float a, float b, int n)
++{
++  float c = a + b;
++  do
++    *p++ = c;
++  while (n--);
++}
 +
-+  CHECK2 (hm2 - h42, -44.0);
-+  CHECK2 ((__fp16)-2.0 - h42, -44.0);
-+  CHECK2 (hm2 - f42, -44.0);
-+  CHECK2 (fm2 - h42, -44.0);
++/* { dg-final { scan-assembler "fstmias" } } */
+--- a/gcc/testsuite/gcc.target/i386/387-1.c
++++ b/gcc/testsuite/gcc.target/i386/387-1.c
+@@ -1,6 +1,7 @@
+ /* Verify that -mno-fancy-math-387 works.  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
+ /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
+ /* { dg-final { scan-assembler "call\t(.*)sin" } } */
+ /* { dg-final { scan-assembler "call\t(.*)cos" } } */
+--- a/gcc/testsuite/gcc.target/i386/387-5.c
++++ b/gcc/testsuite/gcc.target/i386/387-5.c
+@@ -1,6 +1,7 @@
+ /* Verify that -mno-fancy-math-387 works.  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
+ /* { dg-options "-O -ffast-math -mfpmath=387 -mno-fancy-math-387 -march=i386" } */
+ /* { dg-final { scan-assembler "call\t(.*)atan" } } */
+ /* { dg-final { scan-assembler "call\t(.*)log1p" } } */
+--- a/gcc/testsuite/gcc.target/i386/cmov7.c
++++ b/gcc/testsuite/gcc.target/i386/cmov7.c
+@@ -1,6 +1,7 @@
+ /* PR middle-end/33187 */
+ /* { dg-do compile } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
+ /* { dg-options "-O2 -ffast-math -march=k8 -mbranch-cost=5 -mfpmath=387" } */
+ /* { dg-final { scan-assembler "fcmov" } } */
+--- a/gcc/testsuite/gcc.target/i386/funcspec-1.c
++++ b/gcc/testsuite/gcc.target/i386/funcspec-1.c
+@@ -3,6 +3,7 @@
+    for a function that doesn't use attribute((option)).  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
+ /* { dg-options "-O3 -ftree-vectorize -march=i386" } */
+ /* { dg-final { scan-assembler "addps\[ \t\]" } } */
+ /* { dg-final { scan-assembler "fsubs\[ \t\]" } } */
+--- a/gcc/testsuite/gcc.target/i386/funcspec-8.c
++++ b/gcc/testsuite/gcc.target/i386/funcspec-8.c
+@@ -1,6 +1,7 @@
+ /* Test whether using target specific options, we can use the x86 builtin
+    functions in functions with the appropriate function specific options.  */
+ /* { dg-do compile } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=k8" } } */
+ /* { dg-options "-O2 -march=k8 -mfpmath=sse" } */
+ typedef float     __m128  __attribute__ ((__vector_size__ (16), __may_alias__));
+--- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c
++++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-1.c
+@@ -1,5 +1,6 @@
+ /* { dg-do preprocess } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
+ /* { dg-options "-march=i386" } */
+ #ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
+--- a/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c
++++ b/gcc/testsuite/gcc.target/i386/gcc-have-sync-compare-and-swap-2.c
+@@ -1,5 +1,6 @@
+ /* { dg-do preprocess } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i486" } } */
+ /* { dg-options "-march=i486" } */
+ #ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
+--- a/gcc/testsuite/gcc.target/i386/isa-10.c
++++ b/gcc/testsuite/gcc.target/i386/isa-10.c
+@@ -1,4 +1,5 @@
+ /* { dg-do run } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=x86-64" } } */
+ /* { dg-options "-march=x86-64 -msse5 -mno-sse4" } */
+ extern void abort (void);
+--- a/gcc/testsuite/gcc.target/i386/isa-6.c
++++ b/gcc/testsuite/gcc.target/i386/isa-6.c
+@@ -1,4 +1,5 @@
+ /* { dg-do run } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
+ /* { dg-options "-march=amdfam10 -mno-sse4" } */
+ extern void abort (void);
+--- a/gcc/testsuite/gcc.target/i386/isa-7.c
++++ b/gcc/testsuite/gcc.target/i386/isa-7.c
+@@ -1,4 +1,5 @@
+ /* { dg-do run } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
+ /* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */
+ extern void abort (void);
+--- a/gcc/testsuite/gcc.target/i386/isa-8.c
++++ b/gcc/testsuite/gcc.target/i386/isa-8.c
+@@ -1,4 +1,5 @@
+ /* { dg-do run } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
+ /* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */
+ extern void abort (void);
+--- a/gcc/testsuite/gcc.target/i386/isa-9.c
++++ b/gcc/testsuite/gcc.target/i386/isa-9.c
+@@ -1,4 +1,5 @@
+ /* { dg-do run } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=amdfam10" } } */
+ /* { dg-options "-march=amdfam10 -mno-sse5" } */
+ extern void abort (void);
+--- a/gcc/testsuite/gcc.target/i386/lea.c
++++ b/gcc/testsuite/gcc.target/i386/lea.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentiumpro" } } */
+ /* { dg-options "-O2 -march=pentiumpro" } */
+ /* { dg-final { scan-assembler "leal" } } */
+ typedef struct {
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/i386/movbe-1.c
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mmovbe" } */
 +
-+  TEST (hm2 < h42);
-+  TEST (hm2 < (__fp16)42.0);
-+  TEST (hm2 < f42);
-+  TEST (fm2 < h42);
++extern int x;
 +
-+  TEST (h42 > hm2);
-+  TEST ((__fp16)42.0 > hm2);
-+  TEST (h42 > fm2);
-+  TEST (f42 > hm2);
++void
++foo (int i)
++{
++  x = __builtin_bswap32 (i);
++}
 +
-+  TEST (hm2 <= h42);
-+  TEST (hm2 <= (__fp16)42.0);
-+  TEST (hm2 <= f42);
-+  TEST (fm2 <= h42);
++int
++bar ()
++{
++  return __builtin_bswap32 (x);
++}
 +
-+  TEST (h42 >= hm2);
-+  TEST (h42 >= (__fp16)-2.0);
-+  TEST (h42 >= fm2);
-+  TEST (f42 >= hm2);
++/* { dg-final { scan-assembler-times "movbe\[ \t\]" 2 } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/i386/movbe-2.c
+@@ -0,0 +1,19 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mmovbe" } */
 +
-+  TESTNOT (h1 == hm2);
-+  TEST (h1 == h1);
-+  TEST (h1 == (__fp16)1.0);
-+  TEST (h1 == f1);
-+  TEST (f1 == h1);
++extern long long x;
 +
-+  TEST (h1 != hm2);
-+  TESTNOT (h1 != h1);
-+  TESTNOT (h1 != (__fp16)1.0);
-+  TESTNOT (h1 != f1);
-+  TESTNOT (f1 != h1);
++void
++foo (long long i)
++{
++  x = __builtin_bswap64 (i);
++}
 +
-+  CHECK2 ((h1 ? hm2 : h42), -2.0);
-+  CHECK2 ((h0 ? hm2 : h42), 42.0);
++long long
++bar ()
++{
++  return __builtin_bswap64 (x);
++}
 +
-+  CHECK (h0 = h42, 42.0);
-+  CHECK (h0, 42.0);
-+  CHECK (h0 = (__fp16)-2.0, -2.0);
-+  CHECK (h0, -2.0);
-+  CHECK (h0 = f0, 0.0);
-+  CHECK (h0, 0.0);
++/* { dg-final { scan-assembler-times "movbe\[ \t\]" 4 { target ilp32 } } } */
++/* { dg-final { scan-assembler-times "movbe\[ \t\]" 2 { target lp64 } } } */
+--- a/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
++++ b/gcc/testsuite/gcc.target/i386/pentium4-not-mull.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=pentium4" } } */
+ /* { dg-options "-O2 -march=pentium4" } */
+ /* { dg-final { scan-assembler-not "imull" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/i386/pr37216.c
+@@ -0,0 +1,17 @@
++/* { dg-do run } */
++/* { dg-options "-O3 -msse2" } */
++/* { dg-options "-O3 -msse2 -mpe-aligned-commons" { target pe_aligned_commons } } */
 +
-+  CHECK (h0 += h1, 1.0);
-+  CHECK (h0, 1.0);
-+  CHECK (h0 += (__fp16)1.0, 2.0);
-+  CHECK (h0, 2.0);
-+  CHECK (h0 += fm2, 0.0);
-+  CHECK (h0, 0.0);
++#include "sse2-check.h"
 +
-+  CHECK (h0 -= h1, -1.0);
-+  CHECK (h0, -1.0);
-+  CHECK (h0 -= (__fp16)1.0, -2.0);
-+  CHECK (h0, -2.0);
-+  CHECK (h0 -= fm2, 0.0);
-+  CHECK (h0, 0.0);
++int iarr[64];
++int iint = 0;
 +
-+  h0 = hm2;
-+  CHECK (h0 *= hm2, 4.0);
-+  CHECK (h0, 4.0);
-+  CHECK (h0 *= (__fp16)-2.0, -8.0);
-+  CHECK (h0, -8.0);
-+  CHECK (h0 *= fm2, 16.0);
-+  CHECK (h0, 16.0);
++void
++sse2_test (void)
++{
++  int i;
 +
-+  CHECK (h0 /= hm2, -8.0);
-+  CHECK (h0, -8.0);
-+  CHECK (h0 /= (__fp16)-2.0, 4.0);
-+  CHECK (h0, 4.0);
-+  CHECK (h0 /= fm2, -2.0);
-+  CHECK (h0, -2.0);
++  for (i = 0; i < 64; i++)
++    iarr[i] = -2;
++}
+--- a/gcc/testsuite/gcc.target/i386/pr37843-1.c
++++ b/gcc/testsuite/gcc.target/i386/pr37843-1.c
+@@ -2,8 +2,8 @@
+ /* { dg-do compile { target nonpic } } */
+ /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=5" } */
+ /* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+-/* { dg-final { scan-assembler "call\[\\t \]*foo" } } */
+-/* { dg-final { scan-assembler-not "jmp\[\\t \]*foo" } } */
++/* { dg-final { scan-assembler "call\[\\t \]*_?foo" } } */
++/* { dg-final { scan-assembler-not "jmp\[\\t \]*_?foo" } } */
+ extern int foo (void);
+--- a/gcc/testsuite/gcc.target/i386/pr37843-2.c
++++ b/gcc/testsuite/gcc.target/i386/pr37843-2.c
+@@ -2,8 +2,8 @@
+ /* { dg-do compile { target nonpic } } */
+ /* { dg-options "-O2 -mpreferred-stack-boundary=6 -mincoming-stack-boundary=6" } */
+ /* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */
+-/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
+-/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
++/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
++/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
+ extern int foo (void);
+--- a/gcc/testsuite/gcc.target/i386/pr37843-3.c
++++ b/gcc/testsuite/gcc.target/i386/pr37843-3.c
+@@ -2,8 +2,8 @@
+ /* { dg-do compile { target { ilp32 && nonpic } } } */
+ /* { dg-options "-O2 -msse2 -mpreferred-stack-boundary=4 -mstackrealign" } */
+ /* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%\[re\]?sp" } } */
+-/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
+-/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
++/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
++/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
+ #include <emmintrin.h>
+--- a/gcc/testsuite/gcc.target/i386/sse-5.c
++++ b/gcc/testsuite/gcc.target/i386/sse-5.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
+ /* { dg-options "-Winline -O2 -march=i386" } */
+ typedef double v2df __attribute__ ((vector_size (16)));
+--- a/gcc/testsuite/gcc.target/i386/ssefn-1.c
++++ b/gcc/testsuite/gcc.target/i386/ssefn-1.c
+@@ -7,6 +7,7 @@
+ /* { dg-final { scan-assembler "mulss" } } */
+ /* { dg-final { scan-assembler-not "movsd" } } */
+ /* { dg-final { scan-assembler-not "mulsd" } } */
++/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
+ /* { dg-options "-O2 -march=i386 -msse -mfpmath=sse -fno-inline" } */
+ static float xs (void)
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/20090709-1.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* There should be 3 occurrences of .LC0 in the code:
++   one for the definition of "0",
++   one for use in test1() and
++   one for use in test2().
++   FIXME: At the moment m68k GCC does not optimize test1() to nop
++   for some reason.  */
++/* { dg-final { scan-assembler-times ".LC0" 3 } } */
 +
-+  CHECK ((h0, h1), 1.0);
++void dummy(char *arg);
 +
-+  return 0;
++void test1(void)
++{
++  char tmp[2] = "0";
 +}
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-mangle-1.C        2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,14 @@
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+
-+/* Test mangling */
-+
-+/* { dg-final { scan-assembler "\t.global\t_Z1fPDh" } } */
-+void f (__fp16 *x) { }
-+
-+/* { dg-final { scan-assembler "\t.global\t_Z1gPDhS_" } } */
-+void g (__fp16 *x, __fp16 *y) { }
 +
-+/* { dg-final { scan-assembler "\t.global\t_ZN1SIDhDhE1iE" } } */
-+template <typename T, typename U> struct S { static int i; }; 
-+template <> int S<__fp16, __fp16>::i = 3;
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-overload-1.C      2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,16 @@
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
++void test2(void)
++{
++  dummy("0");
++}
+--- a/gcc/testsuite/gcc.target/m68k/pr36134.c
++++ b/gcc/testsuite/gcc.target/m68k/pr36134.c
+@@ -1,10 +1,15 @@
+ /* pr36134.c
+    This test ensures that the shorter LEA instruction is used in preference
+-   to the longer ADD instruction.  */
++   to the longer ADD instruction.
 +
-+/* __fp16 values are autoconverted to float and should therefore be treated
-+ * just like float for overloading purposes.  */
++   This preference is applicable to ColdFire only.  On CPU32, we can
++   use a sequence of two ADDQ instructions, which is faster than the
++   LEA instruction.  */
+ /* { dg-do compile }  */
+-/* { dg-options "-O2" }  */
++/* { dg-skip-if "" { *-*-* } { "-mcpu=*" } { "-mcpu=5208" } } */
++/* { dg-options "-O2 -mcpu=5208" }  */
+ /* { dg-final { scan-assembler "lea" } } */
+ /* { dg-final { scan-assembler-not "add" } } */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -fpic -mxgot" } */
++/* { dg-final { scan-assembler "#foo@TLSGD,\%\[ad\]\[0-7\]" } } */
++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
 +
-+extern int frobnify (float x);
-+extern int frobnify (double x);
++extern int __thread foo;
 +
-+int g (void)
++int *
++bar (void)
 +{
-+  return frobnify ((__fp16)1.0);
++  return &foo;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-gd.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -fpic" } */
++/* { dg-final { scan-assembler "foo@TLSGD\\(\%a5\\)" } } */
++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
 +
-+/* { dg-final { scan-assembler "_Z8frobnifyf" } } */
-+/* { dg-final { scan-assembler-not " _Z8frobnifyd" } } */
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C 1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-param-1.C 2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
-+
-+/* Functions cannot have parameters of type __fp16.  */
-+extern void f (__fp16);               /* { dg-error "parameters cannot have __fp16 type" } */
-+extern void (*pf) (__fp16);   /* { dg-error "parameters cannot have __fp16 type" } */
-+
-+/* These should be OK.  */
-+extern void g (__fp16 *);
-+extern void (*pg) (__fp16 *);
-diff -Nur a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C
---- a/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/arm-fp16/fp16-return-1.C        2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,10 @@
-+/* { dg-do compile { target arm*-*-* } } */
-+/* { dg-options "-mfp16-format=ieee" } */
++extern int __thread foo;
 +
-+/* Functions cannot return type __fp16.  */
-+extern __fp16 f (void);               /* { dg-error "cannot return __fp16" } */
-+extern __fp16 (*pf) (void);   /* { dg-error "cannot return __fp16" } */
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -mxgot" } */
++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
++/* { dg-final { scan-assembler "#foo@TLSIE,\%\[ad\]\[0-7\]" } } */
 +
-+/* These should be OK.  */
-+extern __fp16 *g (void);
-+extern __fp16 *(*pg) (void);
-diff -Nur a/gcc/testsuite/g++.dg/ext/dllexport2a.cc b/gcc/testsuite/g++.dg/ext/dllexport2a.cc
---- a/gcc/testsuite/g++.dg/ext/dllexport2a.cc  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/dllexport2a.cc  2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,21 @@
-+extern void i1();
-+extern void i3();
-+extern void i4();
-+extern void i5();
++extern int __thread foo;
 +
-+extern void e1();
-+extern void e3();
-+extern void e4();
-+extern void e5();
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-ie.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2" } */
++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
++/* { dg-final { scan-assembler "foo@TLSIE\\(\%a5\\)" } } */
 +
-+int main () {
-+  i1();
-+  i3();
-+  i4();
-+  i5();
++extern int __thread foo;
 +
-+  e1();
-+  e3();
-+  e4();
-+  e5();
++int *
++bar (void)
++{
++  return &foo;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/ext/dllexport2.C b/gcc/testsuite/g++.dg/ext/dllexport2.C
---- a/gcc/testsuite/g++.dg/ext/dllexport2.C    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/dllexport2.C    2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,52 @@
-+// { dg-do link }
-+// { dg-require-dll "" }
-+// { dg-additional-sources "dllexport2a.cc" }
-+// { dg-options "-O2" }
-+
-+/* Test that inline functions declared "dllexport" appear in object
-+   files, even if they are not called.
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -fpic -mxgot -mxtls" } */
++/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */
++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
++/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */
 +
-+   This behavior is required by the ARM C++ ABI:
++static int __thread foo;
 +
-+     Exporting a function that can be inlined should force the
-+     creation and export of an out-of-line copy of it.
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -fpic -mxgot" } */
++/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */
++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
++/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */
 +
-+   and should presumably also apply.
++static int __thread foo;
 +
-+   Visual Studio 2005 also honors that rule.  */
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -fpic -mxtls" } */
++/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */
++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
++/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */
 +
-+__declspec(dllexport) inline void i1() {}
++static int __thread foo;
 +
-+__declspec(dllexport) extern inline void e1() {}
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-ld.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -fpic" } */
++/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */
++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */
++/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */
 +
-+/* It is invalid to declare the function inline after its definition.  */
-+#if 0
-+__declspec(dllexport) void i2() {}
-+inline void i2();
++static int __thread foo;
 +
-+__declspec(dllexport) extern void e2() {}
-+inline void e2();
-+#endif
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2 -mxtls" } */
++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
++/* { dg-final { scan-assembler "#foo@TLSLE,\%\[ad\]\[0-7\]" } } */
 +
-+__declspec(dllexport) inline void i3() {}
-+void i3();
++static int __thread foo;
 +
-+__declspec(dllexport) inline void e3() {}
-+extern void e3();
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/m68k/tls-le.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */
++/* { dg-options "-O2" } */
++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */
++/* { dg-final { scan-assembler "lea \\(foo@TLSLE,\%a0\\)" } } */
 +
-+__declspec(dllexport) void i4();
-+inline void i4() {};
++static int __thread foo;
 +
-+__declspec(dllexport) extern void e4();
-+inline void e4() {};
++int *
++bar (void)
++{
++  return &foo;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/mips/branch-2.c
+@@ -0,0 +1,44 @@
++/* Check that we correctly expand out-of-range branches */
++/* { dg-do run } */
++/* { dg-options "-O2 -mabi=32 -fPIC" } */
 +
-+__declspec(dllexport) inline void i5();
-+void i5() {};
++#include <stdlib.h>
 +
-+__declspec(dllexport) inline void e5();
-+extern void e5() {};
++/* This is weak so the compiler cannot assume that calls from this TU
++   necessarily arrive here.   And hence that $gp may be clobbered in
++   o32 and o64 ABIs.  */
 +
-+/* Make sure that just declaring the function -- without defining it
-+   -- does not cause errors.  */
-+__declspec(dllexport) inline void i6();
-+__declspec(dllexport) extern inline void e6();
-diff -Nur a/gcc/testsuite/g++.dg/ext/ms-1.C b/gcc/testsuite/g++.dg/ext/ms-1.C
---- a/gcc/testsuite/g++.dg/ext/ms-1.C  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/ext/ms-1.C  2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,17 @@
++void __attribute__ ((weak)) Foo (int i)
++{
++  static int once = 0;
 +
-+// MS allows more things to be pointers to member functions
-+// { dg-options "-fms-extensions" }
++  if (!i && once++)
++    exit (0);
 +
-+struct X
-+{
-+  void Foo (X *);
-+  void Bar ();
-+};
++#if (_ABIO32 || _ABIO64)
++  /* Clobber $gp */
++  __asm volatile ("li $gp,0");
++#endif
++}
 +
-+void Quux (void (X::*) ());
++#define N1(X)  (Foo (X))
++#define N2(X)  (N1 (X), N1 (X+(1<<0)))
++#define N3(X)  (N2 (X), N2 (X+(1<<1)))
++#define N4(X)  (N3 (X), N3 (X+(1<<2)))
++#define N5(X)  (N4 (X), N4 (X+(1<<3)))
++#define N6(X)  (N5 (X), N5 (X+(1<<4)))
++#define N7(X)  (N6 (X), N6 (X+(1<<5)))
++#define N8(X)  (N7 (X), N7 (X+(1<<6)))
++#define N9(X)  (N8 (X), N8 (X+(1<<7)))
++#define N10(X)  (N9 (X), N9 (X+(1<<8)))
++#define N11(X)  (N10 (X), N10 (X+(1<<9)))
++#define N12(X)  (N11 (X), N11 (X+(1<<10)))
++#define N13(X)  (N12 (X), N12 (X+(1<<11)))
++#define N14(X)  (N13 (X), N13 (X+(1<<12)))
 +
-+void X::Foo (X *ptr)  // { dg-message "candidates" }
++int main (void)
 +{
-+  Quux (Foo); // { dg-error "no matches" }
-+  Quux (Bar);
++  while (1)
++    N14 (0);
++  return 0;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/init/ref15.C b/gcc/testsuite/g++.dg/init/ref15.C
---- a/gcc/testsuite/g++.dg/init/ref15.C        2007-10-04 19:58:07.000000000 +0200
-+++ b/gcc/testsuite/g++.dg/init/ref15.C        2010-01-25 09:50:29.575686558 +0100
-@@ -1,6 +1,8 @@
- // PR c++/20416.  We correctly constructed the temporary S in foo(),
- // but incorrectly destroyed it every time foo() was called.
--// { dg-do run }
-+// When using a wrapped target, there is no way to override the exit
-+// code after returning from main.
-+// { dg-do run { target unwrapped } }
- extern "C" void abort (void);
- extern "C" void _exit (int);
+--- a/gcc/testsuite/gcc.target/mips/clear-cache-2.c
++++ b/gcc/testsuite/gcc.target/mips/clear-cache-2.c
+@@ -2,7 +2,8 @@
+ /* { dg-options "-O2 -mips32" } */
+ /* { dg-final { scan-assembler-not "synci" } } */
+ /* { dg-final { scan-assembler-not "jr.hb" } } */
+-/* { dg-final { scan-assembler "_flush_cache" } } */
++/* { dg-final { scan-assembler "mips_sync_icache" { target { *-sde-* } } } } */
++/* { dg-final { scan-assembler "_flush_cache" { target { ! *-sde-* } } } } */
  
-diff -Nur a/gcc/testsuite/g++.dg/opt/alias5.C b/gcc/testsuite/g++.dg/opt/alias5.C
---- a/gcc/testsuite/g++.dg/opt/alias5.C        1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/opt/alias5.C        2010-01-25 09:50:29.575686558 +0100
-@@ -0,0 +1,24 @@
-+// { dg-options "-O2" }
-+// ICE in struct-alias
+ void f()
+ {
+--- a/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
++++ b/gcc/testsuite/gcc.target/mips/fpr-moves-5.c
+@@ -1,4 +1,5 @@
+ /* { dg-options "-mabi=64 -mhard-float -O2 -EL" } */
++/* { dg-require-effective-target mips_newabi_large_long_double } */
+ NOMIPS16 void
+ foo (long double d, long double *x)
+--- a/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
++++ b/gcc/testsuite/gcc.target/mips/fpr-moves-6.c
+@@ -1,4 +1,5 @@
+ /* { dg-options "-mabi=64 -mhard-float -O2 -EB" } */
++/* { dg-require-effective-target mips_newabi_large_long_double } */
+ NOMIPS16 void
+ foo (long double d, long double *x)
+--- a/gcc/testsuite/gcc.target/mips/mips.exp
++++ b/gcc/testsuite/gcc.target/mips/mips.exp
+@@ -229,6 +229,7 @@ foreach option {
+     gpopt
+     local-sdata
+     long-calls
++    octeon-useun
+     paired-single
+     plt
+     shared
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/mips/octeon-useun.c
+@@ -0,0 +1,16 @@
++/* Check the mov_u[ls][dw] patterns.  */
++/* { dg-options "-march=octeon -O2 -mabi=64 -mocteon-useun -meb" } */
++struct __attribute__((packed)) sl { unsigned long x; };
++struct __attribute__((packed)) si { unsigned int x; };
++unsigned long f1 (struct sl *s) { return s[0].x; };
++unsigned int f2 (struct si *s) { return s[1].x; };
++void f3 (struct sl *s, unsigned long x) { s[10].x = x; }
++void f4 (struct si *s, unsigned int x) { s[11].x = x; }
++void f5 (struct sl *s) { s[100].x = 0; }
++void f6 (struct si *s) { s[101].x = 0; }
++/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tuld\t\\\$2,0\\(\\\$4\\)\n" } } */
++/* { dg-final { scan-assembler "\tulw\t\\\$2,4\\(\\\$4\\)\n" } } */
++/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusd\t\\\$5,80\\(\\\$4\\)\n" } } */
++/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusw\t\\\$5,44\\(\\\$4\\)\n" } } */
++/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusd\t\\\$0,800\\(\\\$4\\)\n" } } */
++/* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tusw\t\\\$0,404\\(\\\$4\\)\n" } } */
+--- a/gcc/testsuite/gcc.target/powerpc/altivec-consts.c
++++ b/gcc/testsuite/gcc.target/powerpc/altivec-consts.c
+@@ -1,7 +1,7 @@
+ /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
+ /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
+ /* { dg-require-effective-target powerpc_altivec_ok } */
+-/* { dg-options "-maltivec -mabi=altivec -O2" } */
++/* { dg-options "-maltivec -O2" } */
+ /* Check that "easy" AltiVec constants are correctly synthesized.  */
+--- a/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
++++ b/gcc/testsuite/gcc.target/powerpc/altivec-varargs-1.c
+@@ -1,7 +1,7 @@
+ /* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
+ /* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
+ /* { dg-require-effective-target powerpc_altivec_ok } */
+-/* { dg-options "-maltivec -mabi=altivec -fno-inline" } */
++/* { dg-options "-maltivec -fno-inline" } */
+ #include <stdarg.h>
+--- a/gcc/testsuite/gcc.target/sh/20080410-1.c
++++ b/gcc/testsuite/gcc.target/sh/20080410-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile { target "sh-*-*" } } */
+-/* { dg-options "-O0 -m4 -ml -fira" } */
++/* { dg-options "-O0 -m4 -ml" } */
+ /* { dg-final { scan-assembler-not "add\tr0,r0" } } */
+ /* This test checks that chain reloads conflict.  I they don't
+--- a/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c
++++ b/gcc/testsuite/gcc.target/sh/sh4a-bitmovua.c
+@@ -35,15 +35,15 @@ long long f4() {
+ }
+ /* Aligned.  */
+-struct u0 { unsigned long long d : 32; } y0;
++struct u0 { unsigned long long d : 32; } y_0;
+ unsigned long long g0() {
+-  return y0.d;
++  return y_0.d;
+ }
+ /* Unaligned load.  */
+-struct u1 { long long c : 8; unsigned long long d : 32; } y1;
++struct u1 { long long c : 8; unsigned long long d : 32; } y_1;
+ unsigned long long g1() {
+-  return y1.d;
++  return y_1.d;
+ }
+ /* Unaligned load.  */
+--- a/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c
++++ b/gcc/testsuite/gcc.target/sh/sh4a-memmovua.c
+@@ -5,7 +5,7 @@
+ /* { dg-final { scan-assembler-times "\tmovua\\.l\t(.*)+" 2 } } */
+ #ifdef __SH4A__
+-#include <stdlib.h>
++#include <string.h>
+ struct s { int i; char a[10], b[10]; } x;
+ int f() {
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
+@@ -0,0 +1,27 @@
++/* Test for cross x86_64<->w64 abi standard calls.  */
++/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
++/* { dg-additional-sources "func-2b.c" } */
 +
-+typedef int (*PFN)(void);
-+int f (void);
-+struct Container
-+{
-+  PFN ptr;
-+};
++extern void __attribute__ ((sysv_abi)) abort (void);
++long double func_cross (long double, double, float, long, int, char);
 +
-+inline PFN Get (struct Container *tpl)
++long double __attribute__ ((sysv_abi))
++func_native (long double a, double b, float c, long d, int e, char f)
 +{
-+  return tpl->ptr;
++  long double ret;
++  ret = a + (long double) b + (long double) c;
++  ret *= (long double) (d + (long) e);
++  if (f>0)
++    ret += func_native (a,b,c,d,e,-f);
++  return ret;
 +}
-+void Other (PFN);
 +
-+inline void Foo (PFN pfn)
-+{
-+  Other (Get ((struct Container *)&pfn));
-+}
-+void Bar (void)
++int __attribute__ ((sysv_abi))
++main ()
 +{
-+  Foo (f);
++  if (func_cross (1.0,2.0,3.0,1,2,3)
++      != func_native (1.0,2.0,3.0,1,2,3))
++    abort ();
++  return 0;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/other/arm-neon-1.C b/gcc/testsuite/g++.dg/other/arm-neon-1.C
---- a/gcc/testsuite/g++.dg/other/arm-neon-1.C  1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/other/arm-neon-1.C  2010-01-25 09:50:29.585686502 +0100
-@@ -0,0 +1,18 @@
-+/* Basic smoke test for arm_neon.h */
-+
-+/* { dg-do assemble } */
-+/* { dg-require-effective-target arm_neon_ok } */
-+/* { dg-add-options arm_neon } */
-+
-+#include "arm_neon.h"
-+
-+float a[4];
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2b.c
+@@ -0,0 +1,13 @@
++/* Test for cross x86_64<->w64 abi standard calls.  */
++/* { dg-options "-mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
 +
-+void test(void)
++long double func_cross (long double a, double b, float c, long d, int e,
++                      char f)
 +{
-+  float32x2x2_t v;
-+  float32x2_t res;
-+  v = vld2_f32(a);
-+  res = vadd_f32(v.val[0], v.val[1]);
-+  vst1_f32(a, res);
++  long double ret;
++  ret = a + (long double) b + (long double) c;
++  ret *= (long double) (d + (long) e);
++  if (f>0)
++    ret += func_cross (a,b,c,d,e,-f);
++  return ret;
 +}
-diff -Nur a/gcc/testsuite/g++.dg/other/armv7m-1.C b/gcc/testsuite/g++.dg/other/armv7m-1.C
---- a/gcc/testsuite/g++.dg/other/armv7m-1.C    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/other/armv7m-1.C    2010-01-25 09:50:29.585686502 +0100
-@@ -0,0 +1,69 @@
-+/* { dg-do run { target arm*-*-* } } */
-+/* Test Armv7m interrupt routines.  */
-+#include <stdlib.h>
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2a.c
+@@ -0,0 +1,17 @@
++/* Test for cross x86_64<->w64 abi standard calls via variable.  */
++/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
++/* { dg-additional-sources "func-indirect-2b.c" } */
 +
-+#ifdef __ARM_ARCH_7M__
-+void __attribute__((interrupt))
-+foo(void)
++extern void __attribute__ ((sysv_abi)) abort (void);
++typedef int (*func)(void *, char *, char *, short, long long);
++extern func get_callback (void);
++
++int __attribute__ ((sysv_abi))
++main ()
 +{
-+  long long n;
-+  long p;
-+  asm volatile ("" : "=r" (p) : "0" (&n));
-+  if (p & 4)
++  func callme = get_callback ();
++  if (callme (0, 0, 0, 0x1234, 0x1234567890abcdefLL))
 +    abort ();
-+  return;
++  return 0;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/func-indirect-2b.c
+@@ -0,0 +1,24 @@
++/* Test for cross x86_64<->w64 abi standard calls via variable.  */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -ffast-math -fno-builtin" } */
 +
-+void __attribute__((interrupt))
-+bar(void)
-+{
-+  throw 42;
-+}
++typedef int (*func)(void *, char *, char *, short, long long);
 +
-+int main()
++static int
++callback (void *ptr, char *string1, char *string2, short number,
++        long long rand)
 +{
-+  int a;
-+  int before;
-+  int after;
-+  volatile register int sp asm("sp");
-+
-+  asm volatile ("mov %0, sp\n"
-+              "blx %2\n"
-+              "mov %1, sp\n"
-+              : "=&r" (before), "=r" (after) : "r" (foo)
-+              : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
-+  if (before != after)
-+    abort();
-+  asm volatile ("mov %0, sp\n"
-+              "sub sp, sp, #4\n"
-+              "blx %2\n"
-+              "add sp, sp, #4\n"
-+              "mov %1, sp\n"
-+              : "=&r" (before), "=r" (after) : "r" (foo)
-+              : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
-+  if (before != after)
-+    abort();
-+  before = sp;
-+  try
-+    {
-+      bar();
-+    }
-+  catch (int i)
-+    {
-+      if (i != 42)
-+      abort();
-+    }
-+  catch (...)
-+    {
-+      abort();
-+    }
-+  if (before != sp)
-+    abort();
-+  exit(0);
++  if (ptr != 0
++      || string1 != 0
++      || string2 != 0
++      || number != 0x1234
++      || rand != 0x1234567890abcdefLL)
++    return 1;
++  else
++    return 0;
 +}
-+#else
-+int main()
++
++func
++get_callback (void)
 +{
-+  exit (0);
++  return callback;
 +}
-+#endif
-diff -Nur a/gcc/testsuite/g++.dg/remove-local-statics-1.C b/gcc/testsuite/g++.dg/remove-local-statics-1.C
---- a/gcc/testsuite/g++.dg/remove-local-statics-1.C    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/remove-local-statics-1.C    2010-01-25 09:50:29.585686502 +0100
-@@ -0,0 +1,21 @@
-+/* Verify that we do not eliminate a static variable in
-+   main::Local::Foo.  */
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4a.c
+@@ -0,0 +1,24 @@
++/* Test for cross x86_64<->w64 abi va_list calls.  */
++/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
++/* { dg-additional-sources "vaarg-4b.c" } */
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
++extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
++extern int __attribute__ ((sysv_abi)) sprintf (char *,const char *, ...);
++extern void __attribute__ ((sysv_abi)) abort (void);
 +
-+int
-+main (void)
++extern void do_cpy (char *, ...);
++
++int __attribute__ ((sysv_abi))
++main ()
 +{
-+   static int thestatic = 0;
-+   struct Local {
-+     __attribute__((__noinline__))
-+     static void Foo () { thestatic = 1; }
-+   };
++  char s[256];
 +
-+   thestatic = 2;
-+   Local::Foo();
++  do_cpy (s, "1","2","3","4", "5", "6", "7", "");
 +
-+   return thestatic++;
-+}
-diff -Nur a/gcc/testsuite/g++.dg/remove-local-statics-2.C b/gcc/testsuite/g++.dg/remove-local-statics-2.C
---- a/gcc/testsuite/g++.dg/remove-local-statics-2.C    1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/remove-local-statics-2.C    2010-01-25 09:50:29.585686502 +0100
-@@ -0,0 +1,21 @@
-+/* Verify that we do not eliminate a static variable in
-+   main due to its use in Local::Foo.  */
++  if (s[0] != '1' || s[1] !='2' || s[2] != '3' || s[3] != '4'
++      || s[4] != '5' || s[5] != '6' || s[6] != '7' || s[7] != 0)
++    abort ();
 +
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fremove-local-statics" } */
-+/* { dg-final { scan-assembler "thestatic" } } */
++  return 0;
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-4b.c
+@@ -0,0 +1,31 @@
++/* Test for cross x86_64<->w64 abi va_list calls.  */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
 +
-+int
-+main (void)
-+{
-+   static int thestatic = 0;
-+   struct Local {
-+     __attribute__((__noinline__))
-+     static int Foo () { return thestatic; }
-+   };
++#include <stdarg.h>
 +
-+   thestatic = 2;
-+   thestatic = Local::Foo();
++extern __SIZE_TYPE__ __attribute__ ((sysv_abi)) strlen (const char *);
++extern int __attribute__ ((sysv_abi)) sprintf (char *, const char *, ...);
 +
-+   return thestatic++;
++static void
++vdo_cpy (char *s, va_list argp)
++{
++  __SIZE_TYPE__ len;
++  char *r = s;
++  char *e;
++  *r = 0;
++  for (;;) {
++    e = va_arg (argp, char *);
++    if (*e == 0) break;
++    sprintf (r,"%s", e);
++    r += strlen (r);
++  }
 +}
-diff -Nur a/gcc/testsuite/g++.dg/template/overload9.C b/gcc/testsuite/g++.dg/template/overload9.C
---- a/gcc/testsuite/g++.dg/template/overload9.C        2008-09-19 00:29:39.000000000 +0200
-+++ b/gcc/testsuite/g++.dg/template/overload9.C        2010-01-25 09:50:29.585686502 +0100
-@@ -7,12 +7,12 @@
- template <typename T>
- struct A 
- {
--  A<T>& operator<<(A<T>& (*)(A<T>&)); // { dg-message "candidate" }
-+  A<T>& operator<<(A<T>& (*)(A<T>&));
- };
- template <typename T> A<T>& foo(A<T>&);
- extern A<char> c;
- int main () {
--  c << (1, foo); // { dg-error "no match" }
-+  c << (1, foo); // { dg-error "no context" }
- }
-diff -Nur a/gcc/testsuite/g++.dg/torture/pr36191.C b/gcc/testsuite/g++.dg/torture/pr36191.C
---- a/gcc/testsuite/g++.dg/torture/pr36191.C   2008-12-29 19:25:19.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/torture/pr36191.C   2010-01-25 09:50:29.585686502 +0100
-@@ -1,6 +1,7 @@
- // PR c++/36191
- // { dg-do compile }
- // { dg-options "-fnon-call-exceptions" }
-+// { dg-skip-if "Frame pointer required for unwind tables" { sh*-*-* } "-fomit-frame-pointer" "" }
- __complex__ double
- foo (__complex__ double x, double y)
-diff -Nur a/gcc/testsuite/g++.dg/tree-ssa/sink-1.C b/gcc/testsuite/g++.dg/tree-ssa/sink-1.C
---- a/gcc/testsuite/g++.dg/tree-ssa/sink-1.C   1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/tree-ssa/sink-1.C   2010-01-25 09:50:29.585686502 +0100
-@@ -0,0 +1,50 @@
-+/* { dg-do run } */
-+/* { dg-options "-O1" } */
-+
-+class A {
-+ public:
-+  A() {}
-+  virtual ~A() {}  
-+  void * dostuff();
-+  
-+  virtual int dovirtual() = 0;
-+};
 +
++void
++do_cpy (char *s, ...)
++{
++  va_list argp;
++  va_start (argp, s);
++  vdo_cpy (s, argp);
++  va_end (argp);
++}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5a.c
+@@ -0,0 +1,17 @@
++/* Test for cross x86_64<->w64 abi va_list calls.  */
++/* { dg-do run { target i?86-*-linux* x86_64-*-linux* } } */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
++/* { dg-additional-sources "vaarg-5b.c" } */
 +
-+class B : public A {
-+ public:
-+  B() {}
-+  int dovirtual() { return 0;}
-+  virtual ~B() {};
-+}; 
++extern void __attribute__ ((sysv_abi)) abort (void);
++extern int fct2 (int, ...);
 +
-+class C : public B {
-+ public:
-+  C() {}
-+  virtual ~C() {};
-+};
++#define SZ_ARGS       1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
 +
-+void* A::dostuff()
++int __attribute__ ((sysv_abi))
++main()
 +{
-+  return (void*)dovirtual();
++  if (fct2 (-1, SZ_ARGS) != 0)
++    abort ();
++  return 0;
 +}
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-5b.c
+@@ -0,0 +1,37 @@
++/* Test for cross x86_64<->w64 abi va_list calls.  */
++/* { dg-options "-O2 -mabi=ms -std=gnu99 -fno-builtin" } */
 +
-+/* tree-ssa-sink was sinking the inlined destructor for STUFF out of
-+   the first inner block and into the second one, where it was ending up
-+   after the inlined constructor for STUFF2.  This is bad because
-+   cfgexpand aliases STUFF and STUFF2 to the same storage at -O1
-+   (i.e., without -fstrict-aliasing), with the result that STUFF2's
-+   vtable was getting trashed. */
++#include <stdarg.h>
 +
-+int main() {
-+  {
-+    B stuff;
-+    stuff.dostuff();
-+  }
-+  {
-+    C stuff2;
-+    stuff2.dostuff();
-+  }
-+  return 0;
-+}
++#define SZ_ARGS       1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
 +
-diff -Nur a/gcc/testsuite/g++.dg/vect/vect.exp b/gcc/testsuite/g++.dg/vect/vect.exp
---- a/gcc/testsuite/g++.dg/vect/vect.exp       2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/vect/vect.exp       2010-01-25 09:50:29.585686502 +0100
-@@ -105,7 +105,7 @@
- } elseif [istarget "ia64-*-*"] {
-     set dg-do-what-default run
- } elseif [is-effective-target arm_neon_ok] {
--    lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
-+    eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
-     if [is-effective-target arm_neon_hw] {
-       set dg-do-what-default run
-     } else {
-diff -Nur a/gcc/testsuite/g++.dg/warn/null4.C b/gcc/testsuite/g++.dg/warn/null4.C
---- a/gcc/testsuite/g++.dg/warn/null4.C        2007-01-30 23:29:11.000000000 +0100
-+++ b/gcc/testsuite/g++.dg/warn/null4.C        2010-01-25 09:50:29.585686502 +0100
-@@ -11,9 +11,22 @@
-   if (NULL < NULL) return -1; // { dg-warning "NULL used in arithmetic" } 
-   if (NULL >= 0) return -1;   // { dg-warning "NULL used in arithmetic" } 
-   if (NULL <= 0) return -1;   // { dg-warning "NULL used in arithmetic" } 
-+  // Adding to the NULL pointer, which has no specific type, should
-+  // result in a warning; the type of the resulting expression is
-+  // actually "int", not a pointer type.
-+  if (NULL + 1) return -1;    // { dg-warning "NULL used in arithmetic" }
-+  if (1 + NULL) return -1;    // { dg-warning "NULL used in arithmetic" }
-   return 0;
- }
-+int *ip;
++static int __attribute__ ((sysv_abi))
++fct1 (va_list argp, ...)
++{
++  long long p1,p2;
++  int ret = 1;
++  __builtin_sysv_va_list argp_2;
 +
-+struct S {};
-+typedef int S::*SPD;
-+typedef void (S::*SPF)(void);
-+SPD spd;
-+SPF spf;
++  __builtin_sysv_va_start (argp_2, argp);
++  do {
++    p1 = va_arg (argp_2, long long);
++    p2 = va_arg (argp, long long);
++    if (p1 != p2)
++      ret = 0;
++  } while (ret && p1 != 0);
++  __builtin_sysv_va_end (argp_2);
 +
- int bar (void) 
- {
-   if (NULL) return -1;
-@@ -25,5 +38,18 @@
-   if (NULL != NULL) return -1;
-   if (NULL == 0) return -1;
-   if (NULL != 0) return -1;
-+  // Subtraction of pointers is vaild, so using NULL is OK.
-+  if (ip - NULL) return -1;
-+  if (NULL - NULL) return -1;
-+  // Comparing NULL with a pointer-to-member is OK.
-+  if (NULL == spd) return -1;
-+  if (spd == NULL) return -1;
-+  if (NULL != spd) return -1;
-+  if (spd != NULL) return -1;
-+  if (NULL == spf) return -1;
-+  if (spf == NULL) return -1;
-+  if (NULL != spf) return -1;
-+  if (spf != NULL) return -1;
++  return ret;
++}
 +
-   return 0;
- }
-diff -Nur a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/vect/vect.exp
---- a/gcc/testsuite/gfortran.dg/vect/vect.exp  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/testsuite/gfortran.dg/vect/vect.exp  2010-01-25 09:50:29.585686502 +0100
-@@ -98,7 +98,7 @@
++int
++fct2 (int dummy, ...)
++{
++  va_list argp;
++  int ret = dummy;
++
++  va_start (argp, dummy);
++  ret += fct1 (argp, SZ_ARGS);
++  va_end (argp);
++  return ret;
++}
+--- a/gcc/testsuite/gfortran.dg/vect/vect.exp
++++ b/gcc/testsuite/gfortran.dg/vect/vect.exp
+@@ -98,7 +98,7 @@ if  [istarget "powerpc-*paired*"]  {
  } elseif [istarget "ia64-*-*"] {
      set dg-do-what-default run
  } elseif [is-effective-target arm_neon_ok] {
@@ -59522,29 +29465,9 @@ diff -Nur a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/
      if [is-effective-target arm_neon_hw] {
        set dg-do-what-default run
      } else {
-diff -Nur a/gcc/testsuite/g++.old-deja/g++.other/overload11.C b/gcc/testsuite/g++.old-deja/g++.other/overload11.C
---- a/gcc/testsuite/g++.old-deja/g++.other/overload11.C        2008-09-19 00:29:39.000000000 +0200
-+++ b/gcc/testsuite/g++.old-deja/g++.other/overload11.C        2010-01-25 09:50:29.585686502 +0100
-@@ -54,11 +54,10 @@
-   
-   ptr = (ovl);              // ok
-   ptr = (&ovl);             // ok
--  // 13.4 indicates these are ok.
--  ptr = (0, ovl);           // ok { dg-bogus "" "" { xfail *-*-* } }
--  ptr = (0, &ovl);          // ok { dg-bogus "" "" { xfail *-*-* } }
--  ptr = (argc ? ovl : ovl); // ok { dg-bogus "" "" { xfail *-*-* } }
--  ptr = (argc ? &ovl : &ovl);// ok { dg-bogus "" "" { xfail *-*-* } }
-+  ptr = (0, ovl);           // ok { dg-error "no context" }
-+  ptr = (0, &ovl);          // ok { dg-error "no context" }
-+  ptr = (argc ? ovl : ovl); // ok { dg-error "no context" }
-+  ptr = (argc ? &ovl : &ovl);// ok { dg-error "no context" }
-   
-   vptr = (ovl);              // { dg-error "" } no matching candidates
-   vptr = (&ovl);             // { dg-error "" } no matching candidates
-diff -Nur a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
---- a/gcc/testsuite/lib/prune.exp      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/testsuite/lib/prune.exp      2010-01-25 09:50:29.585686502 +0100
-@@ -57,3 +57,34 @@
+--- a/gcc/testsuite/lib/prune.exp
++++ b/gcc/testsuite/lib/prune.exp
+@@ -57,3 +57,34 @@ if { [info procs prune_warnings] == "" }
        return $text
      }
  }
@@ -59579,10 +29502,9 @@ diff -Nur a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
 +      return $text
 +    }
 +}
-diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
---- a/gcc/testsuite/lib/target-supports.exp    2009-07-21 09:22:51.000000000 +0200
-+++ b/gcc/testsuite/lib/target-supports.exp    2010-01-25 09:50:29.585686502 +0100
-@@ -491,6 +491,7 @@
+--- a/gcc/testsuite/lib/target-supports.exp
++++ b/gcc/testsuite/lib/target-supports.exp
+@@ -491,6 +491,7 @@ proc check_profiling_available { test_wh
             || [istarget avr-*-*]
             || [istarget bfin-*-*]
             || [istarget powerpc-*-eabi*]
@@ -59590,8 +29512,8 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
             || [istarget cris-*-*]
             || [istarget crisv32-*-*]
             || [istarget fido-*-elf]
-@@ -611,6 +612,18 @@
-     } "-pthread"]
+@@ -618,6 +619,18 @@ proc check_effective_target_static {} {
+     } "-static"]
  }
  
 +# Return 1 if compilation with -mpe-aligned-commons is error-free
@@ -59609,7 +29531,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if the target supports -fstack-protector
  proc check_effective_target_fstack_protector {} {
      return [check_runtime fstack_protector {
-@@ -720,6 +733,15 @@
+@@ -727,6 +740,15 @@ proc check_effective_target_mips16_attri
      } [add_options_for_mips16_attribute ""]]
  }
  
@@ -59625,7 +29547,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if the current multilib does not generate PIC by default.
  
  proc check_effective_target_nonpic { } {
-@@ -1408,6 +1430,18 @@
+@@ -1416,6 +1438,18 @@ proc check_effective_target_arm32 { } {
      }]
  }
  
@@ -59644,7 +29566,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if this is an ARM target supporting -mfpu=vfp
  # -mfloat-abi=softfp.  Some multilibs may be incompatible with these
  # options.
-@@ -1422,18 +1456,110 @@
+@@ -1430,18 +1464,110 @@ proc check_effective_target_arm_vfp_ok {
      }
  }
  
@@ -59762,7 +29684,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  }
  
  # Return 1 is this is an ARM target where -mthumb causes Thumb-1 to be
-@@ -1447,6 +1573,17 @@
+@@ -1455,6 +1581,17 @@ proc check_effective_target_arm_thumb1_o
      } "-mthumb"]
  }
  
@@ -59780,7 +29702,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if the target supports executing NEON instructions, 0
  # otherwise.  Cache the result.
  
-@@ -1461,7 +1598,7 @@
+@@ -1469,7 +1606,7 @@ proc check_effective_target_arm_neon_hw 
               : "0" (a), "w" (b));
          return (a != 1);
        }
@@ -59789,7 +29711,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  }
  
  # Return 1 if this is a ARM target with NEON enabled.
-@@ -1504,6 +1641,19 @@
+@@ -1512,6 +1649,19 @@ proc check_effective_target_arm_eabi { }
      }]
  }
  
@@ -59809,7 +29731,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if this is a PowerPC target with floating-point registers.
  
  proc check_effective_target_powerpc_fprs { } {
-@@ -1700,6 +1850,26 @@
+@@ -1708,6 +1858,26 @@ proc check_effective_target_vect_shift {
      return $et_vect_shift_saved
  }
  
@@ -59836,7 +29758,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if the target supports hardware vectors of long, 0 otherwise.
  #
  # This can change for different subtargets so do not cache the result.
-@@ -2159,7 +2329,7 @@
+@@ -2167,7 +2337,7 @@ proc check_effective_target_vect_no_alig
        if { [istarget mipsisa64*-*-*]
             || [istarget sparc*-*-*]
             || [istarget ia64-*-*]
@@ -59845,7 +29767,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
            set et_vect_no_align_saved 1
        }
      }
-@@ -2273,6 +2443,24 @@
+@@ -2281,6 +2451,24 @@ proc check_effective_target_vector_align
      return $et_vector_alignment_reachable_for_64bit_saved
  }
  
@@ -59870,7 +29792,7 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
  # Return 1 if the target supports vector conditional operations, 0 otherwise.
  
  proc check_effective_target_vect_condition { } {
-@@ -2468,7 +2656,8 @@
+@@ -2476,7 +2664,8 @@ proc check_effective_target_section_anch
          verbose "check_effective_target_section_anchors: using cached result" 2
      } else {
          set et_section_anchors_saved 0
@@ -59880,10 +29802,9 @@ diff -Nur a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-sup
             set et_section_anchors_saved 1
          }
      }
-diff -Nur a/gcc/timevar.def b/gcc/timevar.def
---- a/gcc/timevar.def  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/timevar.def  2010-01-25 09:50:29.585686502 +0100
-@@ -134,6 +134,7 @@
+--- a/gcc/timevar.def
++++ b/gcc/timevar.def
+@@ -134,6 +134,7 @@ DEFTIMEVAR (TV_TREE_LOOP_IVOPTS         , "
  DEFTIMEVAR (TV_PREDCOM                     , "predictive commoning")
  DEFTIMEVAR (TV_TREE_LOOP_INIT      , "tree loop init")
  DEFTIMEVAR (TV_TREE_LOOP_FINI      , "tree loop fini")
@@ -59891,7 +29812,7 @@ diff -Nur a/gcc/timevar.def b/gcc/timevar.def
  DEFTIMEVAR (TV_TREE_CH                     , "tree copy headers")
  DEFTIMEVAR (TV_TREE_SSA_UNCPROP            , "tree SSA uncprop")
  DEFTIMEVAR (TV_TREE_SSA_TO_NORMAL    , "tree SSA to normal")
-@@ -141,6 +142,7 @@
+@@ -141,6 +142,7 @@ DEFTIMEVAR (TV_TREE_NRV                 , "tree NR
  DEFTIMEVAR (TV_TREE_COPY_RENAME            , "tree rename SSA copies")
  DEFTIMEVAR (TV_TREE_SSA_VERIFY       , "tree SSA verifier")
  DEFTIMEVAR (TV_TREE_STMT_VERIFY      , "tree STMT verifier")
@@ -59899,10 +29820,9 @@ diff -Nur a/gcc/timevar.def b/gcc/timevar.def
  DEFTIMEVAR (TV_TREE_SWITCH_CONVERSION, "tree switch initialization conversion")
  DEFTIMEVAR (TV_CGRAPH_VERIFY         , "callgraph verifier")
  DEFTIMEVAR (TV_DOM_FRONTIERS         , "dominance frontiers")
-diff -Nur a/gcc/toplev.h b/gcc/toplev.h
---- a/gcc/toplev.h     2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/toplev.h     2010-01-25 09:50:29.585686502 +0100
-@@ -139,6 +139,7 @@
+--- a/gcc/toplev.h
++++ b/gcc/toplev.h
+@@ -139,6 +139,7 @@ extern int flag_unroll_loops;
  extern int flag_unroll_all_loops;
  extern int flag_unswitch_loops;
  extern int flag_cprop_registers;
@@ -59910,44 +29830,9 @@ diff -Nur a/gcc/toplev.h b/gcc/toplev.h
  extern int time_report;
  extern int flag_ira_coalesce;
  extern int flag_ira_move_spills;
-diff -Nur a/gcc/tree.c b/gcc/tree.c
---- a/gcc/tree.c       2009-07-20 16:39:32.000000000 +0200
-+++ b/gcc/tree.c       2010-01-25 09:50:29.585686502 +0100
-@@ -4062,6 +4062,7 @@
-                     bool *no_add_attrs)
- {
-   tree node = *pnode;
-+  bool is_dllimport;
-   /* These attributes may apply to structure and union types being created,
-      but otherwise should pass to the declaration involved.  */
-@@ -4109,9 +4110,11 @@
-       return NULL_TREE;
-     }
-+  is_dllimport = is_attribute_p ("dllimport", name);
-+
-   /* Report error on dllimport ambiguities seen now before they cause
-      any damage.  */
--  else if (is_attribute_p ("dllimport", name))
-+  if (is_dllimport)
-     {
-       /* Honor any target-specific overrides. */ 
-       if (!targetm.valid_dllimport_attribute_p (node))
-@@ -4153,6 +4156,9 @@
-       if (*no_add_attrs == false)
-         DECL_DLLIMPORT_P (node) = 1;
-     }
-+  else if (DECL_DECLARED_INLINE_P (node))
-+    /* An exported function, even if inline, must be emitted.  */
-+    DECL_EXTERNAL (node) = 0;
-   /*  Report error if symbol is not accessible at global scope.  */
-   if (!TREE_PUBLIC (node)
-diff -Nur a/gcc/tree-cfg.c b/gcc/tree-cfg.c
---- a/gcc/tree-cfg.c   2009-07-02 14:16:39.000000000 +0200
-+++ b/gcc/tree-cfg.c   2010-01-25 09:50:29.585686502 +0100
-@@ -47,6 +47,7 @@
+--- a/gcc/tree-cfg.c
++++ b/gcc/tree-cfg.c
+@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3.  
  #include "value-prof.h"
  #include "pointer-set.h"
  #include "tree-inline.h"
@@ -59955,7 +29840,7 @@ diff -Nur a/gcc/tree-cfg.c b/gcc/tree-cfg.c
  
  /* This file contains functions for building the Control Flow Graph (CFG)
     for a function tree.  */
-@@ -7052,6 +7053,9 @@
+@@ -7052,6 +7053,9 @@ execute_warn_function_return (void)
    edge e;
    edge_iterator ei;
  
@@ -59965,168 +29850,9 @@ diff -Nur a/gcc/tree-cfg.c b/gcc/tree-cfg.c
    /* If we have a path to EXIT, then we do return.  */
    if (TREE_THIS_VOLATILE (cfun->decl)
        && EDGE_COUNT (EXIT_BLOCK_PTR->preds) > 0)
-diff -Nur a/gcc/tree.h b/gcc/tree.h
---- a/gcc/tree.h       2009-06-02 09:18:16.000000000 +0200
-+++ b/gcc/tree.h       2010-01-25 09:50:29.585686502 +0100
-@@ -381,8 +381,10 @@
-   unsigned lang_flag_5 : 1;
-   unsigned lang_flag_6 : 1;
-   unsigned visited : 1;
-+  unsigned packed_flag : 1;
-+  unsigned user_align : 1;
--  unsigned spare : 23;
-+  unsigned spare : 21;
-   union tree_ann_d *ann;
- };
-@@ -2140,7 +2142,7 @@
- /* 1 if the alignment for this type was requested by "aligned" attribute,
-    0 if it is the default for this type.  */
--#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->type.user_align)
-+#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->common.base.user_align)
- /* The alignment for NODE, in bytes.  */
- #define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
-@@ -2246,7 +2248,7 @@
- /* Indicated that objects of this type should be laid out in as
-    compact a way as possible.  */
--#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->type.packed_flag)
-+#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->common.base.packed_flag)
- /* Used by type_contains_placeholder_p to avoid recomputation.
-    Values are: 0 (unknown), 1 (false), 2 (true).  Never access
-@@ -2265,17 +2267,16 @@
-   tree attributes;
-   unsigned int uid;
--  unsigned int precision : 9;
--  ENUM_BITFIELD(machine_mode) mode : 7;
--
--  unsigned string_flag : 1;
-+  unsigned int precision : 10;
-   unsigned no_force_blk_flag : 1;
-   unsigned needs_constructing_flag : 1;
-   unsigned transparent_union_flag : 1;
--  unsigned packed_flag : 1;
-   unsigned restrict_flag : 1;
-   unsigned contains_placeholder_bits : 2;
-+  ENUM_BITFIELD(machine_mode) mode : 8;
-+
-+  unsigned string_flag : 1;
-   unsigned lang_flag_0 : 1;
-   unsigned lang_flag_1 : 1;
-   unsigned lang_flag_2 : 1;
-@@ -2283,7 +2284,6 @@
-   unsigned lang_flag_4 : 1;
-   unsigned lang_flag_5 : 1;
-   unsigned lang_flag_6 : 1;
--  unsigned user_align : 1;
-   unsigned int align;
-   alias_set_type alias_set;
-@@ -2584,7 +2584,7 @@
- #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
- /* Set if the alignment of this DECL has been set by the user, for
-    example with an 'aligned' attribute.  */
--#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.user_align)
-+#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->common.base.user_align)
- /* Holds the machine mode corresponding to the declaration of a variable or
-    field.  Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a
-    FIELD_DECL.  */
-@@ -2621,7 +2621,7 @@
-    example, for a FUNCTION_DECL, DECL_SAVED_TREE may be non-NULL and
-    DECL_EXTERNAL may be true simultaneously; that can be the case for
-    a C99 "extern inline" function.  */
--#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_2)
-+#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_1)
- /* Nonzero in a ..._DECL means this variable is ref'd from a nested function.
-    For VAR_DECL nodes, PARM_DECL nodes, and FUNCTION_DECL nodes.
-@@ -2696,7 +2696,6 @@
-   unsigned ignored_flag : 1;
-   unsigned abstract_flag : 1;
-   unsigned artificial_flag : 1;
--  unsigned user_align : 1;
-   unsigned preserve_flag: 1;
-   unsigned debug_expr_is_from : 1;
-@@ -2712,22 +2711,20 @@
-   /* In LABEL_DECL, this is DECL_ERROR_ISSUED.
-      In VAR_DECL and PARM_DECL, this is DECL_REGISTER.  */
-   unsigned decl_flag_0 : 1;
--  /* In FIELD_DECL, this is DECL_PACKED.  */
--  unsigned decl_flag_1 : 1;
-   /* In FIELD_DECL, this is DECL_BIT_FIELD
-      In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL.
--     In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG.  */
--  unsigned decl_flag_2 : 1;
-+     In TYPE_DECL, this is TYPE_DECL_SUPPRESS_DEBUG.  */
-+  unsigned decl_flag_1 : 1;
-   /* In FIELD_DECL, this is DECL_NONADDRESSABLE_P
--     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR.  */
--  unsigned decl_flag_3 : 1;
-+     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR_P.  */
-+  unsigned decl_flag_2 : 1;
-   /* Logically, these two would go in a theoretical base shared by var and
-      parm decl. */
-   unsigned gimple_reg_flag : 1;
-   /* In a DECL with pointer type, set if no TBAA should be done.  */
-   unsigned no_tbaa_flag : 1;
-   /* Padding so that 'align' can be on a 32-bit boundary.  */
--  unsigned decl_common_unused : 2;
-+  unsigned decl_common_unused : 4;
-   unsigned int align : 24;
-   /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs.  */
-@@ -2751,7 +2748,7 @@
-    decl itself.  This should only be used for debugging; once this field has
-    been set, the decl itself may not legitimately appear in the function.  */
- #define DECL_HAS_VALUE_EXPR_P(NODE) \
--  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_3)
-+  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2)
- #define DECL_VALUE_EXPR(NODE) \
-   (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
- #define SET_DECL_VALUE_EXPR(NODE, VAL)                        \
-@@ -2830,11 +2827,11 @@
- #define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
- /* In a FIELD_DECL, indicates this field should be bit-packed.  */
--#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
-+#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->common.base.packed_flag)
- /* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed
-    specially.  */
--#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
-+#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
- /* Used in a FIELD_DECL to indicate that we cannot form the address of
-    this component.  This makes it possible for Type-Based Alias Analysis
-@@ -2852,7 +2849,7 @@
-    accesses to s.i must not be given the alias set of the type of 'i'
-    (int) but instead directly that of the type of 's' (struct S).  */
- #define DECL_NONADDRESSABLE_P(NODE) \
--  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
-+  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
- struct tree_field_decl GTY(())
- {
-@@ -3337,7 +3334,7 @@
-    into stabs.  Instead it will generate cross reference ('x') of names.
-    This uses the same flag as DECL_EXTERNAL.  */
- #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
--  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_2)
-+  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_1)
- /* Getter of the imported declaration associated to the
-    IMPORTED_DECL node.  */
-diff -Nur a/gcc/tree-pass.h b/gcc/tree-pass.h
---- a/gcc/tree-pass.h  2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/tree-pass.h  2010-01-25 09:50:29.585686502 +0100
-@@ -323,6 +323,7 @@
+--- a/gcc/tree-pass.h
++++ b/gcc/tree-pass.h
+@@ -323,6 +323,7 @@ extern struct gimple_opt_pass pass_scev_
  extern struct gimple_opt_pass pass_empty_loop;
  extern struct gimple_opt_pass pass_record_bounds;
  extern struct gimple_opt_pass pass_graphite_transforms;
@@ -60134,7 +29860,7 @@ diff -Nur a/gcc/tree-pass.h b/gcc/tree-pass.h
  extern struct gimple_opt_pass pass_if_conversion;
  extern struct gimple_opt_pass pass_loop_distribution;
  extern struct gimple_opt_pass pass_vectorize;
-@@ -388,6 +389,7 @@
+@@ -388,6 +389,7 @@ extern struct gimple_opt_pass pass_reass
  extern struct gimple_opt_pass pass_rebuild_cgraph_edges;
  extern struct gimple_opt_pass pass_build_cgraph_edges;
  extern struct gimple_opt_pass pass_reset_cc_flags;
@@ -60142,10 +29868,9 @@ diff -Nur a/gcc/tree-pass.h b/gcc/tree-pass.h
  
  /* IPA Passes */
  extern struct ipa_opt_pass pass_ipa_inline;
-diff -Nur a/gcc/tree-sra.c b/gcc/tree-sra.c
---- a/gcc/tree-sra.c   2009-03-04 10:02:59.000000000 +0100
-+++ b/gcc/tree-sra.c   2010-01-25 09:50:29.585686502 +0100
-@@ -274,6 +274,12 @@
+--- a/gcc/tree-sra.c
++++ b/gcc/tree-sra.c
+@@ -274,6 +274,12 @@ sra_type_can_be_decomposed_p (tree type)
                      != TYPE_PRECISION (TREE_TYPE (t))))
                goto fail;
  
@@ -60158,9 +29883,8 @@ diff -Nur a/gcc/tree-sra.c b/gcc/tree-sra.c
              saw_one_field = true;
            }
  
-diff -Nur a/gcc/tree-ssa-loop-promote.c b/gcc/tree-ssa-loop-promote.c
---- a/gcc/tree-ssa-loop-promote.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/tree-ssa-loop-promote.c      2010-01-25 09:50:29.585686502 +0100
+--- /dev/null
++++ b/gcc/tree-ssa-loop-promote.c
 @@ -0,0 +1,1628 @@
 +/* Promotion of shorter-than-word-size loop indices.
 +   Copyright (C) 2009 Free Software Foundation, Inc.
@@ -61790,10 +31514,9 @@ diff -Nur a/gcc/tree-ssa-loop-promote.c b/gcc/tree-ssa-loop-promote.c
 +    | TODO_ggc_collect                 /* todo_flags_finish */
 +  }
 +};
-diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
---- a/gcc/tree-ssa-pre.c       2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/tree-ssa-pre.c       2010-01-25 09:50:29.595686516 +0100
-@@ -104,6 +104,10 @@
+--- a/gcc/tree-ssa-pre.c
++++ b/gcc/tree-ssa-pre.c
+@@ -104,6 +104,10 @@ along with GCC; see the file COPYING3.  
     In order to make it fully redundant, we insert the expression into
     the predecessors where it is not available, but is ANTIC.
  
@@ -61804,7 +31527,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
     For the partial anticipation case, we only perform insertion if it
     is partially anticipated in some block, and fully available in all
     of the predecessors.
-@@ -429,6 +433,7 @@
+@@ -425,6 +429,7 @@ static pre_expr bitmap_find_leader (bitm
  static void bitmap_value_insert_into_set (bitmap_set_t, pre_expr);
  static void bitmap_value_replace_in_set (bitmap_set_t, pre_expr);
  static void bitmap_set_copy (bitmap_set_t, bitmap_set_t);
@@ -61812,7 +31535,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
  static bool bitmap_set_contains_value (bitmap_set_t, unsigned int);
  static void bitmap_insert_into_set (bitmap_set_t, pre_expr);
  static void bitmap_insert_into_set_1 (bitmap_set_t, pre_expr, bool);
-@@ -2988,13 +2993,6 @@
+@@ -2948,13 +2953,6 @@ insert_into_preds_of_block (basic_block 
    tree temp;
    gimple phi;
  
@@ -61826,7 +31549,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
    /* Make sure we aren't creating an induction variable.  */
    if (block->loop_depth > 0 && EDGE_COUNT (block->preds) == 2
        && expr->kind != REFERENCE)
-@@ -3192,6 +3190,47 @@
+@@ -3152,6 +3150,47 @@ insert_into_preds_of_block (basic_block 
  }
  
  
@@ -61874,7 +31597,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
  
  /* Perform insertion of partially redundant values.
     For BLOCK, do the following:
-@@ -3226,6 +3265,7 @@
+@@ -3186,6 +3225,7 @@ do_regular_insertion (basic_block block,
          pre_expr *avail;
          unsigned int val;
          bool by_some = false;
@@ -61882,7 +31605,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
          bool cant_insert = false;
          bool all_same = true;
          pre_expr first_s = NULL;
-@@ -3280,6 +3320,7 @@
+@@ -3240,6 +3280,7 @@ do_regular_insertion (basic_block block,
                {
                  avail[bprime->index] = eprime;
                  all_same = false;
@@ -61890,7 +31613,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
                }
              else
                {
-@@ -3289,6 +3330,11 @@
+@@ -3249,6 +3290,11 @@ do_regular_insertion (basic_block block,
                    first_s = edoubleprime;
                  else if (!pre_expr_eq (first_s, edoubleprime))
                    all_same = false;
@@ -61902,7 +31625,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
                }
            }
          /* If we can insert it, it's not the same value
-@@ -3297,9 +3343,27 @@
+@@ -3257,9 +3303,27 @@ do_regular_insertion (basic_block block,
             partially redundant.  */
          if (!cant_insert && !all_same && by_some && dbg_cnt (treepre_insert))
            {
@@ -61933,7 +31656,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
            }
          /* If all edges produce the same value and that value is
             an invariant, then the PHI has the same value on all
-@@ -3428,9 +3492,28 @@
+@@ -3388,9 +3452,28 @@ do_partial_partial_insertion (basic_bloc
          if (!cant_insert && by_all && dbg_cnt (treepre_insert))
            {
              pre_stats.pa_insert++;
@@ -61965,7 +31688,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
            }
          free (avail);
        }
-@@ -3471,7 +3554,9 @@
+@@ -3431,7 +3514,9 @@ insert_aux (basic_block block)
          if (!single_pred_p (block))
            {
              new_stuff |= do_regular_insertion (block, dom);
@@ -61976,7 +31699,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
                new_stuff |= do_partial_partial_insertion (block, dom);
            }
        }
-@@ -4220,11 +4305,11 @@
+@@ -4171,11 +4256,11 @@ fini_pre (bool do_fre)
     only wants to do full redundancy elimination.  */
  
  static unsigned int
@@ -61990,7 +31713,7 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
  
    /* This has to happen before SCCVN runs because
       loop_optimizer_init may create new phis, etc.  */
-@@ -4297,19 +4382,20 @@
+@@ -4247,19 +4332,20 @@ execute_pre (bool do_fre ATTRIBUTE_UNUSE
    return todo;
  }
  
@@ -62015,9 +31738,8 @@ diff -Nur a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
  }
  
  struct gimple_opt_pass pass_pre =
-diff -Nur a/gcc/tree-ssa-remove-local-statics.c b/gcc/tree-ssa-remove-local-statics.c
---- a/gcc/tree-ssa-remove-local-statics.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/gcc/tree-ssa-remove-local-statics.c      2010-01-25 09:50:29.595686516 +0100
+--- /dev/null
++++ b/gcc/tree-ssa-remove-local-statics.c
 @@ -0,0 +1,868 @@
 +/* Local static variable elimination pass.
 +   Copyright (C) 2007 Free Software Foundation, Inc.
@@ -62887,10 +32609,9 @@ diff -Nur a/gcc/tree-ssa-remove-local-statics.c b/gcc/tree-ssa-remove-local-stat
 +    | TODO_rebuild_alias | TODO_update_ssa /* todo_flags_finish */
 +  }
 +};
-diff -Nur a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
---- a/gcc/tree-ssa-sink.c      2009-02-20 16:20:38.000000000 +0100
-+++ b/gcc/tree-ssa-sink.c      2010-01-25 09:50:29.595686516 +0100
-@@ -449,6 +449,47 @@
+--- a/gcc/tree-ssa-sink.c
++++ b/gcc/tree-ssa-sink.c
+@@ -449,6 +449,47 @@ sink_code_in_bb (basic_block bb)
          last = false;
          continue;
        }      
@@ -62938,10 +32659,9 @@ diff -Nur a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
        if (dump_file)
        {
          fprintf (dump_file, "Sinking ");
-diff -Nur a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
---- a/gcc/tree-ssa-structalias.c       2009-03-23 17:29:33.000000000 +0100
-+++ b/gcc/tree-ssa-structalias.c       2010-01-25 09:50:29.595686516 +0100
-@@ -2926,7 +2926,8 @@
+--- a/gcc/tree-ssa-structalias.c
++++ b/gcc/tree-ssa-structalias.c
+@@ -2928,7 +2928,8 @@ get_constraint_for_component_ref (tree t
    /* Some people like to do cute things like take the address of
       &0->a.b */
    forzero = t;
@@ -62951,10 +32671,9 @@ diff -Nur a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
      forzero = TREE_OPERAND (forzero, 0);
  
    if (CONSTANT_CLASS_P (forzero) && integer_zerop (forzero))
-diff -Nur a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c
---- a/gcc/tree-vect-analyze.c  2009-06-30 13:56:21.000000000 +0200
-+++ b/gcc/tree-vect-analyze.c  2010-01-25 09:50:29.595686516 +0100
-@@ -1459,7 +1459,7 @@
+--- a/gcc/tree-vect-analyze.c
++++ b/gcc/tree-vect-analyze.c
+@@ -1459,7 +1459,7 @@ vect_compute_data_ref_alignment (struct 
      }
  
    base = build_fold_indirect_ref (base_addr);
@@ -62963,7 +32682,7 @@ diff -Nur a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c
  
    if ((aligned_to && tree_int_cst_compare (aligned_to, alignment) < 0)
        || !misalign)
-@@ -1510,7 +1510,8 @@
+@@ -1510,7 +1510,8 @@ vect_compute_data_ref_alignment (struct 
    /* At this point we assume that the base is aligned.  */
    gcc_assert (base_aligned
              || (TREE_CODE (base) == VAR_DECL 
@@ -62973,37 +32692,9 @@ diff -Nur a/gcc/tree-vect-analyze.c b/gcc/tree-vect-analyze.c
  
    /* Modulo alignment.  */
    misalign = size_binop (TRUNC_MOD_EXPR, misalign, alignment);
-diff -Nur a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
---- a/gcc/tree-vectorizer.c    2009-03-18 16:29:28.000000000 +0100
-+++ b/gcc/tree-vectorizer.c    2010-01-25 09:50:29.595686516 +0100
-@@ -2868,11 +2868,13 @@
-        vnode = vnode->next_needed)
-     {
-       tree vectype, decl = vnode->decl;
-+      tree t;
-       unsigned int alignment;
--      if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
-+      t = TREE_TYPE(decl);
-+      if (TREE_CODE (t) != ARRAY_TYPE)
-       continue;
--      vectype = get_vectype_for_scalar_type (TREE_TYPE (TREE_TYPE (decl)));
-+      vectype = get_vectype_for_scalar_type (strip_array_types (t));
-       if (!vectype)
-       continue;
-       alignment = TYPE_ALIGN (vectype);
-@@ -2887,6 +2889,7 @@
-           { 
-             fprintf (dump_file, "Increasing alignment of decl: ");
-             print_generic_expr (dump_file, decl, TDF_SLIM);
-+            fprintf (dump_file, "\n");
-           }
-       }
-     }
-diff -Nur a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
---- a/gcc/tree-vect-transform.c        2009-04-20 09:09:01.000000000 +0200
-+++ b/gcc/tree-vect-transform.c        2010-01-25 09:50:29.595686516 +0100
-@@ -5442,7 +5442,21 @@
+--- a/gcc/tree-vect-transform.c
++++ b/gcc/tree-vect-transform.c
+@@ -5444,7 +5444,21 @@ vectorizable_store (gimple stmt, gimple_
               vect_permute_store_chain().  */
            vec_oprnd = VEC_index (tree, result_chain, i);
  
@@ -63026,7 +32717,7 @@ diff -Nur a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
  
          /* Arguments are ready. Create the new vector stmt.  */
          new_stmt = gimple_build_assign (data_ref, vec_oprnd);
-@@ -6621,10 +6635,15 @@
+@@ -6623,10 +6637,15 @@ vectorizable_load (gimple stmt, gimple_s
            {
            case dr_aligned:
              gcc_assert (aligned_access_p (first_dr));
@@ -63044,7 +32735,7 @@ diff -Nur a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
                int mis = DR_MISALIGNMENT (first_dr);
                tree tmis = (mis == -1 ? size_zero_node : size_int (mis));
  
-@@ -7595,7 +7614,7 @@
+@@ -7597,7 +7616,7 @@ vect_gen_niters_for_prolog_loop (loop_ve
    gimple dr_stmt = DR_STMT (dr);
    stmt_vec_info stmt_info = vinfo_for_stmt (dr_stmt);
    tree vectype = STMT_VINFO_VECTYPE (stmt_info);
@@ -63053,10 +32744,225 @@ diff -Nur a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
    tree niters_type = TREE_TYPE (loop_niters);
    int step = 1;
    int element_size = GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (DR_REF (dr))));
-diff -Nur a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
---- a/gcc/unwind-dw2.c 2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/unwind-dw2.c 2010-01-25 09:50:29.595686516 +0100
-@@ -1414,16 +1414,12 @@
+--- a/gcc/tree-vectorizer.c
++++ b/gcc/tree-vectorizer.c
+@@ -2868,11 +2868,13 @@ increase_alignment (void)
+        vnode = vnode->next_needed)
+     {
+       tree vectype, decl = vnode->decl;
++      tree t;
+       unsigned int alignment;
+-      if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
++      t = TREE_TYPE(decl);
++      if (TREE_CODE (t) != ARRAY_TYPE)
+       continue;
+-      vectype = get_vectype_for_scalar_type (TREE_TYPE (TREE_TYPE (decl)));
++      vectype = get_vectype_for_scalar_type (strip_array_types (t));
+       if (!vectype)
+       continue;
+       alignment = TYPE_ALIGN (vectype);
+@@ -2887,6 +2889,7 @@ increase_alignment (void)
+           { 
+             fprintf (dump_file, "Increasing alignment of decl: ");
+             print_generic_expr (dump_file, decl, TDF_SLIM);
++            fprintf (dump_file, "\n");
+           }
+       }
+     }
+--- a/gcc/tree.c
++++ b/gcc/tree.c
+@@ -4062,6 +4062,7 @@ handle_dll_attribute (tree * pnode, tree
+                     bool *no_add_attrs)
+ {
+   tree node = *pnode;
++  bool is_dllimport;
+   /* These attributes may apply to structure and union types being created,
+      but otherwise should pass to the declaration involved.  */
+@@ -4109,9 +4110,11 @@ handle_dll_attribute (tree * pnode, tree
+       return NULL_TREE;
+     }
++  is_dllimport = is_attribute_p ("dllimport", name);
++
+   /* Report error on dllimport ambiguities seen now before they cause
+      any damage.  */
+-  else if (is_attribute_p ("dllimport", name))
++  if (is_dllimport)
+     {
+       /* Honor any target-specific overrides. */ 
+       if (!targetm.valid_dllimport_attribute_p (node))
+@@ -4153,6 +4156,9 @@ handle_dll_attribute (tree * pnode, tree
+       if (*no_add_attrs == false)
+         DECL_DLLIMPORT_P (node) = 1;
+     }
++  else if (DECL_DECLARED_INLINE_P (node))
++    /* An exported function, even if inline, must be emitted.  */
++    DECL_EXTERNAL (node) = 0;
+   /*  Report error if symbol is not accessible at global scope.  */
+   if (!TREE_PUBLIC (node)
+--- a/gcc/tree.h
++++ b/gcc/tree.h
+@@ -381,8 +381,10 @@ struct tree_base GTY(())
+   unsigned lang_flag_5 : 1;
+   unsigned lang_flag_6 : 1;
+   unsigned visited : 1;
++  unsigned packed_flag : 1;
++  unsigned user_align : 1;
+-  unsigned spare : 23;
++  unsigned spare : 21;
+   union tree_ann_d *ann;
+ };
+@@ -2140,7 +2142,7 @@ extern enum machine_mode vector_type_mod
+ /* 1 if the alignment for this type was requested by "aligned" attribute,
+    0 if it is the default for this type.  */
+-#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->type.user_align)
++#define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->common.base.user_align)
+ /* The alignment for NODE, in bytes.  */
+ #define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
+@@ -2246,7 +2248,7 @@ extern enum machine_mode vector_type_mod
+ /* Indicated that objects of this type should be laid out in as
+    compact a way as possible.  */
+-#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->type.packed_flag)
++#define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->common.base.packed_flag)
+ /* Used by type_contains_placeholder_p to avoid recomputation.
+    Values are: 0 (unknown), 1 (false), 2 (true).  Never access
+@@ -2265,17 +2267,16 @@ struct tree_type GTY(())
+   tree attributes;
+   unsigned int uid;
+-  unsigned int precision : 9;
+-  ENUM_BITFIELD(machine_mode) mode : 7;
+-
+-  unsigned string_flag : 1;
++  unsigned int precision : 10;
+   unsigned no_force_blk_flag : 1;
+   unsigned needs_constructing_flag : 1;
+   unsigned transparent_union_flag : 1;
+-  unsigned packed_flag : 1;
+   unsigned restrict_flag : 1;
+   unsigned contains_placeholder_bits : 2;
++  ENUM_BITFIELD(machine_mode) mode : 8;
++
++  unsigned string_flag : 1;
+   unsigned lang_flag_0 : 1;
+   unsigned lang_flag_1 : 1;
+   unsigned lang_flag_2 : 1;
+@@ -2283,7 +2284,6 @@ struct tree_type GTY(())
+   unsigned lang_flag_4 : 1;
+   unsigned lang_flag_5 : 1;
+   unsigned lang_flag_6 : 1;
+-  unsigned user_align : 1;
+   unsigned int align;
+   alias_set_type alias_set;
+@@ -2584,7 +2584,7 @@ struct tree_memory_partition_tag GTY(())
+ #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
+ /* Set if the alignment of this DECL has been set by the user, for
+    example with an 'aligned' attribute.  */
+-#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.user_align)
++#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->common.base.user_align)
+ /* Holds the machine mode corresponding to the declaration of a variable or
+    field.  Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a
+    FIELD_DECL.  */
+@@ -2621,7 +2621,7 @@ struct tree_memory_partition_tag GTY(())
+    example, for a FUNCTION_DECL, DECL_SAVED_TREE may be non-NULL and
+    DECL_EXTERNAL may be true simultaneously; that can be the case for
+    a C99 "extern inline" function.  */
+-#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_2)
++#define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_1)
+ /* Nonzero in a ..._DECL means this variable is ref'd from a nested function.
+    For VAR_DECL nodes, PARM_DECL nodes, and FUNCTION_DECL nodes.
+@@ -2696,7 +2696,6 @@ struct tree_decl_common GTY(())
+   unsigned ignored_flag : 1;
+   unsigned abstract_flag : 1;
+   unsigned artificial_flag : 1;
+-  unsigned user_align : 1;
+   unsigned preserve_flag: 1;
+   unsigned debug_expr_is_from : 1;
+@@ -2712,22 +2711,20 @@ struct tree_decl_common GTY(())
+   /* In LABEL_DECL, this is DECL_ERROR_ISSUED.
+      In VAR_DECL and PARM_DECL, this is DECL_REGISTER.  */
+   unsigned decl_flag_0 : 1;
+-  /* In FIELD_DECL, this is DECL_PACKED.  */
+-  unsigned decl_flag_1 : 1;
+   /* In FIELD_DECL, this is DECL_BIT_FIELD
+      In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL.
+-     In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG.  */
+-  unsigned decl_flag_2 : 1;
++     In TYPE_DECL, this is TYPE_DECL_SUPPRESS_DEBUG.  */
++  unsigned decl_flag_1 : 1;
+   /* In FIELD_DECL, this is DECL_NONADDRESSABLE_P
+-     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR.  */
+-  unsigned decl_flag_3 : 1;
++     In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR_P.  */
++  unsigned decl_flag_2 : 1;
+   /* Logically, these two would go in a theoretical base shared by var and
+      parm decl. */
+   unsigned gimple_reg_flag : 1;
+   /* In a DECL with pointer type, set if no TBAA should be done.  */
+   unsigned no_tbaa_flag : 1;
+   /* Padding so that 'align' can be on a 32-bit boundary.  */
+-  unsigned decl_common_unused : 2;
++  unsigned decl_common_unused : 4;
+   unsigned int align : 24;
+   /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs.  */
+@@ -2751,7 +2748,7 @@ extern void decl_value_expr_insert (tree
+    decl itself.  This should only be used for debugging; once this field has
+    been set, the decl itself may not legitimately appear in the function.  */
+ #define DECL_HAS_VALUE_EXPR_P(NODE) \
+-  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_3)
++  (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2)
+ #define DECL_VALUE_EXPR(NODE) \
+   (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
+ #define SET_DECL_VALUE_EXPR(NODE, VAL)                        \
+@@ -2830,11 +2827,11 @@ struct tree_decl_with_rtl GTY(())
+ #define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
+ /* In a FIELD_DECL, indicates this field should be bit-packed.  */
+-#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
++#define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->common.base.packed_flag)
+ /* Nonzero in a FIELD_DECL means it is a bit field, and must be accessed
+    specially.  */
+-#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
++#define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
+ /* Used in a FIELD_DECL to indicate that we cannot form the address of
+    this component.  This makes it possible for Type-Based Alias Analysis
+@@ -2852,7 +2849,7 @@ struct tree_decl_with_rtl GTY(())
+    accesses to s.i must not be given the alias set of the type of 'i'
+    (int) but instead directly that of the type of 's' (struct S).  */
+ #define DECL_NONADDRESSABLE_P(NODE) \
+-  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
++  (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
+ struct tree_field_decl GTY(())
+ {
+@@ -3337,7 +3334,7 @@ struct tree_function_decl GTY(())
+    into stabs.  Instead it will generate cross reference ('x') of names.
+    This uses the same flag as DECL_EXTERNAL.  */
+ #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
+-  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_2)
++  (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_1)
+ /* Getter of the imported declaration associated to the
+    IMPORTED_DECL node.  */
+--- a/gcc/unwind-dw2.c
++++ b/gcc/unwind-dw2.c
+@@ -1414,16 +1414,12 @@ uw_advance_context (struct _Unwind_Conte
  /* Fill in CONTEXT for top-of-stack.  The only valid registers at this
     level will be the return address and the CFA.  */
  
@@ -63079,7 +32985,7 @@ diff -Nur a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
  
  static inline void
  init_dwarf_reg_size_table (void)
-@@ -1431,7 +1427,7 @@
+@@ -1431,7 +1427,7 @@ init_dwarf_reg_size_table (void)
    __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
  }
  
@@ -63088,7 +32994,7 @@ diff -Nur a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
  uw_init_context_1 (struct _Unwind_Context *context,
                   void *outer_cfa, void *outer_ra)
  {
-@@ -1445,7 +1441,8 @@
+@@ -1445,7 +1441,8 @@ uw_init_context_1 (struct _Unwind_Contex
    context->flags = EXTENDED_CONTEXT_BIT;
  
    code = uw_frame_state_for (context, &fs);
@@ -63098,7 +33004,7 @@ diff -Nur a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
  
  #if __GTHREADS
    {
-@@ -1471,6 +1468,8 @@
+@@ -1471,6 +1468,8 @@ uw_init_context_1 (struct _Unwind_Contex
       initialization context, then we can't see it in the given
       call frame data.  So have the initialization context tell us.  */
    context->ra = __builtin_extract_return_addr (outer_ra);
@@ -63107,10 +33013,24 @@ diff -Nur a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
  }
  
  
-diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
---- a/gcc/unwind.inc   2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/unwind.inc   2010-01-25 09:50:29.595686516 +0100
-@@ -85,7 +85,8 @@
+--- a/gcc/unwind-sjlj.c
++++ b/gcc/unwind-sjlj.c
+@@ -292,10 +292,11 @@ uw_advance_context (struct _Unwind_Conte
+   uw_update_context (context, fs);
+ }
+-static inline void
++static inline _Unwind_Reason_Code
+ uw_init_context (struct _Unwind_Context *context)
+ {
+   context->fc = _Unwind_SjLj_GetContext ();
++  return _URC_NO_REASON;
+ }
+ static void __attribute__((noreturn))
+--- a/gcc/unwind.inc
++++ b/gcc/unwind.inc
+@@ -85,7 +85,8 @@ _Unwind_RaiseException(struct _Unwind_Ex
    _Unwind_Reason_Code code;
  
    /* Set up this_context to describe the current stack frame.  */
@@ -63120,7 +33040,7 @@ diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
    cur_context = this_context;
  
    /* Phase 1: Search.  Unwind the stack, calling the personality routine
-@@ -198,7 +199,8 @@
+@@ -198,7 +199,8 @@ _Unwind_ForcedUnwind (struct _Unwind_Exc
    struct _Unwind_Context this_context, cur_context;
    _Unwind_Reason_Code code;
  
@@ -63130,7 +33050,7 @@ diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
    cur_context = this_context;
  
    exc->private_1 = (_Unwind_Ptr) stop;
-@@ -221,7 +223,8 @@
+@@ -221,7 +223,8 @@ _Unwind_Resume (struct _Unwind_Exception
    struct _Unwind_Context this_context, cur_context;
    _Unwind_Reason_Code code;
  
@@ -63140,7 +33060,7 @@ diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
    cur_context = this_context;
  
    /* Choose between continuing to process _Unwind_RaiseException
-@@ -251,7 +254,8 @@
+@@ -251,7 +254,8 @@ _Unwind_Resume_or_Rethrow (struct _Unwin
    if (exc->private_1 == 0)
      return _Unwind_RaiseException (exc);
  
@@ -63150,7 +33070,7 @@ diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
    cur_context = this_context;
  
    code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context);
-@@ -280,7 +284,9 @@
+@@ -280,7 +284,9 @@ _Unwind_Backtrace(_Unwind_Trace_Fn trace
    struct _Unwind_Context context;
    _Unwind_Reason_Code code;
  
@@ -63161,26 +33081,9 @@ diff -Nur a/gcc/unwind.inc b/gcc/unwind.inc
  
    while (1)
      {
-diff -Nur a/gcc/unwind-sjlj.c b/gcc/unwind-sjlj.c
---- a/gcc/unwind-sjlj.c        2009-04-10 01:23:07.000000000 +0200
-+++ b/gcc/unwind-sjlj.c        2010-01-25 09:50:29.595686516 +0100
-@@ -292,10 +292,11 @@
-   uw_update_context (context, fs);
- }
--static inline void
-+static inline _Unwind_Reason_Code
- uw_init_context (struct _Unwind_Context *context)
- {
-   context->fc = _Unwind_SjLj_GetContext ();
-+  return _URC_NO_REASON;
- }
- static void __attribute__((noreturn))
-diff -Nur a/gcc/varasm.c b/gcc/varasm.c
---- a/gcc/varasm.c     2009-03-17 21:18:21.000000000 +0100
-+++ b/gcc/varasm.c     2010-01-25 09:50:29.595686516 +0100
-@@ -1126,11 +1126,14 @@
+--- a/gcc/varasm.c
++++ b/gcc/varasm.c
+@@ -1126,11 +1126,14 @@ align_variable (tree decl, bool dont_out
      {
  #ifdef DATA_ALIGNMENT
        unsigned int data_align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
@@ -63196,7 +33099,7 @@ diff -Nur a/gcc/varasm.c b/gcc/varasm.c
  #ifdef CONSTANT_ALIGNMENT
        if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node)
        {
-@@ -3196,6 +3199,10 @@
+@@ -3198,6 +3201,10 @@ build_constant_desc (tree exp)
    set_mem_alias_set (rtl, 0);
    set_mem_alias_set (rtl, const_alias_set);
  
@@ -63207,10 +33110,9 @@ diff -Nur a/gcc/varasm.c b/gcc/varasm.c
    /* Set flags or add text to the name to record information, such as
       that it is a local symbol.  If the name is changed, the macro
       ASM_OUTPUT_LABELREF will have to know how to strip this
-diff -Nur a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
---- a/gcc/vmsdbgout.c  2008-08-29 20:41:19.000000000 +0200
-+++ b/gcc/vmsdbgout.c  2010-01-25 09:50:29.595686516 +0100
-@@ -211,6 +211,7 @@
+--- a/gcc/vmsdbgout.c
++++ b/gcc/vmsdbgout.c
+@@ -213,6 +213,7 @@ const struct gcc_debug_hooks vmsdbg_debu
     debug_nothing_int,           /* handle_pch */
     debug_nothing_rtx,           /* var_location */
     debug_nothing_void,            /* switch_text_section */
@@ -63218,10 +33120,9 @@ diff -Nur a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
     0                              /* start_end_main_source_file */
  };
  
-diff -Nur a/include/libiberty.h b/include/libiberty.h
---- a/include/libiberty.h      2008-06-24 03:42:31.000000000 +0200
-+++ b/include/libiberty.h      2010-01-25 09:50:29.595686516 +0100
-@@ -591,6 +591,10 @@
+--- a/include/libiberty.h
++++ b/include/libiberty.h
+@@ -591,6 +591,10 @@ extern int pexecute (const char *, char 
  
  extern int pwait (int, int *, int);
  
@@ -63232,10 +33133,66 @@ diff -Nur a/include/libiberty.h b/include/libiberty.h
  #if !HAVE_DECL_ASPRINTF
  /* Like sprintf but provides a pointer to malloc'd storage, which must
     be freed by the caller.  */
-diff -Nur a/libcpp/directives.c b/libcpp/directives.c
---- a/libcpp/directives.c      2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/directives.c      2010-01-25 09:50:29.595686516 +0100
-@@ -2299,13 +2299,6 @@
+--- a/libcpp/Makefile.in
++++ b/libcpp/Makefile.in
+@@ -72,13 +72,12 @@ ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(
+ libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
+       expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
+       mkdeps.o pch.o symtab.o traditional.o
+-makedepend_OBJS = makedepend.o
+ libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
+       expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
+       mkdeps.c pch.c symtab.c traditional.c
+-all: libcpp.a makedepend$(EXEEXT) $(USED_CATALOGS)
++all: libcpp.a $(USED_CATALOGS)
+ .SUFFIXES:
+ .SUFFIXES: .c .gmo .o .obj .po .pox
+@@ -88,12 +87,6 @@ libcpp.a: $(libcpp_a_OBJS)
+       $(AR) $(ARFLAGS) libcpp.a $(libcpp_a_OBJS)
+       $(RANLIB) libcpp.a
+-makedepend$(EXEEXT): $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a
+-      @rm -f makedepend$(EXEEXT)
+-      $(CC) $(CFLAGS) $(LDFLAGS) -o makedepend$(EXEEXT) \
+-        $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a \
+-        $(LIBINTL) $(LIBICONV)
+-
+ # Rules to rebuild the configuration
+ Makefile: $(srcdir)/Makefile.in config.status
+@@ -165,7 +158,7 @@ mostlyclean:
+       -rm -f *.o
+ clean: mostlyclean
+-      -rm -rf makedepend$(EXEEXT) libcpp.a $(srcdir)/autom4te.cache
++      -rm -rf libcpp.a $(srcdir)/autom4te.cache
+ distclean: clean
+       -rm -f config.h stamp-h1 config.status config.cache config.log \
+@@ -247,7 +240,7 @@ po/$(PACKAGE).pot: $(libcpp_a_SOURCES)
+       sed 's:$(srcdir)/::g' <po/$(PACKAGE).pot.tmp >po/$(PACKAGE).pot
+       rm po/$(PACKAGE).pot.tmp
+-TAGS_SOURCES = $(libcpp_a_SOURCES) makedepend.c internal.h ucnid.h \
++TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
+     include/line-map.h include/symtab.h include/cpp-id-data.h \
+     include/cpplib.h include/mkdeps.h system.h
+@@ -259,7 +252,7 @@ TAGS: $(TAGS_SOURCES)
+ .NOEXPORT:
+ # Dependencies
+--include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS) $(makedepend_OBJS))
++-include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS))
+ # Dependencies on generated headers have to be explicit.
+ init.o: localedir.h
+--- a/libcpp/directives.c
++++ b/libcpp/directives.c
+@@ -2376,13 +2376,6 @@ handle_assertion (cpp_reader *pfile, con
    run_directive (pfile, type, str, count);
  }
  
@@ -63249,10 +33206,9 @@ diff -Nur a/libcpp/directives.c b/libcpp/directives.c
  /* The options structure.  */
  cpp_options *
  cpp_get_options (cpp_reader *pfile)
-diff -Nur a/libcpp/errors.c b/libcpp/errors.c
---- a/libcpp/errors.c  2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/errors.c  2010-01-25 09:50:29.595686516 +0100
-@@ -28,171 +28,69 @@
+--- a/libcpp/errors.c
++++ b/libcpp/errors.c
+@@ -28,171 +28,69 @@ along with this program; see the file CO
  #include "cpplib.h"
  #include "internal.h"
  
@@ -63457,10 +33413,9 @@ diff -Nur a/libcpp/errors.c b/libcpp/errors.c
 -  cpp_error (pfile, level, "%s: %s", msgid, xstrerror (errno));
 +  return cpp_error (pfile, level, "%s: %s", msgid, xstrerror (errno));
  }
-diff -Nur a/libcpp/files.c b/libcpp/files.c
---- a/libcpp/files.c   2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/files.c   2010-01-25 09:50:29.605686739 +0100
-@@ -488,7 +488,6 @@
+--- a/libcpp/files.c
++++ b/libcpp/files.c
+@@ -488,7 +488,6 @@ _cpp_find_file (cpp_reader *pfile, const
              return file;
            }
  
@@ -63468,7 +33423,7 @@ diff -Nur a/libcpp/files.c b/libcpp/files.c
          if (invalid_pch)
            {
              cpp_error (pfile, CPP_DL_ERROR,
-@@ -497,6 +496,7 @@
+@@ -497,6 +496,7 @@ _cpp_find_file (cpp_reader *pfile, const
                cpp_error (pfile, CPP_DL_ERROR,
                           "use -Winvalid-pch for more information");
            }
@@ -63476,7 +33431,7 @@ diff -Nur a/libcpp/files.c b/libcpp/files.c
          break;
        }
  
-@@ -934,15 +934,28 @@
+@@ -934,15 +934,28 @@ open_file_failed (cpp_reader *pfile, _cp
  
    errno = file->err_no;
    if (print_dep && CPP_OPTION (pfile, deps.missing_files) && errno == ENOENT)
@@ -63511,10 +33466,9 @@ diff -Nur a/libcpp/files.c b/libcpp/files.c
      }
  }
  
-diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
---- a/libcpp/include/cpplib.h  2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/include/cpplib.h  2010-01-25 09:50:29.605686739 +0100
-@@ -302,22 +302,9 @@
+--- a/libcpp/include/cpplib.h
++++ b/libcpp/include/cpplib.h
+@@ -302,22 +302,9 @@ struct cpp_options
    /* Nonzero means print names of header files (-H).  */
    unsigned char print_include_names;
  
@@ -63537,7 +33491,7 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
    /* Nonzero means warn if slash-star appears in a comment.  */
    unsigned char warn_comments;
  
-@@ -353,9 +340,6 @@
+@@ -353,9 +340,6 @@ struct cpp_options
       explicitly undefined.  */
    unsigned char warn_builtin_macro_redefined;
  
@@ -63547,7 +33501,7 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
    /* Nonzero means we should look for header.gcc files that remap file
       names.  */
    unsigned char remap;
-@@ -432,6 +416,10 @@
+@@ -432,6 +416,10 @@ struct cpp_options
  
      /* If true, no dependency is generated on the main file.  */
      bool ignore_main_file;
@@ -63558,7 +33512,7 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
    } deps;
  
    /* Target-specific features set by the front end or client.  */
-@@ -450,9 +438,6 @@
+@@ -450,9 +438,6 @@ struct cpp_options
    /* Nonzero means __STDC__ should have the value 0 in system headers.  */
    unsigned char stdc_0_in_system_headers;
  
@@ -63568,7 +33522,7 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
    /* True disables tokenization outside of preprocessing directives. */
    bool directives_only;
  };
-@@ -492,10 +477,11 @@
+@@ -492,10 +477,11 @@ struct cpp_callbacks
       be expanded.  */
    cpp_hashnode * (*macro_to_expand) (cpp_reader *, const cpp_token *);
  
@@ -63584,7 +33538,7 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
  
    /* Callbacks for when a macro is expanded, or tested (whether
       defined or not at the time) in #ifdef, #ifndef or "defined".  */
-@@ -697,19 +683,13 @@
+@@ -697,19 +683,13 @@ extern void cpp_init_iconv (cpp_reader *
  
  /* Call this to finish preprocessing.  If you requested dependency
     generation, pass an open stream to write the information to,
@@ -63607,7 +33561,7 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
  extern unsigned int cpp_token_len (const cpp_token *);
  extern unsigned char *cpp_token_as_text (cpp_reader *, const cpp_token *);
  extern unsigned char *cpp_spell_token (cpp_reader *, const cpp_token *,
-@@ -835,24 +815,23 @@
+@@ -835,24 +815,23 @@ cpp_num cpp_num_sign_extend (cpp_num, si
  /* An internal consistency check failed.  Prints "internal error: ",
     otherwise the same as CPP_DL_ERROR.  */
  #define CPP_DL_ICE            0x04
@@ -63639,10 +33593,9 @@ diff -Nur a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
                                 const char *msgid, ...) ATTRIBUTE_PRINTF_5;
  
  /* In lex.c */
-diff -Nur a/libcpp/include/line-map.h b/libcpp/include/line-map.h
---- a/libcpp/include/line-map.h        2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/include/line-map.h        2010-01-25 09:50:29.605686739 +0100
-@@ -144,12 +144,6 @@
+--- a/libcpp/include/line-map.h
++++ b/libcpp/include/line-map.h
+@@ -144,12 +144,6 @@ extern const struct line_map *linemap_ad
  extern const struct line_map *linemap_lookup
    (struct line_maps *, source_location);
  
@@ -63655,10 +33608,9 @@ diff -Nur a/libcpp/include/line-map.h b/libcpp/include/line-map.h
  /* Converts a map and a source_location to source line.  */
  #define SOURCE_LINE(MAP, LOC) \
    ((((LOC) - (MAP)->start_location) >> (MAP)->column_bits) + (MAP)->to_line)
-diff -Nur a/libcpp/init.c b/libcpp/init.c
---- a/libcpp/init.c    2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/init.c    2010-01-25 09:50:29.605686739 +0100
-@@ -616,12 +616,11 @@
+--- a/libcpp/init.c
++++ b/libcpp/init.c
+@@ -631,12 +631,11 @@ read_original_directory (cpp_reader *pfi
  }
  
  /* This is called at the end of preprocessing.  It pops the last
@@ -63673,7 +33625,7 @@ diff -Nur a/libcpp/init.c b/libcpp/init.c
  cpp_finish (cpp_reader *pfile, FILE *deps_stream)
  {
    /* Warn about unused macros before popping the final buffer.  */
-@@ -636,9 +635,8 @@
+@@ -651,9 +650,8 @@ cpp_finish (cpp_reader *pfile, FILE *dep
    while (pfile->buffer)
      _cpp_pop_buffer (pfile);
  
@@ -63684,7 +33636,7 @@ diff -Nur a/libcpp/init.c b/libcpp/init.c
      {
        deps_write (pfile->deps, deps_stream, 72);
  
-@@ -649,8 +647,6 @@
+@@ -664,8 +662,6 @@ cpp_finish (cpp_reader *pfile, FILE *dep
    /* Report on headers that could use multiple include guards.  */
    if (CPP_OPTION (pfile, print_include_names))
      _cpp_report_missing_guards (pfile);
@@ -63693,10 +33645,9 @@ diff -Nur a/libcpp/init.c b/libcpp/init.c
  }
  
  static void
-diff -Nur a/libcpp/internal.h b/libcpp/internal.h
---- a/libcpp/internal.h        2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/internal.h        2010-01-25 09:50:29.605686739 +0100
-@@ -388,9 +388,6 @@
+--- a/libcpp/internal.h
++++ b/libcpp/internal.h
+@@ -398,9 +398,6 @@ struct cpp_reader
    /* Nonzero prevents the lexer from re-using the token runs.  */
    unsigned int keep_tokens;
  
@@ -63706,10 +33657,9 @@ diff -Nur a/libcpp/internal.h b/libcpp/internal.h
    /* Buffer to hold macro definition string.  */
    unsigned char *macro_buffer;
    unsigned int macro_buffer_len;
-diff -Nur a/libcpp/line-map.c b/libcpp/line-map.c
---- a/libcpp/line-map.c        2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/line-map.c        2010-01-25 09:50:29.605686739 +0100
-@@ -302,45 +302,6 @@
+--- a/libcpp/line-map.c
++++ b/libcpp/line-map.c
+@@ -302,45 +302,6 @@ linemap_lookup (struct line_maps *set, s
    return &set->maps[mn];
  }
  
@@ -63755,10 +33705,9 @@ diff -Nur a/libcpp/line-map.c b/libcpp/line-map.c
  /* Print an include trace, for e.g. the -H option of the preprocessor.  */
  
  static void
-diff -Nur a/libcpp/macro.c b/libcpp/macro.c
---- a/libcpp/macro.c   2009-04-10 01:23:07.000000000 +0200
-+++ b/libcpp/macro.c   2010-01-25 09:50:29.605686739 +0100
-@@ -1833,11 +1833,13 @@
+--- a/libcpp/macro.c
++++ b/libcpp/macro.c
+@@ -1833,11 +1833,13 @@ _cpp_create_definition (cpp_reader *pfil
  
        if (warn_of_redefinition (pfile, node, macro))
        {
@@ -63776,9 +33725,8 @@ diff -Nur a/libcpp/macro.c b/libcpp/macro.c
                                 node->value.macro->line, 0,
                         "this is the location of the previous definition");
        }
-diff -Nur a/libcpp/makedepend.c b/libcpp/makedepend.c
---- a/libcpp/makedepend.c      2005-06-29 04:34:39.000000000 +0200
-+++ b/libcpp/makedepend.c      2010-01-25 09:50:29.605686739 +0100
+--- a/libcpp/makedepend.c
++++ /dev/null
 @@ -1,206 +0,0 @@
 -/* Dependency generator utility.
 -   Copyright (C) 2004 Free Software Foundation, Inc.
@@ -63986,83 +33934,82 @@ diff -Nur a/libcpp/makedepend.c b/libcpp/makedepend.c
 -
 -  return had_errors;
 -}
-diff -Nur a/libcpp/Makefile.in b/libcpp/Makefile.in
---- a/libcpp/Makefile.in       2009-07-22 09:43:59.000000000 +0200
-+++ b/libcpp/Makefile.in       2010-01-25 09:50:29.605686739 +0100
-@@ -72,13 +72,12 @@
- libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \
-       expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \
-       mkdeps.o pch.o symtab.o traditional.o
--makedepend_OBJS = makedepend.o
- libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \
-       expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \
-       mkdeps.c pch.c symtab.c traditional.c
--all: libcpp.a makedepend$(EXEEXT) $(USED_CATALOGS)
-+all: libcpp.a $(USED_CATALOGS)
- .SUFFIXES:
- .SUFFIXES: .c .gmo .o .obj .po .pox
-@@ -88,12 +87,6 @@
-       $(AR) $(ARFLAGS) libcpp.a $(libcpp_a_OBJS)
-       $(RANLIB) libcpp.a
--makedepend$(EXEEXT): $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a
--      @rm -f makedepend$(EXEEXT)
--      $(CC) $(CFLAGS) $(LDFLAGS) -o makedepend$(EXEEXT) \
--        $(makedepend_OBJS) libcpp.a ../libiberty/libiberty.a \
--        $(LIBINTL) $(LIBICONV)
--
- # Rules to rebuild the configuration
- Makefile: $(srcdir)/Makefile.in config.status
-@@ -165,7 +158,7 @@
-       -rm -f *.o
- clean: mostlyclean
--      -rm -rf makedepend$(EXEEXT) libcpp.a $(srcdir)/autom4te.cache
-+      -rm -rf libcpp.a $(srcdir)/autom4te.cache
- distclean: clean
-       -rm -f config.h stamp-h1 config.status config.cache config.log \
-@@ -247,7 +240,7 @@
-       sed 's:$(srcdir)/::g' <po/$(PACKAGE).pot.tmp >po/$(PACKAGE).pot
-       rm po/$(PACKAGE).pot.tmp
--TAGS_SOURCES = $(libcpp_a_SOURCES) makedepend.c internal.h ucnid.h \
-+TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \
-     include/line-map.h include/symtab.h include/cpp-id-data.h \
-     include/cpplib.h include/mkdeps.h system.h
+--- a/libgcc/Makefile.in
++++ b/libgcc/Makefile.in
+@@ -389,18 +389,24 @@ libgcc-s-objects += $(patsubst %,%_s$(ob
+ endif
+ endif
  
-@@ -259,7 +252,7 @@
- .NOEXPORT:
++ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
++# Provide default flags for compiling divmod functions, if they haven't been
++# set already by a target-specific Makefile fragment.
++LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
++endif
++
+ # Build LIB2_DIVMOD_FUNCS.
+ lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS))
+ $(lib2-divmod-o): %$(objext): $(gcc_srcdir)/libgcc2.c
+       $(gcc_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
+-        -fexceptions -fnon-call-exceptions $(vis_hide)
++        $(LIB2_DIVMOD_EXCEPTION_FLAGS) $(vis_hide)
+ libgcc-objects += $(lib2-divmod-o)
  
- # Dependencies
---include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS) $(makedepend_OBJS))
-+-include $(patsubst %.o, $(DEPDIR)/%.Po, $(libcpp_a_OBJS))
+ ifeq ($(enable_shared),yes)
+ lib2-divmod-s-o = $(patsubst %,%_s$(objext),$(LIB2_DIVMOD_FUNCS))
+ $(lib2-divmod-s-o): %_s$(objext): $(gcc_srcdir)/libgcc2.c
+       $(gcc_s_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
+-        -fexceptions -fnon-call-exceptions
++        $(LIB2_DIVMOD_EXCEPTION_FLAGS)
+ libgcc-s-objects += $(lib2-divmod-s-o)
+ endif
  
- # Dependencies on generated headers have to be explicit.
- init.o: localedir.h
-diff -Nur a/libgcc/config/arm/t-divmod-ef b/libgcc/config/arm/t-divmod-ef
---- a/libgcc/config/arm/t-divmod-ef    1970-01-01 01:00:00.000000000 +0100
-+++ b/libgcc/config/arm/t-divmod-ef    2010-01-25 09:50:29.605686739 +0100
+--- a/libgcc/config.host
++++ b/libgcc/config.host
+@@ -203,12 +203,15 @@ arm*-*-netbsdelf*)
+ arm*-*-netbsd*)
+       ;;
+ arm*-*-linux*)                        # ARM GNU/Linux with ELF
++      tmake_file="${tmake_file} arm/t-divmod-ef"
+       ;;
+ arm*-*-uclinux*)              # ARM ucLinux
++      tmake_file="${tmake_file} arm/t-divmod-ef"
+       ;;
+ arm*-*-ecos-elf)
+       ;;
+ arm*-*-eabi* | arm*-*-symbianelf* )
++      tmake_file="${tmake_file} arm/t-divmod-ef"
+       ;;
+ arm*-*-rtems*)
+       ;;
+@@ -394,8 +397,12 @@ mips-sgi-irix[56]*)
+ mips*-*-netbsd*)                      # NetBSD/mips, either endian.
+       ;;
+ mips64*-*-linux*)
++      extra_parts="$extra_parts crtfastmath.o"
++      tmake_file="{$tmake_file} mips/t-crtfm"
+       ;;
+ mips*-*-linux*)                               # Linux MIPS, either endian.
++      extra_parts="$extra_parts crtfastmath.o"
++      tmake_file="{$tmake_file} mips/t-crtfm"
+       ;;
+ mips*-*-openbsd*)
+       ;;
+--- /dev/null
++++ b/libgcc/config/arm/t-divmod-ef
 @@ -0,0 +1,4 @@
 +# On ARM, specifying -fnon-call-exceptions will needlessly pull in
 +# the unwinder in simple programs which use 64-bit division.  Omitting
 +# the option is safe.
 +LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
-diff -Nur a/libgcc/config/mips/t-crtfm b/libgcc/config/mips/t-crtfm
---- a/libgcc/config/mips/t-crtfm       1970-01-01 01:00:00.000000000 +0100
-+++ b/libgcc/config/mips/t-crtfm       2010-01-25 09:50:29.605686739 +0100
+--- /dev/null
++++ b/libgcc/config/mips/t-crtfm
 @@ -0,0 +1,3 @@
 +crtfastmath.o: $(gcc_srcdir)/config/mips/crtfastmath.c
 +      $(gcc_compile) -c $(gcc_srcdir)/config/mips/crtfastmath.c
 +
-diff -Nur a/libgcc/config/rs6000/t-ppccomm b/libgcc/config/rs6000/t-ppccomm
---- a/libgcc/config/rs6000/t-ppccomm   2008-06-26 16:15:49.000000000 +0200
-+++ b/libgcc/config/rs6000/t-ppccomm   2010-01-25 09:50:29.605686739 +0100
-@@ -101,3 +101,63 @@
+--- a/libgcc/config/rs6000/t-ppccomm
++++ b/libgcc/config/rs6000/t-ppccomm
+@@ -101,3 +101,63 @@ ncrti$(objext): ncrti.S
  
  ncrtn$(objext): ncrtn.S
        $(crt_compile) -c ncrtn.S
@@ -64126,83 +34073,9 @@ diff -Nur a/libgcc/config/rs6000/t-ppccomm b/libgcc/config/rs6000/t-ppccomm
 +
 +e500crtsavg64gprctr$(objext): e500crtsavg64gprctr.S
 +      $(crt_compile) -c e500crtsavg64gprctr.S
-diff -Nur a/libgcc/config.host b/libgcc/config.host
---- a/libgcc/config.host       2009-04-17 13:58:41.000000000 +0200
-+++ b/libgcc/config.host       2010-01-25 09:50:29.605686739 +0100
-@@ -203,12 +203,15 @@
- arm*-*-netbsd*)
-       ;;
- arm*-*-linux*)                        # ARM GNU/Linux with ELF
-+      tmake_file="${tmake_file} arm/t-divmod-ef"
-       ;;
- arm*-*-uclinux*)              # ARM ucLinux
-+      tmake_file="${tmake_file} arm/t-divmod-ef"
-       ;;
- arm*-*-ecos-elf)
-       ;;
- arm*-*-eabi* | arm*-*-symbianelf* )
-+      tmake_file="${tmake_file} arm/t-divmod-ef"
-       ;;
- arm*-*-rtems*)
-       ;;
-@@ -394,8 +397,12 @@
- mips*-*-netbsd*)                      # NetBSD/mips, either endian.
-       ;;
- mips64*-*-linux*)
-+      extra_parts="$extra_parts crtfastmath.o"
-+      tmake_file="{$tmake_file} mips/t-crtfm"
-       ;;
- mips*-*-linux*)                               # Linux MIPS, either endian.
-+      extra_parts="$extra_parts crtfastmath.o"
-+      tmake_file="{$tmake_file} mips/t-crtfm"
-       ;;
- mips*-*-openbsd*)
-       ;;
-@@ -419,6 +426,10 @@
-         ;;
- mips64orion-*-elf* | mips64orionel-*-elf*)
-       ;;
-+mips64octeon-wrs-elf* | mips64octeonel-wrs-elf*)
-+      ;;
-+mips64octeon-montavista-elf*)
-+      ;;
- mips*-*-rtems*)
-       ;;
- mips-wrs-vxworks)
-diff -Nur a/libgcc/Makefile.in b/libgcc/Makefile.in
---- a/libgcc/Makefile.in       2009-04-10 01:23:07.000000000 +0200
-+++ b/libgcc/Makefile.in       2010-01-25 09:50:29.605686739 +0100
-@@ -389,18 +389,24 @@
- endif
- endif
-+ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
-+# Provide default flags for compiling divmod functions, if they haven't been
-+# set already by a target-specific Makefile fragment.
-+LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
-+endif
-+
- # Build LIB2_DIVMOD_FUNCS.
- lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS))
- $(lib2-divmod-o): %$(objext): $(gcc_srcdir)/libgcc2.c
-       $(gcc_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
--        -fexceptions -fnon-call-exceptions $(vis_hide)
-+        $(LIB2_DIVMOD_EXCEPTION_FLAGS) $(vis_hide)
- libgcc-objects += $(lib2-divmod-o)
- ifeq ($(enable_shared),yes)
- lib2-divmod-s-o = $(patsubst %,%_s$(objext),$(LIB2_DIVMOD_FUNCS))
- $(lib2-divmod-s-o): %_s$(objext): $(gcc_srcdir)/libgcc2.c
-       $(gcc_s_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
--        -fexceptions -fnon-call-exceptions
-+        $(LIB2_DIVMOD_EXCEPTION_FLAGS)
- libgcc-s-objects += $(lib2-divmod-s-o)
- endif
-diff -Nur a/libgcc/shared-object.mk b/libgcc/shared-object.mk
---- a/libgcc/shared-object.mk  2008-07-03 21:22:00.000000000 +0200
-+++ b/libgcc/shared-object.mk  2010-01-25 09:50:29.605686739 +0100
-@@ -8,11 +8,13 @@
+--- a/libgcc/shared-object.mk
++++ b/libgcc/shared-object.mk
+@@ -8,11 +8,13 @@ base := $(basename $(notdir $o))
  
  ifeq ($(suffix $o),.c)
  
@@ -64218,10 +34091,9 @@ diff -Nur a/libgcc/shared-object.mk b/libgcc/shared-object.mk
  
  else
  
-diff -Nur a/libgcc/static-object.mk b/libgcc/static-object.mk
---- a/libgcc/static-object.mk  2007-01-04 05:22:37.000000000 +0100
-+++ b/libgcc/static-object.mk  2010-01-25 09:50:29.605686739 +0100
-@@ -8,8 +8,9 @@
+--- a/libgcc/static-object.mk
++++ b/libgcc/static-object.mk
+@@ -8,8 +8,9 @@ base := $(basename $(notdir $o))
  
  ifeq ($(suffix $o),.c)
  
@@ -64232,10 +34104,164 @@ diff -Nur a/libgcc/static-object.mk b/libgcc/static-object.mk
  
  else
  
-diff -Nur a/libgomp/configure b/libgomp/configure
---- a/libgomp/configure        2009-07-22 09:43:59.000000000 +0200
-+++ b/libgomp/configure        2010-01-25 09:50:29.605686739 +0100
-@@ -457,7 +457,7 @@
+--- a/libgomp/Makefile.am
++++ b/libgomp/Makefile.am
+@@ -1,5 +1,10 @@
+ ## Process this file with automake to produce Makefile.in
++datarootdir = @datarootdir@
++docdir = @docdir@
++htmldir = @htmldir@
++pdfdir = @pdfdir@
++
+ ACLOCAL_AMFLAGS = -I .. -I ../config
+ SUBDIRS = testsuite
+@@ -41,6 +46,12 @@ if USE_FORTRAN
+ nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod
+ endif
++LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
++
++LINK = $(LIBTOOL) --tag CC --mode=link $(CCLD) $(AM_CCFLAGS) $(CFLAGS) \
++      $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
++
++
+ omp_lib_kinds.mod: omp_lib.mod
+       :
+ omp_lib.mod: omp_lib.f90
+@@ -50,10 +61,30 @@ fortran.o: libgomp_f.h
+ env.lo: libgomp_f.h
+ env.o: libgomp_f.h
++HTMLS_INSTALL=libgomp
++HTMLS_BUILD=libgomp/index.html
+-# No install-html or install-pdf support in automake yet
+-.PHONY: install-html install-pdf
+-install-html:
++$(HTMLS_BUILD): $(info_TEXINFOS)
++      $(TEXI2HTML) $(MAKEINFOFLAGS) -I$(srcdir) -o $(@D) $<
++
++html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
++
++install-html: $(HTMLS_BUILD)
++      @$(NORMAL_INSTALL)
++      test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
++      @list='$(HTMLS_INSTALL)'; for p in $$list; do \
++        if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
++        f=$(html__strip_dir) \
++        if test -d "$$d$$p"; then \
++          echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
++          $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
++          echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
++          $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
++        else \
++          echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
++          $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
++        fi; \
++      done
+ install-pdf: $(PDFS)
+       @$(NORMAL_INSTALL)
+@@ -71,6 +102,7 @@ install-pdf: $(PDFS)
+ # `texinfo.tex' for your package. The value of this variable should be
+ # the relative path from the current `Makefile.am' to `texinfo.tex'.
+ TEXINFO_TEX   = ../gcc/doc/include/texinfo.tex
++TEXI2HTML = $(MAKEINFO) --html
+ # Defines info, dvi, pdf and html targets
+ MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
+--- a/libgomp/Makefile.in
++++ b/libgomp/Makefile.in
+@@ -97,8 +97,6 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=c
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+-      $(AM_LDFLAGS) $(LDFLAGS) -o $@
+ SOURCES = $(libgomp_la_SOURCES)
+ DIST_SOURCES = $(libgomp_la_SOURCES)
+ MULTISRCTOP = 
+@@ -259,6 +257,8 @@ build_os = @build_os@
+ build_vendor = @build_vendor@
+ config_path = @config_path@
+ datadir = @datadir@
++datarootdir = @datarootdir@
++docdir = @docdir@
+ enable_shared = @enable_shared@
+ enable_static = @enable_static@
+ exec_prefix = @exec_prefix@
+@@ -267,6 +267,7 @@ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+ host_os = @host_os@
+ host_vendor = @host_vendor@
++htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+@@ -280,6 +281,7 @@ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ multi_basedir = @multi_basedir@
+ oldincludedir = @oldincludedir@
++pdfdir = @pdfdir@
+ prefix = @prefix@
+ program_transform_name = @program_transform_name@
+ sbindir = @sbindir@
+@@ -317,6 +319,13 @@ libgomp_la_SOURCES = alloc.c barrier.c c
+ nodist_noinst_HEADERS = libgomp_f.h
+ nodist_libsubinclude_HEADERS = omp.h
+ @USE_FORTRAN_TRUE@nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod
++LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
++LINK = $(LIBTOOL) --tag CC --mode=link $(CCLD) $(AM_CCFLAGS) $(CFLAGS) \
++      $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
++
++HTMLS_INSTALL = libgomp
++HTMLS_BUILD = libgomp/index.html
++html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+ # Automake Documentation:
+ # If your package has Texinfo files in many directories, you can use the
+@@ -324,6 +333,7 @@ nodist_libsubinclude_HEADERS = omp.h
+ # `texinfo.tex' for your package. The value of this variable should be
+ # the relative path from the current `Makefile.am' to `texinfo.tex'.
+ TEXINFO_TEX = ../gcc/doc/include/texinfo.tex
++TEXI2HTML = $(MAKEINFO) --html
+ # Defines info, dvi, pdf and html targets
+ MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
+@@ -1085,9 +1095,25 @@ fortran.o: libgomp_f.h
+ env.lo: libgomp_f.h
+ env.o: libgomp_f.h
+-# No install-html or install-pdf support in automake yet
+-.PHONY: install-html install-pdf
+-install-html:
++$(HTMLS_BUILD): $(info_TEXINFOS)
++      $(TEXI2HTML) $(MAKEINFOFLAGS) -I$(srcdir) -o $(@D) $<
++
++install-html: $(HTMLS_BUILD)
++      @$(NORMAL_INSTALL)
++      test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
++      @list='$(HTMLS_INSTALL)'; for p in $$list; do \
++        if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
++        f=$(html__strip_dir) \
++        if test -d "$$d$$p"; then \
++          echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
++          $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
++          echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
++          $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
++        else \
++          echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
++          $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
++        fi; \
++      done
+ install-pdf: $(PDFS)
+       @$(NORMAL_INSTALL)
+--- a/libgomp/configure
++++ b/libgomp/configure
+@@ -457,7 +457,7 @@ ac_includes_default="\
  # include <unistd.h>
  #endif"
  
@@ -64244,7 +34270,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  ac_subst_files=''
  ac_pwd=`pwd`
  
-@@ -1029,6 +1029,10 @@
+@@ -1029,6 +1029,10 @@ Optional Features:
  Optional Packages:
    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
@@ -64255,7 +34281,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
    --with-pic              try to use only PIC/non-PIC objects [default=use
                            both]
    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-@@ -2201,6 +2205,46 @@
+@@ -2201,6 +2205,46 @@ esac
  
  
  
@@ -64302,7 +34328,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  # Check the compiler.
  # The same as in boehm-gc and libstdc++. Have to borrow it from there.
  # We must force CC to /not/ be precious variables; otherwise
-@@ -4156,13 +4200,13 @@
+@@ -4156,13 +4200,13 @@ if test "${lt_cv_nm_interface+set}" = se
  else
    lt_cv_nm_interface="BSD nm"
    echo "int some_variable = 0;" > conftest.$ac_ext
@@ -64319,7 +34345,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
    cat conftest.out >&5
    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
      lt_cv_nm_interface="MS dumpbin"
-@@ -5320,7 +5364,7 @@
+@@ -5320,7 +5364,7 @@ ia64-*-hpux*)
    ;;
  *-*-irix6*)
    # Find out which ABI we are using.
@@ -64328,7 +34354,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
-@@ -7101,11 +7145,11 @@
+@@ -7101,11 +7145,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64342,7 +34368,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -7440,11 +7484,11 @@
+@@ -7440,11 +7484,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64356,7 +34382,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -7545,11 +7589,11 @@
+@@ -7545,11 +7589,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64370,7 +34396,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -7600,11 +7644,11 @@
+@@ -7600,11 +7644,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64384,7 +34410,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -10412,7 +10456,7 @@
+@@ -10412,7 +10456,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
@@ -64393,7 +34419,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -10508,7 +10552,7 @@
+@@ -10508,7 +10552,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
@@ -64402,7 +34428,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -10859,7 +10903,7 @@
+@@ -10859,7 +10903,7 @@ fi
  
  
  # Provide some information about the compiler.
@@ -64411,7 +34437,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
       "checking for Fortran compiler version" >&5
  ac_compiler=`set X $ac_compile; echo $2`
  { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-@@ -11095,7 +11139,7 @@
+@@ -11095,7 +11139,7 @@ fi
  
  
  # Provide some information about the compiler.
@@ -64420,7 +34446,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
       "checking for Fortran compiler version" >&5
  ac_compiler=`set X $ac_compile; echo $2`
  { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-@@ -11835,11 +11879,11 @@
+@@ -11835,11 +11879,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64434,7 +34460,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -11934,11 +11978,11 @@
+@@ -11934,11 +11978,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64448,7 +34474,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -11986,11 +12030,11 @@
+@@ -11986,11 +12030,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -64462,7 +34488,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -15133,7 +15177,8 @@
+@@ -15133,7 +15177,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64472,7 +34498,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15197,7 +15242,8 @@
+@@ -15197,7 +15242,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64482,7 +34508,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15238,7 +15284,8 @@
+@@ -15238,7 +15284,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64492,7 +34518,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15295,7 +15342,8 @@
+@@ -15295,7 +15342,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64502,7 +34528,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15336,7 +15384,8 @@
+@@ -15336,7 +15384,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64512,7 +34538,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15401,7 +15450,8 @@
+@@ -15401,7 +15450,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64522,7 +34548,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15469,7 +15519,8 @@
+@@ -15469,7 +15519,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64532,7 +34558,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  long longval () { return (long) (sizeof (void *)); }
  unsigned long ulongval () { return (long) (sizeof (void *)); }
  #include <stdio.h>
-@@ -15557,7 +15608,8 @@
+@@ -15557,7 +15608,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64542,7 +34568,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15621,7 +15673,8 @@
+@@ -15621,7 +15673,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64552,7 +34578,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15662,7 +15715,8 @@
+@@ -15662,7 +15715,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64562,7 +34588,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15719,7 +15773,8 @@
+@@ -15719,7 +15773,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64572,7 +34598,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15760,7 +15815,8 @@
+@@ -15760,7 +15815,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64582,7 +34608,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15825,7 +15881,8 @@
+@@ -15825,7 +15881,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64592,7 +34618,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -15893,7 +15950,8 @@
+@@ -15893,7 +15950,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64602,7 +34628,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  long longval () { return (long) (sizeof (long)); }
  unsigned long ulongval () { return (long) (sizeof (long)); }
  #include <stdio.h>
-@@ -15981,7 +16039,8 @@
+@@ -15981,7 +16039,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64612,7 +34638,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16045,7 +16104,8 @@
+@@ -16045,7 +16104,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64622,7 +34648,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16086,7 +16146,8 @@
+@@ -16086,7 +16146,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64632,7 +34658,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16143,7 +16204,8 @@
+@@ -16143,7 +16204,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64642,7 +34668,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16184,7 +16246,8 @@
+@@ -16184,7 +16246,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64652,7 +34678,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16249,7 +16312,8 @@
+@@ -16249,7 +16312,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64662,7 +34688,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16317,7 +16381,8 @@
+@@ -16317,7 +16381,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64672,7 +34698,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  long longval () { return (long) (sizeof (int)); }
  unsigned long ulongval () { return (long) (sizeof (int)); }
  #include <stdio.h>
-@@ -16401,7 +16466,8 @@
+@@ -16401,7 +16466,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64682,7 +34708,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16465,7 +16531,8 @@
+@@ -16465,7 +16531,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64692,7 +34718,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16506,7 +16573,8 @@
+@@ -16506,7 +16573,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64702,7 +34728,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16563,7 +16631,8 @@
+@@ -16563,7 +16631,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64712,7 +34738,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16604,7 +16673,8 @@
+@@ -16604,7 +16673,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64722,7 +34748,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16669,7 +16739,8 @@
+@@ -16669,7 +16739,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64732,7 +34758,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16737,7 +16808,8 @@
+@@ -16737,7 +16808,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64742,7 +34768,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  long longval () { return (long) (sizeof (short)); }
  unsigned long ulongval () { return (long) (sizeof (short)); }
  #include <stdio.h>
-@@ -16821,7 +16893,8 @@
+@@ -16821,7 +16893,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64752,7 +34778,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16885,7 +16958,8 @@
+@@ -16885,7 +16958,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64762,7 +34788,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16926,7 +17000,8 @@
+@@ -16926,7 +17000,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64772,7 +34798,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -16983,7 +17058,8 @@
+@@ -16983,7 +17058,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64782,7 +34808,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -17024,7 +17100,8 @@
+@@ -17024,7 +17100,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64792,7 +34818,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -17089,7 +17166,8 @@
+@@ -17089,7 +17166,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64802,7 +34828,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  int
  main ()
  {
-@@ -17157,7 +17235,8 @@
+@@ -17157,7 +17235,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -64812,7 +34838,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  long longval () { return (long) (sizeof (char)); }
  unsigned long ulongval () { return (long) (sizeof (char)); }
  #include <stdio.h>
-@@ -17906,6 +17985,64 @@
+@@ -17906,6 +17985,64 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
@@ -64877,7 +34903,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
    gcc_cv_have_tls=yes
  else
    echo "$as_me: failed program was:" >&5
-@@ -17915,6 +18052,24 @@
+@@ -17915,6 +18052,24 @@ gcc_cv_have_tls=no
  fi
  rm -f conftest.err conftest.$ac_objext \
        conftest$ac_exeext conftest.$ac_ext
@@ -64902,7 +34928,7 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  
  
  else
-@@ -22801,6 +22956,10 @@
+@@ -22801,6 +22956,10 @@ s,@am__untar@,$am__untar,;t t
  s,@multi_basedir@,$multi_basedir,;t t
  s,@toolexecdir@,$toolexecdir,;t t
  s,@toolexeclibdir@,$toolexeclibdir,;t t
@@ -64913,10 +34939,9 @@ diff -Nur a/libgomp/configure b/libgomp/configure
  s,@CC@,$CC,;t t
  s,@ac_ct_CC@,$ac_ct_CC,;t t
  s,@EXEEXT@,$EXEEXT,;t t
-diff -Nur a/libgomp/configure.ac b/libgomp/configure.ac
---- a/libgomp/configure.ac     2008-09-19 22:27:11.000000000 +0200
-+++ b/libgomp/configure.ac     2010-01-25 09:50:29.605686739 +0100
-@@ -94,6 +94,30 @@
+--- a/libgomp/configure.ac
++++ b/libgomp/configure.ac
+@@ -94,6 +94,30 @@ esac
  AC_SUBST(toolexecdir)
  AC_SUBST(toolexeclibdir)
  
@@ -64947,10 +34972,9 @@ diff -Nur a/libgomp/configure.ac b/libgomp/configure.ac
  # Check the compiler.
  # The same as in boehm-gc and libstdc++. Have to borrow it from there.
  # We must force CC to /not/ be precious variables; otherwise
-diff -Nur a/libgomp/libgomp.texi b/libgomp/libgomp.texi
---- a/libgomp/libgomp.texi     2008-11-04 19:16:17.000000000 +0100
-+++ b/libgomp/libgomp.texi     2010-01-25 09:50:29.605686739 +0100
-@@ -94,7 +94,7 @@
+--- a/libgomp/libgomp.texi
++++ b/libgomp/libgomp.texi
+@@ -94,7 +94,7 @@ for multi-platform shared-memory paralle
                                 How you can copy and share this manual.
  * Funding::                    How to help assure continued work for free 
                                 software.
@@ -64959,7 +34983,7 @@ diff -Nur a/libgomp/libgomp.texi b/libgomp/libgomp.texi
  @end menu
  
  
-@@ -1713,8 +1713,8 @@
+@@ -1713,8 +1713,8 @@ Bugs in the GNU OpenMP implementation sh
  @c Index
  @c ---------------------------------------------------------------------
  
@@ -64970,88 +34994,9 @@ diff -Nur a/libgomp/libgomp.texi b/libgomp/libgomp.texi
  
  @printindex cp
  
-diff -Nur a/libgomp/Makefile.am b/libgomp/Makefile.am
---- a/libgomp/Makefile.am      2008-08-31 20:16:09.000000000 +0200
-+++ b/libgomp/Makefile.am      2010-01-25 09:50:29.615687242 +0100
-@@ -1,5 +1,10 @@
- ## Process this file with automake to produce Makefile.in
-+datarootdir = @datarootdir@
-+docdir = @docdir@
-+htmldir = @htmldir@
-+pdfdir = @pdfdir@
-+
- ACLOCAL_AMFLAGS = -I .. -I ../config
- SUBDIRS = testsuite
-@@ -41,6 +46,12 @@
- nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod
- endif
-+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
-+
-+LINK = $(LIBTOOL) --tag CC --mode=link $(CCLD) $(AM_CCFLAGS) $(CFLAGS) \
-+      $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
-+
-+
- omp_lib_kinds.mod: omp_lib.mod
-       :
- omp_lib.mod: omp_lib.f90
-@@ -50,10 +61,30 @@
- env.lo: libgomp_f.h
- env.o: libgomp_f.h
-+HTMLS_INSTALL=libgomp
-+HTMLS_BUILD=libgomp/index.html
--# No install-html or install-pdf support in automake yet
--.PHONY: install-html install-pdf
--install-html:
-+$(HTMLS_BUILD): $(info_TEXINFOS)
-+      $(TEXI2HTML) $(MAKEINFOFLAGS) -I$(srcdir) -o $(@D) $<
-+
-+html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-+
-+install-html: $(HTMLS_BUILD)
-+      @$(NORMAL_INSTALL)
-+      test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
-+      @list='$(HTMLS_INSTALL)'; for p in $$list; do \
-+        if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
-+        f=$(html__strip_dir) \
-+        if test -d "$$d$$p"; then \
-+          echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
-+          $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
-+          echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
-+          $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
-+        else \
-+          echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
-+          $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
-+        fi; \
-+      done
- install-pdf: $(PDFS)
-       @$(NORMAL_INSTALL)
-@@ -71,6 +102,7 @@
- # `texinfo.tex' for your package. The value of this variable should be
- # the relative path from the current `Makefile.am' to `texinfo.tex'.
- TEXINFO_TEX   = ../gcc/doc/include/texinfo.tex
-+TEXI2HTML = $(MAKEINFO) --html
- # Defines info, dvi, pdf and html targets
- MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
-diff -Nur a/libgomp/Makefile.in b/libgomp/Makefile.in
---- a/libgomp/Makefile.in      2009-07-22 09:43:59.000000000 +0200
-+++ b/libgomp/Makefile.in      2010-01-25 09:50:29.615687242 +0100
-@@ -97,8 +97,6 @@
-       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-       $(AM_CFLAGS) $(CFLAGS)
- CCLD = $(CC)
--LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
--      $(AM_LDFLAGS) $(LDFLAGS) -o $@
- SOURCES = $(libgomp_la_SOURCES)
- DIST_SOURCES = $(libgomp_la_SOURCES)
- MULTISRCTOP = 
-@@ -259,6 +257,8 @@
+--- a/libgomp/testsuite/Makefile.in
++++ b/libgomp/testsuite/Makefile.in
+@@ -177,6 +177,8 @@ build_os = @build_os@
  build_vendor = @build_vendor@
  config_path = @config_path@
  datadir = @datadir@
@@ -65060,7 +35005,7 @@ diff -Nur a/libgomp/Makefile.in b/libgomp/Makefile.in
  enable_shared = @enable_shared@
  enable_static = @enable_static@
  exec_prefix = @exec_prefix@
-@@ -267,6 +267,7 @@
+@@ -185,6 +187,7 @@ host_alias = @host_alias@
  host_cpu = @host_cpu@
  host_os = @host_os@
  host_vendor = @host_vendor@
@@ -65068,7 +35013,7 @@ diff -Nur a/libgomp/Makefile.in b/libgomp/Makefile.in
  includedir = @includedir@
  infodir = @infodir@
  install_sh = @install_sh@
-@@ -280,6 +281,7 @@
+@@ -198,6 +201,7 @@ mandir = @mandir@
  mkdir_p = @mkdir_p@
  multi_basedir = @multi_basedir@
  oldincludedir = @oldincludedir@
@@ -65076,89 +35021,43 @@ diff -Nur a/libgomp/Makefile.in b/libgomp/Makefile.in
  prefix = @prefix@
  program_transform_name = @program_transform_name@
  sbindir = @sbindir@
-@@ -317,6 +319,13 @@
- nodist_noinst_HEADERS = libgomp_f.h
- nodist_libsubinclude_HEADERS = omp.h
- @USE_FORTRAN_TRUE@nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod
-+LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
-+LINK = $(LIBTOOL) --tag CC --mode=link $(CCLD) $(AM_CCFLAGS) $(CFLAGS) \
-+      $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
-+
-+HTMLS_INSTALL = libgomp
-+HTMLS_BUILD = libgomp/index.html
-+html__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
- # Automake Documentation:
- # If your package has Texinfo files in many directories, you can use the
-@@ -324,6 +333,7 @@
- # `texinfo.tex' for your package. The value of this variable should be
- # the relative path from the current `Makefile.am' to `texinfo.tex'.
- TEXINFO_TEX = ../gcc/doc/include/texinfo.tex
-+TEXI2HTML = $(MAKEINFO) --html
- # Defines info, dvi, pdf and html targets
- MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
-@@ -1085,9 +1095,25 @@
- env.lo: libgomp_f.h
- env.o: libgomp_f.h
+--- a/libiberty/Makefile.in
++++ b/libiberty/Makefile.in
+@@ -124,7 +124,7 @@ COMPILE.c = $(CC) -c @DEFS@ $(CFLAGS) $(
+ CFILES = alloca.c argv.c asprintf.c atexit.c                          \
+       basename.c bcmp.c bcopy.c bsearch.c bzero.c                     \
+       calloc.c choose-temp.c clock.c concat.c cp-demangle.c           \
+-       cp-demint.c cplus-dem.c                                        \
++       cp-demint.c cplus-dem.c cygpath.c                              \
+       dyn-string.c                                                    \
+       fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c          \
+       fnmatch.c fopen_unlocked.c                                      \
+@@ -182,7 +182,7 @@ REQUIRED_OFILES =                                                  \
+ # maint-missing" and "make check".
+ CONFIGURED_OFILES = ./asprintf.o ./atexit.o                           \
+       ./basename.o ./bcmp.o ./bcopy.o ./bsearch.o ./bzero.o           \
+-      ./calloc.o ./clock.o ./copysign.o                               \
++      ./calloc.o ./clock.o ./copysign.o ./cygpath.o                   \
+       ./_doprnt.o                                                     \
+       ./ffs.o                                                         \
+       ./getcwd.o ./getpagesize.o ./gettimeofday.o                     \
+@@ -619,6 +619,13 @@ $(CONFIGURED_OFILES): stamp-picdir
+       else true; fi
+       $(COMPILE.c) $(srcdir)/cplus-dem.c $(OUTPUT_OPTION)
  
--# No install-html or install-pdf support in automake yet
--.PHONY: install-html install-pdf
--install-html:
-+$(HTMLS_BUILD): $(info_TEXINFOS)
-+      $(TEXI2HTML) $(MAKEINFOFLAGS) -I$(srcdir) -o $(@D) $<
++./cygpath.o: $(srcdir)/cygpath.c config.h $(INCDIR)/ansidecl.h \
++      $(INCDIR)/libiberty.h
++      if [ x"$(PICFLAG)" != x ]; then \
++        $(COMPILE.c) $(PICFLAG) $(srcdir)/cygpath.c -o pic/$@; \
++      else true; fi
++      $(COMPILE.c) $(srcdir)/cygpath.c $(OUTPUT_OPTION)
 +
-+install-html: $(HTMLS_BUILD)
-+      @$(NORMAL_INSTALL)
-+      test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)"
-+      @list='$(HTMLS_INSTALL)'; for p in $$list; do \
-+        if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \
-+        f=$(html__strip_dir) \
-+        if test -d "$$d$$p"; then \
-+          echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \
-+          $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
-+          echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
-+          $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
-+        else \
-+          echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
-+          $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
-+        fi; \
-+      done
- install-pdf: $(PDFS)
-       @$(NORMAL_INSTALL)
-diff -Nur a/libgomp/testsuite/Makefile.in b/libgomp/testsuite/Makefile.in
---- a/libgomp/testsuite/Makefile.in    2009-07-22 09:43:59.000000000 +0200
-+++ b/libgomp/testsuite/Makefile.in    2010-01-25 09:50:29.615687242 +0100
-@@ -177,6 +177,8 @@
- build_vendor = @build_vendor@
- config_path = @config_path@
- datadir = @datadir@
-+datarootdir = @datarootdir@
-+docdir = @docdir@
- enable_shared = @enable_shared@
- enable_static = @enable_static@
- exec_prefix = @exec_prefix@
-@@ -185,6 +187,7 @@
- host_cpu = @host_cpu@
- host_os = @host_os@
- host_vendor = @host_vendor@
-+htmldir = @htmldir@
- includedir = @includedir@
- infodir = @infodir@
- install_sh = @install_sh@
-@@ -198,6 +201,7 @@
- mkdir_p = @mkdir_p@
- multi_basedir = @multi_basedir@
- oldincludedir = @oldincludedir@
-+pdfdir = @pdfdir@
- prefix = @prefix@
- program_transform_name = @program_transform_name@
- sbindir = @sbindir@
-diff -Nur a/libiberty/argv.c b/libiberty/argv.c
---- a/libiberty/argv.c 2007-07-23 19:29:17.000000000 +0200
-+++ b/libiberty/argv.c 2010-01-25 09:50:29.615687242 +0100
-@@ -119,6 +119,24 @@
+ ./dyn-string.o: $(srcdir)/dyn-string.c config.h $(INCDIR)/ansidecl.h \
+       $(INCDIR)/dyn-string.h $(INCDIR)/libiberty.h
+       if [ x"$(PICFLAG)" != x ]; then \
+--- a/libiberty/argv.c
++++ b/libiberty/argv.c
+@@ -119,6 +119,24 @@ void freeargv (char **vector)
      }
  }
  
@@ -65183,7 +35082,7 @@ diff -Nur a/libiberty/argv.c b/libiberty/argv.c
  /*
  
  @deftypefn Extension char** buildargv (char *@var{sp})
-@@ -179,10 +197,8 @@
+@@ -179,10 +197,8 @@ char **buildargv (const char *input)
        do
        {
          /* Pick off argv[argc] */
@@ -65196,7 +35095,7 @@ diff -Nur a/libiberty/argv.c b/libiberty/argv.c
          if ((maxargc == 0) || (argc >= (maxargc - 1)))
            {
              /* argv needs initialization, or expansion */
-@@ -278,10 +294,7 @@
+@@ -278,10 +294,7 @@ char **buildargv (const char *input)
          argc++;
          argv[argc] = NULL;
  
@@ -65208,7 +35107,7 @@ diff -Nur a/libiberty/argv.c b/libiberty/argv.c
        }
        while (*input != EOS);
      }
-@@ -420,8 +433,17 @@
+@@ -420,8 +433,17 @@ expandargv (int *argcp, char ***argvp)
        goto error;
        /* Add a NUL terminator.  */
        buffer[len] = '\0';
@@ -65228,7 +35127,7 @@ diff -Nur a/libiberty/argv.c b/libiberty/argv.c
        /* If *ARGVP is not already dynamically allocated, copy it.  */
        if (!argv_dynamic)
        {
-@@ -434,7 +456,7 @@
+@@ -434,7 +456,7 @@ expandargv (int *argcp, char ***argvp)
        }
        /* Count the number of arguments.  */
        file_argc = 0;
@@ -65237,10 +35136,9 @@ diff -Nur a/libiberty/argv.c b/libiberty/argv.c
        ++file_argc;
        /* Now, insert FILE_ARGV into ARGV.  The "+1" below handles the
         NULL terminator at the end of ARGV.  */ 
-diff -Nur a/libiberty/configure b/libiberty/configure
---- a/libiberty/configure      2009-04-08 16:18:33.000000000 +0200
-+++ b/libiberty/configure      2010-01-25 09:50:29.615687242 +0100
-@@ -8891,6 +8891,20 @@
+--- a/libiberty/configure
++++ b/libiberty/configure
+@@ -8891,6 +8891,20 @@ case "${host}" in
  esac
  
  
@@ -65261,10 +35159,9 @@ diff -Nur a/libiberty/configure b/libiberty/configure
  if test x$gcc_no_link = xyes; then
    if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then
      ac_cv_func_mmap_fixed_mapped=no
-diff -Nur a/libiberty/configure.ac b/libiberty/configure.ac
---- a/libiberty/configure.ac   2009-04-08 16:18:33.000000000 +0200
-+++ b/libiberty/configure.ac   2010-01-25 09:50:29.615687242 +0100
-@@ -663,6 +663,13 @@
+--- a/libiberty/configure.ac
++++ b/libiberty/configure.ac
+@@ -663,6 +663,13 @@ case "${host}" in
  esac
  AC_SUBST(pexecute)
  
@@ -65278,9 +35175,8 @@ diff -Nur a/libiberty/configure.ac b/libiberty/configure.ac
  libiberty_AC_FUNC_STRNCMP
  
  # Install a library built with a cross compiler in $(tooldir) rather
-diff -Nur a/libiberty/cygpath.c b/libiberty/cygpath.c
---- a/libiberty/cygpath.c      1970-01-01 01:00:00.000000000 +0100
-+++ b/libiberty/cygpath.c      2010-01-25 09:50:29.615687242 +0100
+--- /dev/null
++++ b/libiberty/cygpath.c
 @@ -0,0 +1,591 @@
 +/* Support Cygwin paths under MinGW.
 +   Copyright (C) 2006 Free Software Foundation, Inc.
@@ -65873,10 +35769,9 @@ diff -Nur a/libiberty/cygpath.c b/libiberty/cygpath.c
 +    ret = _chdir (win32_path);
 +  return ret;
 +}
-diff -Nur a/libiberty/lrealpath.c b/libiberty/lrealpath.c
---- a/libiberty/lrealpath.c    2005-05-24 22:48:25.000000000 +0200
-+++ b/libiberty/lrealpath.c    2010-01-25 09:50:29.615687242 +0100
-@@ -138,6 +138,17 @@
+--- a/libiberty/lrealpath.c
++++ b/libiberty/lrealpath.c
+@@ -138,6 +138,17 @@ lrealpath (const char *filename)
    {
      char buf[MAX_PATH];
      char* basename;
@@ -65894,45 +35789,9 @@ diff -Nur a/libiberty/lrealpath.c b/libiberty/lrealpath.c
      DWORD len = GetFullPathName (filename, MAX_PATH, buf, &basename);
      if (len == 0 || len > MAX_PATH - 1)
        return strdup (filename);
-diff -Nur a/libiberty/Makefile.in b/libiberty/Makefile.in
---- a/libiberty/Makefile.in    2008-10-22 15:30:19.000000000 +0200
-+++ b/libiberty/Makefile.in    2010-01-25 09:50:29.615687242 +0100
-@@ -124,7 +124,7 @@
- CFILES = alloca.c argv.c asprintf.c atexit.c                          \
-       basename.c bcmp.c bcopy.c bsearch.c bzero.c                     \
-       calloc.c choose-temp.c clock.c concat.c cp-demangle.c           \
--       cp-demint.c cplus-dem.c                                        \
-+       cp-demint.c cplus-dem.c cygpath.c                              \
-       dyn-string.c                                                    \
-       fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c          \
-       fnmatch.c fopen_unlocked.c                                      \
-@@ -182,7 +182,7 @@
- # maint-missing" and "make check".
- CONFIGURED_OFILES = ./asprintf.o ./atexit.o                           \
-       ./basename.o ./bcmp.o ./bcopy.o ./bsearch.o ./bzero.o           \
--      ./calloc.o ./clock.o ./copysign.o                               \
-+      ./calloc.o ./clock.o ./copysign.o ./cygpath.o                   \
-       ./_doprnt.o                                                     \
-       ./ffs.o                                                         \
-       ./getcwd.o ./getpagesize.o ./gettimeofday.o                     \
-@@ -619,6 +619,13 @@
-       else true; fi
-       $(COMPILE.c) $(srcdir)/cplus-dem.c $(OUTPUT_OPTION)
-+./cygpath.o: $(srcdir)/cygpath.c config.h $(INCDIR)/ansidecl.h \
-+      $(INCDIR)/libiberty.h
-+      if [ x"$(PICFLAG)" != x ]; then \
-+        $(COMPILE.c) $(PICFLAG) $(srcdir)/cygpath.c -o pic/$@; \
-+      else true; fi
-+      $(COMPILE.c) $(srcdir)/cygpath.c $(OUTPUT_OPTION)
-+
- ./dyn-string.o: $(srcdir)/dyn-string.c config.h $(INCDIR)/ansidecl.h \
-       $(INCDIR)/dyn-string.h $(INCDIR)/libiberty.h
-       if [ x"$(PICFLAG)" != x ]; then \
-diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
---- a/libiberty/pex-win32.c    2008-08-07 21:30:14.000000000 +0200
-+++ b/libiberty/pex-win32.c    2010-01-25 09:50:29.615687242 +0100
-@@ -119,7 +119,7 @@
+--- a/libiberty/pex-win32.c
++++ b/libiberty/pex-win32.c
+@@ -119,7 +119,7 @@ static int
  pex_win32_open_read (struct pex_obj *obj ATTRIBUTE_UNUSED, const char *name,
                     int binary)
  {
@@ -65941,7 +35800,7 @@ diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
  }
  
  /* Open a file for writing.  */
-@@ -130,10 +130,10 @@
+@@ -130,10 +130,10 @@ pex_win32_open_write (struct pex_obj *ob
  {
    /* Note that we can't use O_EXCL here because gcc may have already
       created the temporary file via make_temp_file.  */
@@ -65956,7 +35815,7 @@ diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
  }
  
  /* Close a file.  */
-@@ -746,6 +746,28 @@
+@@ -746,6 +746,28 @@ pex_win32_exec_child (struct pex_obj *ob
    OSVERSIONINFO version_info;
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
@@ -65985,7 +35844,7 @@ diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
  
    stdin_handle = INVALID_HANDLE_VALUE;
    stdout_handle = INVALID_HANDLE_VALUE;
-@@ -753,7 +775,7 @@
+@@ -753,7 +775,7 @@ pex_win32_exec_child (struct pex_obj *ob
  
    stdin_handle = (HANDLE) _get_osfhandle (in);
    stdout_handle = (HANDLE) _get_osfhandle (out);
@@ -65994,7 +35853,7 @@ diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
      stderr_handle = (HANDLE) _get_osfhandle (errdes);
    else
      stderr_handle = stdout_handle;
-@@ -822,12 +844,13 @@
+@@ -822,12 +844,13 @@ pex_win32_exec_child (struct pex_obj *ob
        *errmsg = "CreateProcess";
      }
  
@@ -66014,7 +35873,7 @@ diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
  
    return pid;
  }
-@@ -883,7 +906,7 @@
+@@ -883,7 +906,7 @@ static int
  pex_win32_pipe (struct pex_obj *obj ATTRIBUTE_UNUSED, int *p,
                int binary)
  {
@@ -66023,10 +35882,9 @@ diff -Nur a/libiberty/pex-win32.c b/libiberty/pex-win32.c
  }
  
  /* Get a FILE pointer to read from a file descriptor.  */
-diff -Nur a/libiberty/testsuite/test-expandargv.c b/libiberty/testsuite/test-expandargv.c
---- a/libiberty/testsuite/test-expandargv.c    2006-01-20 23:55:36.000000000 +0100
-+++ b/libiberty/testsuite/test-expandargv.c    2010-01-25 09:50:29.615687242 +0100
-@@ -107,6 +107,38 @@
+--- a/libiberty/testsuite/test-expandargv.c
++++ b/libiberty/testsuite/test-expandargv.c
+@@ -107,6 +107,38 @@ const char *test_data[] = {
    ARGV0,
    0,
  
@@ -66065,7 +35923,7 @@ diff -Nur a/libiberty/testsuite/test-expandargv.c b/libiberty/testsuite/test-exp
    0 /* Test done marker, don't remove. */
  };
  
-@@ -246,7 +278,7 @@
+@@ -246,7 +278,7 @@ run_tests (const char **test_data)
        /* Compare each of the argv's ... */
        else
          for (k = 0; k < argc_after; k++)
@@ -66074,10 +35932,62 @@ diff -Nur a/libiberty/testsuite/test-expandargv.c b/libiberty/testsuite/test-exp
              {
                printf ("FAIL: test-expandargv-%d. Arguments don't match.\n", i);
                failed++;
-diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
---- a/libjava/classpath/configure      2009-03-16 13:08:23.000000000 +0100
-+++ b/libjava/classpath/configure      2010-01-25 09:50:29.625686976 +0100
-@@ -461,7 +461,7 @@
+--- a/libjava/Makefile.am
++++ b/libjava/Makefile.am
+@@ -55,9 +55,14 @@ endif
+ dbexec_LTLIBRARIES = libjvm.la
+-pkgconfigdir = $(libdir)/pkgconfig
++# Install the pkgconfig file in a target-specific directory, since the
++# libraries it indicates
+-jardir = $(datadir)/java
++pkgconfigdir = $(toolexeclibdir)/pkgconfig
++
++# We install the JAR in a target-specific directory so that toolchains
++# build from different sources can be installed in the same directory.
++jardir = $(prefix)/$(target_noncanonical)/share/java
+ jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar
+ if INSTALL_ECJ_JAR
+ jar_DATA += $(ECJ_BUILD_JAR)
+--- a/libjava/Makefile.in
++++ b/libjava/Makefile.in
+@@ -915,8 +915,14 @@ toolexeclib_LTLIBRARIES = libgcj.la libg
+       $(am__append_2) $(am__append_3)
+ toolexecmainlib_DATA = libgcj.spec
+ dbexec_LTLIBRARIES = libjvm.la
+-pkgconfigdir = $(libdir)/pkgconfig
+-jardir = $(datadir)/java
++
++# Install the pkgconfig file in a target-specific directory, since the
++# libraries it indicates
++pkgconfigdir = $(toolexeclibdir)/pkgconfig
++
++# We install the JAR in a target-specific directory so that toolchains
++# build from different sources can be installed in the same directory.
++jardir = $(prefix)/$(target_noncanonical)/share/java
+ jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar \
+       $(am__append_4)
+ @JAVA_HOME_SET_FALSE@JAVA_HOME_DIR = $(prefix)
+--- a/libjava/classpath/Makefile.in
++++ b/libjava/classpath/Makefile.in
+@@ -380,9 +380,12 @@ sysconfdir = @sysconfdir@
+ target = @target@
+ target_alias = @target_alias@
+ target_cpu = @target_cpu@
++target_noncanonical = @target_noncanonical@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
++toolexecdir = @toolexecdir@
+ toolexeclibdir = @toolexeclibdir@
++toolexecmainlibdir = @toolexecmainlibdir@
+ uudecode = @uudecode@
+ vm_classes = @vm_classes@
+--- a/libjava/classpath/configure
++++ b/libjava/classpath/configure
+@@ -461,7 +461,7 @@ ac_includes_default="\
  # include <unistd.h>
  #endif"
  
@@ -66086,7 +35996,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  ac_subst_files=''
  ac_pwd=`pwd`
  
-@@ -1063,6 +1063,9 @@
+@@ -1063,6 +1063,9 @@ Optional Features:
                            (disabled by --disable-gmp) default=yes
    --disable-gjdoc         compile GJDoc (disabled by --disable-gjdoc)
                            default=yes
@@ -66096,7 +36006,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
    --enable-regen-headers  automatically regenerate JNI headers default=yes if
                            headers don't exist
    --enable-regen-gjdoc-parser
-@@ -4838,11 +4841,57 @@
+@@ -4838,11 +4841,57 @@ else
  fi
  
  
@@ -66158,7 +36068,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
    esac
  
  
-@@ -5753,13 +5802,13 @@
+@@ -5753,13 +5802,13 @@ if test "${lt_cv_nm_interface+set}" = se
  else
    lt_cv_nm_interface="BSD nm"
    echo "int some_variable = 0;" > conftest.$ac_ext
@@ -66175,7 +36085,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
    cat conftest.out >&5
    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
      lt_cv_nm_interface="MS dumpbin"
-@@ -6905,7 +6954,7 @@
+@@ -6905,7 +6954,7 @@ ia64-*-hpux*)
    ;;
  *-*-irix6*)
    # Find out which ABI we are using.
@@ -66184,7 +36094,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
-@@ -8191,11 +8240,11 @@
+@@ -8191,11 +8240,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66198,7 +36108,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -8530,11 +8579,11 @@
+@@ -8530,11 +8579,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66212,7 +36122,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -8635,11 +8684,11 @@
+@@ -8635,11 +8684,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66226,7 +36136,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -8690,11 +8739,11 @@
+@@ -8690,11 +8739,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66240,7 +36150,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -11557,7 +11606,7 @@
+@@ -11557,7 +11606,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
@@ -66249,7 +36159,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -11653,7 +11702,7 @@
+@@ -11653,7 +11702,7 @@ else
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
@@ -66258,7 +36168,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
-@@ -16084,11 +16133,11 @@
+@@ -16084,11 +16133,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66272,7 +36182,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
-@@ -16183,11 +16232,11 @@
+@@ -16183,11 +16232,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66286,7 +36196,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -16235,11 +16284,11 @@
+@@ -16235,11 +16284,11 @@ else
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
@@ -66300,7 +36210,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
-@@ -29270,7 +29319,7 @@
+@@ -29270,7 +29319,7 @@ EOF
  if uudecode$EXEEXT Test.uue; then
          ac_cv_prog_uudecode_base64=yes
  else
@@ -66309,7 +36219,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
          echo "configure: failed file was:" >&5
          cat Test.uue >&5
          ac_cv_prog_uudecode_base64=no
-@@ -29417,7 +29466,7 @@
+@@ -29417,7 +29466,7 @@ else
  JAVA_TEST=Object.java
  CLASS_TEST=Object.class
  cat << \EOF > $JAVA_TEST
@@ -66318,7 +36228,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  package java.lang;
  
  public class Object
-@@ -29466,7 +29515,7 @@
+@@ -29466,7 +29515,7 @@ JAVA_TEST=Test.java
  CLASS_TEST=Test.class
  TEST=Test
  cat << \EOF > $JAVA_TEST
@@ -66327,7 +36237,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  public class Test {
  public static void main (String args[]) {
          System.exit (0);
-@@ -29786,7 +29835,7 @@
+@@ -29786,7 +29835,7 @@ else
  JAVA_TEST=Object.java
  CLASS_TEST=Object.class
  cat << \EOF > $JAVA_TEST
@@ -66336,7 +36246,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  package java.lang;
  
  public class Object
-@@ -29827,7 +29876,7 @@
+@@ -29827,7 +29876,7 @@ fi
    JAVA_TEST=Test.java
    CLASS_TEST=Test.class
    cat << \EOF > $JAVA_TEST
@@ -66345,7 +36255,7 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
    public class Test
    {
      public static void main(String args)
-@@ -31681,6 +31730,9 @@
+@@ -31681,6 +31730,9 @@ s,@CREATE_PLUGIN_TRUE@,$CREATE_PLUGIN_TR
  s,@CREATE_PLUGIN_FALSE@,$CREATE_PLUGIN_FALSE,;t t
  s,@CREATE_GJDOC_TRUE@,$CREATE_GJDOC_TRUE,;t t
  s,@CREATE_GJDOC_FALSE@,$CREATE_GJDOC_FALSE,;t t
@@ -66355,10 +36265,9 @@ diff -Nur a/libjava/classpath/configure b/libjava/classpath/configure
  s,@toolexeclibdir@,$toolexeclibdir,;t t
  s,@nativeexeclibdir@,$nativeexeclibdir,;t t
  s,@glibjdir@,$glibjdir,;t t
-diff -Nur a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac
---- a/libjava/classpath/configure.ac   2009-03-16 13:08:23.000000000 +0100
-+++ b/libjava/classpath/configure.ac   2010-01-25 09:50:29.625686976 +0100
-@@ -316,6 +316,16 @@
+--- a/libjava/classpath/configure.ac
++++ b/libjava/classpath/configure.ac
+@@ -316,6 +316,16 @@ dnl defined to the same value for all mu
  dnl so that we can refer to the multilib installation directories from
  dnl classpath's build files.
  dnl -----------------------------------------------------------
@@ -66375,10 +36284,9 @@ diff -Nur a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac
  CLASSPATH_TOOLEXECLIBDIR
  
  dnl -----------------------------------------------------------
-diff -Nur a/libjava/classpath/doc/api/Makefile.in b/libjava/classpath/doc/api/Makefile.in
---- a/libjava/classpath/doc/api/Makefile.in    2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/doc/api/Makefile.in    2010-01-25 09:50:29.625686976 +0100
-@@ -334,9 +334,12 @@
+--- a/libjava/classpath/doc/Makefile.in
++++ b/libjava/classpath/doc/Makefile.in
+@@ -357,9 +357,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66390,11 +36298,10 @@ diff -Nur a/libjava/classpath/doc/api/Makefile.in b/libjava/classpath/doc/api/Ma
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- @CREATE_API_DOCS_TRUE@noinst_DATA = html
-diff -Nur a/libjava/classpath/doc/Makefile.in b/libjava/classpath/doc/Makefile.in
---- a/libjava/classpath/doc/Makefile.in        2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/doc/Makefile.in        2010-01-25 09:50:29.625686976 +0100
-@@ -357,9 +357,12 @@
+ SUBDIRS = api
+--- a/libjava/classpath/doc/api/Makefile.in
++++ b/libjava/classpath/doc/api/Makefile.in
+@@ -334,9 +334,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66406,11 +36313,10 @@ diff -Nur a/libjava/classpath/doc/Makefile.in b/libjava/classpath/doc/Makefile.i
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- SUBDIRS = api
-diff -Nur a/libjava/classpath/examples/Makefile.in b/libjava/classpath/examples/Makefile.in
---- a/libjava/classpath/examples/Makefile.in   2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/examples/Makefile.in   2010-01-25 09:50:29.625686976 +0100
-@@ -343,9 +343,12 @@
+ @CREATE_API_DOCS_TRUE@noinst_DATA = html
+--- a/libjava/classpath/examples/Makefile.in
++++ b/libjava/classpath/examples/Makefile.in
+@@ -343,9 +343,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66423,10 +36329,9 @@ diff -Nur a/libjava/classpath/examples/Makefile.in b/libjava/classpath/examples/
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  GLIBJ_CLASSPATH = '$(top_builddir)/lib/glibj.zip:$(top_builddir)/lib'
-diff -Nur a/libjava/classpath/external/jsr166/Makefile.in b/libjava/classpath/external/jsr166/Makefile.in
---- a/libjava/classpath/external/jsr166/Makefile.in    2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/external/jsr166/Makefile.in    2010-01-25 09:50:29.625686976 +0100
-@@ -332,9 +332,12 @@
+--- a/libjava/classpath/external/Makefile.in
++++ b/libjava/classpath/external/Makefile.in
+@@ -341,9 +341,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66438,11 +36343,10 @@ diff -Nur a/libjava/classpath/external/jsr166/Makefile.in b/libjava/classpath/ex
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- EXTRA_DIST = IMPORTING \
-diff -Nur a/libjava/classpath/external/Makefile.in b/libjava/classpath/external/Makefile.in
---- a/libjava/classpath/external/Makefile.in   2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/external/Makefile.in   2010-01-25 09:50:29.625686976 +0100
-@@ -341,9 +341,12 @@
+ SUBDIRS = sax w3c_dom relaxngDatatype jsr166
+--- a/libjava/classpath/external/jsr166/Makefile.in
++++ b/libjava/classpath/external/jsr166/Makefile.in
+@@ -332,9 +332,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66454,11 +36358,10 @@ diff -Nur a/libjava/classpath/external/Makefile.in b/libjava/classpath/external/
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- SUBDIRS = sax w3c_dom relaxngDatatype jsr166
-diff -Nur a/libjava/classpath/external/relaxngDatatype/Makefile.in b/libjava/classpath/external/relaxngDatatype/Makefile.in
---- a/libjava/classpath/external/relaxngDatatype/Makefile.in   2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/external/relaxngDatatype/Makefile.in   2010-01-25 09:50:29.625686976 +0100
-@@ -332,9 +332,12 @@
+ EXTRA_DIST = IMPORTING \
+--- a/libjava/classpath/external/relaxngDatatype/Makefile.in
++++ b/libjava/classpath/external/relaxngDatatype/Makefile.in
+@@ -332,9 +332,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66471,10 +36374,9 @@ diff -Nur a/libjava/classpath/external/relaxngDatatype/Makefile.in b/libjava/cla
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  EXTRA_DIST = README.txt \
-diff -Nur a/libjava/classpath/external/sax/Makefile.in b/libjava/classpath/external/sax/Makefile.in
---- a/libjava/classpath/external/sax/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/external/sax/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -332,9 +332,12 @@
+--- a/libjava/classpath/external/sax/Makefile.in
++++ b/libjava/classpath/external/sax/Makefile.in
+@@ -332,9 +332,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66487,10 +36389,9 @@ diff -Nur a/libjava/classpath/external/sax/Makefile.in b/libjava/classpath/exter
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  EXTRA_DIST = README \
-diff -Nur a/libjava/classpath/external/w3c_dom/Makefile.in b/libjava/classpath/external/w3c_dom/Makefile.in
---- a/libjava/classpath/external/w3c_dom/Makefile.in   2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/external/w3c_dom/Makefile.in   2010-01-25 09:50:29.625686976 +0100
-@@ -332,9 +332,12 @@
+--- a/libjava/classpath/external/w3c_dom/Makefile.in
++++ b/libjava/classpath/external/w3c_dom/Makefile.in
+@@ -332,9 +332,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66503,10 +36404,9 @@ diff -Nur a/libjava/classpath/external/w3c_dom/Makefile.in b/libjava/classpath/e
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  EXTRA_DIST = README \
-diff -Nur a/libjava/classpath/include/Makefile.in b/libjava/classpath/include/Makefile.in
---- a/libjava/classpath/include/Makefile.in    2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/include/Makefile.in    2010-01-25 09:50:29.625686976 +0100
-@@ -333,9 +333,12 @@
+--- a/libjava/classpath/include/Makefile.in
++++ b/libjava/classpath/include/Makefile.in
+@@ -333,9 +333,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66519,10 +36419,9 @@ diff -Nur a/libjava/classpath/include/Makefile.in b/libjava/classpath/include/Ma
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  @CREATE_JNI_HEADERS_FALSE@DISTCLEANFILES = jni_md.h config-int.h
-diff -Nur a/libjava/classpath/lib/Makefile.in b/libjava/classpath/lib/Makefile.in
---- a/libjava/classpath/lib/Makefile.in        2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/lib/Makefile.in        2010-01-25 09:50:29.625686976 +0100
-@@ -337,9 +337,12 @@
+--- a/libjava/classpath/lib/Makefile.in
++++ b/libjava/classpath/lib/Makefile.in
+@@ -337,9 +337,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66535,10 +36434,9 @@ diff -Nur a/libjava/classpath/lib/Makefile.in b/libjava/classpath/lib/Makefile.i
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  JAVA_DEPEND = java.dep
-diff -Nur a/libjava/classpath/m4/acinclude.m4 b/libjava/classpath/m4/acinclude.m4
---- a/libjava/classpath/m4/acinclude.m4        2008-10-21 19:55:01.000000000 +0200
-+++ b/libjava/classpath/m4/acinclude.m4        2010-01-25 09:50:29.625686976 +0100
-@@ -247,11 +247,45 @@
+--- a/libjava/classpath/m4/acinclude.m4
++++ b/libjava/classpath/m4/acinclude.m4
+@@ -247,11 +247,45 @@ dnl GCJ LOCAL: Calculate toolexeclibdir
  dnl -----------------------------------------------------------
  AC_DEFUN([CLASSPATH_TOOLEXECLIBDIR],
  [
@@ -66588,10 +36486,9 @@ diff -Nur a/libjava/classpath/m4/acinclude.m4 b/libjava/classpath/m4/acinclude.m
    AC_SUBST(toolexeclibdir)
  ])
  
-diff -Nur a/libjava/classpath/Makefile.in b/libjava/classpath/Makefile.in
---- a/libjava/classpath/Makefile.in    2009-02-25 22:40:28.000000000 +0100
-+++ b/libjava/classpath/Makefile.in    2010-01-25 09:50:29.625686976 +0100
-@@ -380,9 +380,12 @@
+--- a/libjava/classpath/native/Makefile.in
++++ b/libjava/classpath/native/Makefile.in
+@@ -340,9 +340,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66603,11 +36500,10 @@ diff -Nur a/libjava/classpath/Makefile.in b/libjava/classpath/Makefile.in
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
-diff -Nur a/libjava/classpath/native/fdlibm/Makefile.in b/libjava/classpath/native/fdlibm/Makefile.in
---- a/libjava/classpath/native/fdlibm/Makefile.in      2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/fdlibm/Makefile.in      2010-01-25 09:50:29.625686976 +0100
-@@ -359,9 +359,12 @@
+ @CREATE_JNI_LIBRARIES_TRUE@JNIDIR = jni
+--- a/libjava/classpath/native/fdlibm/Makefile.in
++++ b/libjava/classpath/native/fdlibm/Makefile.in
+@@ -359,9 +359,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66620,10 +36516,9 @@ diff -Nur a/libjava/classpath/native/fdlibm/Makefile.in b/libjava/classpath/nati
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  noinst_LTLIBRARIES = libfdlibm.la 
-diff -Nur a/libjava/classpath/native/jawt/Makefile.in b/libjava/classpath/native/jawt/Makefile.in
---- a/libjava/classpath/native/jawt/Makefile.in        2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jawt/Makefile.in        2010-01-25 09:50:29.625686976 +0100
-@@ -359,9 +359,12 @@
+--- a/libjava/classpath/native/jawt/Makefile.in
++++ b/libjava/classpath/native/jawt/Makefile.in
+@@ -359,9 +359,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66636,10 +36531,9 @@ diff -Nur a/libjava/classpath/native/jawt/Makefile.in b/libjava/classpath/native
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  nativeexeclib_LTLIBRARIES = libjawt.la
-diff -Nur a/libjava/classpath/native/jni/classpath/Makefile.in b/libjava/classpath/native/jni/classpath/Makefile.in
---- a/libjava/classpath/native/jni/classpath/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/classpath/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -350,9 +350,12 @@
+--- a/libjava/classpath/native/jni/Makefile.in
++++ b/libjava/classpath/native/jni/Makefile.in
+@@ -340,9 +340,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66651,11 +36545,10 @@ diff -Nur a/libjava/classpath/native/jni/classpath/Makefile.in b/libjava/classpa
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
-diff -Nur a/libjava/classpath/native/jni/gconf-peer/Makefile.in b/libjava/classpath/native/jni/gconf-peer/Makefile.in
---- a/libjava/classpath/native/jni/gconf-peer/Makefile.in      2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/gconf-peer/Makefile.in      2010-01-25 09:50:29.625686976 +0100
-@@ -359,9 +359,12 @@
+ @CREATE_CORE_JNI_LIBRARIES_TRUE@JNIDIRS = native-lib java-io java-lang java-net java-nio java-util
+--- a/libjava/classpath/native/jni/classpath/Makefile.in
++++ b/libjava/classpath/native/jni/classpath/Makefile.in
+@@ -350,9 +350,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66667,11 +36560,10 @@ diff -Nur a/libjava/classpath/native/jni/gconf-peer/Makefile.in b/libjava/classp
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libgconfpeer.la
-diff -Nur a/libjava/classpath/native/jni/gstreamer-peer/Makefile.in b/libjava/classpath/native/jni/gstreamer-peer/Makefile.in
---- a/libjava/classpath/native/jni/gstreamer-peer/Makefile.in  2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/gstreamer-peer/Makefile.in  2010-01-25 09:50:29.625686976 +0100
-@@ -361,9 +361,12 @@
+--- a/libjava/classpath/native/jni/gconf-peer/Makefile.in
++++ b/libjava/classpath/native/jni/gconf-peer/Makefile.in
+@@ -359,9 +359,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66683,11 +36575,10 @@ diff -Nur a/libjava/classpath/native/jni/gstreamer-peer/Makefile.in b/libjava/cl
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libgstreamerpeer.la
-diff -Nur a/libjava/classpath/native/jni/gtk-peer/Makefile.in b/libjava/classpath/native/jni/gtk-peer/Makefile.in
---- a/libjava/classpath/native/jni/gtk-peer/Makefile.in        2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/gtk-peer/Makefile.in        2010-01-25 09:50:29.625686976 +0100
-@@ -397,9 +397,12 @@
+ nativeexeclib_LTLIBRARIES = libgconfpeer.la
+--- a/libjava/classpath/native/jni/gstreamer-peer/Makefile.in
++++ b/libjava/classpath/native/jni/gstreamer-peer/Makefile.in
+@@ -361,9 +361,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66699,11 +36590,10 @@ diff -Nur a/libjava/classpath/native/jni/gtk-peer/Makefile.in b/libjava/classpat
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libgtkpeer.la
-diff -Nur a/libjava/classpath/native/jni/java-io/Makefile.in b/libjava/classpath/native/jni/java-io/Makefile.in
---- a/libjava/classpath/native/jni/java-io/Makefile.in 2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/java-io/Makefile.in 2010-01-25 09:50:29.625686976 +0100
-@@ -361,9 +361,12 @@
+ nativeexeclib_LTLIBRARIES = libgstreamerpeer.la
+--- a/libjava/classpath/native/jni/gtk-peer/Makefile.in
++++ b/libjava/classpath/native/jni/gtk-peer/Makefile.in
+@@ -397,9 +397,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66715,11 +36605,10 @@ diff -Nur a/libjava/classpath/native/jni/java-io/Makefile.in b/libjava/classpath
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libjavaio.la 
-diff -Nur a/libjava/classpath/native/jni/java-lang/Makefile.in b/libjava/classpath/native/jni/java-lang/Makefile.in
---- a/libjava/classpath/native/jni/java-lang/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/java-lang/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -375,9 +375,12 @@
+ nativeexeclib_LTLIBRARIES = libgtkpeer.la
+--- a/libjava/classpath/native/jni/java-io/Makefile.in
++++ b/libjava/classpath/native/jni/java-io/Makefile.in
+@@ -361,9 +361,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66731,11 +36620,10 @@ diff -Nur a/libjava/classpath/native/jni/java-lang/Makefile.in b/libjava/classpa
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libjavalang.la libjavalangreflect.la libjavalangmanagement.la
-diff -Nur a/libjava/classpath/native/jni/java-math/Makefile.in b/libjava/classpath/native/jni/java-math/Makefile.in
---- a/libjava/classpath/native/jni/java-math/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/java-math/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -359,9 +359,12 @@
+ nativeexeclib_LTLIBRARIES = libjavaio.la 
+--- a/libjava/classpath/native/jni/java-lang/Makefile.in
++++ b/libjava/classpath/native/jni/java-lang/Makefile.in
+@@ -375,9 +375,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66747,11 +36635,10 @@ diff -Nur a/libjava/classpath/native/jni/java-math/Makefile.in b/libjava/classpa
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libjavamath.la
-diff -Nur a/libjava/classpath/native/jni/java-net/Makefile.in b/libjava/classpath/native/jni/java-net/Makefile.in
---- a/libjava/classpath/native/jni/java-net/Makefile.in        2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/java-net/Makefile.in        2010-01-25 09:50:29.625686976 +0100
-@@ -371,9 +371,12 @@
+ nativeexeclib_LTLIBRARIES = libjavalang.la libjavalangreflect.la libjavalangmanagement.la
+--- a/libjava/classpath/native/jni/java-math/Makefile.in
++++ b/libjava/classpath/native/jni/java-math/Makefile.in
+@@ -359,9 +359,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66763,11 +36650,10 @@ diff -Nur a/libjava/classpath/native/jni/java-net/Makefile.in b/libjava/classpat
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libjavanet.la
-diff -Nur a/libjava/classpath/native/jni/java-nio/Makefile.in b/libjava/classpath/native/jni/java-nio/Makefile.in
---- a/libjava/classpath/native/jni/java-nio/Makefile.in        2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/java-nio/Makefile.in        2010-01-25 09:50:29.625686976 +0100
-@@ -369,9 +369,12 @@
+ nativeexeclib_LTLIBRARIES = libjavamath.la
+--- a/libjava/classpath/native/jni/java-net/Makefile.in
++++ b/libjava/classpath/native/jni/java-net/Makefile.in
+@@ -371,9 +371,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66779,11 +36665,10 @@ diff -Nur a/libjava/classpath/native/jni/java-nio/Makefile.in b/libjava/classpat
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libjavanio.la
-diff -Nur a/libjava/classpath/native/jni/java-util/Makefile.in b/libjava/classpath/native/jni/java-util/Makefile.in
---- a/libjava/classpath/native/jni/java-util/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/java-util/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -358,9 +358,12 @@
+ nativeexeclib_LTLIBRARIES = libjavanet.la
+--- a/libjava/classpath/native/jni/java-nio/Makefile.in
++++ b/libjava/classpath/native/jni/java-nio/Makefile.in
+@@ -369,9 +369,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66795,11 +36680,10 @@ diff -Nur a/libjava/classpath/native/jni/java-util/Makefile.in b/libjava/classpa
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- nativeexeclib_LTLIBRARIES = libjavautil.la
-diff -Nur a/libjava/classpath/native/jni/Makefile.in b/libjava/classpath/native/jni/Makefile.in
---- a/libjava/classpath/native/jni/Makefile.in 2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/Makefile.in 2010-01-25 09:50:29.625686976 +0100
-@@ -340,9 +340,12 @@
+ nativeexeclib_LTLIBRARIES = libjavanio.la
+--- a/libjava/classpath/native/jni/java-util/Makefile.in
++++ b/libjava/classpath/native/jni/java-util/Makefile.in
+@@ -358,9 +358,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66811,11 +36695,10 @@ diff -Nur a/libjava/classpath/native/jni/Makefile.in b/libjava/classpath/native/
 +toolexecmainlibdir = @toolexecmainlibdir@
  uudecode = @uudecode@
  vm_classes = @vm_classes@
- @CREATE_CORE_JNI_LIBRARIES_TRUE@JNIDIRS = native-lib java-io java-lang java-net java-nio java-util
-diff -Nur a/libjava/classpath/native/jni/midi-alsa/Makefile.in b/libjava/classpath/native/jni/midi-alsa/Makefile.in
---- a/libjava/classpath/native/jni/midi-alsa/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/midi-alsa/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -361,9 +361,12 @@
+ nativeexeclib_LTLIBRARIES = libjavautil.la
+--- a/libjava/classpath/native/jni/midi-alsa/Makefile.in
++++ b/libjava/classpath/native/jni/midi-alsa/Makefile.in
+@@ -361,9 +361,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66828,10 +36711,9 @@ diff -Nur a/libjava/classpath/native/jni/midi-alsa/Makefile.in b/libjava/classpa
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  nativeexeclib_LTLIBRARIES = libgjsmalsa.la 
-diff -Nur a/libjava/classpath/native/jni/midi-dssi/Makefile.in b/libjava/classpath/native/jni/midi-dssi/Makefile.in
---- a/libjava/classpath/native/jni/midi-dssi/Makefile.in       2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/midi-dssi/Makefile.in       2010-01-25 09:50:29.625686976 +0100
-@@ -361,9 +361,12 @@
+--- a/libjava/classpath/native/jni/midi-dssi/Makefile.in
++++ b/libjava/classpath/native/jni/midi-dssi/Makefile.in
+@@ -361,9 +361,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66844,10 +36726,9 @@ diff -Nur a/libjava/classpath/native/jni/midi-dssi/Makefile.in b/libjava/classpa
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  nativeexeclib_LTLIBRARIES = libgjsmdssi.la 
-diff -Nur a/libjava/classpath/native/jni/native-lib/Makefile.in b/libjava/classpath/native/jni/native-lib/Makefile.in
---- a/libjava/classpath/native/jni/native-lib/Makefile.in      2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/native-lib/Makefile.in      2010-01-25 09:50:29.625686976 +0100
-@@ -350,9 +350,12 @@
+--- a/libjava/classpath/native/jni/native-lib/Makefile.in
++++ b/libjava/classpath/native/jni/native-lib/Makefile.in
+@@ -350,9 +350,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66860,10 +36741,9 @@ diff -Nur a/libjava/classpath/native/jni/native-lib/Makefile.in b/libjava/classp
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  noinst_LTLIBRARIES = libclasspathnative.la
-diff -Nur a/libjava/classpath/native/jni/qt-peer/Makefile.in b/libjava/classpath/native/jni/qt-peer/Makefile.in
---- a/libjava/classpath/native/jni/qt-peer/Makefile.in 2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/qt-peer/Makefile.in 2010-01-25 09:50:29.635686641 +0100
-@@ -376,9 +376,12 @@
+--- a/libjava/classpath/native/jni/qt-peer/Makefile.in
++++ b/libjava/classpath/native/jni/qt-peer/Makefile.in
+@@ -376,9 +376,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66876,10 +36756,9 @@ diff -Nur a/libjava/classpath/native/jni/qt-peer/Makefile.in b/libjava/classpath
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  noinst_LTLIBRARIES = libqtpeer.la
-diff -Nur a/libjava/classpath/native/jni/xmlj/Makefile.in b/libjava/classpath/native/jni/xmlj/Makefile.in
---- a/libjava/classpath/native/jni/xmlj/Makefile.in    2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/jni/xmlj/Makefile.in    2010-01-25 09:50:29.635686641 +0100
-@@ -360,9 +360,12 @@
+--- a/libjava/classpath/native/jni/xmlj/Makefile.in
++++ b/libjava/classpath/native/jni/xmlj/Makefile.in
+@@ -360,9 +360,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66892,26 +36771,9 @@ diff -Nur a/libjava/classpath/native/jni/xmlj/Makefile.in b/libjava/classpath/na
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  nativeexeclib_LTLIBRARIES = libxmlj.la
-diff -Nur a/libjava/classpath/native/Makefile.in b/libjava/classpath/native/Makefile.in
---- a/libjava/classpath/native/Makefile.in     2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/Makefile.in     2010-01-25 09:50:29.635686641 +0100
-@@ -340,9 +340,12 @@
- target = @target@
- target_alias = @target_alias@
- target_cpu = @target_cpu@
-+target_noncanonical = @target_noncanonical@
- target_os = @target_os@
- target_vendor = @target_vendor@
-+toolexecdir = @toolexecdir@
- toolexeclibdir = @toolexeclibdir@
-+toolexecmainlibdir = @toolexecmainlibdir@
- uudecode = @uudecode@
- vm_classes = @vm_classes@
- @CREATE_JNI_LIBRARIES_TRUE@JNIDIR = jni
-diff -Nur a/libjava/classpath/native/plugin/Makefile.in b/libjava/classpath/native/plugin/Makefile.in
---- a/libjava/classpath/native/plugin/Makefile.in      2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/native/plugin/Makefile.in      2010-01-25 09:50:29.635686641 +0100
-@@ -358,9 +358,12 @@
+--- a/libjava/classpath/native/plugin/Makefile.in
++++ b/libjava/classpath/native/plugin/Makefile.in
+@@ -358,9 +358,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66924,10 +36786,9 @@ diff -Nur a/libjava/classpath/native/plugin/Makefile.in b/libjava/classpath/nati
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  nativeexeclib_LTLIBRARIES = libgcjwebplugin.la
-diff -Nur a/libjava/classpath/resource/Makefile.in b/libjava/classpath/resource/Makefile.in
---- a/libjava/classpath/resource/Makefile.in   2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/resource/Makefile.in   2010-01-25 09:50:29.635686641 +0100
-@@ -343,9 +343,12 @@
+--- a/libjava/classpath/resource/Makefile.in
++++ b/libjava/classpath/resource/Makefile.in
+@@ -343,9 +343,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66940,10 +36801,9 @@ diff -Nur a/libjava/classpath/resource/Makefile.in b/libjava/classpath/resource/
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  logging_DATA = java/util/logging/logging.properties
-diff -Nur a/libjava/classpath/scripts/Makefile.in b/libjava/classpath/scripts/Makefile.in
---- a/libjava/classpath/scripts/Makefile.in    2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/scripts/Makefile.in    2010-01-25 09:50:29.635686641 +0100
-@@ -333,9 +333,12 @@
+--- a/libjava/classpath/scripts/Makefile.in
++++ b/libjava/classpath/scripts/Makefile.in
+@@ -333,9 +333,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66956,10 +36816,9 @@ diff -Nur a/libjava/classpath/scripts/Makefile.in b/libjava/classpath/scripts/Ma
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  EXTRA_DIST = generate-locale-list.sh import-cacerts.sh
-diff -Nur a/libjava/classpath/tools/Makefile.in b/libjava/classpath/tools/Makefile.in
---- a/libjava/classpath/tools/Makefile.in      2008-11-12 21:55:13.000000000 +0100
-+++ b/libjava/classpath/tools/Makefile.in      2010-01-25 09:50:29.635686641 +0100
-@@ -448,9 +448,12 @@
+--- a/libjava/classpath/tools/Makefile.in
++++ b/libjava/classpath/tools/Makefile.in
+@@ -448,9 +448,12 @@ sysconfdir = @sysconfdir@
  target = @target@
  target_alias = @target_alias@
  target_cpu = @target_cpu@
@@ -66972,10 +36831,9 @@ diff -Nur a/libjava/classpath/tools/Makefile.in b/libjava/classpath/tools/Makefi
  uudecode = @uudecode@
  vm_classes = @vm_classes@
  @CREATE_GJDOC_TRUE@gjdoc_gendir = ${top_srcdir}/tools/generated
-diff -Nur a/libjava/configure b/libjava/configure
---- a/libjava/configure        2009-07-22 09:43:59.000000000 +0200
-+++ b/libjava/configure        2010-01-25 09:50:29.635686641 +0100
-@@ -26501,10 +26501,10 @@
+--- a/libjava/configure
++++ b/libjava/configure
+@@ -26500,10 +26500,10 @@ gcjsubdir=gcj-$gcjversion-$libgcj_sovers
  multi_os_directory=`$CC -print-multi-os-directory`
  case $multi_os_directory in
    .)
@@ -66988,7 +36846,7 @@ diff -Nur a/libjava/configure b/libjava/configure
     ;;
  esac
  
-@@ -27652,6 +27652,74 @@
+@@ -27651,6 +27651,74 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
@@ -67063,7 +36921,7 @@ diff -Nur a/libjava/configure b/libjava/configure
    gcc_cv_have_tls=yes
  else
    echo "$as_me: failed program was:" >&5
-@@ -27661,6 +27729,24 @@
+@@ -27660,6 +27728,24 @@ gcc_cv_have_tls=no
  fi
  rm -f conftest.err conftest.$ac_objext \
        conftest$ac_exeext conftest.$ac_ext
@@ -67088,10 +36946,9 @@ diff -Nur a/libjava/configure b/libjava/configure
  
  
  else
-diff -Nur a/libjava/configure.ac b/libjava/configure.ac
---- a/libjava/configure.ac     2009-04-26 16:24:38.000000000 +0200
-+++ b/libjava/configure.ac     2010-01-25 09:50:29.635686641 +0100
-@@ -1490,10 +1490,10 @@
+--- a/libjava/configure.ac
++++ b/libjava/configure.ac
+@@ -1489,10 +1489,10 @@ gcjsubdir=gcj-$gcjversion-$libgcj_sovers
  multi_os_directory=`$CC -print-multi-os-directory`
  case $multi_os_directory in
    .)
@@ -67104,50 +36961,9 @@ diff -Nur a/libjava/configure.ac b/libjava/configure.ac
     ;;
  esac
  AC_SUBST(dbexecdir)
-diff -Nur a/libjava/Makefile.am b/libjava/Makefile.am
---- a/libjava/Makefile.am      2009-05-11 10:21:39.000000000 +0200
-+++ b/libjava/Makefile.am      2010-01-25 09:50:29.635686641 +0100
-@@ -55,9 +55,14 @@
- dbexec_LTLIBRARIES = libjvm.la
--pkgconfigdir = $(libdir)/pkgconfig
-+# Install the pkgconfig file in a target-specific directory, since the
-+# libraries it indicates
--jardir = $(datadir)/java
-+pkgconfigdir = $(toolexeclibdir)/pkgconfig
-+
-+# We install the JAR in a target-specific directory so that toolchains
-+# build from different sources can be installed in the same directory.
-+jardir = $(prefix)/$(target_noncanonical)/share/java
- jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar
- if INSTALL_ECJ_JAR
- jar_DATA += $(ECJ_BUILD_JAR)
-diff -Nur a/libjava/Makefile.in b/libjava/Makefile.in
---- a/libjava/Makefile.in      2009-07-22 09:43:59.000000000 +0200
-+++ b/libjava/Makefile.in      2010-01-25 09:50:29.645688750 +0100
-@@ -916,8 +916,14 @@
-       $(am__append_2) $(am__append_3)
- toolexecmainlib_DATA = libgcj.spec
- dbexec_LTLIBRARIES = libjvm.la
--pkgconfigdir = $(libdir)/pkgconfig
--jardir = $(datadir)/java
-+
-+# Install the pkgconfig file in a target-specific directory, since the
-+# libraries it indicates
-+pkgconfigdir = $(toolexeclibdir)/pkgconfig
-+
-+# We install the JAR in a target-specific directory so that toolchains
-+# build from different sources can be installed in the same directory.
-+jardir = $(prefix)/$(target_noncanonical)/share/java
- jar_DATA = libgcj-$(gcc_version).jar libgcj-tools-$(gcc_version).jar \
-       $(am__append_4)
- @JAVA_HOME_SET_FALSE@JAVA_HOME_DIR = $(prefix)
-diff -Nur a/libmudflap/configure b/libmudflap/configure
---- a/libmudflap/configure     2009-03-01 18:49:31.000000000 +0100
-+++ b/libmudflap/configure     2010-01-25 09:50:29.645688750 +0100
-@@ -12787,6 +12787,64 @@
+--- a/libmudflap/configure
++++ b/libmudflap/configure
+@@ -12787,6 +12787,64 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
@@ -67212,7 +37028,7 @@ diff -Nur a/libmudflap/configure b/libmudflap/configure
    gcc_cv_have_tls=yes
  else
    echo "$as_me: failed program was:" >&5
-@@ -12796,6 +12854,24 @@
+@@ -12796,6 +12854,24 @@ gcc_cv_have_tls=no
  fi
  rm -f conftest.err conftest.$ac_objext \
        conftest$ac_exeext conftest.$ac_ext
@@ -67237,9 +37053,19 @@ diff -Nur a/libmudflap/configure b/libmudflap/configure
  
  
  else
-diff -Nur a/libstdc++-v3/config/cpu/sh/atomicity.h b/libstdc++-v3/config/cpu/sh/atomicity.h
---- a/libstdc++-v3/config/cpu/sh/atomicity.h   2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/config/cpu/sh/atomicity.h   2010-01-25 09:50:29.645688750 +0100
+--- a/libstdc++-v3/Makefile.in
++++ b/libstdc++-v3/Makefile.in
+@@ -193,6 +193,8 @@ LIBICONV = @LIBICONV@
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
++LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
++LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
+ LIBTOOL = @LIBTOOL@
+ LIPO = @LIPO@
+ LN_S = @LN_S@
+--- a/libstdc++-v3/config/cpu/sh/atomicity.h
++++ b/libstdc++-v3/config/cpu/sh/atomicity.h
 @@ -25,47 +25,48 @@
  
  #ifdef __SH4A__
@@ -67326,10 +37152,9 @@ diff -Nur a/libstdc++-v3/config/cpu/sh/atomicity.h b/libstdc++-v3/config/cpu/sh/
  
  #else /* !__SH4A__ */
  
-diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
---- a/libstdc++-v3/configure   2009-05-07 12:23:06.000000000 +0200
-+++ b/libstdc++-v3/configure   2010-01-25 09:50:29.665687451 +0100
-@@ -458,7 +458,7 @@
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -458,7 +458,7 @@ ac_includes_default="\
  # include <unistd.h>
  #endif"
  
@@ -67338,7 +37163,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  ac_subst_files=''
  ac_pwd=`pwd`
  
-@@ -40730,6 +40730,74 @@
+@@ -40730,6 +40730,74 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
@@ -67413,7 +37238,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
    gcc_cv_have_tls=yes
  else
    echo "$as_me: failed program was:" >&5
-@@ -40739,6 +40807,24 @@
+@@ -40739,6 +40807,24 @@ gcc_cv_have_tls=no
  fi
  rm -f conftest.err conftest.$ac_objext \
        conftest$ac_exeext conftest.$ac_ext
@@ -67438,7 +37263,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  
  
  else
-@@ -76926,6 +77012,74 @@
+@@ -76926,6 +77012,74 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
@@ -67513,7 +37338,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
    gcc_cv_have_tls=yes
  else
    echo "$as_me: failed program was:" >&5
-@@ -76935,6 +77089,24 @@
+@@ -76935,6 +77089,24 @@ gcc_cv_have_tls=no
  fi
  rm -f conftest.err conftest.$ac_objext \
        conftest$ac_exeext conftest.$ac_ext
@@ -67538,7 +37363,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  
  
  else
-@@ -94541,6 +94713,74 @@
+@@ -94541,6 +94713,74 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
    (exit $ac_status); }; }; then
@@ -67613,7 +37438,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
    gcc_cv_have_tls=yes
  else
    echo "$as_me: failed program was:" >&5
-@@ -94550,6 +94790,24 @@
+@@ -94550,6 +94790,24 @@ gcc_cv_have_tls=no
  fi
  rm -f conftest.err conftest.$ac_objext \
        conftest$ac_exeext conftest.$ac_ext
@@ -67638,7 +37463,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  
  
  else
-@@ -114470,7 +114728,8 @@
+@@ -114470,7 +114728,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67648,7 +37473,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114534,7 +114793,8 @@
+@@ -114534,7 +114793,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67658,7 +37483,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114575,7 +114835,8 @@
+@@ -114575,7 +114835,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67668,7 +37493,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114632,7 +114893,8 @@
+@@ -114632,7 +114893,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67678,7 +37503,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114673,7 +114935,8 @@
+@@ -114673,7 +114935,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67688,7 +37513,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114738,7 +115001,8 @@
+@@ -114738,7 +115001,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67698,7 +37523,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114806,7 +115070,8 @@
+@@ -114806,7 +115070,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67708,7 +37533,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  long longval () { return (long) (sizeof (void *)); }
  unsigned long ulongval () { return (long) (sizeof (void *)); }
  #include <stdio.h>
-@@ -114894,7 +115159,8 @@
+@@ -114894,7 +115159,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67718,7 +37543,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114958,7 +115224,8 @@
+@@ -114958,7 +115224,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67728,7 +37553,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -114999,7 +115266,8 @@
+@@ -114999,7 +115266,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67738,7 +37563,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115056,7 +115324,8 @@
+@@ -115056,7 +115324,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67748,7 +37573,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115097,7 +115366,8 @@
+@@ -115097,7 +115366,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67758,7 +37583,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115162,7 +115432,8 @@
+@@ -115162,7 +115432,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67768,7 +37593,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115230,7 +115501,8 @@
+@@ -115230,7 +115501,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67778,7 +37603,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  long longval () { return (long) (sizeof (long)); }
  unsigned long ulongval () { return (long) (sizeof (long)); }
  #include <stdio.h>
-@@ -115318,7 +115590,8 @@
+@@ -115318,7 +115590,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67788,7 +37613,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115382,7 +115655,8 @@
+@@ -115382,7 +115655,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67798,7 +37623,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115423,7 +115697,8 @@
+@@ -115423,7 +115697,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67808,7 +37633,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115480,7 +115755,8 @@
+@@ -115480,7 +115755,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67818,7 +37643,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115521,7 +115797,8 @@
+@@ -115521,7 +115797,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67828,7 +37653,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115586,7 +115863,8 @@
+@@ -115586,7 +115863,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67838,7 +37663,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115654,7 +115932,8 @@
+@@ -115654,7 +115932,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67848,7 +37673,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  long longval () { return (long) (sizeof (int)); }
  unsigned long ulongval () { return (long) (sizeof (int)); }
  #include <stdio.h>
-@@ -115738,7 +116017,8 @@
+@@ -115738,7 +116017,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67858,7 +37683,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115802,7 +116082,8 @@
+@@ -115802,7 +116082,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67868,7 +37693,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115843,7 +116124,8 @@
+@@ -115843,7 +116124,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67878,7 +37703,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115900,7 +116182,8 @@
+@@ -115900,7 +116182,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67888,7 +37713,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -115941,7 +116224,8 @@
+@@ -115941,7 +116224,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67898,7 +37723,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116006,7 +116290,8 @@
+@@ -116006,7 +116290,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67908,7 +37733,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116074,7 +116359,8 @@
+@@ -116074,7 +116359,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67918,7 +37743,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  long longval () { return (long) (sizeof (short)); }
  unsigned long ulongval () { return (long) (sizeof (short)); }
  #include <stdio.h>
-@@ -116158,7 +116444,8 @@
+@@ -116158,7 +116444,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67928,7 +37753,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116222,7 +116509,8 @@
+@@ -116222,7 +116509,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67938,7 +37763,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116263,7 +116551,8 @@
+@@ -116263,7 +116551,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67948,7 +37773,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116320,7 +116609,8 @@
+@@ -116320,7 +116609,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67958,7 +37783,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116361,7 +116651,8 @@
+@@ -116361,7 +116651,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67968,7 +37793,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116426,7 +116717,8 @@
+@@ -116426,7 +116717,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67978,7 +37803,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  int
  main ()
  {
-@@ -116494,7 +116786,8 @@
+@@ -116494,7 +116786,8 @@ _ACEOF
  cat confdefs.h >>conftest.$ac_ext
  cat >>conftest.$ac_ext <<_ACEOF
  /* end confdefs.h.  */
@@ -67988,7 +37813,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  long longval () { return (long) (sizeof (char)); }
  unsigned long ulongval () { return (long) (sizeof (char)); }
  #include <stdio.h>
-@@ -118004,6 +118297,24 @@
+@@ -118004,6 +118297,24 @@ ABI_TWEAKS_SRCDIR=config/${abi_tweaks_di
  
  
  
@@ -68013,7 +37838,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  # Determine cross-compile flags and AM_CONDITIONALs.
  #AC_SUBST(GLIBCXX_IS_NATIVE)
  #AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
-@@ -118582,6 +118893,13 @@
+@@ -118582,6 +118893,13 @@ echo "$as_me: error: conditional \"GLIBC
  Usually this means the macro was only invoked conditionally." >&2;}
     { (exit 1); exit 1; }; }
  fi
@@ -68027,7 +37852,7 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  
  : ${CONFIG_STATUS=./config.status}
  ac_clean_files_save=$ac_clean_files
-@@ -119667,6 +119985,8 @@
+@@ -119667,6 +119985,8 @@ s,@CPU_DEFINES_SRCDIR@,$CPU_DEFINES_SRCD
  s,@ABI_TWEAKS_SRCDIR@,$ABI_TWEAKS_SRCDIR,;t t
  s,@OS_INC_SRCDIR@,$OS_INC_SRCDIR,;t t
  s,@ERROR_CONSTANTS_SRCDIR@,$ERROR_CONSTANTS_SRCDIR,;t t
@@ -68036,10 +37861,9 @@ diff -Nur a/libstdc++-v3/configure b/libstdc++-v3/configure
  s,@glibcxx_prefixdir@,$glibcxx_prefixdir,;t t
  s,@gxx_include_dir@,$gxx_include_dir,;t t
  s,@glibcxx_toolexecdir@,$glibcxx_toolexecdir,;t t
-diff -Nur a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
---- a/libstdc++-v3/configure.ac        2009-05-07 12:23:06.000000000 +0200
-+++ b/libstdc++-v3/configure.ac        2010-01-25 09:50:29.675687743 +0100
-@@ -329,6 +329,15 @@
+--- a/libstdc++-v3/configure.ac
++++ b/libstdc++-v3/configure.ac
+@@ -329,6 +329,15 @@ AC_SUBST(OS_INC_SRCDIR)
  AC_SUBST(ERROR_CONSTANTS_SRCDIR)
  
  
@@ -68055,10 +37879,9 @@ diff -Nur a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
  # Determine cross-compile flags and AM_CONDITIONALs.
  #AC_SUBST(GLIBCXX_IS_NATIVE)
  #AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
-diff -Nur a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in
---- a/libstdc++-v3/doc/Makefile.in     2009-01-15 21:02:11.000000000 +0100
-+++ b/libstdc++-v3/doc/Makefile.in     2010-01-25 09:50:29.675687743 +0100
-@@ -161,6 +161,8 @@
+--- a/libstdc++-v3/doc/Makefile.in
++++ b/libstdc++-v3/doc/Makefile.in
+@@ -161,6 +161,8 @@ LIBICONV = @LIBICONV@
  LIBOBJS = @LIBOBJS@
  LIBS = @LIBS@
  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
@@ -68067,32 +37890,9 @@ diff -Nur a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in
  LIBTOOL = @LIBTOOL@
  LIPO = @LIPO@
  LN_S = @LN_S@
-diff -Nur a/libstdc++-v3/include/c_global/cwchar b/libstdc++-v3/include/c_global/cwchar
---- a/libstdc++-v3/include/c_global/cwchar     2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/include/c_global/cwchar     2010-01-25 09:50:29.675687743 +0100
-@@ -156,14 +156,18 @@
-   using ::mbsrtowcs;
-   using ::putwc;
-   using ::putwchar;
-+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
-   using ::swprintf;
-+#endif
-   using ::swscanf;
-   using ::ungetwc;
-   using ::vfwprintf;
- #if _GLIBCXX_HAVE_VFWSCANF
-   using ::vfwscanf;
- #endif
-+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
-   using ::vswprintf;
-+#endif
- #if _GLIBCXX_HAVE_VSWSCANF
-   using ::vswscanf;
- #endif
-diff -Nur a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
---- a/libstdc++-v3/include/Makefile.am 2009-05-13 02:24:16.000000000 +0200
-+++ b/libstdc++-v3/include/Makefile.am 2010-01-25 09:50:29.675687743 +0100
-@@ -1125,8 +1125,14 @@
+--- a/libstdc++-v3/include/Makefile.am
++++ b/libstdc++-v3/include/Makefile.am
+@@ -1125,8 +1125,14 @@ ${pch3_output}: ${pch3_source} ${pch2_ou
  if GLIBCXX_HOSTED
  install-data-local: install-headers
  else
@@ -68107,10 +37907,9 @@ diff -Nur a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
  
  # This is a subset of the full install-headers rule.  We only need <cstddef>,
  # <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
-diff -Nur a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
---- a/libstdc++-v3/include/Makefile.in 2009-05-13 02:24:16.000000000 +0200
-+++ b/libstdc++-v3/include/Makefile.in 2010-01-25 09:50:29.675687743 +0100
-@@ -161,6 +161,8 @@
+--- a/libstdc++-v3/include/Makefile.in
++++ b/libstdc++-v3/include/Makefile.in
+@@ -161,6 +161,8 @@ LIBICONV = @LIBICONV@
  LIBOBJS = @LIBOBJS@
  LIBS = @LIBS@
  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
@@ -68119,7 +37918,7 @@ diff -Nur a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
  LIBTOOL = @LIBTOOL@
  LIPO = @LIPO@
  LN_S = @LN_S@
-@@ -1527,7 +1529,10 @@
+@@ -1527,7 +1529,10 @@ ${pch3_output}: ${pch3_source} ${pch2_ou
  # the rest are taken from the original source tree.
  
  @GLIBCXX_HOSTED_TRUE@install-data-local: install-headers
@@ -68131,165 +37930,30 @@ diff -Nur a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
  
  # This is a subset of the full install-headers rule.  We only need <cstddef>,
  # <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
-diff -Nur a/libstdc++-v3/libsupc++/eh_arm.cc b/libstdc++-v3/libsupc++/eh_arm.cc
---- a/libstdc++-v3/libsupc++/eh_arm.cc 2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/libsupc++/eh_arm.cc 2010-01-25 09:50:29.675687743 +0100
-@@ -38,7 +38,7 @@
- extern "C" __cxa_type_match_result
- __cxa_type_match(_Unwind_Exception* ue_header,
-                const std::type_info* catch_type,
--               bool is_reference __attribute__((__unused__)),
-+               bool is_reference,
-                void** thrown_ptr_p)
- {
-   bool forced_unwind = __is_gxx_forced_unwind_class(ue_header->exception_class);
-@@ -68,11 +68,11 @@
-   if (throw_type->__is_pointer_p())
-     thrown_ptr = *(void**) thrown_ptr;
--  if (catch_type->__do_catch(throw_type, &thrown_ptr, 1))
-+  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1 + is_reference * 2))
-     {
-       *thrown_ptr_p = thrown_ptr;
--      if (typeid(*catch_type) == typeid (typeid(void*)))
-+      if (typeid (*catch_type) == typeid (typeid(void*)))
-       {
-         const __pointer_type_info *catch_pointer_type =
-           static_cast<const __pointer_type_info *> (catch_type);
-diff -Nur a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
---- a/libstdc++-v3/libsupc++/eh_personality.cc 2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/libsupc++/eh_personality.cc 2010-01-25 09:50:29.675687743 +0100
-@@ -89,20 +89,22 @@
- // Return an element from a type table.
- static const std::type_info*
--get_ttype_entry(lsda_header_info* info, _uleb128_t i)
-+get_ttype_entry(lsda_header_info* info, _uleb128_t i, bool &is_ref)
- {
-   _Unwind_Ptr ptr;
-   ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-   ptr = _Unwind_decode_target2(ptr);
-   
--  return reinterpret_cast<const std::type_info *>(ptr);
-+  is_ref = ptr & 1;
-+  
-+  return reinterpret_cast<const std::type_info *>(ptr & ~1);
- }
- // The ABI provides a routine for matching exception object types.
- typedef _Unwind_Control_Block _throw_typet;
--#define get_adjusted_ptr(catch_type, throw_type, thrown_ptr_p) \
--  (__cxa_type_match (throw_type, catch_type, false, thrown_ptr_p) \
-+#define get_adjusted_ptr(catch_type, throw_type, is_ref, thrown_ptr_p) \
-+  (__cxa_type_match (throw_type, catch_type, is_ref, thrown_ptr_p) \
-    != ctm_failed)
- // Return true if THROW_TYPE matches one if the filter types.
-@@ -118,6 +120,7 @@
-     {
-       const std::type_info* catch_type;
-       _uleb128_t tmp;
-+      bool is_ref;
-       tmp = *e;
-       
-@@ -129,13 +132,14 @@
-       tmp = _Unwind_decode_target2((_Unwind_Word) e);
-       // Match a ttype entry.
--      catch_type = reinterpret_cast<const std::type_info*>(tmp);
-+      is_ref = tmp & 1;
-+      catch_type = reinterpret_cast<const std::type_info*>(tmp & ~1);
-       // ??? There is currently no way to ask the RTTI code about the
-       // relationship between two types without reference to a specific
-       // object.  There should be; then we wouldn't need to mess with
-       // thrown_ptr here.
--      if (get_adjusted_ptr(catch_type, throw_type, &thrown_ptr))
-+      if (get_adjusted_ptr(catch_type, throw_type, is_ref, &thrown_ptr))
-       return true;
-       // Advance to the next entry.
-@@ -207,7 +211,7 @@
- // Return an element from a type table.
- static const std::type_info *
--get_ttype_entry (lsda_header_info *info, _uleb128_t i)
-+get_ttype_entry (lsda_header_info *info, _uleb128_t i, bool &is_ref)
- {
-   _Unwind_Ptr ptr;
-@@ -215,7 +219,9 @@
-   read_encoded_value_with_base (info->ttype_encoding, info->ttype_base,
-                               info->TType - i, &ptr);
--  return reinterpret_cast<const std::type_info *>(ptr);
-+  is_ref = ptr & 1;
-+  
-+  return reinterpret_cast<const std::type_info *>(ptr & ~1);
- }
- // Given the thrown type THROW_TYPE, pointer to a variable containing a
-@@ -226,6 +232,7 @@
- static bool
- get_adjusted_ptr (const std::type_info *catch_type,
-                 const std::type_info *throw_type,
-+                bool is_ref,
-                 void **thrown_ptr_p)
- {
-   void *thrown_ptr = *thrown_ptr_p;
-@@ -237,7 +244,7 @@
-   if (throw_type->__is_pointer_p ())
-     thrown_ptr = *(void **) thrown_ptr;
--  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1))
-+  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1 + is_ref * 2))
-     {
-       *thrown_ptr_p = thrown_ptr;
-       return true;
-@@ -267,13 +274,15 @@
-         return false;
-       // Match a ttype entry.
--      catch_type = get_ttype_entry (info, tmp);
-+      bool is_ref;
-+      
-+      catch_type = get_ttype_entry (info, tmp, is_ref);
-       // ??? There is currently no way to ask the RTTI code about the
-       // relationship between two types without reference to a specific
-       // object.  There should be; then we wouldn't need to mess with
-       // thrown_ptr here.
--      if (get_adjusted_ptr (catch_type, throw_type, &thrown_ptr))
-+      if (get_adjusted_ptr (catch_type, throw_type, is_ref, &thrown_ptr))
-       return true;
-     }
- }
-@@ -582,14 +591,16 @@
-         else if (ar_filter > 0)
-           {
-             // Positive filter values are handlers.
--            catch_type = get_ttype_entry (&info, ar_filter);
-+            bool is_ref;
-+            
-+            catch_type = get_ttype_entry (&info, ar_filter, is_ref);
-             // Null catch type is a catch-all handler; we can catch foreign
-             // exceptions with this.  Otherwise we must match types.
-             if (! catch_type
-                 || (throw_type
-                     && get_adjusted_ptr (catch_type, throw_type,
--                                         &thrown_ptr)))
-+                                         is_ref, &thrown_ptr)))
-               {
-                 saw_handler = true;
-                 break;
-diff -Nur a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile.am
---- a/libstdc++-v3/libsupc++/Makefile.am       2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/libsupc++/Makefile.am       2010-01-25 09:50:29.675687743 +0100
-@@ -30,6 +30,11 @@
+--- a/libstdc++-v3/include/c_global/cwchar
++++ b/libstdc++-v3/include/c_global/cwchar
+@@ -156,14 +156,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+   using ::mbsrtowcs;
+   using ::putwc;
+   using ::putwchar;
++#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
+   using ::swprintf;
++#endif
+   using ::swscanf;
+   using ::ungetwc;
+   using ::vfwprintf;
+ #if _GLIBCXX_HAVE_VFWSCANF
+   using ::vfwscanf;
+ #endif
++#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
+   using ::vswprintf;
++#endif
+ #if _GLIBCXX_HAVE_VSWSCANF
+   using ::vswscanf;
+ #endif
+--- a/libstdc++-v3/libsupc++/Makefile.am
++++ b/libstdc++-v3/libsupc++/Makefile.am
+@@ -30,6 +30,11 @@ toolexeclib_LTLIBRARIES = libsupc++.la
  # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
  noinst_LTLIBRARIES = libsupc++convenience.la
  
@@ -68301,7 +37965,7 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile
  
  headers = \
        exception new typeinfo cxxabi.h cxxabi-forced.h exception_defines.h \
-@@ -84,6 +89,7 @@
+@@ -84,6 +89,7 @@ sources = \
        vec.cc \
        vmi_class_type_info.cc \
        vterminate.cc
@@ -68309,10 +37973,9 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile
  
  libsupc___la_SOURCES = $(sources) $(c_sources)
  libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
-diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
---- a/libstdc++-v3/libsupc++/Makefile.in       2009-01-15 21:02:11.000000000 +0100
-+++ b/libstdc++-v3/libsupc++/Makefile.in       2010-01-25 09:50:29.675687743 +0100
-@@ -38,7 +38,7 @@
+--- a/libstdc++-v3/libsupc++/Makefile.in
++++ b/libstdc++-v3/libsupc++/Makefile.in
+@@ -38,7 +38,7 @@ POST_UNINSTALL = :
  build_triplet = @build@
  host_triplet = @host@
  target_triplet = @target@
@@ -68321,7 +37984,7 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile
        $(srcdir)/Makefile.in $(top_srcdir)/fragment.am
  subdir = libsupc++
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-@@ -87,19 +87,29 @@
+@@ -87,19 +87,29 @@ am__libsupc___la_SOURCES_DIST = array_ty
        pmem_type_info.cc pointer_type_info.cc pure.cc \
        si_class_type_info.cc tinfo.cc tinfo2.cc vec.cc \
        vmi_class_type_info.cc vterminate.cc cp-demangle.c
@@ -68364,7 +38027,7 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile
  am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
  libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
  libsupc__convenience_la_LIBADD =
-@@ -132,6 +142,9 @@
+@@ -132,6 +142,9 @@ CXXLD = $(CXX)
  SOURCES = $(libsupc___la_SOURCES) $(libsupc__convenience_la_SOURCES)
  DIST_SOURCES = $(am__libsupc___la_SOURCES_DIST) \
        $(am__libsupc__convenience_la_SOURCES_DIST)
@@ -68374,7 +38037,7 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile
  glibcxxinstallHEADERS_INSTALL = $(INSTALL_HEADER)
  HEADERS = $(glibcxxinstall_HEADERS)
  ETAGS = etags
-@@ -231,6 +244,8 @@
+@@ -231,6 +244,8 @@ LIBICONV = @LIBICONV@
  LIBOBJS = @LIBOBJS@
  LIBS = @LIBS@
  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
@@ -68383,7 +38046,7 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile
  LIBTOOL = @LIBTOOL@
  LIPO = @LIPO@
  LN_S = @LN_S@
-@@ -365,57 +380,60 @@
+@@ -365,57 +380,60 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
  toolexeclib_LTLIBRARIES = libsupc++.la
  # 2) integrated libsupc++convenience.la that is to be a part of libstdc++.a
  noinst_LTLIBRARIES = libsupc++convenience.la
@@ -68495,22 +38158,162 @@ diff -Nur a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile
  
  libsupc___la_SOURCES = $(sources) $(c_sources)
  libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
-diff -Nur a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
---- a/libstdc++-v3/Makefile.in 2009-01-15 21:02:11.000000000 +0100
-+++ b/libstdc++-v3/Makefile.in 2010-01-25 09:50:29.675687743 +0100
-@@ -193,6 +193,8 @@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
-+LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
-+LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@
-diff -Nur a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
---- a/libstdc++-v3/po/Makefile.in      2009-01-15 21:02:11.000000000 +0100
-+++ b/libstdc++-v3/po/Makefile.in      2010-01-25 09:50:29.675687743 +0100
-@@ -161,6 +161,8 @@
+--- a/libstdc++-v3/libsupc++/eh_arm.cc
++++ b/libstdc++-v3/libsupc++/eh_arm.cc
+@@ -38,7 +38,7 @@ using namespace __cxxabiv1;
+ extern "C" __cxa_type_match_result
+ __cxa_type_match(_Unwind_Exception* ue_header,
+                const std::type_info* catch_type,
+-               bool is_reference __attribute__((__unused__)),
++               bool is_reference,
+                void** thrown_ptr_p)
+ {
+   bool forced_unwind = __is_gxx_forced_unwind_class(ue_header->exception_class);
+@@ -68,11 +68,11 @@ __cxa_type_match(_Unwind_Exception* ue_h
+   if (throw_type->__is_pointer_p())
+     thrown_ptr = *(void**) thrown_ptr;
+-  if (catch_type->__do_catch(throw_type, &thrown_ptr, 1))
++  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1 + is_reference * 2))
+     {
+       *thrown_ptr_p = thrown_ptr;
+-      if (typeid(*catch_type) == typeid (typeid(void*)))
++      if (typeid (*catch_type) == typeid (typeid(void*)))
+       {
+         const __pointer_type_info *catch_pointer_type =
+           static_cast<const __pointer_type_info *> (catch_type);
+--- a/libstdc++-v3/libsupc++/eh_personality.cc
++++ b/libstdc++-v3/libsupc++/eh_personality.cc
+@@ -89,20 +89,22 @@ parse_lsda_header (_Unwind_Context *cont
+ // Return an element from a type table.
+ static const std::type_info*
+-get_ttype_entry(lsda_header_info* info, _uleb128_t i)
++get_ttype_entry(lsda_header_info* info, _uleb128_t i, bool &is_ref)
+ {
+   _Unwind_Ptr ptr;
+   ptr = (_Unwind_Ptr) (info->TType - (i * 4));
+   ptr = _Unwind_decode_target2(ptr);
+   
+-  return reinterpret_cast<const std::type_info *>(ptr);
++  is_ref = ptr & 1;
++  
++  return reinterpret_cast<const std::type_info *>(ptr & ~1);
+ }
+ // The ABI provides a routine for matching exception object types.
+ typedef _Unwind_Control_Block _throw_typet;
+-#define get_adjusted_ptr(catch_type, throw_type, thrown_ptr_p) \
+-  (__cxa_type_match (throw_type, catch_type, false, thrown_ptr_p) \
++#define get_adjusted_ptr(catch_type, throw_type, is_ref, thrown_ptr_p) \
++  (__cxa_type_match (throw_type, catch_type, is_ref, thrown_ptr_p) \
+    != ctm_failed)
+ // Return true if THROW_TYPE matches one if the filter types.
+@@ -118,6 +120,7 @@ check_exception_spec(lsda_header_info* i
+     {
+       const std::type_info* catch_type;
+       _uleb128_t tmp;
++      bool is_ref;
+       tmp = *e;
+       
+@@ -129,13 +132,14 @@ check_exception_spec(lsda_header_info* i
+       tmp = _Unwind_decode_target2((_Unwind_Word) e);
+       // Match a ttype entry.
+-      catch_type = reinterpret_cast<const std::type_info*>(tmp);
++      is_ref = tmp & 1;
++      catch_type = reinterpret_cast<const std::type_info*>(tmp & ~1);
+       // ??? There is currently no way to ask the RTTI code about the
+       // relationship between two types without reference to a specific
+       // object.  There should be; then we wouldn't need to mess with
+       // thrown_ptr here.
+-      if (get_adjusted_ptr(catch_type, throw_type, &thrown_ptr))
++      if (get_adjusted_ptr(catch_type, throw_type, is_ref, &thrown_ptr))
+       return true;
+       // Advance to the next entry.
+@@ -207,7 +211,7 @@ typedef const std::type_info _throw_type
+ // Return an element from a type table.
+ static const std::type_info *
+-get_ttype_entry (lsda_header_info *info, _uleb128_t i)
++get_ttype_entry (lsda_header_info *info, _uleb128_t i, bool &is_ref)
+ {
+   _Unwind_Ptr ptr;
+@@ -215,7 +219,9 @@ get_ttype_entry (lsda_header_info *info,
+   read_encoded_value_with_base (info->ttype_encoding, info->ttype_base,
+                               info->TType - i, &ptr);
+-  return reinterpret_cast<const std::type_info *>(ptr);
++  is_ref = ptr & 1;
++  
++  return reinterpret_cast<const std::type_info *>(ptr & ~1);
+ }
+ // Given the thrown type THROW_TYPE, pointer to a variable containing a
+@@ -226,6 +232,7 @@ get_ttype_entry (lsda_header_info *info,
+ static bool
+ get_adjusted_ptr (const std::type_info *catch_type,
+                 const std::type_info *throw_type,
++                bool is_ref,
+                 void **thrown_ptr_p)
+ {
+   void *thrown_ptr = *thrown_ptr_p;
+@@ -237,7 +244,7 @@ get_adjusted_ptr (const std::type_info *
+   if (throw_type->__is_pointer_p ())
+     thrown_ptr = *(void **) thrown_ptr;
+-  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1))
++  if (catch_type->__do_catch (throw_type, &thrown_ptr, 1 + is_ref * 2))
+     {
+       *thrown_ptr_p = thrown_ptr;
+       return true;
+@@ -267,13 +274,15 @@ check_exception_spec(lsda_header_info* i
+         return false;
+       // Match a ttype entry.
+-      catch_type = get_ttype_entry (info, tmp);
++      bool is_ref;
++      
++      catch_type = get_ttype_entry (info, tmp, is_ref);
+       // ??? There is currently no way to ask the RTTI code about the
+       // relationship between two types without reference to a specific
+       // object.  There should be; then we wouldn't need to mess with
+       // thrown_ptr here.
+-      if (get_adjusted_ptr (catch_type, throw_type, &thrown_ptr))
++      if (get_adjusted_ptr (catch_type, throw_type, is_ref, &thrown_ptr))
+       return true;
+     }
+ }
+@@ -582,14 +591,16 @@ PERSONALITY_FUNCTION (int version,
+         else if (ar_filter > 0)
+           {
+             // Positive filter values are handlers.
+-            catch_type = get_ttype_entry (&info, ar_filter);
++            bool is_ref;
++            
++            catch_type = get_ttype_entry (&info, ar_filter, is_ref);
+             // Null catch type is a catch-all handler; we can catch foreign
+             // exceptions with this.  Otherwise we must match types.
+             if (! catch_type
+                 || (throw_type
+                     && get_adjusted_ptr (catch_type, throw_type,
+-                                         &thrown_ptr)))
++                                         is_ref, &thrown_ptr)))
+               {
+                 saw_handler = true;
+                 break;
+--- a/libstdc++-v3/po/Makefile.in
++++ b/libstdc++-v3/po/Makefile.in
+@@ -161,6 +161,8 @@ LIBICONV = @LIBICONV@
  LIBOBJS = @LIBOBJS@
  LIBS = @LIBS@
  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
@@ -68519,10 +38322,9 @@ diff -Nur a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
  LIBTOOL = @LIBTOOL@
  LIPO = @LIPO@
  LN_S = @LN_S@
-diff -Nur a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
---- a/libstdc++-v3/src/Makefile.in     2009-01-17 03:03:25.000000000 +0100
-+++ b/libstdc++-v3/src/Makefile.in     2010-01-25 09:50:29.675687743 +0100
-@@ -221,6 +221,8 @@
+--- a/libstdc++-v3/src/Makefile.in
++++ b/libstdc++-v3/src/Makefile.in
+@@ -221,6 +221,8 @@ LIBICONV = @LIBICONV@
  LIBOBJS = @LIBOBJS@
  LIBS = @LIBS@
  LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
@@ -68531,90 +38333,80 @@ diff -Nur a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
  LIBTOOL = @LIBTOOL@
  LIPO = @LIPO@
  LN_S = @LN_S@
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc       2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc       2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc       2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc       2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc       2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc       2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc       2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc       2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc      2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc      2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc      2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc      2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc      2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc      2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc     2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc     2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
---- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc 2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc 2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
++++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  // 2008-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-diff -Nur a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
---- a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc        2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc        2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
++++ b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
 @@ -1,5 +1,6 @@
  // { dg-do compile }
  // { dg-require-c-std "" }
@@ -68622,9 +38414,8 @@ diff -Nur a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc b/
  
  // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
  //
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc  2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc  2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
 @@ -20,6 +20,7 @@
  // 27.8.1.4 Overridden virtual functions
  
@@ -68633,9 +38424,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc b/li
  
  #include <fstream>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc  2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc  2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
 @@ -20,6 +20,7 @@
  // 27.8.1.4 Overridden virtual functions
  
@@ -68644,9 +38434,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc b/li
  
  #include <fstream>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
 @@ -24,6 +24,7 @@
  // 27.8.1.4 Overridden virtual functions
  
@@ -68655,9 +38444,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc b/libs
  
  #include <fstream>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
 @@ -24,6 +24,7 @@
  // 27.8.1.4 Overridden virtual functions
  
@@ -68666,9 +38454,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc b/libs
  
  #include <fstream>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
 @@ -24,6 +24,7 @@
  // 27.8.1.4 Overridden virtual functions
  
@@ -68677,9 +38464,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc b/libs
  
  #include <fstream>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
 @@ -24,6 +24,7 @@
  // 27.8.1.4 Overridden virtual functions
  
@@ -68688,9 +38474,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc b/libs
  
  #include <fstream>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
---- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
 @@ -17,6 +17,8 @@
  
  // 27.8.1.4 Overridden virtual functions
@@ -68700,9 +38485,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.c
  #include <fstream>
  #include <locale>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
---- a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc       2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc       2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
 @@ -26,6 +26,7 @@
  // @diff@ %-*.tst %-*.txt
  
@@ -68711,9 +38495,8 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc b
  
  #include <istream>
  #include <fstream>
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
---- a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
 @@ -19,6 +19,8 @@
  // causes "in_avail" to return an incorrect value.
  // { dg-do run { xfail arm*-*-elf arm*-*-eabi } }
@@ -68723,27 +38506,24 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.c
  // 27.6.1.3 unformatted input functions
  // @require@ %-*.tst %-*.txt
  // @diff@ %-*.tst %-*.txt
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
---- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc  2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc  2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
 @@ -1,3 +1,5 @@
 +// { dg-require-swprintf "" }
 +
  // Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
-diff -Nur a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
---- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc 2009-04-28 12:32:22.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc 2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
++++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-swprintf "" }
  
  // Copyright (C) 2007, 2008, 2009 Free Software Foundation
  //
-diff -Nur a/libstdc++-v3/testsuite/27_io/objects/char/10.cc b/libstdc++-v3/testsuite/27_io/objects/char/10.cc
---- a/libstdc++-v3/testsuite/27_io/objects/char/10.cc  2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/27_io/objects/char/10.cc  2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/27_io/objects/char/10.cc
++++ b/libstdc++-v3/testsuite/27_io/objects/char/10.cc
 @@ -18,6 +18,7 @@
  // <http://www.gnu.org/licenses/>.
   
@@ -68752,27 +38532,35 @@ diff -Nur a/libstdc++-v3/testsuite/27_io/objects/char/10.cc b/libstdc++-v3/tests
  
  #include <iostream>
  #include <cstdio>
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc b/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
---- a/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc     2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc     2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/Makefile.in
++++ b/libstdc++-v3/testsuite/Makefile.in
+@@ -161,6 +161,8 @@ LIBICONV = @LIBICONV@
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
++LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
++LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
+ LIBTOOL = @LIBTOOL@
+ LIPO = @LIPO@
+ LN_S = @LN_S@
+--- a/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  
  // 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
  
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc b/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
---- a/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc  2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc  2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  
  // 2007-10-16  Paolo Carlini  <pcarlini@suse.de>
  
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/init-list.cc b/libstdc++-v3/testsuite/ext/vstring/init-list.cc
---- a/libstdc++-v3/testsuite/ext/vstring/init-list.cc  2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/init-list.cc  2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/ext/vstring/init-list.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/init-list.cc
 @@ -17,6 +17,7 @@
  //
  
@@ -68781,27 +38569,24 @@ diff -Nur a/libstdc++-v3/testsuite/ext/vstring/init-list.cc b/libstdc++-v3/tests
  
  #include <ext/vstring.h>
  #include <testsuite_hooks.h>
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/moveable.cc b/libstdc++-v3/testsuite/ext/vstring/moveable.cc
---- a/libstdc++-v3/testsuite/ext/vstring/moveable.cc   2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/moveable.cc   2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/ext/vstring/moveable.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/moveable.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  
  // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
  //
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc b/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
---- a/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc    2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc    2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
 @@ -1,4 +1,5 @@
  // { dg-options "-std=gnu++0x" }
 +// { dg-require-string-conversions "" }
  
  // 2007-10-15  Paolo Carlini  <pcarlini@suse.de>
  
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
---- a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc     2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc     2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
 @@ -1,6 +1,7 @@
  // { dg-do compile }
  // { dg-options "-std=gnu++0x" }
@@ -68810,9 +38595,8 @@ diff -Nur a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiati
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
  //
-diff -Nur a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
---- a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc     2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc     2010-01-25 09:50:29.675687743 +0100
+--- a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
++++ b/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
 @@ -1,6 +1,7 @@
  // { dg-do compile }
  // { dg-options "-std=gnu++0x" }
@@ -68821,10 +38605,9 @@ diff -Nur a/libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiati
  
  // Copyright (C) 2008, 2009 Free Software Foundation, Inc.
  //
-diff -Nur a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp
---- a/libstdc++-v3/testsuite/lib/dg-options.exp        2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/lib/dg-options.exp        2010-01-25 09:50:29.675687743 +0100
-@@ -142,3 +142,21 @@
+--- a/libstdc++-v3/testsuite/lib/dg-options.exp
++++ b/libstdc++-v3/testsuite/lib/dg-options.exp
+@@ -142,3 +142,21 @@ proc dg-require-string-conversions { arg
      }
      return
  }
@@ -68846,10 +38629,9 @@ diff -Nur a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/l
 +    }
 +    return
 +}
-diff -Nur a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
---- a/libstdc++-v3/testsuite/lib/libstdc++.exp 2009-05-21 13:30:55.000000000 +0200
-+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp 2010-01-25 09:50:29.675687743 +0100
-@@ -204,14 +204,23 @@
+--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
++++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
+@@ -204,14 +204,23 @@ proc libstdc++_init { testfile } {
        # directory, and then add that to the search path.
        foreach src [glob "${srcdir}/util/*.h" \
                          "${srcdir}/util/*.cc" \
@@ -68874,7 +38656,7 @@ diff -Nur a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/li
                          "${srcdir}/util/*/*/*/*/*.hpp" ] {
            # Remove everything up to "util/..."
            set dst [string range $src [string length "${srcdir}/"] end]
-@@ -1374,3 +1383,119 @@
+@@ -1374,3 +1383,119 @@ proc check_v3_target_string_conversions 
      verbose "check_v3_target_string_conversions: $et_string_conversions" 2
      return $et_string_conversions
  }
@@ -68994,10 +38776,9 @@ diff -Nur a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/li
 +    verbose "check_v3_target_binary_io: $et_binary_io" 2
 +    return $et_binary_io
 +}
-diff -Nur a/libstdc++-v3/testsuite/lib/prune.exp b/libstdc++-v3/testsuite/lib/prune.exp
---- a/libstdc++-v3/testsuite/lib/prune.exp     2009-04-10 01:23:07.000000000 +0200
-+++ b/libstdc++-v3/testsuite/lib/prune.exp     2010-01-25 09:50:29.675687743 +0100
-@@ -30,5 +30,23 @@
+--- a/libstdc++-v3/testsuite/lib/prune.exp
++++ b/libstdc++-v3/testsuite/lib/prune.exp
+@@ -30,5 +30,23 @@ proc prune_g++_output { text } {
      regsub -all "(^|\n)\[^\n\]*: Additional NOP may be necessary to workaround Itanium processor A/B step errata" $text "" text
      regsub -all "(^|\n)\[^\n*\]*: Assembler messages:\[^\n\]*" $text "" text
  
@@ -69021,15 +38802,3 @@ diff -Nur a/libstdc++-v3/testsuite/lib/prune.exp b/libstdc++-v3/testsuite/lib/pr
 +
      return $text
  }
-diff -Nur a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
---- a/libstdc++-v3/testsuite/Makefile.in       2009-02-23 21:42:53.000000000 +0100
-+++ b/libstdc++-v3/testsuite/Makefile.in       2010-01-25 09:50:29.675687743 +0100
-@@ -161,6 +161,8 @@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
- LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
-+LIBSUPCXX_PRONLY_FALSE = @LIBSUPCXX_PRONLY_FALSE@
-+LIBSUPCXX_PRONLY_TRUE = @LIBSUPCXX_PRONLY_TRUE@
- LIBTOOL = @LIBTOOL@
- LIPO = @LIPO@
- LN_S = @LN_S@